diff options
Diffstat (limited to 'dist')
| -rw-r--r-- | dist/client.b.js | 2 | ||||
| -rw-r--r-- | dist/client.b.js.map | 1 | ||||
| -rw-r--r-- | dist/ui.b.js | 2 | ||||
| -rw-r--r-- | dist/ui.b.js.map | 1 |
4 files changed, 0 insertions, 6 deletions
diff --git a/dist/client.b.js b/dist/client.b.js deleted file mode 100644 index 2e4b151..0000000 --- a/dist/client.b.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}({3:function(e,t,n){"use strict";n.r(t);var i=["Anime","birthday","Christmas","CountyCourt","CruiseCourt","default","DGDEnglishCourt","DGSJapanCourt","DualDestinies","EnglishCourt","gs4","GS4Night","HD","Khura'in","mlp","NewCourt","RuinedCourt","Sky","SpaceCourt","Themis","TouhouCourt","WitchTrialCourt","Zetta"],o=["1.png","2.png","3.png","4.png","5.png","6.png","empty.png","lawyerbadge.png"];function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a=function e(t){var n,i;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),n=Array.prototype.forEach,i=Array.prototype.map,this.each=function(e,t,i){if(null!==e)if(n&&e.forEach===n)e.forEach(t,i);else if(e.length===+e.length){for(var o=0,c=e.length;o<c;o++)if(t.call(i,e[o],o,e)==={})return}else for(var a in e)if(e.hasOwnProperty(a)&&t.call(i,e[a],a,e)==={})return},this.map=function(e,t,n){var o=[];return null==e?o:i&&e.map===i?e.map(t,n):(this.each(e,function(e,i,c){o[o.length]=t.call(n,e,i,c)}),o)},"object"==c(t)?(this.hasher=t.hasher,this.screen_resolution=t.screen_resolution,this.screen_orientation=t.screen_orientation,this.canvas=t.canvas,this.ie_activex=t.ie_activex):"function"==typeof t&&(this.hasher=t)};a.prototype={get:function(){var e=[];(e.push(navigator.userAgent),e.push(navigator.language),e.push(screen.colorDepth),this.screen_resolution)&&(void 0!==this.getScreenResolution()&&e.push(this.getScreenResolution().join("x")));return e.push((new Date).getTimezoneOffset()),e.push(this.hasSessionStorage()),e.push(this.hasLocalStorage()),e.push(!!window.indexedDB),document.body?e.push(c(document.body.addBehavior)):e.push("undefined"),e.push(c(window.openDatabase)),e.push(navigator.cpuClass),e.push(navigator.platform),e.push(navigator.doNotTrack),e.push(this.getPluginsString()),this.canvas&&this.isCanvasSupported()&&e.push(this.getCanvasFingerprint()),this.hasher?this.hasher(e.join("###"),31):this.murmurhash3_32_gc(e.join("###"),31)},murmurhash3_32_gc:function(e,t){var n,i,o,c,a,s,r,l;for(n=3&e.length,i=e.length-n,o=t,a=3432918353,s=461845907,l=0;l<i;)r=255&e.charCodeAt(l)|(255&e.charCodeAt(++l))<<8|(255&e.charCodeAt(++l))<<16|(255&e.charCodeAt(++l))<<24,++l,o=27492+(65535&(c=5*(65535&(o=(o^=r=(65535&(r=(r=(65535&r)*a+(((r>>>16)*a&65535)<<16)&4294967295)<<15|r>>>17))*s+(((r>>>16)*s&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+((58964+(c>>>16)&65535)<<16);switch(r=0,n){case 3:r^=(255&e.charCodeAt(l+2))<<16;case 2:r^=(255&e.charCodeAt(l+1))<<8;case 1:o^=r=(65535&(r=(r=(65535&(r^=255&e.charCodeAt(l)))*a+(((r>>>16)*a&65535)<<16)&4294967295)<<15|r>>>17))*s+(((r>>>16)*s&65535)<<16)&4294967295}return o^=e.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0},hasLocalStorage:function(){try{return!!window.localStorage}catch(e){return!0}},hasSessionStorage:function(){try{return!!window.sessionStorage}catch(e){return!0}},isCanvasSupported:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))},isIE:function(){return"Microsoft Internet Explorer"===navigator.appName||!("Netscape"!==navigator.appName||!/Trident/.test(navigator.userAgent))},getPluginsString:function(){return this.isIE()&&this.ie_activex?this.getIEPluginsString():this.getRegularPluginsString()},getRegularPluginsString:function(){return this.map(navigator.plugins,function(e){var t=this.map(e,function(e){return[e.type,e.suffixes].join("~")}).join(",");return[e.name,e.description,t].join("::")},this).join(";")},getIEPluginsString:function(){if(window.ActiveXObject){return this.map(["ShockwaveFlash.ShockwaveFlash","AcroPDF.PDF","PDF.PdfCtrl","QuickTime.QuickTime","rmocx.RealPlayer G2 Control","rmocx.RealPlayer G2 Control.1","RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)","RealVideo.RealVideo(tm) ActiveX Control (32-bit)","RealPlayer","SWCtl.SWCtl","WMPlayer.OCX","AgControl.AgControl","Skype.Detection"],function(e){try{return new ActiveXObject(e),e}catch(e){return null}}).join(";")}return""},getScreenResolution:function(){return this.screen_orientation?screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height]:[screen.height,screen.width]},getCanvasFingerprint:function(){var e=document.createElement("canvas"),t=e.getContext("2d"),n='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+-={}|[]:"<>?;,.';return t.textBaseline="top",t.font="14px 'Arial'",t.textBaseline="alphabetic",t.fillStyle="#f60",t.fillRect(125,1,62,20),t.fillStyle="#069",t.fillText(n,2,15),t.fillStyle="rgba(102, 204, 0, 0.7)",t.fillText(n,4,17),e.toDataURL()}};function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function l(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}n.d(t,"onOOCEnter",function(){return C}),n.d(t,"onEnter",function(){return B}),n.d(t,"musiclist_click",function(){return k}),n.d(t,"area_click",function(){return x}),n.d(t,"changeMusicVolume",function(){return T}),n.d(t,"changeSFXVolume",function(){return S}),n.d(t,"changeBlipVolume",function(){return L}),n.d(t,"changeCharacter",function(){return O}),n.d(t,"imgError",function(){return P}),n.d(t,"demoError",function(){return M}),n.d(t,"ReconnectButton",function(){return R}),n.d(t,"RetryButton",function(){return H}),n.d(t,"pickChar",function(){return F}),n.d(t,"pickEmotion",function(){return U}),n.d(t,"pickEvidence",function(){return Z}),n.d(t,"addEvidence",function(){return X}),n.d(t,"editEvidence",function(){return G}),n.d(t,"deleteEvidence",function(){return V}),n.d(t,"cancelEvidence",function(){return z}),n.d(t,"getIndexFromSelect",function(){return W}),n.d(t,"updateEvidenceIcon",function(){return q}),n.d(t,"updateActionCommands",function(){return K}),n.d(t,"changeBackgroundOOC",function(){return Q}),n.d(t,"changeRoleOOC",function(){return J}),n.d(t,"randomCharacterOOC",function(){return Y}),n.d(t,"callMod",function(){return ee}),n.d(t,"initWT",function(){return te}),n.d(t,"initCE",function(){return ne}),n.d(t,"addHPD",function(){return ie}),n.d(t,"redHPD",function(){return oe}),n.d(t,"addHPP",function(){return ce}),n.d(t,"redHPP",function(){return ae}),n.d(t,"updateBackgroundPreview",function(){return se}),n.d(t,"toggleEffect",function(){return re}),n.d(t,"toggleFlip",function(){return le}),n.d(t,"togglePresent",function(){return de}),n.d(t,"toggleMenu",function(){return ue}),n.d(t,"toggleShout",function(){return me});var d={};location.search.substr(1).split("&").forEach(function(e){d[e.split("=")[0]]=e.split("=")[1]});var u=d.ip,m=d.mode,h=d.asset||"http://s3.wasabisys.com/webao/base/",g=h+"sounds/music/",f=!1;/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)&&(f=!0);var p=0,y=1,v=0,E=new a({canvas:!0,ie_activex:!0,screen_resolution:!0}).get();console.log(E);var _=new Date(0),w=function(){function e(t){var n=this;s(this,e),this.serv=new WebSocket("ws://"+t),this.serv.onopen=function(e){return n.onOpen(e)},this.serv.onclose=function(e){return n.onClose(e)},this.serv.onmessage=function(e){return n.onMessage(e)},this.serv.onerror=function(e){return n.onError(e)},this.flip=!1,this.presentable=!1,this.hp=[0,0],this.playerID=1,this.charID=-1,this.testimonyID=0,this.chars=[],this.emotes=[],this.evidences=[],this.resources={holdit:{src:"misc/holdit.gif",duration:720},objection:{src:"misc/objection.gif",duration:720},takethat:{src:"misc/takethat.gif",duration:840},witnesstestimony:{src:"misc/witnesstestimony.gif",duration:1560,sfx:"sounds/general/sfx-testimony.wav"},crossexamination:{src:"misc/crossexamination.gif",duration:1600,sfx:"sounds/general/sfx-testimony2.wav"}},this.selectedEmote=-1,this.selectedEvidence=0,this.checkUpdater=null,this.musicList=Object(),this.handlers={MS:function(e){return n.handleMS(e)},CT:function(e){return n.handleCT(e)},MC:function(e){return n.handleMC(e)},RMC:function(e){return n.handleRMC(e)},CI:function(e){return n.handleCI(e)},SC:function(e){return n.handleSC(e)},EI:function(e){return n.handleEI(e)},LE:function(e){return n.handleLE(e)},EM:function(e){return n.handleEM(e)},SM:function(e){return n.handleSM(e)},BD:function(e){return n.handleBD(e)},music:function(e){return n.handlemusic(e)},DONE:function(e){return n.handleDONE(e)},BN:function(e){return n.handleBN(e)},NBG:function(e){return n.handleNBG(e)},HP:function(e){return n.handleHP(e)},RT:function(e){return n.handleRT(e)},ZZ:function(e){return n.handleZZ(e)},ID:function(e){return n.handleID(e)},PN:function(e){return n.handlePN(e)},SI:function(e){return n.handleSI(e)},CharsCheck:function(e){return n.handleCharsCheck(e)},PV:function(e){return n.handlePV(e)},CHECK:function(e){}},this._lastTimeICReceived=new Date(0)}return l(e,[{key:"me",value:function(){return this.chars[this.charID]}},{key:"myEmote",value:function(){return this.emotes[this.selectedEmote]}},{key:"myEvidence",value:function(){return this.presentable?this.selectedEvidence:0}},{key:"sendOOC",value:function(e){this.serv.send("CT#".concat(he(fe(document.getElementById("OOC_name").value)),"#").concat(he(fe(e)),"#%"))}},{key:"sendIC",value:function(e,t,n,i,o,c,a,s,r,l,d,u,m){this.serv.send("MS#chat#".concat(e,"#").concat(t,"#").concat(n)+"#".concat(he(fe(i)),"#").concat(o,"#").concat(c,"#").concat(a)+"#".concat(this.charID,"#").concat(s,"#").concat(v,"#").concat(l,"#").concat(d,"#").concat(u,"#").concat(m,"#%"))}},{key:"sendPE",value:function(e,t,n){this.serv.send("PE#".concat(he(fe(e)),"#").concat(he(fe(t)),"#").concat(n,"#%"))}},{key:"sendEE",value:function(e,t,n,i){this.serv.send("EE#".concat(e,"#").concat(he(fe(t)),"#").concat(he(fe(n)),"#").concat(i,"#%"))}},{key:"sendDE",value:function(e){this.serv.send("DE#".concat(e,"#%"))}},{key:"sendHP",value:function(e,t){this.serv.send("HP#".concat(e,"#").concat(t,"#%"))}},{key:"sendZZ",value:function(e){this.serv.send("ZZ#".concat(e,"#%"))}},{key:"sendRT",value:function(e){"jud"==this.chars[this.charID].side&&this.serv.send("RT#".concat(e,"#%"))}},{key:"sendMusicChange",value:function(e){this.serv.send("MC#".concat(e,"#").concat(this.charID,"#%"))}},{key:"sendLeaveRoom",value:function(){this.serv.send("FC#%")}},{key:"joinServer",value:function(){var e=this;this.serv.send("HI#".concat(E,"#%")),this.serv.send("ID#webAO#2.3#%"),this.checkUpdater=setInterval(function(){return e.sendCheck()},5e3)}},{key:"loadResources",value:function(){document.getElementById("OOC_name").value="web"+this.playerID;var e=document.getElementById("evi_select");e.add(new Option("Custom",0)),o.forEach(function(t){e.add(new Option(t))});var t=document.getElementById("bg_select");t.add(new Option("Custom",0)),i.forEach(function(e){t.add(new Option(e))});for(var n=["holdit","objection","takethat"],c=0;c<n.length;c++){D(h+this.resources[n[c]].src.toLowerCase(),this.callbackLoadImageResources,n[c])}for(var a=["witnesstestimony","crossexamination"],s=0;s<a.length;s++){D("".concat(h,"themes/default/").concat(a[s],".gif"),this.callbackLoadImageResources,a[s]),D(h+this.resources[a[s]].sfx.toLowerCase(),this.callbackLoadSFXResources,a[s])}}},{key:"callbackLoadImageResources",value:function(e,t,n){e&&(ye.resources[t].src=n,ve.getAnimLength(n,ye.callbackGetResourceLength,t))}},{key:"callbackGetResourceLength",value:function(e,t){ye.resources[t].duration=e}},{key:"callbackLoadSFXResources",value:function(e,t,n){e&&(ye.resources[t].sfx=n)}},{key:"initialObservBBCode",value:function(){var e=document.getElementById("client_inner_chat");new MutationObserver(function(e){e.forEach(function(e){var t=e.addedNodes;null!==t&&t.forEach(function(e){"C"==e.tagName?e.style.color=e.getAttribute("a"):"M"==e.tagName&&(e.hasAttribute("a")?e.style.backgroundColor=e.getAttribute("a"):(e.style.backgroundColor="yellow",e.style.color="black"))})})}).observe(e,{attributes:!0,childList:!0})}},{key:"sendCharacter",value:function(e){this.serv.send("CC#".concat(this.playerID,"#").concat(e,"#web#%"))}},{key:"sendMusic",value:function(e){this.serv.send("MC#".concat(e))}},{key:"sendCheck",value:function(){this.serv.send("CH#".concat(this.charID,"#%"))}},{key:"onOpen",value:function(e){"watch"===m?(document.getElementById("client_loading").style.display="none",document.getElementById("client_charselect").style.display="none"):ye.joinServer()}},{key:"onClose",value:function(e){console.error("The connection was closed: ".concat(e.reason," (").concat(e.code,")")),1001!==e.code&&(document.getElementById("client_error").style.display="block",document.getElementById("error_id").textContent=e.code,this.cleanup())}},{key:"onMessage",value:function(e){var t=e.data;console.debug(t);var n=t.split("%")[0].split("#"),i=n[0],o=this.handlers[i];void 0!==o?o(n):console.warn("Invalid packet header ".concat(i))}},{key:"onError",value:function(e){console.error("A network error occurred: ".concat(e.reason," (").concat(e.code,")")),document.getElementById("client_error").style.display="block",document.getElementById("error_id").textContent=e.code,this.cleanup()}},{key:"cleanup",value:function(){try{this.serv.close(1001)}catch(e){}clearInterval(this.checkUpdater)}},{key:"prepChat",value:function(e){return ge(pe(e)).replace(/\\n/g,"<br>").replace(/\[(\/?)b\]/g,"<$1b>").replace(/\[(\/?)i\]/g,"<$1i>").replace(/\[(\/?)s\]/g,"<$1del>").replace(/\[(\/?)u\]/g,"<$1u>").replace(/\[(\/?)sub\]/g,"<$1sub>").replace(/\[(\/?)sup\]/g,"<$1sup>").replace(/\[m=([#a-zA-Z0-9]+)\]/g,'<m a="$1">').replace(/\[(\/?)m\]/g,"<$1m>").replace(/\[c=?([#a-zA-Z0-9]+)\]/g,'<c a="$1">').replace(/\[\/c\]/g,"</c>")}},{key:"handleMS",value:function(e){if(e[4]!=ve.chatmsg.content){document.getElementById("client_inner_chat").innerHTML="";for(var t={character:-1,preanim:escape(e[2]),nameplate:e[3],name:e[3],speaking:"(b)"+escape(e[4]),silent:"(a)"+escape(e[4]),content:this.prepChat(e[5]),side:e[6],sound:escape(e[7]),type:e[8],snddelay:e[10],objection:e[11],evidence:e[12],flip:e[13],flash:e[14],color:e[15],isnew:!0},n=0;n<this.chars.length;n++)if(this.chars[n].name==e[3]){t.character=n;break}t.character==this.charID&&function(){document.getElementById("client_inputbox").value="",p&&(document.getElementById("button_effect_"+p).className="client_button",p=0);v&&(document.getElementById("button_"+v).className="client_button",v=0)}(),ve.say(t)}}},{key:"handleCT",value:function(e){var t=document.getElementById("client_ooclog");t.innerHTML+="".concat(pe(ge(e[1])),": ").concat(pe(ge(e[2])),"\r\n"),t.scrollTop>t.scrollHeight-600&&(t.scrollTop=t.scrollHeight)}},{key:"handleMC",value:function(e){var t=ve.music;if(t.pause(),t.src=g+e[1].toLowerCase(),t.play(),e[2]>=0){var n=this.chars[e[2]].name;j("".concat(n," changed music to ").concat(e[1]))}else j("The music was changed to ".concat(e[1]))}},{key:"handleRMC",value:function(e){ve.music.pause(),ve.music=new Audio(this.musicList[e[1]]);var t=ve.music;t.totime=e[1],t.offset=(new Date).getTime()/1e3,t.addEventListener("loadedmetadata",function(){t.currentTime+=parseFloat(t.totime+((new Date).getTime()/1e3-t.offset)).toFixed(3),t.play()},!1)}},{key:"handleCI",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Character "+e[1],this.serv.send("AN#"+(e[1]/10+1)+"#%");for(var t=2;t<e.length-1;t++)if(t%2==0){var n=e[t].split("&");this.chars[e[t-1]]={name:n[0],desc:n[1],evidence:n[3],icon:h+"characters/"+escape(n[0].toLowerCase())+"/char_icon.png"}}}},{key:"handleSC",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Characters";for(var t=1;t<e.length-1;t++){var n=e[t].split("&");this.chars[t-1]={name:n[0],desc:n[1],evidence:n[3],icon:h+"characters/"+escape(n[0].toLowerCase())+"/char_icon.png"}}this.serv.send("RM#%")}},{key:"handleEI",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Evidence "+e[1],this.serv.send("RM#%")}},{key:"handleLE",value:function(e){this.evidences=[];for(var t=1;t<e.length-1;t++){var n=e[t].split("&");this.evidences[t-1]={name:pe(ge(n[0])),desc:pe(ge(n[1])),filename:escape(n[2]),icon:h+"evidence/"+escape(n[2].toLowerCase())}}var i=document.getElementById("evidences");i.innerHTML="";for(var o=1;o<=this.evidences.length;o++)i.innerHTML+='<img src="'.concat(this.evidences[o-1].icon,'" \n\t\t\t\tid="evi_').concat(o,'" \n\t\t\t\talt="').concat(this.evidences[o-1].name,'"\n\t\t\t\tclass="client_button"\n\t\t\t\tonclick="pickEvidence(').concat(o,')">')}},{key:"handleEM",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Music "+e[1],this.serv.send("AM#"+(e[1]/10+1)+"#%");for(var t=document.getElementById("client_musiclist"),n=2;n<e.length-1;n++)if(n%2==0){var i=document.createElement("OPTION");i.text=e[n],t.options.add(i)}}},{key:"handleSM",value:function(e){document.getElementById("client_loadingtext").innerHTML="Loading Music ";for(var t=document.getElementById("client_musiclist"),n=!1,i=1;i<e.length-1;i++)if(/\.(?:wav|mp3|mp4|ogg|opus)$/i.test(e[i])&&!n&&(n=!0),n){var o=document.createElement("OPTION");o.text=e[i],t.options.add(o)}else{var c=document.createElement("SPAN");c.className="location-box",c.textContent=e[i],c.onclick=function(){x(this)},document.getElementById("areas").appendChild(c)}var a=document.getElementById("areas");if(a.lastChild.textContent.startsWith("=")){var s=document.createElement("OPTION");s.text=a.lastChild.textContent,t.insertBefore(s,t.firstChild),a.removeChild(a.lastChild)}this.serv.send("RD#%")}},{key:"handleBD",value:function(e){document.getElementById("client_loadingtext").innerHTML="Banned: "+e[1]}},{key:"handlemusic",value:function(e){for(var t=0;t<e.length/2;t++)this.musicList[e[2*t]]=e[2*t+1]}},{key:"handleDONE",value:function(e){document.getElementById("client_loading").style.display="none",document.getElementById("client_charselect").style.display="block"}},{key:"handleBN",value:function(e){ve.bgname=escape(e[1]);var t=W("bg_select",escape(e[1]));document.getElementById("bg_select").selectedIndex=t,se(),0==t&&(document.getElementById("bg_filename").value=e[1]),document.getElementById("bg_preview").src=h+"background/"+escape(e[1].toLowerCase())+"/defenseempty.png",-1==this.charID?N("jud"):N(this.chars[this.charID].side)}},{key:"handleNBG",value:function(e){}},{key:"handleHP",value:function(e){var t=10*e[2];1==e[1]?(this.hp[0]=e[2],$("#client_defense_hp > .health-bar").animate({width:t+"%"},500)):(this.hp[1]=e[2],$("#client_prosecutor_hp > .health-bar").animate({width:t+"%"},500))}},{key:"handleRT",value:function(e){"testimony1"==e[1]?this.testimonyID=1:this.testimonyID=2,ve.initTestimonyUpdater()}},{key:"handleZZ",value:function(e){var t=document.getElementById("client_ooclog");t.innerHTML+="$Alert: ".concat(pe(ge(e[1])),"\r\n"),t.scrollTop>t.scrollHeight-60&&(t.scrollTop=t.scrollHeight)}},{key:"handleID",value:function(e){this.playerID=e[1]}},{key:"handlePN",value:function(e){this.serv.send("askchaa#%")}},{key:"handleSI",value:function(e){f?this.serv.send("askchar2#%"):this.serv.send("RC#%")}},{key:"handleCharsCheck",value:function(e){var t;document.getElementById("client_chartable").innerHTML="";for(var n=0;n<this.chars.length;n++){n%8==0&&(t=document.createElement("TR"));var i=document.createElement("TD"),o="",c=this.chars[n].icon;"-1"==e[n+1]&&(o=" dark"),i.innerHTML="<img class='demothing".concat(o,"' id='demo_").concat(n,"' ")+"src='".concat(c,"' alt='").concat(this.chars[n].name,"' onclick='pickChar(").concat(n,")' ")+"onerror='demoError(this);'>",t.appendChild(i),n%8==0&&document.getElementById("client_chartable").appendChild(t)}}},{key:"handlePV",value:function(e){this.charID=e[3],document.getElementById("client_charselect").style.display="none",document.getElementById("client_inputbox").style.display="";var t=this.me(),n=this.emotes,i=document.getElementById("client_emo");i.innerHTML="",i.style.display="";var o=new XMLHttpRequest;o.withCredentials=!1,o.open("GET",h+"characters/"+escape(this.me().name.toLowerCase())+"/char.ini",!0),o.responseType="text",o.onload=function(e){if(200==this.status){var o=this.responseText,c=b.parse(o);t.side=c.Options.side,K(t.side);for(var a=1;a<=c.Emotions.number;a++){var s=c.Emotions[a].split("#"),r="0",l="0";void 0!==c.SoundN&&(r=c.SoundN[a]),void 0!==c.SoundT&&(l=c.SoundT[a]),n[a]={desc:s[0].toLowerCase(),speaking:s[1].toLowerCase(),silent:s[2].toLowerCase(),zoom:s[3],sfx:r.toLowerCase(),sfxdelay:l,button_off:h+"characters/".concat(escape(t.name).toLowerCase(),"/emotions/button").concat(a,"_off.png"),button_on:h+"characters/".concat(escape(t.name).toLowerCase(),"/emotions/button").concat(a,"_on.png")},i.innerHTML+="<img src=".concat(n[a].button_off,'\n\t\t\t\t\t\t id="emo_').concat(a,'"\n\t\t\t\t\t\t alt="').concat(n[a].desc,'"\n\t\t\t\t\t\t class="client_button"\n\t\t\t\t\t\t onclick="pickEmotion(').concat(a,')">')}U(1)}},o.send()}}]),e}(),I=function(){function e(){s(this,e),this.textnow="",this.chatmsg={isnew:!1,content:"",objection:"0",sound:"",startpreanim:!1,startspeaking:!1,side:null,color:"0",snddelay:0,preanimdelay:0},this.blip=new Audio(h+"sounds/general/sfx-blipmale.wav"),this.blip.volume=.5,this.blipChannels=new Array(6);for(var t=0;t<this.blipChannels.length;t++)this.blipChannels[t]=new Audio(h+"sounds/general/sfx-blipmale.wav"),this.blipChannels[t].volume=.5;this.currentBlipChannel=0,this.sfxaudio=new Audio(h+"sounds/general/sfx-blipmale.wav"),this.sfxplayed=0,this.music=new Audio,this.music.play(),this.updater=null,this.testimonyUpdater=null,this.bgname="gs4",this.testimonyTimer=0,this.shoutTimer=0,this.textTimer=0,this._animating=!1}return l(e,[{key:"isAnimating",value:function(){return this._animating}},{key:"setBlipVolume",value:function(e){for(var t=0;t<this.blipChannels.length;t++)this.blipChannels[t].volume=e}},{key:"bgFolder",value:function(){return"".concat(h,"background/").concat(this.bgname.toLowerCase(),"/")}},{key:"say",value:function(e){this.chatmsg=e,j(e.content,e.nameplate),N(e.side),this.textnow="",this.sfxplayed=0,this.textTimer=0,this._animating=!0,clearTimeout(this.updater),"-"!=e.preanim?e.preanimdelay=this.getAnimLength("".concat(h,"characters/").concat(escape(e.name.toLowerCase()),"/").concat(e.preanim.toLowerCase(),".gif"),this.initUpdater):this.initUpdater(0)}},{key:"initUpdater",value:function(e){ve.chatmsg.preanimdelay=parseInt(e),ve.updater=setTimeout(function(){return ve.updateText()},60)}},{key:"initTestimonyUpdater",value:function(){var e=this;if(ye.testimonyID>0){var t="";1==ye.testimonyID?t="witnesstestimony":2==ye.testimonyID&&(t="crossexamination"),new Audio(ye.resources[t].sfx).play(),this.testimonyTimer=0;var n=document.getElementById("client_testimony");n.src=ye.resources[t].src,n.style.display="",this.testimonyUpdater=setTimeout(function(){return e.updateTestimony()},60)}}},{key:"getAnimLength",value:function(e,t,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.addEventListener("load",function(){var e=gify.getInfo(i.response);console.log(e.duration),t(e.duration,n)}),i.send()}},{key:"updateTestimony",value:function(){var e=this;this.testimonyTimer=this.testimonyTimer+60,1==ye.testimonyID?this.testimonyTimer>=ye.resources.witnesstestimony.duration?this.disposeTestimony():this.testimonyUpdater=setTimeout(function(){return e.updateTestimony()},60):2==ye.testimonyID?this.testimonyTimer>=ye.resources.crossexamination.duration?this.disposeTestimony():this.testimonyUpdater=setTimeout(function(){return e.updateTestimony()},60):this.disposeTestimony()}},{key:"disposeTestimony",value:function(){ye.testimonyID=0,this.testimonyTimer=0,document.getElementById("client_testimony").style.display="none",clearTimeout(this.testimonyUpdater)}},{key:"updateText",value:function(){var e=this,t=document.getElementById("client_name"),n=document.getElementById("client_chat"),i=document.getElementById("client_char"),o=document.getElementById("client_evi"),c=document.getElementById("client_background"),a=document.getElementById("client_shout"),s=document.getElementById("client_inner_chat");if(1==this.chatmsg.flip?i.style.transform="scaleX(-1)":i.style.transform="scaleX(1)",this._animating&&(this.updater=setTimeout(function(){return e.updateText()},60)),this.chatmsg.isnew){c.style.backgroundColor="transparent",t.style.display="none",n.style.display="none",o.style.opacity="0",o.style.height="0%";var r={1:"holdit",2:"objection",3:"takethat"}[this.chatmsg.objection];void 0!==r?(a.src=ye.resources[r].src,new Audio("".concat(h,"characters/").concat(this.chatmsg.name.toLowerCase(),"/").concat(r,".wav")).play(),this.shoutTimer=850):this.shoutTimer=0,this.chatmsg.isnew=!1,this.chatmsg.startpreanim=!0}if(this.textTimer>=this.shoutTimer&&this.chatmsg.startpreanim)2==this.chatmsg.flash?(this.sfxaudio.pause(),this.sfxplayed=1,this.sfxaudio.src=h+"sounds/general/sfx-stab.wav",this.sfxaudio.play(),$("#client_gamewindow").effect("shake",{direction:"up"})):1==this.chatmsg.flash&&(c.style.backgroundColor="white",this.sfxaudio.pause(),this.sfxplayed=1,this.sfxaudio.src=h+"sounds/general/sfx-realization.wav",this.sfxaudio.play(),$("#client_gamewindow").effect("pulsate")),this.chatmsg.preanimdelay>0&&(a.src="misc/placeholder.gif",N(this.chatmsg.side),i.src=h+"characters/"+escape(this.chatmsg.name.toLowerCase())+"/"+this.chatmsg.preanim.toLowerCase()+".gif"),this.chatmsg.startpreanim=!1,this.chatmsg.startspeaking=!0;else if(this.textTimer>=this.shoutTimer+this.chatmsg.preanimdelay&&!this.chatmsg.startpreanim)if(this.chatmsg.startspeaking){for(this.chatmsg.evidence>0&&(o.style.backgroundImage="url('"+ye.evidences[this.chatmsg.evidence-1].icon+"')","def"==this.chatmsg.side?(o.style.right="1.5em",o.style.left="initial",$("#client_evi").animate({height:"30%",opacity:1},250)):(o.style.right="initial",o.style.left="1.5em",$("#client_evi").animate({height:"30%",opacity:1},250))),t.style.display="block",t.style.fontSize=.7*t.offsetHeight+"px";t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(this.chatmsg.nameplate)),n.style.display="block",n.style.fontSize=.25*n.offsetHeight+"px";s.style.color={0:"#ffffff",1:"#00ff00",2:"#ff0000",3:"#ffaa00",4:"#0000ff",5:"#ffff00",6:"#aa00aa"}[this.chatmsg.color]||"#ffffff",this.chatmsg.startspeaking=!1,0==this.chatmsg.preanimdelay&&(a.src="misc/placeholder.gif",N(this.chatmsg.side)),i.src=h+"characters/"+escape(this.chatmsg.name.toLowerCase())+"/"+this.chatmsg.speaking.toLowerCase()+".gif",this.textnow==this.chatmsg.content&&(i.src=h+"characters/"+escape(this.chatmsg.name.toLowerCase())+"/"+this.chatmsg.silent.toLowerCase()+".gif",this._animating=!1,clearTimeout(this.updater))}else if(this.textnow!=this.chatmsg.content){for(" "!=this.chatmsg.content.charAt(this.textnow.length)&&(this.blipChannels[this.currentBlipChannel].play(),this.currentBlipChannel++,this.currentBlipChannel%=this.blipChannels.length),this.textnow=this.chatmsg.content.substring(0,this.textnow.length+1);s.hasChildNodes();)s.removeChild(s.firstChild);s.appendChild(document.createTextNode(this.textnow)),this.textnow==this.chatmsg.content&&(this.textTimer=0,this._animating=!1,i.src=h+"characters/"+escape(this.chatmsg.name.toLowerCase())+"/"+this.chatmsg.silent.toLowerCase()+".gif",clearTimeout(this.updater))}!this.sfxplayed&&this.chatmsg.snddelay+this.shoutTimer>=this.textTimer&&(this.sfxaudio.pause(),this.sfxplayed=1,"0"!=this.chatmsg.sound&&"1"!=this.chatmsg.sound&&(this.sfxaudio.src=h+"sounds/general/"+escape(this.chatmsg.sound.toLowerCase())+".wav",this.sfxaudio.play())),this.textTimer=this.textTimer+60}}]),e}(),b=function(){function e(){s(this,e)}return l(e,null,[{key:"parse",value:function(e){var t={section:/^\s*\[\s*([^\]]*)\s*\]\s*$/,param:/^\s*([\w.\-_]+)\s*=\s*(.*?)\s*$/,comment:/^\s*;.*$/},n={},i=e.split(/\r\n|\r|\n/),o=null;return i.forEach(function(e){if(!t.comment.test(e)&&0!=e.length)if(t.param.test(e)){var i=e.match(t.param);o?n[o][i[1]]=i[2]:n[i[1]]=i[2]}else if(t.section.test(e)){var c=e.match(t.section);n[c[1]]={},o=c[1]}}),n}}]),e}();function C(e){13==e.keyCode&&(ye.sendOOC(document.getElementById("client_oocinputbox").value),document.getElementById("client_oocinputbox").value="")}function B(e){if(13==e.keyCode){var t=ye.me(),n=ye.myEmote(),i=ye.myEvidence(),o=ye.flip?1:0,c=document.getElementById("textcolor").value,a="0",s="0";document.getElementById("sendsfx").checked&&(a=n.sfx,s=n.sfxdelay),ye.sendIC(n.speaking,t.name,n.silent,document.getElementById("client_inputbox").value,t.side,a,n.zoom,s,v,i,o,p,c)}}function k(e){var t=document.getElementById("client_musiclist").value;ye.sendMusicChange(t)}function x(e){var t=e.textContent;ye.sendMusicChange(t);var n=document.createElement("div");n.className="hrtext",n.textContent="switched to ".concat(e.textContent),document.getElementById("client_log").appendChild(n)}function T(){ve.music.volume=document.getElementById("client_mvolume").value/100}function S(){ve.sfxaudio.volume=document.getElementById("client_svolume").value/100}function L(){ve.setBlipVolume(document.getElementById("client_bvolume").value/100)}function O(e){ye.sendLeaveRoom(),document.getElementById("client_charselect").style.display="block",document.getElementById("client_emo").innerHTML=""}function P(e){return e.onerror="",e.src="misc/placeholder.gif",!0}function M(e){return e.onerror="",e.src="/misc/placeholder.png",!0}function D(e,t,n){var i=new XMLHttpRequest;i.onreadystatechange=function(){4==this.readyState&&200==this.status?t(!0,n,e):t(!1,n,e)},i.open("GET",e,!0),i.send()}function N(e){var t,n=ve.bgFolder();switch(document.getElementById("client_fg").style.display="none",document.getElementById("client_bench").style.display="none",e){case"def":document.getElementById("client_court").src=n+"defenseempty.png",document.getElementById("client_bench").style.display="block",D(n+"defensedesk.png",A,e),t="defense";break;case"pro":document.getElementById("client_court").src=n+"prosecutorempty.png",document.getElementById("client_bench").style.display="block",D(n+"prosecutiondesk.png",A,e),t="prosecution";break;case"hld":document.getElementById("client_court").src=n+"helperstand.png",t="defense";break;case"hlp":document.getElementById("client_court").src=n+"prohelperstand.png",t="prosecution";break;case"wit":document.getElementById("client_court").src=n+"witnessempty.png",document.getElementById("client_bench").style.display="block",D(n+"stand.png",A,e),t="prosecution";break;case"jud":document.getElementById("client_court").src=n+"judgestand.png",t="prosecution"}5==ve.chatmsg.type&&(document.getElementById("client_bench").style.display="none",document.getElementById("client_court").src=h+"themes/default/"+t+"_speedlines.gif")}function A(e,t){var n=ve.bgFolder();"def"==t?document.getElementById("client_bench").src=e?n+"defensedesk.png":n+"bancodefensa.png":"pro"==t?document.getElementById("client_bench").src=e?n+"prosecutiondesk.png":n+"bancoacusacion.png":"wit"==t&&(document.getElementById("client_bench").src=e?n+"stand.png":n+"estrado.png")}function R(){ye.cleanup(),(ye=new w(u))&&(m="join",document.getElementById("client_error").style.display="none")}function H(){ye.joinServer()}function j(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Date,i=document.createElement("p"),o=document.createElement("span");if(o.id="iclog_name",o.appendChild(document.createTextNode(t)),i.appendChild(o),i.appendChild(document.createTextNode(e)),_.getMinutes()!==n.getMinutes()){var c=document.createElement("span");c.id="iclog_time",c.innerText=n.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}),i.appendChild(c)}var a=document.getElementById("client_log");a.appendChild(i),a.scrollTop>a.scrollHeight-800&&(a.scrollTop=a.scrollHeight),_=new Date}function F(e){e<1e3?ye.sendCharacter(e):(document.getElementById("client_charselect").style.display="none",document.getElementById("client_inputbox").style.display="none",document.getElementById("client_emo").style.display="none")}function U(e){-1!=ye.selectedEmote&&(document.getElementById("emo_"+ye.selectedEmote).src=ye.myEmote().button_off),ye.selectedEmote=e,document.getElementById("emo_"+e).src=ye.myEmote().button_on}function Z(e){if(ye.selectedEvidence!==e){ye.selectedEvidence>0&&(document.getElementById("evi_"+ye.selectedEvidence).className="client_button"),document.getElementById("evi_"+e).className="client_button dark",ye.selectedEvidence=e,document.getElementById("evi_name").value=ye.evidences[e-1].name,document.getElementById("evi_desc").value=ye.evidences[e-1].desc;var t=W("evi_select",ye.evidences[e-1].filename);document.getElementById("evi_select").selectedIndex=t,0==t&&(document.getElementById("evi_filename").value=ye.evidences[e-1].filename),q(),document.getElementById("evi_add").className="client_button hover_button inactive",document.getElementById("evi_edit").className="client_button hover_button",document.getElementById("evi_cancel").className="client_button hover_button",document.getElementById("evi_del").className="client_button hover_button"}else z()}function X(){var e=document.getElementById("evi_select");ye.sendPE(document.getElementById("evi_name").value,document.getElementById("evi_desc").value,0==e.selectedIndex?document.getElementById("evi_filename").value:e.options[e.selectedIndex].text),z()}function G(){var e=document.getElementById("evi_select"),t=parseInt(ye.selectedEvidence)-1;ye.sendEE(t,document.getElementById("evi_name").value,document.getElementById("evi_desc").value,0==e.selectedIndex?document.getElementById("evi_filename").value:e.options[e.selectedIndex].text),z()}function V(){var e=parseInt(ye.selectedEvidence)-1;ye.sendDE(e),z()}function z(){ye.selectedEvidence>0&&(document.getElementById("evi_"+ye.selectedEvidence).className="client_button"),ye.selectedEvidence=0,document.getElementById("evi_select").selectedIndex=0,q(),document.getElementById("evi_filename").value="",document.getElementById("evi_name").value="",document.getElementById("evi_desc").value="",document.getElementById("evi_icon").style.backgroundImage="url('misc/empty.png')",document.getElementById("evi_add").className="client_button hover_button",document.getElementById("evi_edit").className="client_button hover_button inactive",document.getElementById("evi_cancel").className="client_button hover_button inactive",document.getElementById("evi_del").className="client_button hover_button inactive"}function W(e,t){for(var n=document.getElementById(e),i=1;i<n.length;++i)if(n.options[i].value==t)return i;return 0}function q(){var e=document.getElementById("evi_select"),t=document.getElementById("evi_filename"),n=document.getElementById("evi_icon");0===e.selectedIndex?(t.style.display="initial",n.style.backgroundImage="url(".concat(h,"evidence/").concat(t.value.toLowerCase(),")")):(t.style.display="none",n.style.backgroundImage="url(".concat(h,"evidence/").concat(e.value.toLowerCase(),")"))}function K(e){"jud"==e?(document.getElementById("judge_action").style.display="inline-table",document.getElementById("no_action").style.display="none"):(document.getElementById("no_action").style.display="inline-table",document.getElementById("judge_action").style.display="none");for(var t=0,n=document.getElementById("role_select").options;t<n.length;t++)if(e==n[t].value)return void(n.selectedIndex=t)}function Q(){var e="",t=document.getElementById("bg_select"),n=document.getElementById("bg_command").value;e=0==t.selectedIndex?document.getElementById("bg_filename").value:t.value,ye.sendOOC("/"+n.replace("$1",e))}function J(){var e=document.getElementById("role_select"),t=document.getElementById("role_command").value;ye.sendOOC("/"+t.replace("$1",e.value)),K(e.value)}function Y(){ye.sendOOC("/"+document.getElementById("randomchar_command").value)}function ee(){$("#callmod_dialog").dialog("open")}function te(){ye.sendRT("testimony1")}function ne(){ye.sendRT("testimony2")}function ie(){ye.sendHP(1,String(parseInt(ye.hp[0])+1))}function oe(){ye.sendHP(1,String(parseInt(ye.hp[0])-1))}function ce(){ye.sendHP(2,String(parseInt(ye.hp[1])+1))}function ae(){ye.sendHP(2,String(parseInt(ye.hp[1])-1))}function se(){var e=document.getElementById("bg_select"),t=document.getElementById("bg_filename"),n=document.getElementById("bg_preview");0==e.selectedIndex?(t.style.display="initial",n.src=h+"background/"+t.value.toLowerCase()+"/defenseempty.png"):(t.style.display="none",n.src=h+"background/"+e.value.toLowerCase()+"/defenseempty.png")}function re(e){e==p?(document.getElementById("button_effect_"+e).className="client_button",p=0):(document.getElementById("button_effect_"+e).className="client_button dark",p&&(document.getElementById("button_effect_"+p).className="client_button"),p=e)}function le(){ye.flip?document.getElementById("button_flip").className="client_button":document.getElementById("button_flip").className="client_button dark",ye.flip=!ye.flip}function de(){ye.presentable?document.getElementById("button_present").className="client_button":document.getElementById("button_present").className="client_button dark",ye.presentable=!ye.presentable}function ue(e){e!=y&&(document.getElementById("menu_"+e).className="menu_icon active",document.getElementById("content_"+e).className="menu_content active",document.getElementById("menu_"+y).className="menu_icon",document.getElementById("content_"+y).className="menu_content",y=e)}function me(e){e==v?(document.getElementById("button_"+e).className="client_button",v=0):(document.getElementById("button_"+e).className="client_button dark",v&&(document.getElementById("button_"+v).className="client_button"),v=e)}function he(e){return e.replace(/#/g,"<pound>").replace(/&/g,"<and>").replace(/%/g,"<percent>").replace(/\$/g,"<dollar>")}function ge(e){return e.replace(/<pound>/g,"#").replace(/<and>/g,"&").replace(/<percent>/g,"%").replace(/<dollar>/g,"$")}function fe(e){var t=document.getElementById("client_encoding").value;if("unicode"==t)return e.replace(/[^\0-~]/g,function(e){return"\\u"+("000"+e.charCodeAt().toString(16)).slice(-4)});if("utf16"==t){for(var n=new ArrayBuffer(2*e.length),i=new Uint16Array(n),o=0,c=e.length;o<c;o++)i[o]=e.charCodeAt(o);return String(i)}return e}function pe(e){var t=document.getElementById("client_decoding").value;return"unicode"==t?e.replace(/\\u([\d\w]{1,})/gi,function(e,t){return String.fromCharCode(parseInt(t,16))}):"utf16"==t?String.fromCharCode.apply(null,new Uint16Array(e.split(","))):e}window.onOOCEnter=C,window.onEnter=B,window.musiclist_click=k,window.area_click=x,window.changeMusicVolume=T,window.changeSFXVolume=S,window.changeBlipVolume=L,window.changeCharacter=O,window.imgError=P,window.demoError=M,window.ReconnectButton=R,window.RetryButton=H,window.pickChar=F,window.pickEmotion=U,window.pickEvidence=Z,window.addEvidence=X,window.editEvidence=G,window.deleteEvidence=V,window.cancelEvidence=z,window.getIndexFromSelect=W,window.updateEvidenceIcon=q,window.updateActionCommands=K,window.changeBackgroundOOC=Q,window.changeRoleOOC=J,window.randomCharacterOOC=Y,window.callMod=ee,window.initWT=te,window.initCE=ne,window.addHPD=ie,window.redHPD=oe,window.addHPP=ce,window.redHPP=ae,window.updateBackgroundPreview=se,window.toggleEffect=re,window.toggleFlip=le,window.togglePresent=de,window.toggleMenu=ue,window.toggleShout=me,void 0===String.prototype.trim&&(String.prototype.trim=function(){return String(this).replace(/^\s+|\s+$/g,"")});var ye=new w(u),ve=new I;$(document).ready(function(){ye.initialObservBBCode(),ye.loadResources()}),$(function(){$("#callmod_dialog").dialog({autoOpen:!1,resizable:!1,show:{effect:"drop",direction:"down",duration:500},hide:{effect:"drop",direction:"down",duration:500},height:"auto",width:400,modal:!0,buttons:{Sure:function(){var e=prompt("Please enter the reason","");ye.sendZZ(e),$(this).dialog("close")},Cancel:function(){$(this).dialog("close")}}})})}}); -//# sourceMappingURL=client.b.js.map
\ No newline at end of file diff --git a/dist/client.b.js.map b/dist/client.b.js.map deleted file mode 100644 index 884fac0..0000000 --- a/dist/client.b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./webAO/backgrounds.js","webpack:///./webAO/evidence.js","webpack:///./webAO/fingerprint.js","webpack:///./webAO/client.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","backgrounds","evidence","Fingerprint","options","nativeForEach","nativeMap","_classCallCheck","this","Array","forEach","map","each","obj","iterator","context","length","results","index","list","_typeof","hasher","screen_resolution","screen_orientation","canvas","ie_activex","keys","push","navigator","userAgent","language","screen","colorDepth","getScreenResolution","join","Date","getTimezoneOffset","hasSessionStorage","hasLocalStorage","window","indexedDB","document","body","addBehavior","openDatabase","cpuClass","platform","doNotTrack","getPluginsString","isCanvasSupported","getCanvasFingerprint","murmurhash3_32_gc","seed","remainder","bytes","h1","h1b","c1","c2","k1","charCodeAt","localStorage","e","sessionStorage","elem","createElement","getContext","isIE","appName","test","getIEPluginsString","getRegularPluginsString","plugins","mimeTypes","mt","type","suffixes","description","ActiveXObject","height","width","ctx","txt","textBaseline","font","fillStyle","fillRect","fillText","toDataURL","queryDict","location","search","substr","split","item","serverIP","ip","AO_HOST","asset","MUSIC_HOST","oldLoading","selectedEffect","selectedMenu","selectedShout","uid","console","log","lastICMessageTime","Client","address","_this","client_classCallCheck","serv","WebSocket","onopen","evt","onOpen","onclose","onClose","onmessage","onMessage","onerror","onError","flip","presentable","hp","playerID","charID","testimonyID","chars","emotes","evidences","resources","holdit","src","duration","objection","takethat","witnesstestimony","sfx","crossexamination","selectedEmote","selectedEvidence","checkUpdater","musicList","handlers","MS","args","handleMS","CT","handleCT","MC","handleMC","RMC","handleRMC","CI","handleCI","SC","handleSC","EI","handleEI","LE","handleLE","EM","handleEM","SM","handleSM","BD","handleBD","music","handlemusic","DONE","handleDONE","BN","handleBN","NBG","handleNBG","HP","handleHP","RT","handleRT","ZZ","handleZZ","ID","handleID","PN","handlePN","SI","handleSI","CharsCheck","handleCharsCheck","PV","handlePV","CHECK","_lastTimeICReceived","message","send","concat","escapeChat","encodeChat","getElementById","speaking","silent","side","ssfxname","zoom","ssfxdelay","flash","color","desc","img","id","msg","testimony","track","_this2","setInterval","sendCheck","evidence_select","add","Option","evidence_arr","background_select","background_arr","background","shouts","fileExists","toLowerCase","callbackLoadImageResources","callbackLoadSFXResources","result","resource","client","viewport","getAnimLength","callbackGetResourceLength","target","MutationObserver","mutations","mutation","children","addedNodes","node","tagName","style","getAttribute","hasAttribute","backgroundColor","observe","attributes","childList","character","song","display","joinServer","error","reason","code","textContent","cleanup","data","debug","header","handler","warn","close","clearInterval","unescapeChat","decodeChat","replace","chatmsg","content","innerHTML","preanim","escape","nameplate","prepChat","sound","snddelay","isnew","className","resetICParams","say","oocLog","scrollTop","scrollHeight","pause","play","musicname","appendICLog","Audio","totime","offset","getTime","addEventListener","currentTime","parseFloat","toFixed","chargs","icon","arg","filename","evidence_box","hmusiclist","newentry","text","flagAudio","newarea","onclick","area_click","appendChild","area_box","lastChild","startsWith","audio_title","insertBefore","firstChild","removeChild","bgname","bg_index","getIndexFromSelect","selectedIndex","updateBackgroundPreview","changeBackground","percent_hp","$","animate","initTestimonyUpdater","tr","td","icon_chosen","thispick","me","emotesList","xhr","XMLHttpRequest","withCredentials","open","responseType","onload","status","linifile","responseText","pinifile","INI","parse","Options","updateActionCommands","Emotions","number","emoteinfo","esfx","esfxd","SoundN","SoundT","sfxdelay","button_off","button_on","pickEmotion","Viewport","textnow","startpreanim","startspeaking","preanimdelay","blip","volume","blipChannels","currentBlipChannel","sfxaudio","sfxplayed","updater","testimonyUpdater","testimonyTimer","shoutTimer","textTimer","_animating","clearTimeout","initUpdater","animdelay","parseInt","setTimeout","updateText","_this3","testimonyOverlay","updateTestimony","callback","param","request","gifInfo","gify","getInfo","response","_this4","disposeTestimony","_this5","nameBox","chatBox","charSprite","eviBox","shoutSprite","chatBoxInner","transform","opacity","shout","1","2","3","effect","direction","backgroundImage","right","left","fontSize","offsetHeight","hasChildNodes","createTextNode","0","4","5","6","charAt","substring","regex","section","comment","lines","line","match","onOOCEnter","event","keyCode","sendOOC","onEnter","mychar","myemo","myEmote","myevi","myEvidence","myflip","mycolor","checked","sendIC","musiclist_click","playtrack","sendMusicChange","el","area","areaHr","changeMusicVolume","changeSFXVolume","changeBlipVolume","setBlipVolume","changeCharacter","sendLeaveRoom","imgError","image","demoError","url","xhttp","onreadystatechange","readyState","position","standname","bgfolder","bgFolder","callbackChangeBackground","ReconnectButton","RetryButton","toadd","arguments","undefined","time","entry","nameField","getMinutes","timeStamp","innerText","toLocaleTimeString","hour","minute","clientLog","pickChar","ccharacter","sendCharacter","emo","pickEvidence","icon_id","updateEvidenceIcon","cancelEvidence","addEvidence","sendPE","editEvidence","sendEE","deleteEvidence","sendDE","select_box","select_element","evidence_filename","evidence_iconbox","role_select","changeBackgroundOOC","bg_command","changeRoleOOC","role_command","randomCharacterOOC","callMod","dialog","initWT","sendRT","initCE","addHPD","sendHP","String","redHPD","addHPP","redHPP","background_filename","background_preview","toggleEffect","toggleFlip","togglePresent","toggleMenu","menu","toggleShout","estring","selectedEncoding","ch","toString","slice","buffer","ArrayBuffer","Uint16Array","strLen","selectedDecoding","group","fromCharCode","apply","trim","ready","initialObservBBCode","loadResources","autoOpen","resizable","show","hide","modal","buttons","Sure","prompt","sendZZ","Cancel"],"mappings":"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","file":"client.b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","export default [\r\n\t\"Anime\",\r\n\t\"birthday\",\r\n\t\"Christmas\",\r\n\t\"CountyCourt\",\r\n\t\"CruiseCourt\",\r\n\t\"default\",\r\n\t\"DGDEnglishCourt\",\r\n\t\"DGSJapanCourt\",\r\n\t\"DualDestinies\",\r\n\t\"EnglishCourt\",\r\n\t\"gs4\",\r\n\t\"GS4Night\",\r\n\t\"HD\",\r\n\t\"Khura'in\",\r\n\t\"mlp\",\r\n\t\"NewCourt\",\r\n\t\"RuinedCourt\",\r\n\t\"Sky\",\r\n\t\"SpaceCourt\",\r\n\t\"Themis\",\r\n\t\"TouhouCourt\",\r\n\t\"WitchTrialCourt\",\r\n\t\"Zetta\"\r\n];","export default [\r\n\t\"1.png\",\r\n\t\"2.png\",\r\n\t\"3.png\",\r\n\t\"4.png\",\r\n\t\"5.png\",\r\n\t\"6.png\",\r\n\t\"empty.png\",\r\n\t\"lawyerbadge.png\"\r\n];","/*\r\n***************************************************\r\n** http://davealger.info\r\n***************************************************\r\n\r\nThis is a javascript only way to fingerprint a user with better than 90% accuracy in as few bytes as possible and no cookie storage!\r\n\r\nSpecial thanks to Valentin Vasilyev for the original fingerprintjs slightly modified and to Open Source Device Fingerprinting by Dark Wave Tech for the various identity functions\r\n\r\n***************************************************\r\n*/\r\nexport default class Fingerprint {\r\n\tconstructor(options) {\r\n\t\tvar nativeForEach, nativeMap;\r\n\t\tnativeForEach = Array.prototype.forEach;\r\n\t\tnativeMap = Array.prototype.map;\r\n\t\tthis.each = function(obj, iterator, context) {\r\n\t\t\tif (obj === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (nativeForEach && obj.forEach === nativeForEach) {\r\n\t\t\t\tobj.forEach(iterator, context);\r\n\t\t\t} else if (obj.length === +obj.length) {\r\n\t\t\t\tfor (var i = 0, l = obj.length; i < l; i++) {\r\n\t\t\t\t\tif (iterator.call(context, obj[i], i, obj) === {})\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (var key in obj) {\r\n\t\t\t\t\tif (obj.hasOwnProperty(key)) {\r\n\t\t\t\t\t\tif (iterator.call(context, obj[key], key, obj) === {})\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.map = function(obj, iterator, context) {\r\n\t\t\tvar results = [];\r\n\t\t\tif (obj == null)\r\n\t\t\t\treturn results;\r\n\t\t\tif (nativeMap && obj.map === nativeMap)\r\n\t\t\t\treturn obj.map(iterator, context);\r\n\t\t\tthis.each(obj, function(value, index, list) {\r\n\t\t\t\tresults[results.length] = iterator.call(context, value, index, list);\r\n\t\t\t});\r\n\t\t\treturn results;\r\n\t\t};\r\n\t\tif (typeof options == \"object\") {\r\n\t\t\tthis.hasher = options.hasher;\r\n\t\t\tthis.screen_resolution = options.screen_resolution;\r\n\t\t\tthis.screen_orientation = options.screen_orientation;\r\n\t\t\tthis.canvas = options.canvas;\r\n\t\t\tthis.ie_activex = options.ie_activex;\r\n\t\t} else if (typeof options == \"function\") {\r\n\t\t\tthis.hasher = options;\r\n\t\t}\r\n\t}\r\n}\r\nFingerprint.prototype = {\r\n\tget: function() {\r\n\t\tvar keys = [];\r\n\t\tkeys.push(navigator.userAgent);\r\n\t\tkeys.push(navigator.language);\r\n\t\tkeys.push(screen.colorDepth);\r\n\t\tif (this.screen_resolution) {\r\n\t\t\tvar resolution = this.getScreenResolution();\r\n\t\t\tif (typeof resolution !== \"undefined\") {\r\n\t\t\t\tkeys.push(this.getScreenResolution().join(\"x\"));\r\n\t\t\t}\r\n\t\t}\r\n\t\tkeys.push(new Date().getTimezoneOffset());\r\n\t\tkeys.push(this.hasSessionStorage());\r\n\t\tkeys.push(this.hasLocalStorage());\r\n\t\tkeys.push(!!window.indexedDB);\r\n\t\tif (document.body) {\r\n\t\t\tkeys.push(typeof(document.body.addBehavior));\r\n\t\t} else {\r\n\t\t\tkeys.push(typeof undefined);\r\n\t\t}\r\n\t\tkeys.push(typeof(window.openDatabase));\r\n\t\tkeys.push(navigator.cpuClass);\r\n\t\tkeys.push(navigator.platform);\r\n\t\tkeys.push(navigator.doNotTrack);\r\n\t\tkeys.push(this.getPluginsString());\r\n\t\tif (this.canvas && this.isCanvasSupported()) {\r\n\t\t\tkeys.push(this.getCanvasFingerprint());\r\n\t\t}\r\n\t\tif (this.hasher) {\r\n\t\t\treturn this.hasher(keys.join(\"###\"), 31);\r\n\t\t} else {\r\n\t\t\treturn this.murmurhash3_32_gc(keys.join(\"###\"), 31);\r\n\t\t}\r\n\t},\r\n\tmurmurhash3_32_gc: function(key, seed) {\r\n\t\tvar remainder, bytes, h1, h1b, c1, c2, k1, i;\r\n\t\tremainder = key.length & 3;\r\n\t\tbytes = key.length - remainder;\r\n\t\th1 = seed;\r\n\t\tc1 = 0xcc9e2d51;\r\n\t\tc2 = 0x1b873593;\r\n\t\ti = 0;\r\n\t\twhile (i < bytes) {\r\n\t\t\tk1 = ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(++i) & 0xff) << 8) | ((key.charCodeAt(++i) & 0xff) << 16) | ((key.charCodeAt(++i) & 0xff) << 24);\r\n\t\t\t++i;\r\n\t\t\tk1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\r\n\t\t\tk1 = (k1 << 15) | (k1 >>> 17);\r\n\t\t\tk1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\r\n\t\t\th1 ^= k1;\r\n\t\t\th1 = (h1 << 13) | (h1 >>> 19);\r\n\t\t\th1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\r\n\t\t\th1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\r\n\t\t}\r\n\t\tk1 = 0;\r\n\t\tswitch (remainder) {\r\n\t\t\tcase 3:\r\n\t\t\t\tk1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\r\n\t\t\tcase 2:\r\n\t\t\t\tk1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\r\n\t\t\tcase 1:\r\n\t\t\t\tk1 ^= (key.charCodeAt(i) & 0xff);\r\n\t\t\t\tk1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\r\n\t\t\t\tk1 = (k1 << 15) | (k1 >>> 17);\r\n\t\t\t\tk1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\r\n\t\t\t\th1 ^= k1;\r\n\t\t}\r\n\t\th1 ^= key.length;\r\n\t\th1 ^= h1 >>> 16;\r\n\t\th1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\r\n\t\th1 ^= h1 >>> 13;\r\n\t\th1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\r\n\t\th1 ^= h1 >>> 16;\r\n\t\treturn h1 >>> 0;\r\n\t},\r\n\thasLocalStorage: function() {\r\n\t\ttry {\r\n\t\t\treturn !!window.localStorage;\r\n\t\t} catch (e) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\thasSessionStorage: function() {\r\n\t\ttry {\r\n\t\t\treturn !!window.sessionStorage;\r\n\t\t} catch (e) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\tisCanvasSupported: function() {\r\n\t\tvar elem = document.createElement(\"canvas\");\r\n\t\treturn !!(elem.getContext && elem.getContext(\"2d\"));\r\n\t},\r\n\tisIE: function() {\r\n\t\tif (navigator.appName === \"Microsoft Internet Explorer\") {\r\n\t\t\treturn true;\r\n\t\t} else if (navigator.appName === \"Netscape\" && /Trident/.test(navigator.userAgent)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tgetPluginsString: function() {\r\n\t\tif (this.isIE() && this.ie_activex) {\r\n\t\t\treturn this.getIEPluginsString();\r\n\t\t} else {\r\n\t\t\treturn this.getRegularPluginsString();\r\n\t\t}\r\n\t},\r\n\tgetRegularPluginsString: function() {\r\n\t\treturn this.map(navigator.plugins, function(p) {\r\n\t\t\tvar mimeTypes = this.map(p, function(mt) {\r\n\t\t\t\treturn [mt.type, mt.suffixes].join(\"~\");\r\n\t\t\t}).join(\",\");\r\n\t\t\treturn [p.name, p.description, mimeTypes].join(\"::\");\r\n\t\t}, this).join(\";\");\r\n\t},\r\n\tgetIEPluginsString: function() {\r\n\t\tif (window.ActiveXObject) {\r\n\t\t\tvar names = [\"ShockwaveFlash.ShockwaveFlash\", \"AcroPDF.PDF\", \"PDF.PdfCtrl\", \"QuickTime.QuickTime\", \"rmocx.RealPlayer G2 Control\", \"rmocx.RealPlayer G2 Control.1\", \"RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)\", \"RealVideo.RealVideo(tm) ActiveX Control (32-bit)\", \"RealPlayer\", \"SWCtl.SWCtl\", \"WMPlayer.OCX\", \"AgControl.AgControl\", \"Skype.Detection\"];\r\n\t\t\treturn this.map(names, function(name) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tnew ActiveXObject(name);\r\n\t\t\t\t\treturn name;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}).join(\";\");\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t},\r\n\tgetScreenResolution: function() {\r\n\t\tvar resolution;\r\n\t\tif (this.screen_orientation) {\r\n\t\t\tresolution = (screen.height > screen.width) ? [screen.height, screen.width] : [screen.width, screen.height];\r\n\t\t} else {\r\n\t\t\tresolution = [screen.height, screen.width];\r\n\t\t}\r\n\t\treturn resolution;\r\n\t},\r\n\tgetCanvasFingerprint: function() {\r\n\t\tvar canvas = document.createElement(\"canvas\");\r\n\t\tvar ctx = canvas.getContext(\"2d\");\r\n\t\tvar txt = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()_+-={}|[]\\:\\\"<>?;,.\";\r\n\t\tctx.textBaseline = \"top\";\r\n\t\tctx.font = \"14px 'Arial'\";\r\n\t\tctx.textBaseline = \"alphabetic\";\r\n\t\tctx.fillStyle = \"#f60\";\r\n\t\tctx.fillRect(125, 1, 62, 20);\r\n\t\tctx.fillStyle = \"#069\";\r\n\t\tctx.fillText(txt, 2, 15);\r\n\t\tctx.fillStyle = \"rgba(102, 204, 0, 0.7)\";\r\n\t\tctx.fillText(txt, 4, 17);\r\n\t\treturn canvas.toDataURL();\r\n\t}\r\n};\r\n\r\n/**************************************************/\r\n\r\n/**\r\nhttp://www.darkwavetech.com/fingerprint/fingerprint_code.html\r\n**/\r\nfunction fingerprint_flash() {\r\n\t\"use strict\";\r\n\tvar strOnError, objPlayerVersion, strVersion, strOut;\r\n\r\n\tstrOnError = \"N/A\";\r\n\tobjPlayerVersion = null;\r\n\tstrVersion = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\tobjPlayerVersion = swfobject.getFlashPlayerVersion();\r\n\t\tstrVersion = objPlayerVersion.major + \".\" + objPlayerVersion.minor + \".\" + objPlayerVersion.release;\r\n\t\tif (strVersion === \"0.0.0\") {\r\n\t\t\tstrVersion = \"N/A\";\r\n\t\t}\r\n\t\tstrOut = strVersion;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_browser() {\r\n\t\"use strict\";\r\n\tvar strOnError, strUserAgent, numVersion, strBrowser, strOut;\r\n\r\n\tstrOnError = \"Error\";\r\n\tstrUserAgent = null;\r\n\tnumVersion = null;\r\n\tstrBrowser = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\tstrUserAgent = navigator.userAgent.toLowerCase();\r\n\t\tif (/msie (\\d+\\.\\d+);/.test(strUserAgent)) { //test for MSIE x.x;\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tif (strUserAgent.indexOf(\"trident/6\") > -1) {\r\n\t\t\t\tnumVersion = 10;\r\n\t\t\t}\r\n\t\t\tif (strUserAgent.indexOf(\"trident/5\") > -1) {\r\n\t\t\t\tnumVersion = 9;\r\n\t\t\t}\r\n\t\t\tif (strUserAgent.indexOf(\"trident/4\") > -1) {\r\n\t\t\t\tnumVersion = 8;\r\n\t\t\t}\r\n\t\t\tstrBrowser = \"Internet Explorer \" + numVersion;\r\n\t\t} else if (strUserAgent.indexOf(\"trident/7\") > -1) { //IE 11+ gets rid of the legacy 'MSIE' in the user-agent string;\r\n\t\t\tnumVersion = 11;\r\n\t\t\tstrBrowser = \"Internet Explorer \" + numVersion;\r\n\t\t} else if (/firefox[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Firefox \" + numVersion;\r\n\t\t} else if (/opera[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Opera/x.x or Opera x.x (ignoring remaining decimal places);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Opera \" + numVersion;\r\n\t\t} else if (/chrome[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Chrome/x.x or Chrome x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Chrome \" + numVersion;\r\n\t\t} else if (/version[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Version/x.x or Version x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Safari \" + numVersion;\r\n\t\t} else if (/rv[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for rv/x.x or rv x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Mozilla \" + numVersion;\r\n\t\t} else if (/mozilla[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Mozilla/x.x or Mozilla x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Mozilla \" + numVersion;\r\n\t\t} else if (/binget[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for BinGet/x.x or BinGet x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (BinGet) \" + numVersion;\r\n\t\t} else if (/curl[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Curl/x.x or Curl x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (cURL) \" + numVersion;\r\n\t\t} else if (/java[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Java/x.x or Java x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (Java) \" + numVersion;\r\n\t\t} else if (/libwww-perl[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for libwww-perl/x.x or libwww-perl x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (libwww-perl) \" + numVersion;\r\n\t\t} else if (/microsoft url control -[\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Microsoft URL Control - x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (Microsoft URL Control) \" + numVersion;\r\n\t\t} else if (/peach[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for Peach/x.x or Peach x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (Peach) \" + numVersion;\r\n\t\t} else if (/php[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for PHP/x.x or PHP x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (PHP) \" + numVersion;\r\n\t\t} else if (/pxyscand[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for pxyscand/x.x or pxyscand x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (pxyscand) \" + numVersion;\r\n\t\t} else if (/pycurl[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for pycurl/x.x or pycurl x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (PycURL) \" + numVersion;\r\n\t\t} else if (/python-urllib[\\/\\s](\\d+\\.\\d+)/.test(strUserAgent)) { //test for python-urllib/x.x or python-urllib x.x (ignoring remaining digits);\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Library (Python URLlib) \" + numVersion;\r\n\t\t} else if (/appengine-google/.test(strUserAgent)) { //test for AppEngine-Google;\r\n\t\t\tnumVersion = Number(RegExp.$1); // capture x.x portion and store as a number\r\n\t\t\tstrBrowser = \"Cloud (Google AppEngine) \" + numVersion;\r\n\t\t} else {\r\n\t\t\tstrBrowser = \"Unknown\";\r\n\t\t}\r\n\t\tstrOut = strBrowser;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_canvas() {\r\n\t\"use strict\";\r\n\tvar strOnError, canvas, strCText, strText, strOut;\r\n\r\n\tstrOnError = \"Error\";\r\n\tcanvas = null;\r\n\tstrCText = null;\r\n\tstrText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~1!2@3#4$5%6^7&8*9(0)-_=+[{]}|;:',<.>/?\";\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\tcanvas = document.createElement(\"canvas\");\r\n\t\tstrCText = canvas.getContext(\"2d\");\r\n\t\tstrCText.textBaseline = \"top\";\r\n\t\tstrCText.font = \"14px 'Arial'\";\r\n\t\tstrCText.textBaseline = \"alphabetic\";\r\n\t\tstrCText.fillStyle = \"#f60\";\r\n\t\tstrCText.fillRect(125, 1, 62, 20);\r\n\t\tstrCText.fillStyle = \"#069\";\r\n\t\tstrCText.fillText(strText, 2, 15);\r\n\t\tstrCText.fillStyle = \"rgba(102, 204, 0, 0.7)\";\r\n\t\tstrCText.fillText(strText, 4, 17);\r\n\t\tstrOut = canvas.toDataURL();\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_connection() {\r\n\t\"use strict\";\r\n\tvar strOnError, strConnection, strOut;\r\n\r\n\tstrOnError = \"N/A\";\r\n\tstrConnection = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\t// only on android\r\n\t\tstrConnection = navigator.connection.type;\r\n\t\tstrOut = strConnection;\r\n\t} catch (err) {\r\n\t\t// return N/A if navigator.connection object does not apply to this device\r\n\t\treturn strOnError;\r\n\t}\r\n\treturn strOut;\r\n}\r\n\r\nfunction fingerprint_cookie() {\r\n\t\"use strict\";\r\n\tvar strOnError, bolCookieEnabled, bolOut;\r\n\r\n\tstrOnError = \"Error\";\r\n\tbolCookieEnabled = null;\r\n\tbolOut = null;\r\n\r\n\ttry {\r\n\t\tbolCookieEnabled = (navigator.cookieEnabled) ? true : false;\r\n\r\n\t\t//if not IE4+ nor NS6+\r\n\t\tif (typeof navigator.cookieEnabled === \"undefined\" && !bolCookieEnabled) {\r\n\t\t\tdocument.cookie = \"testcookie\";\r\n\t\t\tbolCookieEnabled = (document.cookie.indexOf(\"testcookie\") !== -1) ? true : false;\r\n\t\t}\r\n\t\tbolOut = bolCookieEnabled;\r\n\t\treturn bolOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_display() {\r\n\t\"use strict\";\r\n\tvar strSep, strPair, strOnError, strScreen, strDisplay, strOut;\r\n\r\n\tstrSep = \"|\";\r\n\tstrPair = \"=\";\r\n\tstrOnError = \"Error\";\r\n\tstrScreen = null;\r\n\tstrDisplay = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\tstrScreen = window.screen;\r\n\t\tif (strScreen) {\r\n\t\t\tstrDisplay = strScreen.colorDepth + strSep + strScreen.width + strSep + strScreen.height + strSep + strScreen.availWidth + strSep + strScreen.availHeight;\r\n\t\t}\r\n\t\tstrOut = strDisplay;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_fontsmoothing() {\r\n\t\"use strict\";\r\n\tvar strOnError, strFontSmoothing, canvasNode, ctx, i, j, imageData, alpha, strOut;\r\n\r\n\tstrOnError = \"Unknown\";\r\n\tstrFontSmoothing = null;\r\n\tcanvasNode = null;\r\n\tctx = null;\r\n\timageData = null;\r\n\talpha = null;\r\n\tstrOut = null;\r\n\r\n\tif (typeof(screen.fontSmoothingEnabled) !== \"undefined\") {\r\n\t\tstrFontSmoothing = screen.fontSmoothingEnabled;\r\n\t} else {\r\n\t\ttry {\r\n\t\t\tfontsmoothing = \"false\";\r\n\t\t\tcanvasNode = document.createElement(\"canvas\");\r\n\t\t\tcanvasNode.width = \"35\";\r\n\t\t\tcanvasNode.height = \"35\";\r\n\t\t\tcanvasNode.style.display = \"none\";\r\n\t\t\tdocument.body.appendChild(canvasNode);\r\n\t\t\tctx = canvasNode.getContext(\"2d\");\r\n\t\t\tctx.textBaseline = \"top\";\r\n\t\t\tctx.font = \"32px Arial\";\r\n\t\t\tctx.fillStyle = \"black\";\r\n\t\t\tctx.strokeStyle = \"black\";\r\n\t\t\tctx.fillText(\"O\", 0, 0);\r\n\t\t\tfor (j = 8; j <= 32; j = j + 1) {\r\n\t\t\t\tfor (i = 1; i <= 32; i = i + 1) {\r\n\t\t\t\t\timageData = ctx.getImageData(i, j, 1, 1).data;\r\n\t\t\t\t\talpha = imageData[3];\r\n\t\t\t\t\tif (alpha !== 255 && alpha !== 0) {\r\n\t\t\t\t\t\tstrFontSmoothing = \"true\"; // font-smoothing must be on.\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstrOut = strFontSmoothing;\r\n\t\t} catch (err) {\r\n\t\t\treturn strOnError;\r\n\t\t}\r\n\t}\r\n\tstrOut = strFontSmoothing;\r\n\treturn strOut;\r\n}\r\n\r\nfunction fingerprint_fonts() {\r\n\t\"use strict\";\r\n\tvar strOnError, style, fonts, count, template, fragment, divs, i, font, div, body, result, e;\r\n\r\n\tstrOnError = \"Error\";\r\n\tstyle = null;\r\n\tfonts = null;\r\n\tfont = null;\r\n\tcount = 0;\r\n\ttemplate = null;\r\n\tdivs = null;\r\n\te = null;\r\n\tdiv = null;\r\n\tbody = null;\r\n\ti = 0;\r\n\r\n\ttry {\r\n\t\tstyle = \"position: absolute; visibility: hidden; display: block !important\";\r\n\t\tfonts = [\"8bitoperator\", \"Abadi MT Condensed Light\",\"Ace Attorney\", \"Adobe Fangsong Std\", \"Adobe Hebrew\", \"Adobe Ming Std\", \"Agency FB\", \"Aharoni\", \"Andalus\", \"Angsana New\", \"AngsanaUPC\", \"Aparajita\", \"Arab\", \"Arabic Transparent\", \"Arabic Typesetting\", \"Arial Baltic\", \"Arial Black\", \"Arial CE\", \"Arial CYR\", \"Arial Greek\", \"Arial TUR\", \"Arial\", \"Arimo\", \"Batang\", \"BatangChe\", \"Bauhaus 93\", \"Bell MT\", \"Berlin Sans FB\", \"Bitstream Vera Serif\", \"Bodoni MT\", \"Bookman Old Style\", \"Braggadocio\", \"Broadway\", \"Browallia New\", \"BrowalliaUPC\", \"Calibri Light\", \"Calibri\", \"Californian FB\", \"Cambria Math\", \"Cambria\", \"Candara\", \"Castellar\", \"Casual\", \"Centaur\", \"Century\", \"Century Gothic\", \"Chalkduster\", \"Colonna MT\", \"Comic Sans MS\", \"Consolas\", \"Constantia\", \"Copperplate Gothic Light\", \"Corbel\", \"Cordia New\", \"CordiaUPC\", \"Courier New Baltic\", \"Courier New CE\", \"Courier New CYR\", \"Courier New Greek\", \"Courier New TUR\", \"Courier New\", \"DejaVu Sans\", \"DFKai-SB\",\"DINEngschrift\", \"DaunPenh\", \"David\", \"DejaVu LGC Sans Mono\", \"Desdemona\", \"DilleniaUPC\", \"DokChampa\", \"Dotum\", \"DotumChe\", \"Dubai\", \"Ebrima\", \"Engravers MT\", \"Eras Bold ITC\", \"Estrangelo Edessa\", \"EucrosiaUPC\", \"Euphemia\", \"Eurostile\", \"FangSong\", \"Forte\", \"FrankRuehl\", \"Franklin Gothic Heavy\", \"Franklin Gothic Medium\", \"FreesiaUPC\", \"French Script MT\", \"Gabriola\", \"Gautami\", \"Georgia\", \"Gigi\", \"Gisha\", \"Goudy Old Style\", \"Gulim\", \"GulimChe\", \"GungSeo\", \"Gungsuh\", \"GungsuhChe\", \"Haettenschweiler\", \"Harrington\", \"Hei S\", \"HeiT\", \"Heisei Kaku Gothic\", \"Hiragino Sans GB\", \"Impact\", \"Informal Roman\", \"IrisUPC\", \"Iskoola Pota\", \"JasmineUPC\", \"KacstOne\", \"KaiTi\", \"Kalinga\", \"Kartika\", \"Khmer UI\", \"Kino MT\", \"KodchiangUPC\", \"Kokila\", \"Kozuka Gothic Pr6N\", \"Lao UI\", \"Latha\", \"Leelawadee\", \"Levenim MT\", \"LilyUPC\", \"Lohit Gujarati\", \"Loma\", \"Lucida Bright\", \"Lucida Console\", \"Lucida Fax\", \"Lucida Sans Unicode\", \"MS Gothic\", \"MS Mincho\", \"MS PGothic\", \"MS PMincho\", \"MS Reference Sans Serif\", \"MS UI Gothic\", \"MV Boli\", \"Magneto\", \"Malgun Gothic\", \"Mangal\", \"Marlett\", \"Matura MT Script Capitals\", \"Meiryo UI\", \"Meiryo\", \"Menlo\", \"Microsoft Himalaya\", \"Microsoft JhengHei\", \"Microsoft New Tai Lue\", \"Microsoft PhagsPa\", \"Microsoft Sans Serif\", \"Microsoft Tai Le\", \"Microsoft Uighur\", \"Microsoft YaHei\", \"Microsoft Yi Baiti\", \"MingLiU\", \"MingLiU-ExtB\", \"MingLiU_HKSCS\", \"MingLiU_HKSCS-ExtB\", \"Miriam Fixed\", \"Miriam\", \"Mongolian Baiti\", \"MoolBoran\", \"More Perfect DOS VGA\", \"MS Outlook\", \"NSimSun\", \"Narkisim\", \"News Gothic MT\", \"Niagara Solid\", \"Nyala\", \"OCR A\",\"Ocean Sans Std\", \"OpenSymbol\", \"PMingLiU\", \"PMingLiU-ExtB\", \"Palace Script MT\", \"Palatino Linotype\", \"Papyrus\", \"Perpetua\", \"Plantagenet Cherokee\", \"Playbill\", \"Prelude Bold\", \"Prelude Condensed Bold\", \"Prelude Condensed Medium\", \"Prelude Medium\", \"PreludeCompressedWGL Black\", \"PreludeCompressedWGL Bold\", \"PreludeCompressedWGL Light\", \"PreludeCompressedWGL Medium\", \"PreludeCondensedWGL Black\", \"PreludeCondensedWGL Bold\", \"PreludeCondensedWGL Light\", \"PreludeCondensedWGL Medium\", \"PreludeWGL Black\", \"PreludeWGL Bold\", \"PreludeWGL Light\", \"PreludeWGL Medium\", \"Raavi\", \"Rachana\", \"Rockwell\", \"Rod\", \"Sakkal Majalla\", \"Sawasdee\", \"Script MT Bold\", \"Segoe Print\", \"Segoe Script\", \"Segoe UI Emoji\", \"Segoe UI Historic\", \"Segoe UI Light\", \"Segoe UI Semibold\", \"Segoe UI Symbol\", \"Segoe UI\", \"Shonar Bangla\", \"Showcard Gothic\", \"Shruti\", \"SimHei\", \"SimSun\", \"SimSun-ExtB\", \"Simplified Arabic Fixed\", \"Simplified Arabic\", \"Snap ITC\", \"Sylfaen\", \"Symbol\", \"Tahoma\", \"TeamViewer13\", \"Times New Roman Baltic\", \"Times New Roman CE\", \"Times New Roman CYR\", \"Times New Roman Greek\", \"Times New Roman TUR\", \"Times New Roman\", \"TlwgMono\", \"Traditional Arabic\", \"Trebuchet MS\", \"Tunga\", \"Tw Cen MT Condensed Extra Bold\", \"Ubuntu\", \"Umpush\", \"Univers\", \"Utopia\", \"Utsaah\", \"Vani\", \"Verdana\", \"Vijaya\", \"Vladimir Script\", \"Vrinda\", \"Webdings\", \"Wide Latin\", \"Wingdings\", \"Yu Gothic\", \"Zrnic Rg\"];\r\n\t\tcount = fonts.length;\r\n\t\ttemplate = \"<b style=\\\"display:inline !important; width:auto !important; font:normal 10px/1 'X',sans-serif !important\\\">ww</b>\" + \"<b style=\\\"display:inline !important; width:auto !important; font:normal 10px/1 'X',monospace !important\\\">ww</b>\";\r\n\t\tfragment = document.createDocumentFragment();\r\n\t\tdivs = [];\r\n\t\tfor (i = 0; i < count; i = i + 1) {\r\n\t\t\tfont = fonts[i];\r\n\t\t\tdiv = document.createElement(\"div\");\r\n\t\t\tfont = font.replace(/['\"<>]/g, \"\");\r\n\t\t\tdiv.innerHTML = template.replace(/X/g, font);\r\n\t\t\tdiv.style.cssText = style;\r\n\t\t\tfragment.appendChild(div);\r\n\t\t\tdivs.push(div);\r\n\t\t}\r\n\t\tbody = document.body;\r\n\t\tbody.insertBefore(fragment, body.firstChild);\r\n\t\tresult = [];\r\n\t\tfor (i = 0; i < count; i = i + 1) {\r\n\t\t\te = divs[i].getElementsByTagName(\"b\");\r\n\t\t\tif (e[0].offsetWidth === e[1].offsetWidth) {\r\n\t\t\t\tresult.push(fonts[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// do not combine these two loops, remove child will cause reflow\r\n\t\t// and induce severe performance hit\r\n\t\tfor (i = 0; i < count; i = i + 1) {\r\n\t\t\tbody.removeChild(divs[i]);\r\n\t\t}\r\n\t\treturn result.join(\"|\");\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_formfields() {\r\n\t\"use strict\";\r\n\tvar i, j, numOfForms, numOfInputs, strFormsInPage, strFormsInputsData, strInputsInForm, strTmp, strOut;\r\n\r\n\ti = 0;\r\n\tj = 0;\r\n\tnumOfForms = 0;\r\n\tnumOfInputs = 0;\r\n\tstrFormsInPage = \"\";\r\n\tstrFormsInputsData = [];\r\n\tstrInputsInForm = \"\";\r\n\tstrTmp = \"\";\r\n\tstrOut = \"\";\r\n\r\n\tstrFormsInPage = document.getElementsByTagName(\"form\");\r\n\tnumOfForms = strFormsInPage.length;\r\n\tstrFormsInputsData.push(\"url=\" + window.location.href);\r\n\tfor (i = 0; i < numOfForms; i = i + 1) {\r\n\t\tstrFormsInputsData.push(\"FORM=\" + strFormsInPage[i].name);\r\n\t\tstrInputsInForm = strFormsInPage[i].getElementsByTagName(\"input\");\r\n\t\tnumOfInputs = strInputsInForm.length;\r\n\t\tfor (j = 0; j < numOfInputs; j = j + 1) {\r\n\t\t\tif (strInputsInForm[j].type !== \"hidden\") {\r\n\t\t\t\tstrFormsInputsData.push(\"Input=\" + strInputsInForm[j].name);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tstrTmp = strFormsInputsData.join(\"|\");\r\n\tstrOut = strTmp;\r\n\treturn strOut;\r\n}\r\n\r\nfunction fingerprint_java() {\r\n\t\"use strict\";\r\n\tvar strOnError, strJavaEnabled, strOut;\r\n\r\n\tstrOnError = \"Error\";\r\n\tstrJavaEnabled = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\tif (navigator.javaEnabled()) {\r\n\t\t\tstrJavaEnabled = \"true\";\r\n\t\t} else {\r\n\t\t\tstrJavaEnabled = \"false\";\r\n\t\t}\r\n\t\tstrOut = strJavaEnabled;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_language() {\r\n\t\"use strict\";\r\n\tvar strSep, strPair, strOnError, strLang, strTypeLng, strTypeBrLng, strTypeSysLng, strTypeUsrLng, strOut;\r\n\r\n\tstrSep = \"|\";\r\n\tstrPair = \"=\";\r\n\tstrOnError = \"Error\";\r\n\tstrLang = null;\r\n\tstrTypeLng = null;\r\n\tstrTypeBrLng = null;\r\n\tstrTypeSysLng = null;\r\n\tstrTypeUsrLng = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\tstrTypeLng = typeof(navigator.language);\r\n\t\tstrTypeBrLng = typeof(navigator.browserLanguage);\r\n\t\tstrTypeSysLng = typeof(navigator.systemLanguage);\r\n\t\tstrTypeUsrLng = typeof(navigator.userLanguage);\r\n\r\n\t\tif (strTypeLng !== \"undefined\") {\r\n\t\t\tstrLang = \"lang\" + strPair + navigator.language + strSep;\r\n\t\t} else if (strTypeBrLng !== \"undefined\") {\r\n\t\t\tstrLang = \"lang\" + strPair + navigator.browserLanguage + strSep;\r\n\t\t} else {\r\n\t\t\tstrLang = \"lang\" + strPair + strSep;\r\n\t\t}\r\n\t\tif (strTypeSysLng !== \"undefined\") {\r\n\t\t\tstrLang += \"syslang\" + strPair + navigator.systemLanguage + strSep;\r\n\t\t} else {\r\n\t\t\tstrLang += \"syslang\" + strPair + strSep;\r\n\t\t}\r\n\t\tif (strTypeUsrLng !== \"undefined\") {\r\n\t\t\tstrLang += \"userlang\" + strPair + navigator.userLanguage;\r\n\t\t} else {\r\n\t\t\tstrLang += \"userlang\" + strPair;\r\n\t\t}\r\n\t\tstrOut = strLang;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_silverlight() {\r\n\t\"use strict\";\r\n\tvar strOnError, objControl, objPlugin, strSilverlightVersion, strOut;\r\n\r\n\tstrOnError = \"Error\";\r\n\tobjControl = null;\r\n\tobjPlugin = null;\r\n\tstrSilverlightVersion = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\ttry {\r\n\t\t\tobjControl = new ActiveXObject(\"AgControl.AgControl\");\r\n\t\t\tif (objControl.IsVersionSupported(\"5.0\")) {\r\n\t\t\t\tstrSilverlightVersion = \"5.x\";\r\n\t\t\t} else if (objControl.IsVersionSupported(\"4.0\")) {\r\n\t\t\t\tstrSilverlightVersion = \"4.x\";\r\n\t\t\t} else if (objControl.IsVersionSupported(\"3.0\")) {\r\n\t\t\t\tstrSilverlightVersion = \"3.x\";\r\n\t\t\t} else if (objControl.IsVersionSupported(\"2.0\")) {\r\n\t\t\t\tstrSilverlightVersion = \"2.x\";\r\n\t\t\t} else {\r\n\t\t\t\tstrSilverlightVersion = \"1.x\";\r\n\t\t\t}\r\n\t\t\tobjControl = null;\r\n\t\t} catch (e) {\r\n\t\t\tobjPlugin = navigator.plugins[\"Silverlight Plug-In\"];\r\n\t\t\tif (objPlugin) {\r\n\t\t\t\tif (objPlugin.description === \"1.0.30226.2\") {\r\n\t\t\t\t\tstrSilverlightVersion = \"2.x\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstrSilverlightVersion = parseInt(objPlugin.description[0], 10);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tstrSilverlightVersion = \"N/A\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tstrOut = strSilverlightVersion;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_os() {\r\n\t\"use strict\";\r\n\tvar strSep, strOnError, strUserAgent, strPlatform, strOS, strOSBits, strOut;\r\n\r\n\tstrSep = \"|\";\r\n\tstrOnError = \"Error\";\r\n\tstrUserAgent = null;\r\n\tstrPlatform = null;\r\n\tstrOS = null;\r\n\tstrOSBits = null;\r\n\tstrOut = null;\r\n\r\n\ttry {\r\n\t\t/* navigator.userAgent is supported by all major browsers */\r\n\t\tstrUserAgent = navigator.userAgent.toLowerCase();\r\n\t\t/* navigator.platform is supported by all major browsers */\r\n\t\tstrPlatform = navigator.platform.toLowerCase();\r\n\t\tif (strUserAgent.indexOf(\"windows nt 6.3\") !== -1) {\r\n\t\t\tstrOS = \"Windows 8.1\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 6.2\") !== -1) {\r\n\t\t\tstrOS = \"Windows 8\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 6.1\") !== -1) {\r\n\t\t\tstrOS = \"Windows 7\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 10.0\") !== -1) {\r\n\t\t\tstrOS = \"Windows 10\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 6.0\") !== -1) {\r\n\t\t\tstrOS = \"Windows Vista/Windows Server 2008\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 5.2\") !== -1) {\r\n\t\t\tstrOS = \"Windows XP x64/Windows Server 2003\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 5.1\") !== -1) {\r\n\t\t\tstrOS = \"Windows XP\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 5.01\") !== -1) {\r\n\t\t\tstrOS = \"Windows 2000, Service Pack 1 (SP1)\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows xp\") !== -1) {\r\n\t\t\tstrOS = \"Windows XP\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows 2000\") !== -1) {\r\n\t\t\tstrOS = \"Windows 2000\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows nt 5.0\") !== -1) {\r\n\t\t\tstrOS = \"Windows 2000\";\r\n\t\t} else if (strUserAgent.indexOf(\"iemobile\") !== -1) {\r\n\t\t\tstrOS = \"Windows Mobile\";\r\n\t\t} else if (strUserAgent.indexOf(\"wm5 pie\") !== -1) {\r\n\t\t\tstrOS = \"Windows Mobile\";\r\n\t\t} else if (strUserAgent.indexOf(\"windows\") !== -1) {\r\n\t\t\tstrOS = \"Windows (Unknown Version)\";\r\n\t\t} else if (strUserAgent.indexOf(\"openbsd\") !== -1) {\r\n\t\t\tstrOS = \"Open BSD\";\r\n\t\t} else if (strUserAgent.indexOf(\"sunos\") !== -1) {\r\n\t\t\tstrOS = \"Sun OS\";\r\n\t\t} else if (strUserAgent.indexOf(\"ubuntu\") !== -1) {\r\n\t\t\tstrOS = \"Ubuntu\";\r\n\t\t} else if (strUserAgent.indexOf(\"ipad\") !== -1) {\r\n\t\t\tstrOS = \"iOS (iPad)\";\r\n\t\t} else if (strUserAgent.indexOf(\"ipod\") !== -1) {\r\n\t\t\tstrOS = \"iOS (iTouch)\";\r\n\t\t} else if (strUserAgent.indexOf(\"iphone\") !== -1) {\r\n\t\t\tstrOS = \"iOS (iPhone)\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x beta\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Beta (Kodiak)\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.0\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Cheetah\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.1\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Puma\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.2\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Jaguar\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.3\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Panther\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.4\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Tiger\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.5\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Leopard\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.6\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Snow Leopard\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x 10.7\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX Lion\";\r\n\t\t} else if (strUserAgent.indexOf(\"mac os x\") !== -1) {\r\n\t\t\tstrOS = \"Mac OSX (Version Unknown)\";\r\n\t\t} else if (strUserAgent.indexOf(\"macintosh\") !== -1) {\r\n\t\t\tstrOS = \"Mac OS Classic\";\r\n\t\t} else if (strUserAgent.indexOf(\"googletv\") !== -1) {\r\n\t\t\tstrOS = \"Android (GoogleTV)\";\r\n\t\t} else if (strUserAgent.indexOf(\"android\") !== -1) {\r\n\t\t\tstrOS = \"Android\";\r\n\t\t} else if (strUserAgent.indexOf(\"x11\") !== -1) {\r\n\t\t\tstrOS = \"UNIX\";\r\n\t\t} else if (strUserAgent.indexOf(\"nix\") !== -1) {\r\n\t\t\tstrOS = \"UNIX\";\r\n\t\t} else if (strUserAgent.indexOf(\"linux\") !== -1) {\r\n\t\t\tstrOS = \"Linux\";\r\n\t\t} else if (strUserAgent.indexOf(\"qnx\") !== -1) {\r\n\t\t\tstrOS = \"QNX\";\r\n\t\t} else if (strUserAgent.indexOf(\"os/2\") !== -1) {\r\n\t\t\tstrOS = \"IBM OS/2\";\r\n\t\t} else if (strUserAgent.indexOf(\"beos\") !== -1) {\r\n\t\t\tstrOS = \"BeOS\";\r\n\t\t} else if (strUserAgent.indexOf(\"playbook\") !== -1) {\r\n\t\t\tstrOS = \"Blackberry (Playbook)\";\r\n\t\t} else if (strUserAgent.indexOf(\"wnd.rim\") !== -1) {\r\n\t\t\tstrOS = \"Blackberry (IE/FF Emulator)\";\r\n\t\t} else if (strUserAgent.indexOf(\"blackberry\") !== -1) {\r\n\t\t\tstrOS = \"Blackberry\";\r\n\t\t} else if (strUserAgent.indexOf(\"palm\") !== -1) {\r\n\t\t\tstrOS = \"Palm OS\";\r\n\t\t} else if (strUserAgent.indexOf(\"webos\") !== -1) {\r\n\t\t\tstrOS = \"WebOS\";\r\n\t\t} else if (strUserAgent.indexOf(\"hpwos\") !== -1) {\r\n\t\t\tstrOS = \"WebOS (HP)\";\r\n\t\t} else if (strUserAgent.indexOf(\"kindle\") !== -1) {\r\n\t\t\tstrOS = \"Kindle\";\r\n\t\t} else if (strUserAgent.indexOf(\"wii\") !== -1) {\r\n\t\t\tstrOS = \"Nintendo (Wii)\";\r\n\t\t} else if (strUserAgent.indexOf(\"nintendo ds\") !== -1) {\r\n\t\t\tstrOS = \"Nintendo (DS)\";\r\n\t\t} else if (strUserAgent.indexOf(\"playstation 3\") !== -1) {\r\n\t\t\tstrOS = \"Sony (Playstation Console)\";\r\n\t\t} else if (strUserAgent.indexOf(\"playstation portable\") !== -1) {\r\n\t\t\tstrOS = \"Sony (Playstation Portable)\";\r\n\t\t} else if (strUserAgent.indexOf(\"webtv\") !== -1) {\r\n\t\t\tstrOS = \"MSN TV (WebTV)\";\r\n\t\t} else if (strUserAgent.indexOf(\"inferno\") !== -1) {\r\n\t\t\tstrOS = \"Inferno\";\r\n\t\t} else {\r\n\t\t\tstrOS = \"Unknown\";\r\n\t\t}\r\n\t\tif (strPlatform.indexOf(\"x64\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"wow64\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"win64\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"win32\") !== -1) {\r\n\t\t\tstrOSBits = \"32 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"x64\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"x32\") !== -1) {\r\n\t\t\tstrOSBits = \"32 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"x86\") !== -1) {\r\n\t\t\tstrOSBits = \"32 bits*\";\r\n\t\t} else if (strPlatform.indexOf(\"ppc\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"alpha\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"68k\") !== -1) {\r\n\t\t\tstrOSBits = \"64 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"iphone\") !== -1) {\r\n\t\t\tstrOSBits = \"32 bits\";\r\n\t\t} else if (strPlatform.indexOf(\"android\") !== -1) {\r\n\t\t\tstrOSBits = \"32 bits\";\r\n\t\t} else {\r\n\t\t\tstrOSBits = \"Unknown\";\r\n\t\t}\r\n\t\tstrOut = strOS + strSep + strOSBits;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_useragent() {\r\n\t\"use strict\";\r\n\tvar strSep, strTmp, strUserAgent, strOut;\r\n\r\n\tstrSep = \"|\";\r\n\tstrTmp = null;\r\n\tstrUserAgent = null;\r\n\tstrOut = null;\r\n\r\n\t/* navigator.userAgent is supported by all major browsers */\r\n\tstrUserAgent = navigator.userAgent.toLowerCase();\r\n\t/* navigator.platform is supported by all major browsers */\r\n\tstrTmp = strUserAgent + strSep + navigator.platform;\r\n\t/* navigator.cpuClass only supported in IE */\r\n\tif (navigator.cpuClass) {\r\n\t\tstrTmp += strSep + navigator.cpuClass;\r\n\t}\r\n\t/* navigator.browserLanguage only supported in IE, Safari and Chrome */\r\n\tif (navigator.browserLanguage) {\r\n\t\tstrTmp += strSep + navigator.browserLanguage;\r\n\t} else {\r\n\t\tstrTmp += strSep + navigator.language;\r\n\t}\r\n\tstrOut = strTmp;\r\n\treturn strOut;\r\n}\r\n\r\nfunction fingerprint_timezone() {\r\n\t\"use strict\";\r\n\tvar strOnError, dtDate, numOffset, numGMTHours, numOut;\r\n\r\n\tstrOnError = \"Error\";\r\n\tdtDate = null;\r\n\tnumOffset = null;\r\n\tnumGMTHours = null;\r\n\tnumOut = null;\r\n\r\n\ttry {\r\n\t\tdtDate = new Date();\r\n\t\tnumOffset = dtDate.getTimezoneOffset();\r\n\t\tnumGMTHours = (numOffset / 60) * (-1);\r\n\t\tnumOut = numGMTHours;\r\n\t\treturn numOut;\r\n\t} catch (err) {\r\n\t\treturn strOnError;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_touch() {\r\n\t\"use strict\";\r\n\tvar bolTouchEnabled, bolOut;\r\n\r\n\tbolTouchEnabled = false;\r\n\tbolOut = null;\r\n\r\n\ttry {\r\n\t\tif (document.createEvent(\"TouchEvent\")) {\r\n\t\t\tbolTouchEnabled = true;\r\n\t\t}\r\n\t\tbolOut = bolTouchEnabled;\r\n\t\treturn bolOut;\r\n\t} catch (ignore) {\r\n\t\tbolOut = bolTouchEnabled\r\n\t\treturn bolOut;\r\n\t}\r\n}\r\n\r\nfunction fingerprint_truebrowser() {\r\n\t\"use strict\";\r\n\tvar strBrowser, strUserAgent, strOut;\r\n\r\n\tstrBrowser = \"Unknown\";\r\n\tstrUserAgent = null;\r\n\tstrOut = null;\r\n\r\n\tstrUserAgent = navigator.userAgent.toLowerCase();\r\n\r\n\t/* Checks for different browsers, cannot use Try/Catch block */\r\n\tif (document.all && document.getElementById && navigator.savePreferences && (strUserAgent.indexOf(\"Netfront\") < 0) && navigator.appName !== \"Blazer\") {\r\n\t\tstrBrowser = \"Escape 5\";\r\n\t} else if (navigator.vendor === \"KDE\") {\r\n\t\tstrBrowser = \"Konqueror\";\r\n\t} else if (document.childNodes && !document.all && !navigator.taintEnabled && !navigator.accentColorName) {\r\n\t\tstrBrowser = \"Safari\";\r\n\t} else if (document.childNodes && !document.all && !navigator.taintEnabled && navigator.accentColorName) {\r\n\t\tstrBrowser = \"OmniWeb 4.5+\";\r\n\t} else if (navigator.__ice_version) {\r\n\t\tstrBrowser = \"ICEBrowser\";\r\n\t} else if (window.ScriptEngine && ScriptEngine().indexOf(\"InScript\") + 1 && document.createElement) {\r\n\t\tstrBrowser = \"iCab 3+\";\r\n\t} else if (window.ScriptEngine && ScriptEngine().indexOf(\"InScript\") + 1) {\r\n\t\tstrBrowser = \"iCab 2-\";\r\n\t} else if (strUserAgent.indexOf(\"hotjava\") + 1 && (navigator.accentColorName) === \"undefined\") {\r\n\t\tstrBrowser = \"HotJava\";\r\n\t} else if (document.layers && !document.classes) {\r\n\t\tstrBrowser = \"Omniweb 4.2-\";\r\n\t} else if (document.layers && !navigator.mimeTypes[\"*\"]) {\r\n\t\tstrBrowser = \"Escape 4\";\r\n\t} else if (document.layers) {\r\n\t\tstrBrowser = \"Netscape 4\";\r\n\t} else if (window.opera && document.getElementsByClassName) {\r\n\t\tstrBrowser = \"Opera 9.5+\";\r\n\t} else if (window.opera && window.getComputedStyle) {\r\n\t\tstrBrowser = \"Opera 8\";\r\n\t} else if (window.opera && document.childNodes) {\r\n\t\tstrBrowser = \"Opera 7\";\r\n\t} else if (window.opera) {\r\n\t\tstrBrowser = \"Opera \" + window.opera.version();\r\n\t} else if (navigator.appName.indexOf(\"WebTV\") + 1) {\r\n\t\tstrBrowser = \"WebTV\";\r\n\t} else if (strUserAgent.indexOf(\"netgem\") + 1) {\r\n\t\tstrBrowser = \"Netgem NetBox\";\r\n\t} else if (strUserAgent.indexOf(\"opentv\") + 1) {\r\n\t\tstrBrowser = \"OpenTV\";\r\n\t} else if (strUserAgent.indexOf(\"ipanel\") + 1) {\r\n\t\tstrBrowser = \"iPanel MicroBrowser\";\r\n\t} else if (document.getElementById && !document.childNodes) {\r\n\t\tstrBrowser = \"Clue browser\";\r\n\t} else if (navigator.product && navigator.product.indexOf(\"Hv\") === 0) {\r\n\t\tstrBrowser = \"Tkhtml Hv3+\";\r\n\t} else if (typeof InstallTrigger !== \"undefined\") {\r\n\t\tstrBrowser = \"Firefox\";\r\n\t} else if (window.atob) {\r\n\t\tstrBrowser = \"Internet Explorer 10+\";\r\n\t} else if (XDomainRequest && window.performance) {\r\n\t\tstrBrowser = \"Internet Explorer 9\";\r\n\t} else if (XDomainRequest) {\r\n\t\tstrBrowser = \"Internet Explorer 8\";\r\n\t} else if (document.documentElement && document.documentElement.style.maxHeight !== \"undefined\") {\r\n\t\tstrBrowser = \"Internet Explorer 7\"; //xxxxx\r\n\t} else if (document.compatMode && document.all) {\r\n\t\tstrBrowser = \"Internet Explorer 6\"; //xxxxx\r\n\t} else if (window.createPopup) {\r\n\t\tstrBrowser = \"Internet Explorer 5.5\";\r\n\t} else if (window.attachEvent) {\r\n\t\tstrBrowser = \"Internet Explorer 5\";\r\n\t} else if (document.all && navigator.appName !== \"Microsoft Pocket Internet Explorer\") {\r\n\t\tstrBrowser = \"Internet Explorer 4\";\r\n\t} else if ((strUserAgent.indexOf(\"msie\") + 1) && window.ActiveXObject) {\r\n\t\tstrBrowser = \"Pocket Internet Explorer\";\r\n\t} else if (document.getElementById && ((strUserAgent.indexOf(\"netfront\") + 1) || navigator.appName === \"Blazer\" || navigator.product === \"Gecko\" || (navigator.appName.indexOf(\"PSP\") + 1) || (navigator.appName.indexOf(\"PLAYSTATION 3\") + 1))) {\r\n\t\tstrBrowser = \"NetFront 3+\";\r\n\t} else if (navigator.product === \"Gecko\" && !navigator.savePreferences) {\r\n\t\tstrBrowser = \"Gecko engine (Mozilla, Netscape 6+ etc.)\";\r\n\t} else if (window.chrome) {\r\n\t\tstrBrowser = \"Chrome\";\r\n\t}\r\n\tstrOut = strBrowser;\r\n\treturn strOut;\r\n}\r\n\r\nvar glbOnError = \"N/A\"\r\nvar glbSep = \"|\";\r\n\r\nfunction activeXDetect(componentClassID) {\r\n\t\"use strict\";\r\n\tvar strComponentVersion, strOut;\r\n\r\n\tstrComponentVersion = \"\";\r\n\tstrOut = \"\";\r\n\r\n\ttry {\r\n\t\tstrComponentVersion = document.body.getComponentVersion(\"{\" + componentClassID + \"}\", \"ComponentID\");\r\n\t\tif (strComponentVersion !== null) {\r\n\t\t\tstrOut = strComponentVersion;\r\n\t\t} else {\r\n\t\t\tstrOut = false;\r\n\t\t}\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn glbOnError;\r\n\t}\r\n}\r\n\r\nfunction stripIllegalChars(strValue) {\r\n\t\"use strict\";\r\n\tvar iCounter, strOriginal, strOut;\r\n\r\n\tiCounter = 0;\r\n\tstrOriginal = \"\";\r\n\tstrOut = \"\";\r\n\r\n\ttry {\r\n\t\tstrOriginal = strValue.toLowerCase();\r\n\t\tfor (iCounter = 0; iCounter < strOriginal.length; iCounter = iCounter + 1) {\r\n\t\t\tif (strOriginal.charAt(iCounter) !== \"\\n\" && strOriginal.charAt(iCounter) !== \"/\" && strOriginal.charAt(iCounter) !== \"\\\\\") {\r\n\t\t\t\tstrOut = strOut + strOriginal.charAt(iCounter);\r\n\t\t\t} else if (strOriginal.charAt(iCounter) === \"\\n\") {\r\n\t\t\t\tstrOut = strOut + \"n\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn glbOnError;\r\n\t}\r\n}\r\n\r\nfunction hashtable_containsKey(key) {\r\n\t\"use strict\";\r\n\tvar bolExists, iCounter;\r\n\r\n\tbolExists = false;\r\n\tiCounter = 0;\r\n\r\n\tfor (iCounter = 0; iCounter < this.hashtable.length; iCounter = iCounter + 1) {\r\n\t\tif (iCounter === key && this.hashtable[iCounter] !== null) {\r\n\t\t\tbolExists = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn bolExists;\r\n}\r\n\r\nfunction hashtable_get(key) {\r\n\t\"use strict\";\r\n\treturn this.hashtable[key];\r\n}\r\n\r\nfunction hashtable_keys() {\r\n\t\"use strict\";\r\n\tvar keys, iCounter;\r\n\r\n\tkeys = [];\r\n\tiCounter = 0;\r\n\r\n\tfor (iCounter in this.hashtable) {\r\n\t\tif (this.hashtable[iCounter] !== null) {\r\n\t\t\tkeys.push(iCounter);\r\n\t\t}\r\n\t}\r\n\treturn keys;\r\n}\r\n\r\nfunction hashtable_put(key, value) {\r\n\t\"use strict\";\r\n\tif (key === null || value === null) {\r\n\t\tthrow \"NullPointerException {\" + key + \"},{\" + value + \"}\";\r\n\t}\r\n\tthis.hashtable[key] = value;\r\n}\r\n\r\nfunction hashtable_size() {\r\n\t\"use strict\";\r\n\tvar iSize, iCounter, iOut;\r\n\r\n\tiSize = 0;\r\n\tiCounter = 0;\r\n\tiOut = 0;\r\n\r\n\tfor (iCounter in this.hashtable) {\r\n\t\tif (this.hashtable[iCounter] !== null) {\r\n\t\t\tiSize = iSize + 1;\r\n\t\t}\r\n\t}\r\n\tiOut = iSize;\r\n\treturn iOut;\r\n}\r\n\r\nfunction Hashtable() {\r\n\t\"use strict\";\r\n\tthis.containsKey = hashtable_containsKey;\r\n\tthis.get = hashtable_get;\r\n\tthis.keys = hashtable_keys;\r\n\tthis.put = hashtable_put;\r\n\tthis.size = hashtable_size;\r\n\tthis.hashtable = [];\r\n}\r\n\r\n/* Detect Plugins */\r\nfunction fingerprint_plugins() {\r\n\t\"use strict\";\r\n\tvar htIEComponents, strKey, strName, strVersion, strTemp, bolFirst, iCount, strMimeType, strOut;\r\n\r\n\ttry {\r\n\t\t/* Create hashtable of IE components */\r\n\t\thtIEComponents = new Hashtable();\r\n\t\thtIEComponents.put(\"7790769C-0471-11D2-AF11-00C04FA35D02\", \"AddressBook\"); // Address Book\r\n\t\thtIEComponents.put(\"47F67D00-9E55-11D1-BAEF-00C04FC2D130\", \"AolArtFormat\"); // AOL ART Image Format Support\r\n\t\thtIEComponents.put(\"76C19B38-F0C8-11CF-87CC-0020AFEECF20\", \"ArabicDS\"); // Arabic Text Display Support\r\n\t\thtIEComponents.put(\"76C19B34-F0C8-11CF-87CC-0020AFEECF20\", \"ChineseSDS\"); // Chinese (Simplified) Text Display Support\r\n\t\thtIEComponents.put(\"76C19B33-F0C8-11CF-87CC-0020AFEECF20\", \"ChineseTDS\"); // Chinese (traditional) Text Display Support\r\n\t\thtIEComponents.put(\"238F6F83-B8B4-11CF-8771-00A024541EE3\", \"CitrixICA\"); // Citrix ICA Client\r\n\t\thtIEComponents.put(\"283807B5-2C60-11D0-A31D-00AA00B92C03\", \"DirectAnim\"); // DirectAnimation\r\n\t\thtIEComponents.put(\"44BBA848-CC51-11CF-AAFA-00AA00B6015C\", \"DirectShow\"); // DirectShow\r\n\t\thtIEComponents.put(\"9381D8F2-0288-11D0-9501-00AA00B911A5\", \"DynHTML\"); // Dynamic HTML Data Binding\r\n\t\thtIEComponents.put(\"4F216970-C90C-11D1-B5C7-0000F8051515\", \"DynHTML4Java\"); // Dynamic HTML Data Binding for Java\r\n\t\thtIEComponents.put(\"D27CDB6E-AE6D-11CF-96B8-444553540000\", \"Flash\"); // Macromedia Flash\r\n\t\thtIEComponents.put(\"76C19B36-F0C8-11CF-87CC-0020AFEECF20\", \"HebrewDS\"); // Hebrew Text Display Support\r\n\t\thtIEComponents.put(\"630B1DA0-B465-11D1-9948-00C04F98BBC9\", \"IEBrwEnh\"); // Internet Explorer Browsing Enhancements\r\n\t\thtIEComponents.put(\"08B0E5C0-4FCB-11CF-AAA5-00401C608555\", \"IEClass4Java\"); // Internet Explorer Classes for Java\r\n\t\thtIEComponents.put(\"45EA75A0-A269-11D1-B5BF-0000F8051515\", \"IEHelp\"); // Internet Explorer Help\r\n\t\thtIEComponents.put(\"DE5AED00-A4BF-11D1-9948-00C04F98BBC9\", \"IEHelpEng\"); // Internet Explorer Help Engine\r\n\t\thtIEComponents.put(\"89820200-ECBD-11CF-8B85-00AA005B4383\", \"IE5WebBrw\"); // Internet Explorer 5/6 Web Browser\r\n\t\thtIEComponents.put(\"5A8D6EE0-3E18-11D0-821E-444553540000\", \"InetConnectionWiz\"); // Internet Connection Wizard\r\n\t\thtIEComponents.put(\"76C19B30-F0C8-11CF-87CC-0020AFEECF20\", \"JapaneseDS\"); // Japanese Text Display Support\r\n\t\thtIEComponents.put(\"76C19B31-F0C8-11CF-87CC-0020AFEECF20\", \"KoreanDS\"); // Korean Text Display Support\r\n\t\thtIEComponents.put(\"76C19B50-F0C8-11CF-87CC-0020AFEECF20\", \"LanguageAS\"); // Language Auto-Selection\r\n\t\thtIEComponents.put(\"08B0E5C0-4FCB-11CF-AAA5-00401C608500\", \"MsftVM\"); // Microsoft virtual machine\r\n\t\thtIEComponents.put(\"5945C046-LE7D-LLDL-BC44-00C04FD912BE\", \"MSNMessengerSrv\"); // MSN Messenger Service\r\n\t\thtIEComponents.put(\"44BBA842-CC51-11CF-AAFA-00AA00B6015B\", \"NetMeetingNT\"); // NetMeeting NT\r\n\t\thtIEComponents.put(\"3AF36230-A269-11D1-B5BF-0000F8051515\", \"OfflineBrwPack\"); // Offline Browsing Pack\r\n\t\thtIEComponents.put(\"44BBA840-CC51-11CF-AAFA-00AA00B6015C\", \"OutlookExpress\"); // Outlook Express\r\n\t\thtIEComponents.put(\"76C19B32-F0C8-11CF-87CC-0020AFEECF20\", \"PanEuropeanDS\"); // Pan-European Text Display Support\r\n\t\thtIEComponents.put(\"4063BE15-3B08-470D-A0D5-B37161CFFD69\", \"QuickTime\"); // Apple Quick Time\r\n\t\thtIEComponents.put(\"DE4AF3B0-F4D4-11D3-B41A-0050DA2E6C21\", \"QuickTimeCheck\"); // Apple Quick Time Check\r\n\t\thtIEComponents.put(\"3049C3E9-B461-4BC5-8870-4C09146192CA\", \"RealPlayer\"); // RealPlayer Download and Record Plugin for IE\r\n\t\thtIEComponents.put(\"2A202491-F00D-11CF-87CC-0020AFEECF20\", \"ShockwaveDir\"); // Macromedia Shockwave Director\r\n\t\thtIEComponents.put(\"3E01D8E0-A72B-4C9F-99BD-8A6E7B97A48D\", \"Skype\"); // Skype\r\n\t\thtIEComponents.put(\"CC2A9BA0-3BDD-11D0-821E-444553540000\", \"TaskScheduler\"); // Task Scheduler\r\n\t\thtIEComponents.put(\"76C19B35-F0C8-11CF-87CC-0020AFEECF20\", \"ThaiDS\"); // Thai Text Display Support\r\n\t\thtIEComponents.put(\"3BF42070-B3B1-11D1-B5C5-0000F8051515\", \"Uniscribe\"); // Uniscribe\r\n\t\thtIEComponents.put(\"4F645220-306D-11D2-995D-00C04F98BBC9\", \"VBScripting\"); // Visual Basic Scripting Support v5.6\r\n\t\thtIEComponents.put(\"76C19B37-F0C8-11CF-87CC-0020AFEECF20\", \"VietnameseDS\"); // Vietnamese Text Display Support\r\n\t\thtIEComponents.put(\"10072CEC-8CC1-11D1-986E-00A0C955B42F\", \"VML\"); // Vector Graphics Rendering (VML)\r\n\t\thtIEComponents.put(\"90E2BA2E-DD1B-4CDE-9134-7A8B86D33CA7\", \"WebEx\"); // WebEx Productivity Tools\r\n\t\thtIEComponents.put(\"73FA19D0-2D75-11D2-995D-00C04F98BBC9\", \"WebFolders\"); // Web Folders\r\n\t\thtIEComponents.put(\"89820200-ECBD-11CF-8B85-00AA005B4340\", \"WinDesktopUpdateNT\"); // Windows Desktop Update NT\r\n\t\thtIEComponents.put(\"9030D464-4C02-4ABF-8ECC-5164760863C6\", \"WinLive\"); // Windows Live ID Sign-in Helper\r\n\t\thtIEComponents.put(\"6BF52A52-394A-11D3-B153-00C04F79FAA6\", \"WinMediaPlayer\"); // Windows Media Player (Versions 7, 8 or 9)\r\n\t\thtIEComponents.put(\"22D6F312-B0F6-11D0-94AB-0080C74C7E95\", \"WinMediaPlayerTrad\"); // Windows Media Player (Traditional Versions)\r\n\r\n\t\tstrTemp = \"\";\r\n\t\tbolFirst = true;\r\n\r\n\t\t/* strOpera gives full path of the file, extract the filenames, ignoring description and length */\r\n\t\tif (navigator.plugins.length > 0) {\r\n\t\t\tfor (iCount = 0; iCount < navigator.plugins.length; iCount = iCount + 1) {\r\n\t\t\t\tif (bolFirst === true) {\r\n\t\t\t\t\tstrTemp += navigator.plugins[iCount].name;\r\n\t\t\t\t\tbolFirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstrTemp += glbSep + navigator.plugins[iCount].name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (navigator.mimeTypes.length > 0) {\r\n\t\t\tstrMimeType = navigator.mimeTypes;\r\n\t\t\tfor (iCount = 0; iCount < strMimeType.length; iCount = iCount + 1) {\r\n\t\t\t\tif (bolFirst === true) {\r\n\t\t\t\t\tstrTemp += strMimeType[iCount].description;\r\n\t\t\t\t\tbolFirst = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstrTemp += glbSep + strMimeType[iCount].description;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdocument.body.addBehavior(\"#default#clientCaps\");\r\n\t\t\tstrKey = htIEComponents.keys();\r\n\t\t\tfor (iCount = 0; iCount < htIEComponents.size(); iCount = iCount + 1) {\r\n\t\t\t\tstrVersion = activeXDetect(strKey[iCount]);\r\n\t\t\t\tstrName = htIEComponents.get(strKey[iCount]);\r\n\t\t\t\tif (strVersion) {\r\n\t\t\t\t\tif (bolFirst === true) {\r\n\t\t\t\t\t\tstrTemp = strName + glbPair + strVersion;\r\n\t\t\t\t\t\tbolFirst = false;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstrTemp += glbSep + strName + glbPair + strVersion;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstrTemp = strTemp.replace(/,/g, \".\");\r\n\t\t}\r\n\t\tstrTemp = stripIllegalChars(strTemp);\r\n\t\tif (strTemp === \"\") {\r\n\t\t\tstrTemp = \"None\";\r\n\t\t}\r\n\t\tstrOut = strTemp;\r\n\t\treturn strOut;\r\n\t} catch (err) {\r\n\t\treturn glbOnError;\r\n\t}\r\n}","/*\r\n * Glorious webAO\r\n * made by sD, refactored by oldmud0 and Qubrick\r\n * credits to aleks for original idea and source\r\n*/\r\n\r\n// Uses the Gify library:\r\n// https://github.com/rfrench/gify\r\n// The following comment is needed for ESLint:\r\n/* global gify */\r\n\r\nimport background_arr from \"./backgrounds.js\";\r\nimport evidence_arr from \"./evidence.js\";\r\nimport Fingerprint from \"./fingerprint.js\";\r\n\r\nlet queryDict = {};\r\nlocation.search.substr(1).split(\"&\").forEach(function (item) {\r\n\tqueryDict[item.split(\"=\")[0]] = item.split(\"=\")[1];\r\n});\r\n\r\n/* Server magic */\r\n\r\nconst serverIP = queryDict.ip;\r\nlet mode = queryDict.mode;\r\n\r\nconst AO_HOST = queryDict.asset || \"http://s3.wasabisys.com/webao/base/\";\r\nconst MUSIC_HOST = AO_HOST + \"sounds/music/\";\r\nconst CHAR_SELECT_WIDTH = 8;\r\nconst UPDATE_INTERVAL = 60;\r\n\r\nlet oldLoading = false;\r\nif (/Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent)) {\r\n\toldLoading = true;\r\n}\r\n\r\nlet selectedEffect = 0;\r\nlet selectedMenu = 1;\r\nlet selectedShout = 0;\r\nlet fp = new Fingerprint({\r\n\tcanvas: true,\r\n\tie_activex: true,\r\n\tscreen_resolution: true\r\n});\r\nlet uid = fp.get();\r\nconsole.log(uid);\r\nlet lastICMessageTime = new Date(0);\r\n\r\nclass Client {\r\n\tconstructor(address) {\r\n\t\tthis.serv = new WebSocket(\"ws://\" + address);\r\n\r\n\t\tthis.serv.onopen = (evt) => this.onOpen(evt);\r\n\t\tthis.serv.onclose = (evt) => this.onClose(evt);\r\n\t\tthis.serv.onmessage = (evt) => this.onMessage(evt);\r\n\t\tthis.serv.onerror = (evt) => this.onError(evt);\r\n\r\n\t\tthis.flip = false;\r\n\t\tthis.presentable = false;\r\n\r\n\t\tthis.hp = [0, 0];\r\n\r\n\t\tthis.playerID = 1;\r\n\t\tthis.charID = -1;\r\n\t\tthis.testimonyID = 0;\r\n\r\n\t\tthis.chars = [];\r\n\t\tthis.emotes = [];\r\n\t\tthis.evidences = [];\r\n\r\n\t\tthis.resources = {\r\n\t\t\t\"holdit\": {\r\n\t\t\t\t\"src\": \"misc/holdit.gif\",\r\n\t\t\t\t\"duration\": 720\r\n\t\t\t},\r\n\t\t\t\"objection\": {\r\n\t\t\t\t\"src\": \"misc/objection.gif\",\r\n\t\t\t\t\"duration\": 720\r\n\t\t\t},\r\n\t\t\t\"takethat\": {\r\n\t\t\t\t\"src\": \"misc/takethat.gif\",\r\n\t\t\t\t\"duration\": 840\r\n\t\t\t},\r\n\t\t\t\"witnesstestimony\": {\r\n\t\t\t\t\"src\": \"misc/witnesstestimony.gif\",\r\n\t\t\t\t\"duration\": 1560,\r\n\t\t\t\t\"sfx\": \"sounds/general/sfx-testimony.wav\"\r\n\t\t\t},\r\n\t\t\t\"crossexamination\": {\r\n\t\t\t\t\"src\": \"misc/crossexamination.gif\",\r\n\t\t\t\t\"duration\": 1600,\r\n\t\t\t\t\"sfx\": \"sounds/general/sfx-testimony2.wav\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.selectedEmote = -1;\r\n\t\tthis.selectedEvidence = 0;\r\n\r\n\t\tthis.checkUpdater = null;\r\n\r\n\t\t// Only used for RMC/`music` packets, not EM/SM/MC packets.\r\n\t\tthis.musicList = Object();\r\n\r\n\t\tthis.handlers = {\r\n\t\t\t\"MS\": (args) => this.handleMS(args),\r\n\t\t\t\"CT\": (args) => this.handleCT(args),\r\n\t\t\t\"MC\": (args) => this.handleMC(args),\r\n\t\t\t\"RMC\": (args) => this.handleRMC(args),\r\n\t\t\t\"CI\": (args) => this.handleCI(args),\r\n\t\t\t\"SC\": (args) => this.handleSC(args),\r\n\t\t\t\"EI\": (args) => this.handleEI(args),\r\n\t\t\t\"LE\": (args) => this.handleLE(args),\r\n\t\t\t\"EM\": (args) => this.handleEM(args),\r\n\t\t\t\"SM\": (args) => this.handleSM(args),\r\n\t\t\t\"BD\": (args) => this.handleBD(args),\r\n\t\t\t\"music\": (args) => this.handlemusic(args),\r\n\t\t\t\"DONE\": (args) => this.handleDONE(args),\r\n\t\t\t\"BN\": (args) => this.handleBN(args),\r\n\t\t\t\"NBG\": (args) => this.handleNBG(args),\r\n\t\t\t\"HP\": (args) => this.handleHP(args),\r\n\t\t\t\"RT\": (args) => this.handleRT(args),\r\n\t\t\t\"ZZ\": (args) => this.handleZZ(args),\r\n\t\t\t\"ID\": (args) => this.handleID(args),\r\n\t\t\t\"PN\": (args) => this.handlePN(args),\r\n\t\t\t\"SI\": (args) => this.handleSI(args),\r\n\t\t\t\"CharsCheck\": (args) => this.handleCharsCheck(args),\r\n\t\t\t\"PV\": (args) => this.handlePV(args),\r\n\t\t\t\"CHECK\": (args) => {}\r\n\t\t};\r\n\r\n\t\tthis._lastTimeICReceived = new Date(0);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current player's character.\r\n\t */\r\n\tme() {\r\n\t\treturn this.chars[this.charID];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the player's currently selected emote.\r\n\t */\r\n\tmyEmote() {\r\n\t\treturn this.emotes[this.selectedEmote];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the player's currently selected evidence if presentable.\r\n\t */\r\n\tmyEvidence() {\r\n\t\treturn this.presentable ? this.selectedEvidence : 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an out-of-character chat message.\r\n\t * @param {string} message the message to send\r\n\t */\r\n\tsendOOC(message) {\r\n\t\tthis.serv.send(`CT#${escapeChat(encodeChat(document.getElementById(\"OOC_name\").value))}#${escapeChat(encodeChat(message))}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an in-character chat message.\r\n\t * @param {string} speaking who is speaking\r\n\t * @param {string} name the name of the current character\r\n\t * @param {string} silent whether or not it's silent\r\n\t * @param {string} message the message to be sent\r\n\t * @param {string} side the name of the side in the background\r\n\t * @param {string} ssfxname the name of the sound effect\r\n\t * @param {string} zoom whether or not to zoom\r\n\t * @param {number} ssfxdelay the delay (in milliseconds) to play the sound effect\r\n\t * @param {string} objection the number of the shout to play\r\n\t * @param {string} evidence the filename of evidence to show\r\n\t * @param {number} flip change to 1 to reverse sprite for position changes\r\n\t * @param {string} flash screen flash effect\r\n\t * @param {string} color text color\r\n\t */\r\n\tsendIC(speaking, name, silent, message, side, ssfxname, zoom, ssfxdelay, objection, evidence, flip, flash, color) {\r\n\t\tthis.serv.send(\r\n\t\t\t`MS#chat#${speaking}#${name}#${silent}` +\r\n\t\t\t`#${escapeChat(encodeChat(message))}#${side}#${ssfxname}#${zoom}` +\r\n\t\t\t`#${this.charID}#${ssfxdelay}#${selectedShout}#${evidence}#${flip}#${flash}#${color}#%`\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends add evidence command.\r\n\t * @param {string} evidence name\r\n\t * @param {string} evidence description\r\n\t * @param {string} evidence image filename\r\n\t */\r\n\tsendPE(name, desc, img) {\r\n\t\tthis.serv.send(`PE#${escapeChat(encodeChat(name))}#${escapeChat(encodeChat(desc))}#${img}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends edit evidence command.\r\n\t * @param {number} evidence id\r\n\t * @param {string} evidence name\r\n\t * @param {string} evidence description\r\n\t * @param {string} evidence image filename\r\n\t */\r\n\tsendEE(id, name, desc, img) {\r\n\t\tthis.serv.send(`EE#${id}#${escapeChat(encodeChat(name))}#${escapeChat(encodeChat(desc))}#${img}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends delete evidence command.\r\n\t * @param {number} evidence id\r\n\t */\r\n\tsendDE(id) {\r\n\t\tthis.serv.send(`DE#${id}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends health point command.\r\n\t * @param {number} side the position\r\n\t * @param {number} hp the health point\r\n\t */\r\n\tsendHP(side, hp) {\r\n\t\tthis.serv.send(`HP#${side}#${hp}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends call mod command.\r\n\t * @param {string} message to mod\r\n\t */\r\n\tsendZZ(msg) {\r\n\t\tthis.serv.send(`ZZ#${msg}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends testimony command.\r\n\t * @param {string} testimony type\r\n\t */\r\n\tsendRT(testimony) {\r\n\t\tif (this.chars[this.charID].side == \"jud\") {\r\n\t\t\tthis.serv.send(`RT#${testimony}#%`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to change the music to the specified track.\r\n\t * @param {string} track the track ID\r\n\t */\r\n\tsendMusicChange(track) {\r\n\t\tthis.serv.send(`MC#${track}#${this.charID}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to leave the room and free the character slot.\r\n\t * \r\n\t * Note: This packet is undocumented. It is not implemented by\r\n\t * either the AO2 client or tsuserver.\r\n\t */\r\n\tsendLeaveRoom() {\r\n\t\tthis.serv.send(\"FC#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Begins the handshake process by sending an identifier\r\n\t * to the server.\r\n\t */\r\n\tjoinServer() {\r\n\t\tthis.serv.send(`HI#${hash6ode()}#%`);\r\n\t\tthis.serv.send(\"ID#webAO#2.3#%\");\r\n\t\tthis.checkUpdater = setInterval(() => this.sendCheck(), 5000);\r\n\t}\r\n\r\n\t/**\r\n\t * Load game resources.\r\n\t */\r\n\tloadResources() {\r\n\t\t// Set to playerID to server chat name\r\n\t\t// TODO: Make a text box for this!\r\n\t\tdocument.getElementById(\"OOC_name\").value = \"web\" + this.playerID;\r\n\r\n\t\t// Load evidence array to select\r\n\t\tconst evidence_select = document.getElementById(\"evi_select\");\r\n\t\tevidence_select.add(new Option(\"Custom\", 0));\r\n\t\tevidence_arr.forEach(evidence => {\r\n\t\t\tevidence_select.add(new Option(evidence));\r\n\t\t});\r\n\r\n\t\t// Load background array to select\r\n\t\tconst background_select = document.getElementById(\"bg_select\");\r\n\t\tbackground_select.add(new Option(\"Custom\", 0));\r\n\t\tbackground_arr.forEach(background => {\r\n\t\t\tbackground_select.add(new Option(background));\r\n\t\t});\r\n\t\t// Calculate gif duration of shouts\r\n\t\tconst shouts = [\"holdit\", \"objection\", \"takethat\"];\r\n\t\tfor (let i = 0; i < shouts.length; i++) {\r\n\t\t\tlet shout_src = AO_HOST + this.resources[shouts[i]][\"src\"].toLowerCase();\r\n\t\t\tfileExists(shout_src, this.callbackLoadImageResources, shouts[i]);\r\n\t\t}\r\n\r\n\t\t// Calculate gif duration of testimony\r\n\t\tconst testimony = [\"witnesstestimony\", \"crossexamination\"];\r\n\t\tfor (let i = 0; i < testimony.length; i++) {\r\n\t\t\tconst testimony_src = `${AO_HOST}themes/default/${testimony[i]}.gif`;\r\n\t\t\t// Check image existed\r\n\t\t\tfileExists(testimony_src, this.callbackLoadImageResources, testimony[i]);\r\n\t\t\t// Check sfx existed\r\n\t\t\tfileExists(AO_HOST + this.resources[testimony[i]][\"sfx\"].toLowerCase(), this.callbackLoadSFXResources, testimony[i]);\r\n\t\t}\r\n\t\t// TODO: Cache some resources\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Callback for image resources.\r\n\t * @param {boolean} result the image is existed or not\r\n\t * @param {string} resource the resource name\r\n\t * @param {string} src the url of resource\r\n\t */\r\n\tcallbackLoadImageResources(result, resource, src) {\r\n\t\tif (result) {\r\n\t\t\tclient.resources[resource][\"src\"] = src;\r\n\t\t\tviewport.getAnimLength(src, client.callbackGetResourceLength, resource);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Callback for animation duration resource\r\n\t * @param {integer} length the animation length\r\n\t * @param {string} resource the resource name\r\n\t */\r\n\tcallbackGetResourceLength(length, resource) {\r\n\t\tclient.resources[resource][\"duration\"] = length;\r\n\t}\r\n\r\n\t/**\r\n\t * Callback for sfx resources.\r\n\t * @param {boolean} result the audio is existed or not\r\n\t * @param {string} resource the resource name\r\n\t * @param {string} src the url of resource\r\n\t */\r\n\tcallbackLoadSFXResources(result, resource, src) {\r\n\t\tif (result) {\r\n\t\t\tclient.resources[resource][\"sfx\"] = src;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Create observer to detect BBCode elements\r\n\t * then manipulate them.\r\n\t */\r\n\tinitialObservBBCode() {\r\n\t\tconst target = document.getElementById(\"client_inner_chat\");\r\n\t\tconst observer = new MutationObserver(function (mutations) {\r\n\t\t\tmutations.forEach(function (mutation) {\r\n\t\t\t\tconst children = mutation.addedNodes;\r\n\t\t\t\tif (children !== null) {\r\n\t\t\t\t\tchildren.forEach(function (node) {\r\n\t\t\t\t\t\tif (node.tagName == \"C\") {\r\n\t\t\t\t\t\t\tnode.style.color = node.getAttribute(\"a\");\r\n\t\t\t\t\t\t} else if (node.tagName == \"M\") {\r\n\t\t\t\t\t\t\tif (node.hasAttribute(\"a\")) {\r\n\t\t\t\t\t\t\t\tnode.style.backgroundColor = node.getAttribute(\"a\");\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tnode.style.backgroundColor = \"yellow\";\r\n\t\t\t\t\t\t\t\tnode.style.color = \"black\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\tconst config = {\r\n\t\t\tattributes: true,\r\n\t\t\tchildList: true\r\n\t\t};\r\n\t\tobserver.observe(target, config);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to play as a specified character.\r\n\t * @param {number} character the character ID\r\n\t */\r\n\tsendCharacter(character) {\r\n\t\tthis.serv.send(`CC#${this.playerID}#${character}#web#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Requests to select a music track.\r\n\t * @param {number?} song the song to be played\r\n\t */\r\n\tsendMusic(song) {\r\n\t\tthis.serv.send(`MC#${song}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Sends a keepalive packet.\r\n\t */\r\n\tsendCheck() {\r\n\t\tthis.serv.send(`CH#${this.charID}#%`);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when a connection is established to the server.\r\n\t */\r\n\tonOpen(e) {\r\n\t\t// XXX: Why does watching mean just SITTING there and doing nothing?\r\n\t\tif (mode === \"watch\") {\r\n\t\t\tdocument.getElementById(\"client_loading\").style.display = \"none\";\r\n\t\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\t} else {\r\n\t\t\tclient.joinServer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when the connection to the server closes.\r\n\t * @param {CloseEvent} e\r\n\t */\r\n\tonClose(e) {\r\n\t\tconsole.error(`The connection was closed: ${e.reason} (${e.code})`);\r\n\t\tif (e.code !== 1001) {\r\n\t\t\tdocument.getElementById(\"client_error\").style.display = \"block\";\r\n\t\t\tdocument.getElementById(\"error_id\").textContent = e.code;\r\n\t\t\tthis.cleanup();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when a packet is received from the server.\r\n\t * @param {MessageEvent} e\r\n\t */\r\n\tonMessage(e) {\r\n\t\tlet msg = e.data;\r\n\t\tconsole.debug(msg);\r\n\t\tlet lines = msg.split(\"%\");\r\n\t\tlet args = lines[0].split(\"#\");\r\n\t\tlet header = args[0];\r\n\t\tlet handler = this.handlers[header];\r\n\t\tif (typeof handler !== \"undefined\") {\r\n\t\t\thandler(args);\r\n\t\t} else {\r\n\t\t\tconsole.warn(`Invalid packet header ${header}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggered when an network error occurs.\r\n\t * @param {ErrorEvent} e \r\n\t */\r\n\tonError(e) {\r\n\t\tconsole.error(`A network error occurred: ${e.reason} (${e.code})`);\r\n\t\tdocument.getElementById(\"client_error\").style.display = \"block\";\r\n\t\tdocument.getElementById(\"error_id\").textContent = e.code;\r\n\t\tthis.cleanup();\r\n\t}\r\n\r\n\tcleanup() {\r\n\t\ttry {\r\n\t\t\tthis.serv.close(1001);\r\n\t\t} catch (e) {\r\n\t\t\t// I don't care if this errors\r\n\t\t}\r\n\t\tclearInterval(this.checkUpdater);\r\n\t}\r\n\r\n\t/**\r\n\t * XXX: a nasty hack made by gameboyprinter.\r\n\t * @param {string} msg chat message to prepare for display \r\n\t */\r\n\tprepChat(msg){\r\n\t\t// TODO: make this less awful\r\n\t\treturn decodeBBCode(unescapeChat(decodeChat(msg)));\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an in-character chat message.\r\n\t * @param {*} args packet arguments\r\n\t */\r\n\thandleMS(args) {\r\n\t\t// TODO: this if-statement might be a bug.\r\n\t\tif (args[4] != viewport.chatmsg.content) {\r\n\t\t\tdocument.getElementById(\"client_inner_chat\").innerHTML = \"\";\r\n\t\t\tconst chatmsg = {\r\n\t\t\t\t// pre: escape(args[2]),\r\n\t\t\t\tcharacter: -1, // Will do a linear search\r\n\t\t\t\tpreanim: escape(args[2]), // XXX: why again?\r\n\t\t\t\tnameplate: args[3], // TODO: parse INI to get this info\r\n\t\t\t\tname: args[3],\r\n\t\t\t\tspeaking: \"(b)\" + escape(args[4]),\r\n\t\t\t\tsilent: \"(a)\" + escape(args[4]),\r\n\t\t\t\tcontent: this.prepChat(args[5]), // Escape HTML tag, Use BBCode Only!\r\n\t\t\t\tside: args[6],\r\n\t\t\t\tsound: escape(args[7]),\r\n\t\t\t\ttype: args[8],\r\n\t\t\t\t// charid: args[9],\r\n\t\t\t\tsnddelay: args[10],\r\n\t\t\t\tobjection: args[11],\r\n\t\t\t\tevidence: args[12],\r\n\t\t\t\tflip: args[13],\r\n\t\t\t\tflash: args[14],\r\n\t\t\t\tcolor: args[15],\r\n\t\t\t\tisnew: true,\r\n\t\t\t};\r\n\r\n\t\t\t// The dreaded linear search...\r\n\t\t\tfor (let i = 0; i < this.chars.length; i++) {\r\n\t\t\t\tif (this.chars[i].name == args[3]) {\r\n\t\t\t\t\tchatmsg.character = i;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (chatmsg.character == this.charID) {\r\n\t\t\t\tresetICParams();\r\n\t\t\t}\r\n\r\n\t\t\tviewport.say(chatmsg);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles an out-of-character chat message.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCT(args) {\r\n\t\tconst oocLog = document.getElementById(\"client_ooclog\");\r\n\t\toocLog.innerHTML += `${decodeChat(unescapeChat(args[1]))}: ${decodeChat(unescapeChat(args[2]))}\\r\\n`;\r\n\t\tif (oocLog.scrollTop > oocLog.scrollHeight - 600) {\r\n\t\t\toocLog.scrollTop = oocLog.scrollHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a music change to an arbitrary resource.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleMC(args) {\r\n\t\tconst music = viewport.music;\r\n\t\tmusic.pause();\r\n\t\tmusic.src = MUSIC_HOST + args[1].toLowerCase();\r\n\t\tmusic.play();\r\n\t\tif (args[2] >= 0) {\r\n\t\t\tlet musicname = this.chars[args[2]].name;\r\n\t\t\tappendICLog(`${musicname} changed music to ${args[1]}`);\r\n\t\t} else {\r\n\t\t\tappendICLog(`The music was changed to ${args[1]}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a music change to an arbitrary resource, with an offset in seconds.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleRMC(args) {\r\n\t\tviewport.music.pause();\r\n\t\tviewport.music = new Audio(this.musicList[args[1]]);\r\n\t\tconst music = viewport.music;\r\n\t\t// Music offset + drift from song loading\r\n\t\tmusic.totime = args[1];\r\n\t\tmusic.offset = new Date().getTime() / 1000;\r\n\t\tmusic.addEventListener(\"loadedmetadata\", function () {\r\n\t\t\tmusic.currentTime += parseFloat(music.totime + (new Date().getTime() / 1000 - music.offset)).toFixed(3);\r\n\t\t\tmusic.play();\r\n\t\t}, false);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming character information, bundling multiple characters\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCI(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Character \" + args[1];\r\n\t\tthis.serv.send(\"AN#\" + ((args[1] / 10) + 1) + \"#%\");\r\n\t\tfor (let i = 2; i < args.length - 1; i++) {\r\n\t\t\tif (i % 2 == 0) {\r\n\t\t\t\tlet chargs = args[i].split(\"&\");\r\n\t\t\t\tthis.chars[args[i - 1]] = {\r\n\t\t\t\t\t\"name\": chargs[0],\r\n\t\t\t\t\t\"desc\": chargs[1],\r\n\t\t\t\t\t\"evidence\": chargs[3],\r\n\t\t\t\t\t\"icon\": AO_HOST + \"characters/\" + escape(chargs[0].toLowerCase()) + \"/char_icon.png\"\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming character information, containing only one character\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSC(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Characters\";\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\tlet chargs = args[i].split(\"&\");\r\n\t\t\tthis.chars[i - 1] = {\r\n\t\t\t\t\"name\": chargs[0],\r\n\t\t\t\t\"desc\": chargs[1],\r\n\t\t\t\t\"evidence\": chargs[3],\r\n\t\t\t\t\"icon\": AO_HOST + \"characters/\" + escape(chargs[0].toLowerCase()) + \"/char_icon.png\"\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis.serv.send(\"RM#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming evidence information, containing only one evidence\r\n\t * item per packet.\r\n\t * \r\n\t * Mostly unimplemented in webAO.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleEI(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Evidence \" + args[1];\r\n\t\t//serv.send(\"AE#\" + (args[1] + 1) + \"#%\");\r\n\t\tthis.serv.send(\"RM#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming evidence list, all evidences at once\r\n\t * item per packet.\r\n\t * \r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleLE(args) {\r\n\t\tthis.evidences = [];\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\tconst arg = args[i].split(\"&\");\r\n\t\t\tthis.evidences[i - 1] = {\r\n\t\t\t\t\"name\": decodeChat(unescapeChat(arg[0])),\r\n\t\t\t\t\"desc\": decodeChat(unescapeChat(arg[1])),\r\n\t\t\t\t\"filename\": escape(arg[2]),\r\n\t\t\t\t\"icon\": AO_HOST + \"evidence/\" + escape(arg[2].toLowerCase())\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst evidence_box = document.getElementById(\"evidences\");\r\n\t\tevidence_box.innerHTML = \"\";\r\n\t\tfor (let i = 1; i <= this.evidences.length; i++) {\r\n\t\t\tevidence_box.innerHTML += `<img src=\"${this.evidences[i - 1].icon}\" \r\n\t\t\t\tid=\"evi_${i}\" \r\n\t\t\t\talt=\"${this.evidences[i - 1].name}\"\r\n\t\t\t\tclass=\"client_button\"\r\n\t\t\t\tonclick=\"pickEvidence(${i})\">`;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing multiple entries\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleEM(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Music \" + args[1];\r\n\t\tthis.serv.send(\"AM#\" + ((args[1] / 10) + 1) + \"#%\");\r\n\t\tlet hmusiclist = document.getElementById(\"client_musiclist\");\r\n\t\tfor (let i = 2; i < args.length - 1; i++) {\r\n\t\t\tif (i % 2 == 0) {\r\n\t\t\t\tlet newentry = document.createElement(\"OPTION\");\r\n\t\t\t\tnewentry.text = args[i];\r\n\t\t\t\thmusiclist.options.add(newentry);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing only one entry\r\n\t * per packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSM(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Loading Music \";\r\n\t\tconst hmusiclist = document.getElementById(\"client_musiclist\");\r\n\t\tlet flagAudio = false;\r\n\r\n\t\tfor (let i = 1; i < args.length - 1; i++) {\r\n\t\t\t// Check when found the song for the first time\r\n\t\t\tif (/\\.(?:wav|mp3|mp4|ogg|opus)$/i.test(args[i]) && !flagAudio) {\r\n\t\t\t\tflagAudio = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (flagAudio) {\r\n\t\t\t\t// After reached the audio put everything in the music list\r\n\t\t\t\tconst newentry = document.createElement(\"OPTION\");\r\n\t\t\t\tnewentry.text = args[i];\r\n\t\t\t\thmusiclist.options.add(newentry);\r\n\t\t\t} else {\r\n\t\t\t\t// Create area button\r\n\t\t\t\tconst newarea = document.createElement(\"SPAN\");\r\n\t\t\t\tnewarea.className = \"location-box\";\r\n\t\t\t\tnewarea.textContent = args[i];\r\n\t\t\t\tnewarea.onclick = function () {\r\n\t\t\t\t\tarea_click(this);\r\n\t\t\t\t};\r\n\t\t\t\tdocument.getElementById(\"areas\").appendChild(newarea);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// We need to check if the last area that we got was actually a category\r\n\t\t// header for music. If it was, then move it over to the music list.\r\n\t\tconst area_box = document.getElementById(\"areas\");\r\n\t\tif (area_box.lastChild.textContent.startsWith(\"=\")) {\r\n\t\t\tconst audio_title = document.createElement(\"OPTION\");\r\n\t\t\taudio_title.text = area_box.lastChild.textContent;\r\n\t\t\thmusiclist.insertBefore(audio_title, hmusiclist.firstChild);\r\n\t\t\tarea_box.removeChild(area_box.lastChild);\r\n\t\t}\r\n\r\n\t\tthis.serv.send(\"RD#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the banned packet\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleBD(args) {\r\n\t\tdocument.getElementById(\"client_loadingtext\").innerHTML = \"Banned: \" + args[1];\r\n\t}\r\n\r\n\t/**\r\n\t * Handles incoming music information, containing all entries\r\n\t * in the same packet.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandlemusic(args) {\r\n\t\tfor (let i = 0; i < args.length / 2; i++) {\r\n\t\t\tthis.musicList[args[2 * i]] = args[2 * i + 1];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the handshake completion packet, meaning the player\r\n\t * is ready to select a character.\r\n\t * \r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleDONE(args) {\r\n\t\tdocument.getElementById(\"client_loading\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"block\";\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a background change.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleBN(args) {\r\n\t\tviewport.bgname = escape(args[1]);\r\n\t\tconst bg_index = getIndexFromSelect(\"bg_select\", escape(args[1]));\r\n\t\tdocument.getElementById(\"bg_select\").selectedIndex = bg_index;\r\n\t\tupdateBackgroundPreview();\r\n\t\tif (bg_index == 0) {\r\n\t\t\tdocument.getElementById(\"bg_filename\").value = args[1];\r\n\t\t}\r\n\t\tdocument.getElementById(\"bg_preview\").src = AO_HOST + \"background/\" + escape(args[1].toLowerCase()) + \"/defenseempty.png\";\r\n\t\tif (this.charID == -1) {\r\n\t\t\tchangeBackground(\"jud\");\r\n\t\t} else {\r\n\t\t\tchangeBackground(this.chars[this.charID].side);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\thandleNBG(args) {\r\n\t\t// TODO (set by sD)\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a change in the health bars' states.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleHP(args) {\r\n\t\tconst percent_hp = args[2] * 10;\r\n\t\tif (args[1] == 1) {\r\n\t\t\t// Def hp\r\n\t\t\tthis.hp[0] = args[2];\r\n\t\t\t$(\"#client_defense_hp > .health-bar\").animate({\r\n\t\t\t\t\"width\": percent_hp + \"%\"\r\n\t\t\t}, 500);\r\n\t\t} else {\r\n\t\t\t// Pro hp\r\n\t\t\tthis.hp[1] = args[2];\r\n\t\t\t$(\"#client_prosecutor_hp > .health-bar\").animate({\r\n\t\t\t\t\"width\": percent_hp + \"%\"\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a testimony states.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleRT(args) {\r\n\t\tif (args[1] == \"testimony1\") {\r\n\t\t\t//Witness Testimony\r\n\t\t\tthis.testimonyID = 1;\r\n\t\t} else {\r\n\t\t\t//Cross Examination\r\n\t\t\tthis.testimonyID = 2;\r\n\t\t}\r\n\t\tviewport.initTestimonyUpdater();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles a call mod message.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleZZ(args) {\r\n\t\tconst oocLog = document.getElementById(\"client_ooclog\");\r\n\t\toocLog.innerHTML += `$Alert: ${decodeChat(unescapeChat(args[1]))}\\r\\n`;\r\n\t\tif (oocLog.scrollTop > oocLog.scrollHeight - 60) {\r\n\t\t\toocLog.scrollTop = oocLog.scrollHeight;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the issuance of a player ID by the server.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleID(args) {\r\n\t\tthis.playerID = args[1];\r\n\t}\r\n\r\n\thandlePN(args) {\r\n\t\tthis.serv.send(\"askchaa#%\");\r\n\t}\r\n\r\n\t/**\r\n\t * Received when the server announces its server info,\r\n\t * but we use it as a cue to begin retrieving characters.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleSI(args) {\r\n\t\tif (oldLoading) {\r\n\t\t\tthis.serv.send(\"askchar2#%\");\r\n\t\t} else {\r\n\t\t\tthis.serv.send(\"RC#%\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the list of all used and vacant characters.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandleCharsCheck(args) {\r\n\t\tdocument.getElementById(\"client_chartable\").innerHTML = \"\";\r\n\t\tlet tr;\r\n\t\tfor (let i = 0; i < this.chars.length; i++) {\r\n\t\t\tif (i % CHAR_SELECT_WIDTH == 0) {\r\n\t\t\t\ttr = document.createElement(\"TR\");\r\n\t\t\t}\r\n\t\t\tconst td = document.createElement(\"TD\");\r\n\t\t\tlet icon_chosen = \"\";\r\n\t\t\tconst thispick = this.chars[i].icon;\r\n\t\t\tif (args[i + 1] == \"-1\") {\r\n\t\t\t\ticon_chosen = \" dark\";\r\n\t\t\t}\r\n\t\t\ttd.innerHTML = `<img class='demothing${icon_chosen}' id='demo_${i}' ` +\r\n\t\t\t\t`src='${thispick}' alt='${this.chars[i].name}' onclick='pickChar(${i})' ` +\r\n\t\t\t\t\"onerror='demoError(this);'>\";\r\n\t\t\ttr.appendChild(td);\r\n\t\t\tif (i % CHAR_SELECT_WIDTH == 0) {\r\n\t\t\t\tdocument.getElementById(\"client_chartable\").appendChild(tr);\r\n\t\t\t}\r\n\t\t}\r\n\t\t//changeBackground(\"def\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the server's assignment of a character for the player to use.\r\n\t * @param {Array} args packet arguments\r\n\t */\r\n\thandlePV(args) {\r\n\t\tthis.charID = args[3];\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_inputbox\").style.display = \"\";\r\n\t\tconst me = this.me();\r\n\t\tconst emotes = this.emotes;\r\n\t\tconst emotesList = document.getElementById(\"client_emo\");\r\n\t\temotesList.innerHTML = \"\"; // Clear emote box\r\n\t\temotesList.style.display = \"\";\r\n\t\tconst xhr = new XMLHttpRequest();\r\n\t\txhr.withCredentials = false;\r\n\t\txhr.open(\"GET\", AO_HOST + \"characters/\" + escape(this.me().name.toLowerCase()) + \"/char.ini\", true);\r\n\t\txhr.responseType = \"text\";\r\n\t\txhr.onload = function (e) {\r\n\t\t\tif (this.status == 200) {\r\n\t\t\t\tconst linifile = this.responseText;\r\n\t\t\t\tconst pinifile = INI.parse(linifile);\r\n\t\t\t\tme.side = pinifile.Options.side;\r\n\t\t\t\tupdateActionCommands(me.side);\r\n\t\t\t\tfor (let i = 1; i <= pinifile.Emotions.number; i++) {\r\n\t\t\t\t\tconst emoteinfo = pinifile.Emotions[i].split(\"#\");\r\n\t\t\t\t\tlet esfx = \"0\";\r\n\t\t\t\t\tlet esfxd = \"0\";\r\n\t\t\t\t\tif (typeof pinifile.SoundN !== \"undefined\") {\r\n\t\t\t\t\t\tesfx = pinifile.SoundN[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (typeof pinifile.SoundT !== \"undefined\") {\r\n\t\t\t\t\t\tesfxd = pinifile.SoundT[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Make sure the asset server is case insensitive, or that everything on it is lowercase\r\n\t\t\t\t\temotes[i] = {\r\n\t\t\t\t\t\tdesc: emoteinfo[0].toLowerCase(),\r\n\t\t\t\t\t\tspeaking: emoteinfo[1].toLowerCase(),\r\n\t\t\t\t\t\tsilent: emoteinfo[2].toLowerCase(),\r\n\t\t\t\t\t\tzoom: emoteinfo[3],\r\n\t\t\t\t\t\tsfx: esfx.toLowerCase(),\r\n\t\t\t\t\t\tsfxdelay: esfxd,\r\n\t\t\t\t\t\tbutton_off: AO_HOST + `characters/${escape(me.name).toLowerCase()}/emotions/button${i}_off.png`,\r\n\t\t\t\t\t\tbutton_on: AO_HOST + `characters/${escape(me.name).toLowerCase()}/emotions/button${i}_on.png`\r\n\t\t\t\t\t};\r\n\t\t\t\t\temotesList.innerHTML += \r\n\t\t\t\t\t\t`<img src=${emotes[i].button_off}\r\n\t\t\t\t\t\t id=\"emo_${i}\"\r\n\t\t\t\t\t\t alt=\"${emotes[i].desc}\"\r\n\t\t\t\t\t\t class=\"client_button\"\r\n\t\t\t\t\t\t onclick=\"pickEmotion(${i})\">`;\r\n\t\t\t\t}\r\n\t\t\t\tpickEmotion(1);\r\n\t\t\t}\r\n\t\t};\r\n\t\txhr.send();\r\n\t}\r\n}\r\n\r\nclass Viewport {\r\n\tconstructor() {\r\n\t\tthis.textnow = \"\";\r\n\t\tthis.chatmsg = {\r\n\t\t\t\"isnew\": false,\r\n\t\t\t\"content\": \"\",\r\n\t\t\t\"objection\": \"0\",\r\n\t\t\t\"sound\": \"\",\r\n\t\t\t\"startpreanim\": false,\r\n\t\t\t\"startspeaking\": false,\r\n\t\t\t\"side\": null,\r\n\t\t\t\"color\": \"0\",\r\n\t\t\t\"snddelay\": 0,\r\n\t\t\t\"preanimdelay\": 0\r\n\t\t};\r\n\t\tthis.blip = new Audio(AO_HOST + \"sounds/general/sfx-blipmale.wav\");\r\n\t\tthis.blip.volume = 0.5;\r\n\r\n\t\t// Allocate multiple blip audio channels to make blips less jittery\r\n\r\n\t\t// TODO: read blip type (\"gender\") from ini\r\n\t\tthis.blipChannels = new Array(6);\r\n\t\tfor (let i = 0; i < this.blipChannels.length; i++) {\r\n\t\t\tthis.blipChannels[i] = new Audio(AO_HOST + \"sounds/general/sfx-blipmale.wav\");\r\n\t\t\tthis.blipChannels[i].volume = 0.5;\r\n\t\t}\r\n\t\tthis.currentBlipChannel = 0;\r\n\r\n\t\tthis.sfxaudio = new Audio(AO_HOST + \"sounds/general/sfx-blipmale.wav\");\r\n\t\tthis.sfxplayed = 0;\r\n\r\n\t\tthis.music = new Audio();\r\n\t\tthis.music.play();\r\n\r\n\t\tthis.updater = null;\r\n\t\tthis.testimonyUpdater = null;\r\n\r\n\t\tthis.bgname = \"gs4\";\r\n\r\n\t\tthis.testimonyTimer = 0;\r\n\t\tthis.shoutTimer = 0;\r\n\t\tthis.textTimer = 0;\r\n\r\n\t\tthis._animating = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns whether or not the viewport is busy\r\n\t * performing a task (animating).\r\n\t */\r\n\tisAnimating() {\r\n\t\treturn this._animating;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the volume of the blip sound.\r\n\t * @param {number} volume\r\n\t */\r\n\tsetBlipVolume(volume) {\r\n\t\tfor (let i = 0; i < this.blipChannels.length; i++) {\r\n\t\t\tthis.blipChannels[i].volume = volume;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the path which the background is located in.\r\n\t */\r\n\tbgFolder() {\r\n\t\treturn `${AO_HOST}background/${this.bgname.toLowerCase()}/`;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a new emote.\r\n\t * @param {object} chatmsg the new chat message\r\n\t */\r\n\tsay(chatmsg) {\r\n\t\tthis.chatmsg = chatmsg;\r\n\t\tappendICLog(chatmsg.content, chatmsg.nameplate);\r\n\t\tchangeBackground(chatmsg.side);\r\n\t\tthis.textnow = \"\";\r\n\t\tthis.sfxplayed = 0;\r\n\t\tthis.textTimer = 0;\r\n\t\tthis._animating = true;\r\n\t\tclearTimeout(this.updater);\r\n\t\t// If preanim existed then determine the length\r\n\t\tif (chatmsg.preanim != \"-\") {\r\n\t\t\tchatmsg.preanimdelay = this.getAnimLength(`${AO_HOST}characters/${escape(chatmsg.name.toLowerCase())}/${chatmsg.preanim.toLowerCase()}.gif`, this.initUpdater);\r\n\t\t} else {\r\n\t\t\tthis.initUpdater(0);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Intialize updater\r\n\t * @param {number} animdelay the length of pre-animation \r\n\t */\r\n\tinitUpdater(animdelay) {\r\n\t\tviewport.chatmsg.preanimdelay = parseInt(animdelay);\r\n\t\tviewport.updater = setTimeout(() => viewport.updateText(), UPDATE_INTERVAL);\r\n\t}\r\n\r\n\t/**\r\n\t * Intialize testimony updater \r\n\t */\r\n\tinitTestimonyUpdater() {\r\n\t\tif (client.testimonyID > 0) {\r\n\t\t\tlet testimony = \"\";\r\n\t\t\tif (client.testimonyID == 1) {\r\n\t\t\t\ttestimony = \"witnesstestimony\";\r\n\t\t\t} else if (client.testimonyID == 2) {\r\n\t\t\t\ttestimony = \"crossexamination\";\r\n\t\t\t}\r\n\t\t\t(new Audio(client.resources[testimony][\"sfx\"])).play();\r\n\t\t\tthis.testimonyTimer = 0;\r\n\t\t\tconst testimonyOverlay = document.getElementById(\"client_testimony\");\r\n\t\t\ttestimonyOverlay.src = client.resources[testimony][\"src\"];\r\n\t\t\ttestimonyOverlay.style.display = \"\";\r\n\t\t\tthis.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets animation length.\r\n\t * @param {string} filename the animation file name\r\n\t * @param {function} callback the callback function\r\n\t * @param {object} param \r\n\t */\r\n\tgetAnimLength(filename, callback, param) {\r\n\t\tconst request = new XMLHttpRequest();\r\n\t\trequest.open(\"GET\", filename, true);\r\n\t\trequest.responseType = \"arraybuffer\";\r\n\t\trequest.addEventListener(\"load\", function () {\r\n\t\t\tconst gifInfo = gify.getInfo(request.response);\r\n\t\t\tconsole.log(gifInfo[\"duration\"]);\r\n\t\t\t// Return animation length\r\n\t\t\tcallback(gifInfo[\"duration\"], param);\r\n\t\t});\r\n\t\trequest.send();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the testimony overaly\r\n\t */\r\n\tupdateTestimony() {\r\n\t\t//Update timer\r\n\t\tthis.testimonyTimer = this.testimonyTimer + UPDATE_INTERVAL;\r\n\r\n\t\tif (client.testimonyID == 1) {\r\n\t\t\t//Witness Testimony\r\n\t\t\tif (this.testimonyTimer >= client.resources[\"witnesstestimony\"][\"duration\"]) {\r\n\t\t\t\t//Finish\r\n\t\t\t\tthis.disposeTestimony();\r\n\t\t\t} else {\r\n\t\t\t\tthis.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL);\r\n\t\t\t}\r\n\t\t} else if (client.testimonyID == 2) {\r\n\t\t\t//Cross Examination\r\n\t\t\tif (this.testimonyTimer >= client.resources[\"crossexamination\"][\"duration\"]) {\r\n\t\t\t\t//Finish\r\n\t\t\t\tthis.disposeTestimony();\r\n\t\t\t} else {\r\n\t\t\t\tthis.testimonyUpdater = setTimeout(() => this.updateTestimony(), UPDATE_INTERVAL);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.disposeTestimony();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Dispose the testimony overlay\r\n\t */\r\n\tdisposeTestimony() {\r\n\t\tclient.testimonyID = 0;\r\n\t\tthis.testimonyTimer = 0;\r\n\t\tdocument.getElementById(\"client_testimony\").style.display = \"none\";\r\n\t\tclearTimeout(this.testimonyUpdater);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the chatbox based on the given text.\r\n\t * \r\n\t * XXX: This relies on a global variable `this.chatmsg`!\r\n\t */\r\n\tupdateText() {\r\n\t\tconst nameBox = document.getElementById(\"client_name\");\r\n\t\tconst chatBox = document.getElementById(\"client_chat\");\r\n\t\tconst charSprite = document.getElementById(\"client_char\");\r\n\t\tconst eviBox = document.getElementById(\"client_evi\");\r\n\t\tconst background = document.getElementById(\"client_background\");\r\n\t\tconst shoutSprite = document.getElementById(\"client_shout\");\r\n\t\tconst chatBoxInner = document.getElementById(\"client_inner_chat\");\r\n\r\n\t\t// Flip the character\r\n\t\tif (this.chatmsg.flip == 1) {\r\n\t\t\tcharSprite.style.transform = \"scaleX(-1)\";\r\n\t\t} else {\r\n\t\t\tcharSprite.style.transform = \"scaleX(1)\";\r\n\t\t}\r\n\r\n\t\tif (this._animating) {\r\n\t\t\tthis.updater = setTimeout(() => this.updateText(), UPDATE_INTERVAL);\r\n\t\t}\r\n\r\n\t\tif (this.chatmsg.isnew) {\r\n\t\t\t// Reset screen background\r\n\t\t\tbackground.style.backgroundColor = \"transparent\";\r\n\t\t\t// Hide message and evidence window\r\n\t\t\tnameBox.style.display = \"none\";\r\n\t\t\tchatBox.style.display = \"none\";\r\n\t\t\teviBox.style.opacity = \"0\";\r\n\t\t\teviBox.style.height = \"0%\";\r\n\t\t\tconst shouts = {\r\n\t\t\t\t\"1\": \"holdit\",\r\n\t\t\t\t\"2\": \"objection\",\r\n\t\t\t\t\"3\": \"takethat\"\r\n\t\t\t};\r\n\r\n\t\t\tlet shout = shouts[this.chatmsg.objection];\r\n\t\t\tif (typeof shout !== \"undefined\") {\r\n\t\t\t\tshoutSprite.src = client.resources[shout][\"src\"];\r\n\t\t\t\t(new Audio(`${AO_HOST}characters/${this.chatmsg.name.toLowerCase()}/${shout}.wav`)).play();\r\n\t\t\t\tthis.shoutTimer = 850;\r\n\t\t\t} else {\r\n\t\t\t\tthis.shoutTimer = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.chatmsg.isnew = false;\r\n\t\t\tthis.chatmsg.startpreanim = true;\r\n\t\t}\r\n\r\n\t\tif (this.textTimer >= this.shoutTimer && this.chatmsg.startpreanim) {\r\n\t\t\t// Effect stuff\r\n\t\t\tif (this.chatmsg.flash == 2) {\r\n\t\t\t\t//Shake screen\r\n\t\t\t\tthis.sfxaudio.pause();\r\n\t\t\t\tthis.sfxplayed = 1;\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/sfx-stab.wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t\t$(\"#client_gamewindow\").effect(\"shake\", {\r\n\t\t\t\t\t\"direction\": \"up\"\r\n\t\t\t\t});\r\n\t\t\t} else if (this.chatmsg.flash == 1) {\r\n\t\t\t\t//Flash screen\r\n\t\t\t\tbackground.style.backgroundColor = \"white\";\r\n\t\t\t\tthis.sfxaudio.pause();\r\n\t\t\t\tthis.sfxplayed = 1;\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/sfx-realization.wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t\t$(\"#client_gamewindow\").effect(\"pulsate\");\r\n\t\t\t}\r\n\r\n\t\t\t//Pre-animation stuff\r\n\t\t\tif (this.chatmsg.preanimdelay > 0) {\r\n\t\t\t\tshoutSprite.src = \"misc/placeholder.gif\";\r\n\t\t\t\tchangeBackground(this.chatmsg.side);\r\n\t\t\t\tcharSprite.src = AO_HOST + \"characters/\" + escape(this.chatmsg.name.toLowerCase()) + \"/\" + this.chatmsg.preanim.toLowerCase() + \".gif\";\r\n\t\t\t}\r\n\t\t\tthis.chatmsg.startpreanim = false;\r\n\t\t\tthis.chatmsg.startspeaking = true;\r\n\t\t} else if (this.textTimer >= this.shoutTimer + this.chatmsg.preanimdelay && !this.chatmsg.startpreanim) {\r\n\t\t\tif (this.chatmsg.startspeaking) {\r\n\t\t\t\tif (this.chatmsg.evidence > 0) {\r\n\t\t\t\t\t// Prepare evidence\r\n\t\t\t\t\teviBox.style.backgroundImage = \"url('\" + client.evidences[this.chatmsg.evidence - 1].icon + \"')\";\r\n\r\n\t\t\t\t\tif (this.chatmsg.side == \"def\") {\r\n\t\t\t\t\t\t// Only def show evidence on right\r\n\t\t\t\t\t\teviBox.style.right = \"1.5em\";\r\n\t\t\t\t\t\teviBox.style.left = \"initial\";\r\n\t\t\t\t\t\t$(\"#client_evi\").animate({\r\n\t\t\t\t\t\t\theight: \"30%\",\r\n\t\t\t\t\t\t\topacity: 1\r\n\t\t\t\t\t\t}, 250);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\teviBox.style.right = \"initial\";\r\n\t\t\t\t\t\teviBox.style.left = \"1.5em\";\r\n\t\t\t\t\t\t$(\"#client_evi\").animate({\r\n\t\t\t\t\t\t\theight: \"30%\",\r\n\t\t\t\t\t\t\topacity: 1\r\n\t\t\t\t\t\t}, 250);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnameBox.style.display = \"block\";\r\n\t\t\t\tnameBox.style.fontSize = (nameBox.offsetHeight * 0.7) + \"px\";\r\n\r\n\t\t\t\twhile (nameBox.hasChildNodes()) {\r\n\t\t\t\t\tnameBox.removeChild(nameBox.firstChild);\r\n\t\t\t\t}\r\n\t\t\t\tnameBox.appendChild(document.createTextNode(this.chatmsg.nameplate));\r\n\r\n\t\t\t\tchatBox.style.display = \"block\";\r\n\t\t\t\tchatBox.style.fontSize = (chatBox.offsetHeight * 0.25) + \"px\";\r\n\r\n\t\t\t\tconst colors = {\r\n\t\t\t\t\t\"0\": \"#ffffff\",\r\n\t\t\t\t\t\"1\": \"#00ff00\",\r\n\t\t\t\t\t\"2\": \"#ff0000\",\r\n\t\t\t\t\t\"3\": \"#ffaa00\",\r\n\t\t\t\t\t\"4\": \"#0000ff\",\r\n\t\t\t\t\t\"5\": \"#ffff00\",\r\n\t\t\t\t\t\"6\": \"#aa00aa\"\r\n\t\t\t\t};\r\n\t\t\t\tchatBoxInner.style.color = colors[this.chatmsg.color] || \"#ffffff\";\r\n\t\t\t\tthis.chatmsg.startspeaking = false;\r\n\r\n\t\t\t\tif (this.chatmsg.preanimdelay == 0) {\r\n\t\t\t\t\tshoutSprite.src = \"misc/placeholder.gif\";\r\n\t\t\t\t\tchangeBackground(this.chatmsg.side);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcharSprite.src = AO_HOST + \"characters/\" + escape(this.chatmsg.name.toLowerCase()) + \"/\" + this.chatmsg.speaking.toLowerCase() + \".gif\";\r\n\r\n\t\t\t\tif (this.textnow == this.chatmsg.content) {\r\n\t\t\t\t\tcharSprite.src = AO_HOST + \"characters/\" + escape(this.chatmsg.name.toLowerCase()) + \"/\" + this.chatmsg.silent.toLowerCase() + \".gif\";\r\n\t\t\t\t\tthis._animating = false;\r\n\t\t\t\t\tclearTimeout(this.updater);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.textnow != this.chatmsg.content) {\r\n\t\t\t\t\tif (this.chatmsg.content.charAt(this.textnow.length) != \" \") {\r\n\t\t\t\t\t\tthis.blipChannels[this.currentBlipChannel].play();\r\n\t\t\t\t\t\tthis.currentBlipChannel++;\r\n\t\t\t\t\t\tthis.currentBlipChannel %= this.blipChannels.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.textnow = this.chatmsg.content.substring(0, this.textnow.length + 1);\r\n\r\n\t\t\t\t\twhile (chatBoxInner.hasChildNodes()) {\r\n\t\t\t\t\t\tchatBoxInner.removeChild(chatBoxInner.firstChild);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tchatBoxInner.appendChild(document.createTextNode(this.textnow));\r\n\r\n\t\t\t\t\tif (this.textnow == this.chatmsg.content) {\r\n\t\t\t\t\t\tthis.textTimer = 0;\r\n\t\t\t\t\t\tthis._animating = false;\r\n\t\t\t\t\t\tcharSprite.src = AO_HOST + \"characters/\" + escape(this.chatmsg.name.toLowerCase()) + \"/\" + this.chatmsg.silent.toLowerCase() + \".gif\";\r\n\t\t\t\t\t\tclearTimeout(this.updater);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.sfxplayed && this.chatmsg.snddelay + this.shoutTimer >= this.textTimer) {\r\n\t\t\tthis.sfxaudio.pause();\r\n\t\t\tthis.sfxplayed = 1;\r\n\t\t\tif (this.chatmsg.sound != \"0\" && this.chatmsg.sound != \"1\") {\r\n\t\t\t\tthis.sfxaudio.src = AO_HOST + \"sounds/general/\" + escape(this.chatmsg.sound.toLowerCase()) + \".wav\";\r\n\t\t\t\tthis.sfxaudio.play();\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.textTimer = this.textTimer + UPDATE_INTERVAL;\r\n\t}\r\n}\r\n\r\nclass INI {\r\n\tstatic parse(data) {\r\n\t\tlet regex = {\r\n\t\t\tsection: /^\\s*\\[\\s*([^\\]]*)\\s*\\]\\s*$/,\r\n\t\t\tparam: /^\\s*([\\w.\\-_]+)\\s*=\\s*(.*?)\\s*$/,\r\n\t\t\tcomment: /^\\s*;.*$/\r\n\t\t};\r\n\t\tlet value = {};\r\n\t\tlet lines = data.split(/\\r\\n|\\r|\\n/);\r\n\t\tlet section = null;\r\n\t\tlines.forEach(function (line) {\r\n\t\t\tif (regex.comment.test(line)) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (line.length == 0) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if (regex.param.test(line)) {\r\n\t\t\t\tlet match = line.match(regex.param);\r\n\t\t\t\tif (section) {\r\n\t\t\t\t\tvalue[section][match[1]] = match[2];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalue[match[1]] = match[2];\r\n\t\t\t\t}\r\n\t\t\t} else if (regex.section.test(line)) {\r\n\t\t\t\tlet match = line.match(regex.section);\r\n\t\t\t\tvalue[match[1]] = {};\r\n\t\t\t\tsection = match[1];\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when the Return key is pressed on the out-of-character chat input box.\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function onOOCEnter(event) {\r\n\tif (event.keyCode == 13) {\r\n\t\tclient.sendOOC(document.getElementById(\"client_oocinputbox\").value);\r\n\t\tdocument.getElementById(\"client_oocinputbox\").value = \"\";\r\n\t}\r\n}\r\nwindow.onOOCEnter = onOOCEnter;\r\n\r\n/**\r\n * Triggered when the Return key is pressed on the in-character chat input box.\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function onEnter(event) {\r\n\tif (event.keyCode == 13) {\r\n\t\tlet mychar = client.me();\r\n\t\tlet myemo = client.myEmote();\r\n\t\tlet myevi = client.myEvidence();\r\n\t\tlet myflip = ((client.flip) ? 1 : 0);\r\n\t\tlet mycolor = document.getElementById(\"textcolor\").value;\r\n\t\tlet ssfxname = \"0\";\r\n\t\tlet ssfxdelay = \"0\";\r\n\t\tif (document.getElementById(\"sendsfx\").checked) {\r\n\t\t\tssfxname = myemo.sfx;\r\n\t\t\tssfxdelay = myemo.sfxdelay;\r\n\t\t}\r\n\t\tclient.sendIC(myemo.speaking, mychar.name, myemo.silent, document.getElementById(\"client_inputbox\").value, mychar.side, ssfxname, myemo.zoom, ssfxdelay, selectedShout, myevi, myflip, selectedEffect, mycolor);\r\n\t}\r\n}\r\nwindow.onEnter = onEnter;\r\n\r\n/**\r\n * Resets the IC parameters for the player to enter a new chat message.\r\n * This should only be called when the player's previous chat message\r\n * was successfully sent/presented.\r\n */\r\nfunction resetICParams() {\r\n\tdocument.getElementById(\"client_inputbox\").value = \"\";\r\n\tif (selectedEffect) {\r\n\t\tdocument.getElementById(\"button_effect_\" + selectedEffect).className = \"client_button\";\r\n\t\tselectedEffect = 0;\r\n\t}\r\n\tif (selectedShout) {\r\n\t\tdocument.getElementById(\"button_\" + selectedShout).className = \"client_button\";\r\n\t\tselectedShout = 0;\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when an item on the music list is clicked.\r\n * @param {MouseEvent} event\r\n */\r\nexport function musiclist_click(event) {\r\n\tconst playtrack = document.getElementById(\"client_musiclist\").value;\r\n\tclient.sendMusicChange(playtrack);\r\n}\r\nwindow.musiclist_click = musiclist_click;\r\n\r\n/**\r\n * Triggered when an item on the area list is clicked.\r\n * @param {MouseEvent} event\r\n */\r\nexport function area_click(el) {\r\n\tconst area = el.textContent;\r\n\tclient.sendMusicChange(area);\r\n\r\n\tconst areaHr = document.createElement(\"div\");\r\n\tareaHr.className = \"hrtext\";\r\n\tareaHr.textContent = `switched to ${el.textContent}`;\r\n\tdocument.getElementById(\"client_log\").appendChild(areaHr);\r\n}\r\nwindow.area_click = area_click;\r\n\r\n/**\r\n * Triggered by the music volume slider.\r\n */\r\nexport function changeMusicVolume() {\r\n\tviewport.music.volume = document.getElementById(\"client_mvolume\").value / 100;\r\n}\r\nwindow.changeMusicVolume = changeMusicVolume;\r\n\r\n/**\r\n * Triggered by the sound effect volume slider.\r\n */\r\nexport function changeSFXVolume() {\r\n\tviewport.sfxaudio.volume = document.getElementById(\"client_svolume\").value / 100;\r\n}\r\nwindow.changeSFXVolume = changeSFXVolume;\r\n\r\n/**\r\n * Triggered by the blip volume slider.\r\n */\r\nexport function changeBlipVolume() {\r\n\tviewport.setBlipVolume(document.getElementById(\"client_bvolume\").value / 100);\r\n}\r\nwindow.changeBlipVolume = changeBlipVolume;\r\n\r\n/**\r\n * Triggered when a character icon is clicked in the character selection menu.\r\n * @param {MouseEvent} event\r\n */\r\nexport function changeCharacter(event) {\r\n\tclient.sendLeaveRoom();\r\n\tdocument.getElementById(\"client_charselect\").style.display = \"block\";\r\n\tdocument.getElementById(\"client_emo\").innerHTML = \"\";\r\n}\r\nwindow.changeCharacter = changeCharacter;\r\n\r\n/**\r\n * Triggered when there was an error loading a character sprite.\r\n * @param {HTMLImageElement} image the element containing the missing image\r\n */\r\nexport function imgError(image) {\r\n\timage.onerror = \"\";\r\n\timage.src = \"misc/placeholder.gif\";\r\n\treturn true;\r\n}\r\nwindow.imgError = imgError;\r\n\r\n/**\r\n * Triggered when there was an error loading a character icon.\r\n * @param {HTMLImageElement} image the element containing the missing image\r\n */\r\nexport function demoError(image) {\r\n\timage.onerror = \"\";\r\n\timage.src = \"/misc/placeholder.png\";\r\n\treturn true;\r\n}\r\nwindow.demoError = demoError;\r\n\r\n/**\r\n * Checks if a file exists at the specified URI.\r\n * @param {string} url the URI to be checked\r\n * @param {function} callback the function to be called when finished\r\n * @param {object} param \r\n */\r\nfunction fileExists(url, callback, param) {\r\n\tconst xhttp = new XMLHttpRequest();\r\n\txhttp.onreadystatechange = function () {\r\n\t\tif (this.readyState == 4 && this.status == 200) {\r\n\t\t\tcallback(true, param, url);\r\n\t\t} else {\r\n\t\t\tcallback(false, param, url);\r\n\t\t}\r\n\t};\r\n\txhttp.open(\"GET\", url, true);\r\n\txhttp.send();\r\n}\r\n\r\n/**\r\n * Changes the viewport background based on a given position.\r\n * \r\n * Valid positions: `def, pro, hld, hlp, wit, jud`\r\n * @param {string} position the position to change into\r\n */\r\nfunction changeBackground(position) {\r\n\tlet standname;\r\n\tconst bgfolder = viewport.bgFolder();\r\n\tdocument.getElementById(\"client_fg\").style.display = \"none\";\r\n\tdocument.getElementById(\"client_bench\").style.display = \"none\";\r\n\tswitch (position) {\r\n\tcase \"def\":\r\n\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"defenseempty.png\";\r\n\t\tdocument.getElementById(\"client_bench\").style.display = \"block\";\r\n\t\tfileExists(bgfolder + \"defensedesk.png\", callbackChangeBackground, position);\r\n\t\tstandname = \"defense\";\r\n\t\tbreak;\r\n\tcase \"pro\":\r\n\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"prosecutorempty.png\";\r\n\t\tdocument.getElementById(\"client_bench\").style.display = \"block\";\r\n\t\tfileExists(bgfolder + \"prosecutiondesk.png\", callbackChangeBackground, position);\r\n\t\tstandname = \"prosecution\";\r\n\t\tbreak;\r\n\tcase \"hld\":\r\n\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"helperstand.png\";\r\n\t\tstandname = \"defense\";\r\n\t\tbreak;\r\n\tcase \"hlp\":\r\n\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"prohelperstand.png\";\r\n\t\tstandname = \"prosecution\";\r\n\t\tbreak;\r\n\tcase \"wit\":\r\n\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"witnessempty.png\";\r\n\t\tdocument.getElementById(\"client_bench\").style.display = \"block\";\r\n\t\tfileExists(bgfolder + \"stand.png\", callbackChangeBackground, position);\r\n\t\tstandname = \"prosecution\";\r\n\t\tbreak;\r\n\tcase \"jud\":\r\n\t\tdocument.getElementById(\"client_court\").src = bgfolder + \"judgestand.png\";\r\n\t\tstandname = \"prosecution\";\r\n\t\tbreak;\r\n\t}\r\n\tif (viewport.chatmsg.type == 5) {\r\n\t\tdocument.getElementById(\"client_bench\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_court\").src = AO_HOST + \"themes/default/\" + standname + \"_speedlines.gif\";\r\n\t}\r\n}\r\n\r\n/**\r\n * Callback for desk resource\r\n * \r\n * Valid positions: `def, pro, hld, hlp, wit, jud`\r\n * @param {boolean} result the image is existed or not\r\n * @param {string} position the position to change into\r\n */\r\nfunction callbackChangeBackground(result, position) {\r\n\tlet bgfolder = viewport.bgFolder();\r\n\tif (position == \"def\") {\r\n\t\tif (result) {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"defensedesk.png\";\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"bancodefensa.png\";\r\n\t\t}\r\n\t} else if (position == \"pro\") {\r\n\t\tif (result) {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"prosecutiondesk.png\";\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"bancoacusacion.png\";\r\n\t\t}\r\n\t} else if (position == \"wit\") {\r\n\t\tif (result) {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"stand.png\";\r\n\t\t} else {\r\n\t\t\tdocument.getElementById(\"client_bench\").src = bgfolder + \"estrado.png\";\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Triggered when the reconnect button is pushed.\r\n */\r\nexport function ReconnectButton() {\r\n\tclient.cleanup();\r\n\tclient = new Client(serverIP);\r\n\tif (client) {\r\n\t\tmode = \"join\"; // HACK: see client.onOpen\r\n\t\tdocument.getElementById(\"client_error\").style.display = \"none\";\r\n\t}\r\n}\r\nwindow.ReconnectButton = ReconnectButton;\r\n\r\n/**\r\n * Triggered when the retry button is pushed (during the loading process).\r\n */\r\nexport function RetryButton() {\r\n\tclient.joinServer();\r\n}\r\nwindow.RetryButton = RetryButton;\r\n\r\n/**\r\n * Appends a message to the in-character chat log.\r\n * @param {string} toadd the string to be added\r\n * @param {string} name the name of the sender\r\n */\r\nfunction appendICLog(toadd, name = \"\", time = new Date()) {\r\n\tconst entry = document.createElement(\"p\");\r\n\tconst nameField = document.createElement(\"span\");\r\n\tnameField.id = \"iclog_name\";\r\n\tnameField.appendChild(document.createTextNode(name));\r\n\tentry.appendChild(nameField);\r\n\tentry.appendChild(document.createTextNode(toadd));\r\n\r\n\t// Only put a timestamp if the minute has changed.\r\n\tif (lastICMessageTime.getMinutes() !== time.getMinutes()) {\r\n\t\tconst timeStamp = document.createElement(\"span\");\r\n\t\ttimeStamp.id = \"iclog_time\";\r\n\t\ttimeStamp.innerText = time.toLocaleTimeString(undefined, {\r\n\t\t\thour: \"numeric\",\r\n\t\t\tminute: \"2-digit\"\r\n\t\t});\r\n\t\tentry.appendChild(timeStamp);\r\n\t}\r\n\r\n\tconst clientLog = document.getElementById(\"client_log\");\r\n\tclientLog.appendChild(entry);\r\n\r\n\tif (clientLog.scrollTop > clientLog.scrollHeight - 800) {\r\n\t\tclientLog.scrollTop = clientLog.scrollHeight;\r\n\t}\r\n\r\n\tlastICMessageTime = new Date();\r\n}\r\n\r\n/**\r\n * Requests to play as a character.\r\n * @param {number} ccharacter the character ID; if this is a large number, then spectator is chosen instead.\r\n */\r\nexport function pickChar(ccharacter) {\r\n\tif (ccharacter < 1000) {\r\n\t\tclient.sendCharacter(ccharacter);\r\n\t} else {\r\n\t\t// Spectator\r\n\t\tdocument.getElementById(\"client_charselect\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_inputbox\").style.display = \"none\";\r\n\t\tdocument.getElementById(\"client_emo\").style.display = \"none\";\r\n\t}\r\n}\r\nwindow.pickChar = pickChar;\r\n\r\n/**\r\n * Highlights and selects an emotion for in-character chat.\r\n * @param {string} emo the new emotion to be selected\r\n */\r\nexport function pickEmotion(emo) {\r\n\tif (client.selectedEmote != -1) {\r\n\t\tdocument.getElementById(\"emo_\" + client.selectedEmote).src = client.myEmote().button_off;\r\n\t}\r\n\tclient.selectedEmote = emo;\r\n\tdocument.getElementById(\"emo_\" + emo).src = client.myEmote().button_on;\r\n}\r\nwindow.pickEmotion = pickEmotion;\r\n\r\n/**\r\n * Highlights and selects an evidence for in-character chat.\r\n * @param {string} evidence the evidence to be presented\r\n */\r\nexport function pickEvidence(evidence) {\r\n\tif (client.selectedEvidence !== evidence) {\r\n\t\t//Update selected evidence\t\t\r\n\t\tif (client.selectedEvidence > 0) {\r\n\t\t\tdocument.getElementById(\"evi_\" + client.selectedEvidence).className = \"client_button\";\r\n\t\t}\r\n\t\tdocument.getElementById(\"evi_\" + evidence).className = \"client_button dark\";\r\n\t\tclient.selectedEvidence = evidence;\r\n\r\n\t\t// Show evidence on information window\r\n\t\tdocument.getElementById(\"evi_name\").value = client.evidences[evidence - 1].name;\r\n\t\tdocument.getElementById(\"evi_desc\").value = client.evidences[evidence - 1].desc;\r\n\r\n\t\t//Update Icon\r\n\t\tlet icon_id = getIndexFromSelect(\"evi_select\", client.evidences[evidence - 1].filename);\r\n\t\tdocument.getElementById(\"evi_select\").selectedIndex = icon_id;\r\n\t\tif (icon_id == 0) {\r\n\t\t\tdocument.getElementById(\"evi_filename\").value = client.evidences[evidence - 1].filename;\r\n\t\t}\r\n\t\tupdateEvidenceIcon();\r\n\r\n\t\t// Update button\r\n\t\tdocument.getElementById(\"evi_add\").className = \"client_button hover_button inactive\";\r\n\t\tdocument.getElementById(\"evi_edit\").className = \"client_button hover_button\";\r\n\t\tdocument.getElementById(\"evi_cancel\").className = \"client_button hover_button\";\r\n\t\tdocument.getElementById(\"evi_del\").className = \"client_button hover_button\";\r\n\t} else {\r\n\t\tcancelEvidence();\r\n\t}\r\n}\r\nwindow.pickEvidence = pickEvidence;\r\n\r\n/**\r\n * Add evidence.\r\n */\r\nexport function addEvidence() {\r\n\tlet evidence_select = document.getElementById(\"evi_select\");\r\n\tclient.sendPE(document.getElementById(\"evi_name\").value,\r\n\t\tdocument.getElementById(\"evi_desc\").value,\r\n\t\tevidence_select.selectedIndex == 0 ?\r\n\t\t\tdocument.getElementById(\"evi_filename\").value :\r\n\t\t\tevidence_select.options[evidence_select.selectedIndex].text\r\n\t);\r\n\tcancelEvidence();\r\n}\r\nwindow.addEvidence = addEvidence;\r\n\r\n/**\r\n * Edit selected evidence.\r\n */\r\nexport function editEvidence() {\r\n\tlet evidence_select = document.getElementById(\"evi_select\");\r\n\tlet id = parseInt(client.selectedEvidence) - 1;\r\n\tclient.sendEE(id,\r\n\t\tdocument.getElementById(\"evi_name\").value,\r\n\t\tdocument.getElementById(\"evi_desc\").value,\r\n\t\tevidence_select.selectedIndex == 0 ?\r\n\t\t\tdocument.getElementById(\"evi_filename\").value :\r\n\t\t\tevidence_select.options[evidence_select.selectedIndex].text\r\n\t);\r\n\tcancelEvidence();\r\n}\r\nwindow.editEvidence = editEvidence;\r\n\r\n/**\r\n * Delete selected evidence.\r\n */\r\nexport function deleteEvidence() {\r\n\tlet id = parseInt(client.selectedEvidence) - 1;\r\n\tclient.sendDE(id);\r\n\tcancelEvidence();\r\n}\r\nwindow.deleteEvidence = deleteEvidence;\r\n\r\n/**\r\n * Cancel evidence selection.\r\n */\r\nexport function cancelEvidence() {\r\n\t//Clear evidence data\r\n\tif (client.selectedEvidence > 0) {\r\n\t\tdocument.getElementById(\"evi_\" + client.selectedEvidence).className = \"client_button\";\r\n\t}\r\n\tclient.selectedEvidence = 0;\r\n\r\n\t// Clear evidence on information window\r\n\tdocument.getElementById(\"evi_select\").selectedIndex = 0;\r\n\tupdateEvidenceIcon(); // Update icon widget\r\n\tdocument.getElementById(\"evi_filename\").value = \"\";\r\n\tdocument.getElementById(\"evi_name\").value = \"\";\r\n\tdocument.getElementById(\"evi_desc\").value = \"\";\r\n\tdocument.getElementById(\"evi_icon\").style.backgroundImage = \"url('misc/empty.png')\"; //Clear icon\r\n\r\n\t// Update button\r\n\tdocument.getElementById(\"evi_add\").className = \"client_button hover_button\";\r\n\tdocument.getElementById(\"evi_edit\").className = \"client_button hover_button inactive\";\r\n\tdocument.getElementById(\"evi_cancel\").className = \"client_button hover_button inactive\";\r\n\tdocument.getElementById(\"evi_del\").className = \"client_button hover_button inactive\";\r\n}\r\nwindow.cancelEvidence = cancelEvidence;\r\n\r\n/**\r\n * Find index of anything in select box.\r\n * @param {string} select_box the select element name\r\n * @param {string} value the value that need to be compared\r\n */\r\nexport function getIndexFromSelect(select_box, value) {\r\n\t//Find if icon alraedy existed in select box\r\n\tconst select_element = document.getElementById(select_box);\r\n\tfor (let i = 1; i < select_element.length; ++i) {\r\n\t\tif (select_element.options[i].value == value) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t}\r\n\treturn 0;\r\n}\r\nwindow.getIndexFromSelect = getIndexFromSelect;\r\n\r\n/**\r\n * Update evidence icon.\r\n */\r\nexport function updateEvidenceIcon() {\r\n\tlet evidence_select = document.getElementById(\"evi_select\");\r\n\tlet evidence_filename = document.getElementById(\"evi_filename\");\r\n\tlet evidence_iconbox = document.getElementById(\"evi_icon\");\r\n\r\n\tif (evidence_select.selectedIndex === 0) {\r\n\t\tevidence_filename.style.display = \"initial\";\r\n\t\tevidence_iconbox.style.backgroundImage = `url(${AO_HOST}evidence/${evidence_filename.value.toLowerCase()})`;\r\n\t} else {\r\n\t\tevidence_filename.style.display = \"none\";\r\n\t\tevidence_iconbox.style.backgroundImage = `url(${AO_HOST}evidence/${evidence_select.value.toLowerCase()})`;\r\n\t}\r\n}\r\nwindow.updateEvidenceIcon = updateEvidenceIcon;\r\n\r\n/**\r\n * Update evidence icon.\r\n */\r\nexport function updateActionCommands(side) {\r\n\tif (side == \"jud\") {\r\n\t\tdocument.getElementById(\"judge_action\").style.display = \"inline-table\";\r\n\t\tdocument.getElementById(\"no_action\").style.display = \"none\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"no_action\").style.display = \"inline-table\";\r\n\t\tdocument.getElementById(\"judge_action\").style.display = \"none\";\r\n\t}\r\n\t//Update role selector\r\n\tfor (let i = 0, role_select = document.getElementById(\"role_select\").options; i < role_select.length; i++) {\r\n\t\tif (side == role_select[i].value) {\r\n\t\t\trole_select.selectedIndex = i;\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}\r\nwindow.updateActionCommands = updateActionCommands;\r\n\r\n/**\r\n * Change background via OOC.\r\n */\r\nexport function changeBackgroundOOC() {\r\n\tlet filename = \"\",\r\n\t\tbackground_select = document.getElementById(\"bg_select\"),\r\n\t\tbg_command = document.getElementById(\"bg_command\").value;\r\n\tif (background_select.selectedIndex == 0) {\r\n\t\tfilename = document.getElementById(\"bg_filename\").value;\r\n\t} else {\r\n\t\tfilename = background_select.value;\r\n\t}\r\n\tclient.sendOOC(\"/\" + bg_command.replace(\"$1\", filename));\r\n}\r\nwindow.changeBackgroundOOC = changeBackgroundOOC;\r\n\r\n/**\r\n * Change role via OOC.\r\n */\r\nexport function changeRoleOOC() {\r\n\tlet role_select = document.getElementById(\"role_select\"),\r\n\t\trole_command = document.getElementById(\"role_command\").value;\r\n\r\n\tclient.sendOOC(\"/\" + role_command.replace(\"$1\", role_select.value));\r\n\tupdateActionCommands(role_select.value);\r\n}\r\nwindow.changeRoleOOC = changeRoleOOC;\r\n\r\n/**\r\n * Random character via OOC.\r\n */\r\nexport function randomCharacterOOC() {\r\n\tclient.sendOOC(\"/\" + document.getElementById(\"randomchar_command\").value);\r\n}\r\nwindow.randomCharacterOOC = randomCharacterOOC;\r\n\r\n/**\r\n * Call mod.\r\n */\r\nexport function callMod() {\r\n\t$(\"#callmod_dialog\").dialog(\"open\");\r\n}\r\nwindow.callMod = callMod;\r\n\r\n/**\r\n * Declare witness testimony.\r\n */\r\nexport function initWT() {\r\n\tclient.sendRT(\"testimony1\");\r\n}\r\nwindow.initWT = initWT;\r\n\r\n/**\r\n * Declare cross examination.\r\n */\r\nexport function initCE() {\r\n\tclient.sendRT(\"testimony2\");\r\n}\r\nwindow.initCE = initCE;\r\n\r\n/**\r\n * Increment defense health point.\r\n */\r\nexport function addHPD() {\r\n\tclient.sendHP(1, String(parseInt(client.hp[0]) + 1));\r\n}\r\nwindow.addHPD = addHPD;\r\n\r\n/**\r\n * Decrement defense health point.\r\n */\r\nexport function redHPD() {\r\n\tclient.sendHP(1, String(parseInt(client.hp[0]) - 1));\r\n}\r\nwindow.redHPD = redHPD;\r\n\r\n/**\r\n * Increment prosecution health point.\r\n */\r\nexport function addHPP() {\r\n\tclient.sendHP(2, String(parseInt(client.hp[1]) + 1));\r\n}\r\nwindow.addHPP = addHPP;\r\n\r\n/**\r\n * Decrement prosecution health point.\r\n */\r\nexport function redHPP() {\r\n\tclient.sendHP(2, String(parseInt(client.hp[1]) - 1));\r\n}\r\nwindow.redHPP = redHPP;\r\n\r\n/**\r\n * Update background preview.\r\n */\r\nexport function updateBackgroundPreview() {\r\n\tlet background_select = document.getElementById(\"bg_select\");\r\n\tlet background_filename = document.getElementById(\"bg_filename\");\r\n\tlet background_preview = document.getElementById(\"bg_preview\");\r\n\r\n\tif (background_select.selectedIndex == 0) {\r\n\t\tbackground_filename.style.display = \"initial\";\r\n\t\tbackground_preview.src = AO_HOST + \"background/\" + background_filename.value.toLowerCase() + \"/defenseempty.png\";\r\n\t} else {\r\n\t\tbackground_filename.style.display = \"none\";\r\n\t\tbackground_preview.src = AO_HOST + \"background/\" + background_select.value.toLowerCase() + \"/defenseempty.png\";\r\n\t}\r\n}\r\nwindow.updateBackgroundPreview = updateBackgroundPreview;\r\n\r\n/**\r\n * Highlights and selects an effect for in-character chat.\r\n * If the same effect button is selected, then the effect is canceled.\r\n * @param {string} effect the new effect to be selected\r\n */\r\nexport function toggleEffect(effect) {\r\n\tif (effect == selectedEffect) {\r\n\t\tdocument.getElementById(\"button_effect_\" + effect).className = \"client_button\";\r\n\t\tselectedEffect = 0;\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_effect_\" + effect).className = \"client_button dark\";\r\n\t\tif (selectedEffect) {\r\n\t\t\tdocument.getElementById(\"button_effect_\" + selectedEffect).className = \"client_button\";\r\n\t\t}\r\n\t\tselectedEffect = effect;\r\n\t}\r\n}\r\nwindow.toggleEffect = toggleEffect;\r\n\r\n/**\r\n * Toggle flip for in-character chat.\r\n */\r\nexport function toggleFlip() {\r\n\tif (client.flip) {\r\n\t\tdocument.getElementById(\"button_flip\").className = \"client_button\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_flip\").className = \"client_button dark\";\r\n\t}\r\n\tclient.flip = !client.flip;\r\n}\r\nwindow.toggleFlip = toggleFlip;\r\n\r\n/**\r\n * Toggle presentable for presenting evidence in-character chat.\r\n */\r\nexport function togglePresent() {\r\n\tif (client.presentable) {\r\n\t\tdocument.getElementById(\"button_present\").className = \"client_button\";\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_present\").className = \"client_button dark\";\r\n\t}\r\n\tclient.presentable = !client.presentable;\r\n}\r\nwindow.togglePresent = togglePresent;\r\n\r\n/**\r\n * Highlights and selects a menu.\r\n * @param {string} menu the menu to be selected\r\n */\r\nexport function toggleMenu(menu) {\r\n\tif (menu != selectedMenu) {\r\n\t\tdocument.getElementById(\"menu_\" + menu).className = \"menu_icon active\";\r\n\t\tdocument.getElementById(\"content_\" + menu).className = \"menu_content active\";\r\n\t\tdocument.getElementById(\"menu_\" + selectedMenu).className = \"menu_icon\";\r\n\t\tdocument.getElementById(\"content_\" + selectedMenu).className = \"menu_content\";\r\n\t\tselectedMenu = menu;\r\n\t}\r\n}\r\nwindow.toggleMenu = toggleMenu;\r\n\r\n/**\r\n * Highlights and selects a shout for in-character chat.\r\n * If the same shout button is selected, then the shout is canceled.\r\n * @param {string} shout the new shout to be selected\r\n */\r\nexport function toggleShout(shout) {\r\n\tif (shout == selectedShout) {\r\n\t\tdocument.getElementById(\"button_\" + shout).className = \"client_button\";\r\n\t\tselectedShout = 0;\r\n\t} else {\r\n\t\tdocument.getElementById(\"button_\" + shout).className = \"client_button dark\";\r\n\t\tif (selectedShout) {\r\n\t\t\tdocument.getElementById(\"button_\" + selectedShout).className = \"client_button\";\r\n\t\t}\r\n\t\tselectedShout = shout;\r\n\t}\r\n}\r\nwindow.toggleShout = toggleShout;\r\n\r\n/**\r\n * Escapes a string to be HTML-safe.\r\n * \r\n * XXX: This is unnecessary if we use `createTextNode` instead!\r\n * @param {string} unsafe an unsanitized string\r\n */\r\nfunction escapeHtml(unsafe) {\r\n\treturn unsafe\r\n\t\t.replace(/&/g, \"&\")\r\n\t\t.replace(/</g, \"<\")\r\n\t\t.replace(/>/g, \">\")\r\n\t\t.replace(/\"/g, \""\")\r\n\t\t.replace(/'/g, \"'\");\r\n}\r\n\r\n/**\r\n * Escapes a string to AO1 escape codes.\r\n * @param {string} estring the string to be escaped\r\n */\r\nfunction escapeChat(estring) {\r\n\treturn estring\r\n\t\t.replace(/#/g, \"<pound>\")\r\n\t\t.replace(/&/g, \"<and>\")\r\n\t\t.replace(/%/g, \"<percent>\")\r\n\t\t.replace(/\\$/g, \"<dollar>\");\r\n}\r\n\r\n/**\r\n * Unescapes a string to AO1 escape codes.\r\n * @param {string} estring the string to be unescaped\r\n */\r\nfunction unescapeChat(estring) {\r\n\treturn estring\r\n\t\t.replace(/<pound>/g, \"#\")\r\n\t\t.replace(/<and>/g, \"&\")\r\n\t\t.replace(/<percent>/g, \"%\")\r\n\t\t.replace(/<dollar>/g, \"$\");\r\n}\r\n\r\n/**\r\n * Encode text on client side.\r\n * @param {string} estring the string to be encoded\r\n */\r\nfunction encodeChat(estring) {\r\n\tlet selectedEncoding = document.getElementById(\"client_encoding\").value;\r\n\tif (selectedEncoding == \"unicode\") {\r\n\t\t// This approach works by escaping all special characters to Unicode escape sequences.\r\n\t\t// Source: https://gist.github.com/mathiasbynens/1243213\r\n\t\treturn estring.replace(/[^\\0-~]/g, function (ch) {\r\n\t\t\treturn \"\\\\u\" + (\"000\" + ch.charCodeAt().toString(16)).slice(-4);\r\n\t\t});\r\n\t} else if (selectedEncoding == \"utf16\") {\r\n\t\t// Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\r\n\t\tconst buffer = new ArrayBuffer(estring.length * 2);\r\n\t\tconst result = new Uint16Array(buffer);\r\n\t\tfor (let i = 0, strLen = estring.length; i < strLen; i++) {\r\n\t\t\tresult[i] = estring.charCodeAt(i);\r\n\t\t}\r\n\t\treturn String(result);\r\n\t} else {\r\n\t\treturn estring;\r\n\t}\r\n}\r\nfunction hash6ode() {\r\n\treturn uid;\r\n}\r\n\r\n/**\r\n * Decodes text on client side.\r\n * @param {string} estring the string to be decoded\r\n */\r\nfunction decodeChat(estring) {\r\n\tlet selectedDecoding = document.getElementById(\"client_decoding\").value;\r\n\tif (selectedDecoding == \"unicode\") {\r\n\t\t// Source: https://stackoverflow.com/questions/7885096/how-do-i-decode-a-string-with-escaped-unicode\r\n\t\treturn estring.replace(/\\\\u([\\d\\w]{1,})/gi, function (match, group) {\r\n\t\t\treturn String.fromCharCode(parseInt(group, 16));\r\n\t\t});\r\n\t} else if (selectedDecoding == \"utf16\") {\r\n\t\t// Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\r\n\t\treturn String.fromCharCode.apply(null, new Uint16Array(estring.split(\",\")));\r\n\t} else {\r\n\t\treturn estring;\r\n\t}\r\n}\r\n\r\n/**\r\n * Decoding text on client side.\r\n * @param {string} estring the string to be decoded\r\n */\r\nfunction decodeBBCode(estring) {\r\n\treturn estring\r\n\t\t.replace(/\\\\n/g, \"<br>\") // Newline \\n\r\n\t\t.replace(/\\[(\\/?)b\\]/g, \"<$1b>\") // Bold [b][/b]\r\n\t\t.replace(/\\[(\\/?)i\\]/g, \"<$1i>\") // Italic [i][/i]\r\n\t\t.replace(/\\[(\\/?)s\\]/g, \"<$1del>\") // Strikethrough [s][/s]\r\n\t\t.replace(/\\[(\\/?)u\\]/g, \"<$1u>\") // Underline [u][/u]\r\n\t\t.replace(/\\[(\\/?)sub\\]/g, \"<$1sub>\") // Subscript [sub][/sub]\r\n\t\t.replace(/\\[(\\/?)sup\\]/g, \"<$1sup>\") // Superscript [sup][/sup]\r\n\t\t.replace(/\\[m=([#a-zA-Z0-9]+)\\]/g, \"<m a=\\\"$1\\\">\") // Markup [m=#0ff]\r\n\t\t.replace(/\\[(\\/?)m\\]/g, \"<$1m>\") // [m][/m]\r\n\t\t.replace(/\\[c=?([#a-zA-Z0-9]+)\\]/g, \"<c a=\\\"$1\\\">\") // Color [c=red]\r\n\t\t.replace(/\\[\\/c\\]/g, \"</c>\"); // [/c]\r\n}\r\n\r\n\r\n// TODO: Possibly safe to remove, since we are using a transpiler.\r\nif (typeof (String.prototype.trim) === \"undefined\") {\r\n\tString.prototype.trim = function () {\r\n\t\treturn String(this).replace(/^\\s+|\\s+$/g, \"\");\r\n\t};\r\n}\r\n\r\n// Used for HDID calculation.\r\nfunction hashCode() {\r\n\tlet hash = 0;\r\n\tlet hashString = navigator.userAgent;\r\n\tif (hashString.length === 0) return hash;\r\n\tfor (let i = 0; i < hashString.length; i++) {\r\n\t\tconst chr = hashString.charCodeAt(i);\r\n\t\thash = ((hash << 5) - hash) + chr;\r\n\t\thash |= 0; // Convert to 32bit integer\r\n\t}\r\n\treturn hash;\r\n};\r\n\r\n\r\n//\r\n// Client code\r\n//\r\n\r\nlet client = new Client(serverIP);\r\nlet viewport = new Viewport();\r\n\r\n$(document).ready(function () {\r\n\tclient.initialObservBBCode();\r\n\tclient.loadResources();\r\n});\r\n\r\n// Create dialog and link to button\t\r\n$(function () {\r\n\t$(\"#callmod_dialog\").dialog({\r\n\t\tautoOpen: false,\r\n\t\tresizable: false,\r\n\t\tshow: {\r\n\t\t\teffect: \"drop\",\r\n\t\t\tdirection: \"down\",\r\n\t\t\tduration: 500\r\n\t\t},\r\n\t\thide: {\r\n\t\t\teffect: \"drop\",\r\n\t\t\tdirection: \"down\",\r\n\t\t\tduration: 500\r\n\t\t},\r\n\t\theight: \"auto\",\r\n\t\twidth: 400,\r\n\t\tmodal: true,\r\n\t\tbuttons: {\r\n\t\t\tSure: function () {\r\n\t\t\t\tlet reason = prompt(\"Please enter the reason\", \"\");\r\n\t\t\t\tclient.sendZZ(reason);\r\n\t\t\t\t$(this).dialog(\"close\");\r\n\t\t\t},\r\n\t\t\tCancel: function () {\r\n\t\t\t\t$(this).dialog(\"close\");\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n});\r\n"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/ui.b.js b/dist/ui.b.js deleted file mode 100644 index 2881736..0000000 --- a/dist/ui.b.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){(function(e){var n,i,o,s;function r(e){var t="function"==typeof Map?new Map:void 0;return(r=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return a(e,arguments,u(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),m(i,e)})(e)}function a(e,t,n){return(a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var o=new(Function.bind.apply(e,i));return n&&m(o,n.prototype),o}).apply(null,arguments)}function l(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function c(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function h(e,t){return!t||"object"!==g(t)&&"function"!=typeof t?d(e):t}function u(e){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&m(e,t)}function m(e,t){return(m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}"undefined"==typeof self||self,s=function(){var e=Math.min,t=Math.floor,n=Math.max;return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=35)}([function(e,t,n){"use strict";t.e=function(e){return $.zepto?e.touches?e.targetTouches[0]:e:e.originalEvent&&e.originalEvent.touches?e.originalEvent.touches[0]:e},t.j=function(e){var t,n;if("function"==typeof o.a)return o()(e);for(n in t=[],e)t.push(n);return t},t.d=function(e){if(window.location.hash)return function(e){var t=location.hash.match(new RegExp(e+"=([^&]*)"));return t?t[1]:null}(e);if(!window.location.search)return null;var t,n,i=window.location.search.substr(1).split("&"),o={};for(n=0;n<i.length;n++)o[(t=i[n].split("="))[0]]=t[1];return o[e]||null},t.b=function(e,t){for(var n in t)e[n]=t[n];return e},t.a=function(e){return(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)})(function(){e()})},t.g=function(e,t){if(!(t instanceof Array))throw new Error("Haystack is not an Array");if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(t[n]===e)return n;return-1},n.d(t,"h",function(){return r}),t.c=function(e,t,n){if(void 0!==Function.prototype.bind)return Function.prototype.bind.apply(e,[t].concat(n||[]));var i=function i(){var o=(n||[]).concat(Array.prototype.slice.call(arguments,0));return this instanceof i?void e.apply(this,o):e.apply(t,o)};return i.prototype=e.prototype,i},t.i=function(){return"function"==typeof Date.now?Date.now():(new Date).getTime()},t.f=function(){return(1e15*Math.random()).toString(36).replace(".","")},t.k=function(e){return $.trim(e.replace(/(<([^>]+)>)/gi,""))};var i=n(40),o=n.n(i),s=n(60),r=(n.n(s),"object"!=("undefined"==typeof Int8Array?"undefined":g(Int8Array))?function(e){return"function"==typeof e||!1}:function(e){return"[object Function]"===toString.call(e)})},function(e,t,n){"use strict";var i=n(0),o="__all";t.a=o,t.b=function(){return function e(){p(this,e),this._mSubscriptions={},this._mSubscriptions[o]=[],this.on=function(e,t,n){if(!Object(i.h)(t))throw new Error("Tried to listen to event "+e+" with non-function callback "+t);this._mSubscriptions[e]||(this._mSubscriptions[e]=[]),this._mSubscriptions[e].push({fn:t,ctx:n})},this.emit=function(e){var t,n,i;i=Array.prototype.slice.call(arguments,1);var s=this._mSubscriptions[e];if(s)for(s=s.slice(),t=0;t<s.length;t++)n=s[t].ctx||{},s[t].fn.apply(n,i);i.unshift(e);var r=this._mSubscriptions[o].slice();for(t=0;t<r.length;t++)n=r[t].ctx||{},r[t].fn.apply(n,i)},this.unbind=function(e,t,n){if(!this._mSubscriptions[e])throw new Error("No subscribtions to unsubscribe for event "+e);var i,o=!1;for(i=0;i<this._mSubscriptions[e].length;i++)t&&this._mSubscriptions[e][i].fn!==t||n&&n!==this._mSubscriptions[e][i].ctx||(this._mSubscriptions[e].splice(i,1),o=!0);if(0==o)throw new Error("Nothing to unbind for "+e)},this.off=this.unbind,this.trigger=this.emit}}()},function(e){var t=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=t)},function(e,t,n){"use strict";var i=n(1),o=n(26),s=n(12),r=n(27),a=n(66),l=n(0),m=function(e){function t(e,n,o){var s;return p(this,t),(s=h(this,u(t).call(this))).config=s._extendItemNode(n),s.type=n.type,s.contentItems=[],s.parent=o,s.isInitialised=!1,s.isMaximised=!1,s.isRoot=!1,s.isRow=!1,s.isColumn=!1,s.isStack=!1,s.isComponent=!1,s.layoutManager=e,s._pendingEventPropagations={},s._throttledEvents=["stateChanged"],s.on(i.a,s._propagateEvent,d(s)),n.content&&s._createContentItems(n),s}return f(t,i.b),c(t,[{key:"setSize",value:function(){throw new Error("Abstract Method")}},{key:"callDownwards",value:function(e,t,n,i){var o;for(!0!==n&&!0!==i&&this[e].apply(this,t||[]),o=0;o<this.contentItems.length;o++)this.contentItems[o].callDownwards(e,t,n);!0===n&&!0!==i&&this[e].apply(this,t||[])}},{key:"removeChild",value:function(e,t){var n=Object(l.g)(e,this.contentItems);if(-1===n)throw new Error("Can't remove child item. Unknown content item");!0!==t&&this.contentItems[n]._$destroy(),this.contentItems.splice(n,1),this.config.content.splice(n,1),0<this.contentItems.length?this.callDownwards("setSize"):!(this instanceof s.a)&&!0===this.config.isClosable&&this.parent.removeChild(this)}},{key:"undisplayChild",value:function(e){if(-1===Object(l.g)(e,this.contentItems))throw new Error("Can't remove child item. Unknown content item");this instanceof s.a||!0!==this.config.isClosable||this.parent.undisplayChild(this)}},{key:"addChild",value:function(e,t){void 0===t&&(t=this.contentItems.length),this.contentItems.splice(t,0,e),void 0===this.config.content&&(this.config.content=[]),this.config.content.splice(t,0,e.config),e.parent=this,!0===e.parent.isInitialised&&!1===e.isInitialised&&e._$init()}},{key:"replaceChild",value:function(e,t,n){t=this.layoutManager._$normalizeContentItem(t);var i=Object(l.g)(e,this.contentItems),o=e.element[0].parentNode;if(-1===i)throw new Error("Can't replace child. oldChild is not child of this");o.replaceChild(t.element[0],e.element[0]),!0===n&&(e.parent=null,e._$destroy()),this.contentItems[i]=t,t.parent=this,this.isStack&&(this.header.tabs[i].contentItem=t),!0===t.parent.isInitialised&&!1===t.isInitialised&&t._$init(),this.callDownwards("setSize")}},{key:"remove",value:function(){this.parent.removeChild(this)}},{key:"popout",value:function(){var e=this.layoutManager.createPopout(this);return this.emitBubblingEvent("stateChanged"),e}},{key:"toggleMaximise",value:function(e){e&&e.preventDefault(),!0===this.isMaximised?this.layoutManager._$minimiseItem(this):this.layoutManager._$maximiseItem(this),this.isMaximised=!this.isMaximised,this.emitBubblingEvent("stateChanged")}},{key:"select",value:function(){this.layoutManager.selectedItem!==this&&(this.layoutManager.selectItem(this,!0),this.element.addClass("lm_selected"))}},{key:"deselect",value:function(){this.layoutManager.selectedItem===this&&(this.layoutManager.selectedItem=null,this.element.removeClass("lm_selected"))}},{key:"setTitle",value:function(e){this.config.title=e,this.emit("titleChanged",e),this.emit("stateChanged")}},{key:"hasId",value:function(e){return!!this.config.id&&("string"==typeof this.config.id?this.config.id===e:this.config.id instanceof Array?-1!==Object(l.g)(e,this.config.id):void 0)}},{key:"addId",value:function(e){this.hasId(e)||(this.config.id?"string"==typeof this.config.id?this.config.id=[this.config.id,e]:this.config.id instanceof Array&&this.config.id.push(e):this.config.id=e)}},{key:"removeId",value:function(e){if(!this.hasId(e))throw new Error("Id not found");if("string"==typeof this.config.id)delete this.config.id;else if(this.config.id instanceof Array){var t=Object(l.g)(e,this.config.id);this.config.id.splice(t,1)}}},{key:"getItemsByFilter",value:function(e){var t=[];return function n(i){for(var o=0;o<i.contentItems.length;o++)!0===e(i.contentItems[o])&&t.push(i.contentItems[o]),n(i.contentItems[o])}(this),t}},{key:"getItemsById",value:function(e){return this.getItemsByFilter(function(t){return t.config.id instanceof Array?-1!==Object(l.g)(e,t.config.id):t.config.id===e})}},{key:"getItemsByType",value:function(e){return this._$getItemsByProperty("type",e)}},{key:"getComponentsByName",value:function(e){var t,n=this._$getItemsByProperty("componentName",e),i=[];for(t=0;t<n.length;t++)i.push(n[t].instance);return i}},{key:"_$getItemsByProperty",value:function(e,t){return this.getItemsByFilter(function(n){return n[e]===t})}},{key:"_$setParent",value:function(e){this.parent=e}},{key:"_$highlightDropZone",value:function(e,t,n){this.layoutManager.dropTargetIndicator.highlightArea(n)}},{key:"_$onDrop",value:function(e){this.addChild(e)}},{key:"_$hide",value:function(){this._callOnActiveComponents("hide"),this.element.hide(),this.layoutManager.updateSize()}},{key:"_$show",value:function(){this._callOnActiveComponents("show"),this.element.show(),this.layoutManager.updateSize()}},{key:"_callOnActiveComponents",value:function(e){var t,n,i=this.getItemsByType("stack");for(n=0;n<i.length;n++)(t=i[n].getActiveContentItem())&&t.isComponent&&t.container[e]()}},{key:"_$destroy",value:function(){this.emitBubblingEvent("beforeItemDestroyed"),this.callDownwards("_$destroy",[],!0,!0),this.element.remove(),this.emitBubblingEvent("itemDestroyed")}},{key:"_$getArea",value:function(e){var t=(e=e||this.element).offset(),n=e.width(),i=e.height();return{x1:t.left,y1:t.top,x2:t.left+n,y2:t.top+i,surface:n*i,contentItem:this}}},{key:"_$init",value:function(){var e;for(this.setSize(),e=0;e<this.contentItems.length;e++)this.childElementContainer.append(this.contentItems[e].element);this.isInitialised=!0,this.emitBubblingEvent("itemCreated"),this.emitBubblingEvent(this.type+"Created")}},{key:"emitBubblingEvent",value:function(e){var t=new o.a(e,this);this.emit(e,t)}},{key:"_createContentItems",value:function(e){var t,n;if(!(e.content instanceof Array))throw new r.a("content must be an Array",e);for(n=0;n<e.content.length;n++)t=this.layoutManager.createContentItem(e.content[n],this),this.contentItems.push(t)}},{key:"_extendItemNode",value:function(e){for(var t in a.a)void 0===e[t]&&(e[t]=a.a[t]);return e}},{key:"_propagateEvent",value:function(e,t){t instanceof o.a&&!1===t.isPropagationStopped&&!0===this.isInitialised&&(!1===this.isRoot&&this.parent?this.parent.emit.apply(this.parent,Array.prototype.slice.call(arguments,0)):this._scheduleEventPropagationToLayoutManager(e,t))}},{key:"_scheduleEventPropagationToLayoutManager",value:function(e,t){-1===Object(l.g)(e,this._throttledEvents)?this.layoutManager.emit(e,t.origin):!0!==this._pendingEventPropagations[e]&&(this._pendingEventPropagations[e]=!0,Object(l.a)(Object(l.c)(this._propagateEventToLayoutManager,this,[e,t])))}},{key:"_propagateEventToLayoutManager",value:function(e,t){this._pendingEventPropagations[e]=!1,this.layoutManager.emit(e,t)}}]),t}();t.a=m},function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,t,n){e.exports=!n(10)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,i,o){"use strict";var s=Math.round,r=o(3),a=o(13),l=o(67),d=o(0),m=function(e){function i(e,t,n,o){var s;return p(this,i),(s=h(this,u(i).call(this,t,n,o))).isRow=!e,s.isColumn=e,s.element=$('<div class="lm_item lm_'+(e?"column":"row")+'"></div>'),s.childElementContainer=s.element,s._splitterSize=t.config.dimensions.borderWidth,s._splitterGrabSize=t.config.dimensions.borderGrabWidth,s._isColumn=e,s._dimension=e?"height":"width",s._splitter=[],s._splitterPosition=null,s._splitterMinPosition=null,s._splitterMaxPosition=null,s}return f(i,r.a),c(i,[{key:"addChild",value:function(e,t,i){var o,s,a,l;if(e=this.layoutManager._$normalizeContentItem(e,this),void 0===t&&(t=this.contentItems.length),0<this.contentItems.length?(l=this._createSplitter(n(0,t-1)).element,0<t?(this.contentItems[t-1].element.after(l),l.after(e.element),this._isDocked(t-1)&&(this._splitter[t-1].element.hide(),this._splitter[t].element.show())):(this.contentItems[0].element.before(l),l.before(e.element))):this.childElementContainer.append(e.element),r.a.prototype.addChild.call(this,e,t),o=1/this.contentItems.length*100,!0!==i){for(a=0;a<this.contentItems.length;a++)this.contentItems[a]===e?e.config[this._dimension]=o:(s=this.contentItems[a].config[this._dimension]*=(100-o)/100,this.contentItems[a].config[this._dimension]=s);this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking()}else this.emitBubblingEvent("stateChanged")}},{key:"undisplayChild",value:function(e){var t,i=e.config[this._dimension],o=Object(d.g)(e,this.contentItems),s=n(o-1,0);if(-1===o)throw new Error("Can't undisplay child. ContentItem is not child of this Row or Column");this._splitter[s]&&this._splitter[s].element.hide(),s<this._splitter.length&&this._isDocked(s)&&this._splitter[s].element.hide();var a=this._isDocked();for(t=0;t<this.contentItems.length;t++)this.contentItems[t]===e?this.contentItems[t].config[this._dimension]=0:this._isDocked(t)||(this.contentItems[t].config[this._dimension]+=i/(this.contentItems.length-1-a));1===this.contentItems.length&&r.a.prototype.undisplayChild.call(this,e),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"removeChild",value:function(e,t){var i,o,s=e.config[this._dimension],a=Object(d.g)(e,this.contentItems),l=n(a-1,0);if(-1===a)throw new Error("Can't remove child. ContentItem is not child of this Row or Column");this._splitter[l]&&(this._splitter[l]._$destroy(),this._splitter.splice(l,1)),l<this._splitter.length&&this._isDocked(l)&&this._splitter[l].element.hide();var c=this._isDocked();for(i=0;i<this.contentItems.length;i++)this.contentItems[i]!==e&&(this._isDocked(i)||(this.contentItems[i].config[this._dimension]+=s/(this.contentItems.length-1-c)));r.a.prototype.removeChild.call(this,e,t),1===this.contentItems.length&&!0===this.config.isClosable?(o=this.contentItems[0],this.contentItems=[],this.parent.replaceChild(this,o,!0),this._validateDocking(this.parent)):(this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking())}},{key:"replaceChild",value:function(e,t){var n=e.config[this._dimension];r.a.prototype.replaceChild.call(this,e,t),t.config[this._dimension]=n,this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"setSize",value:function(){0<this.contentItems.length&&(this._calculateRelativeSizes(),this._setAbsoluteSizes()),this.emitBubblingEvent("stateChanged"),this.emit("resize")}},{key:"dock",value:function(e,t,i){if(1===this.contentItems.length)throw new Error("Can't dock child when it single");var o=e.config[this._dimension],s=this.layoutManager.config.dimensions.headerHeight,r=Object(d.g)(e,this.contentItems),a=n(r-1,0);if(-1===r)throw new Error("Can't dock child. ContentItem is not child of this Row or Column");var l,c=e._docker&&e._docker.docked;if(void 0===t||t!=c){if(c){for(this._splitter[a].element.show(),l=0;l<this.contentItems.length;l++){var h=e._docker.size;this.contentItems[l]===e?e.config[this._dimension]=h:(itemSize=this.contentItems[l].config[this._dimension]*=(100-h)/100,this.contentItems[l].config[this._dimension]=itemSize)}e._docker={docked:!1}}else{if(2>this.contentItems.length-this._isDocked())throw new Error("Can't dock child when it is last in "+this.config.type);var u={column:{first:"top",last:"bottom"},row:{first:"left",last:"right"}}[this.config.type][r?"last":"first"];e.header.position()!=u&&e.header.position(u),this._splitter[a]&&this._splitter[a].element.hide();var f=this._isDocked();for(l=0;l<this.contentItems.length;l++)this.contentItems[l]===e?this.contentItems[l].config[this._dimension]=0:this._isDocked(l)||(this.contentItems[l].config[this._dimension]+=o/(this.contentItems.length-1-f));e._docker={dimension:this._dimension,size:o,realSize:e.element[this._dimension]()-s,docked:!0},i&&e.childElementContainer[this._dimension](0)}e.element.toggleClass("lm_docked",e._docker.docked),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged"),this._validateDocking()}}},{key:"_$init",value:function(){if(!0!==this.isInitialised){var e;for(r.a.prototype._$init.call(this),e=0;e<this.contentItems.length-1;e++)this.contentItems[e].element.after(this._createSplitter(e).element);for(e=0;e<this.contentItems.length;e++)this.contentItems[e]._header&&this.contentItems[e]._header.docked&&this.dock(this.contentItems[e],!0,!0)}}},{key:"_setAbsoluteSizes",value:function(){var e,t=this._calculateAbsoluteSizes();for(e=0;e<this.contentItems.length;e++)0<t.additionalPixel-e&&t.itemSizes[e]++,this._isColumn?(this.contentItems[e].element.width(t.totalWidth),this.contentItems[e].element.height(t.itemSizes[e])):(this.contentItems[e].element.width(t.itemSizes[e]),this.contentItems[e].element.height(t.totalHeight))}},{key:"_calculateAbsoluteSizes",value:function(){var e,n,i=(this.contentItems.length-1)*this._splitterSize,o=this.layoutManager.config.dimensions.headerHeight,s=this.element.width(),r=this.element.height(),a=0,l=[];for(this._isColumn?r-=i:s-=i,e=0;e<this.contentItems.length;e++)this._isDocked(e)&&(this._isColumn?r-=o-this._splitterSize:s-=o-this._splitterSize);for(e=0;e<this.contentItems.length;e++)n=this._isColumn?t(r*(this.contentItems[e].config.height/100)):t(s*(this.contentItems[e].config.width/100)),this._isDocked(e)&&(n=o),a+=n,l.push(n);return{itemSizes:l,additionalPixel:t((this._isColumn?r:s)-a),totalWidth:s,totalHeight:r}}},{key:"_calculateRelativeSizes",value:function(){var e,t=0,n=[],i=this._isColumn?"height":"width";for(e=0;e<this.contentItems.length;e++)void 0===this.contentItems[e].config[i]?n.push(this.contentItems[e]):t+=this.contentItems[e].config[i];if(100!==s(t))if(100>s(t)&&0<n.length){for(e=0;e<n.length;e++)n[e].config[i]=(100-t)/n.length;this._respectMinItemWidth()}else{if(100<s(t))for(e=0;e<n.length;e++)n[e].config[i]=50,t+=50;for(e=0;e<this.contentItems.length;e++)this.contentItems[e].config[i]=this.contentItems[e].config[i]/t*100;this._respectMinItemWidth()}else this._respectMinItemWidth()}},{key:"_respectMinItemWidth",value:function(){var e,t,n,i=this.layoutManager.config.dimensions&&this.layoutManager.config.dimensions.minItemWidth||0,o=null,r=[],a=0,l=0,c=0,h=0,u=[];if(!(this._isColumn||!i||1>=this.contentItems.length)){o=this._calculateAbsoluteSizes();for(var d=0;d<this.contentItems.length;d++)this.contentItems[d],(h=o.itemSizes[d])<i?(l+=i-h,n={width:i}):(a+=h-i,n={width:h},r.push(n)),u.push(n);if(!(0==l||l>a)){for(e=l/a,c=l,d=0;d<r.length;d++)n=r[d],c-=t=s((n.width-i)*e),n.width-=t;for(0!==c&&(u[u.length-1].width-=c),d=0;d<this.contentItems.length;d++)this.contentItems[d].config.width=u[d].width/o.totalWidth*100}}}},{key:"_createSplitter",value:function(e){var t;return(t=new l.a(this._isColumn,this._splitterSize,this._splitterGrabSize)).on("drag",Object(d.c)(this._onSplitterDrag,this,[t]),this),t.on("dragStop",Object(d.c)(this._onSplitterDragStop,this,[t]),this),t.on("dragStart",Object(d.c)(this._onSplitterDragStart,this,[t]),this),this._splitter.splice(e,0,t),t}},{key:"_getItemsForSplitter",value:function(e){var t=Object(d.g)(e,this._splitter);return{before:this.contentItems[t],after:this.contentItems[t+1]}}},{key:"_isDocked",value:function(e){if(void 0===e){for(var t=0,n=0;n<this.contentItems.length;++n)this._isDocked(n)&&t++;return t}return e<this.contentItems.length?this.contentItems[e]._docker&&this.contentItems[e]._docker.docked:void 0}},{key:"_validateDocking",value:function(e){for(var t=1<(e=e||this).contentItems.length-e._isDocked(),n=0;n<e.contentItems.length;++n)e.contentItems[n]instanceof a.a&&(e.contentItems[n].header._setDockable(e._isDocked(n)||t),e.contentItems[n].header._$setClosable(t))}},{key:"_getMinimumDimensions",value:function(e){for(var t=0,i=0,o=0;o<e.length;++o)t=n(e[o].minWidth||0,t),i=n(e[o].minHeight||0,i);return{horizontal:t,vertical:i}}},{key:"_onSplitterDragStart",value:function(e){var t=this._getItemsForSplitter(e),n=this.layoutManager.config.dimensions[this._isColumn?"minItemHeight":"minItemWidth"],i=this._getMinimumDimensions(t.before.config.content),o=this._isColumn?i.vertical:i.horizontal,s=this._getMinimumDimensions(t.after.config.content),r=this._isColumn?s.vertical:s.horizontal;this._splitterPosition=0,this._splitterMinPosition=-1*(t.before.element[this._dimension]()-(o||n)),this._splitterMaxPosition=t.after.element[this._dimension]()-(r||n)}},{key:"_onSplitterDrag",value:function(e,t,n){var i=this._isColumn?n:t;i>this._splitterMinPosition&&i<this._splitterMaxPosition&&(this._splitterPosition=i,e.element.css(this._isColumn?"top":"left",i))}},{key:"_onSplitterDragStop",value:function(e){var t=this._getItemsForSplitter(e),n=t.before.element[this._dimension](),i=t.after.element[this._dimension](),o=(this._splitterPosition+n)/(n+i),s=t.before.config[this._dimension]+t.after.config[this._dimension];t.before.config[this._dimension]=o*s,t.after.config[this._dimension]=(1-o)*s,e.element.css({top:0,left:0}),Object(d.a)(Object(d.c)(this.callDownwards,this,["setSize"]))}}]),i}();i.a=m},function(e,t,n){"use strict";var i=n(1),o=n(0),s=function(e){function t(e,n){var i;return p(this,t),(i=h(this,u(t).call(this)))._timeout=null,i._eElement=$(e),i._oDocument=$(document),i._eBody=$(document.body),i._nButtonCode=n||0,i._nDelay=200,i._nDistance=10,i._nX=0,i._nY=0,i._nOriginalX=0,i._nOriginalY=0,i._bDragging=!1,i._fMove=Object(o.c)(i.onMouseMove,d(i)),i._fUp=Object(o.c)(i.onMouseUp,d(i)),i._fDown=Object(o.c)(i.onMouseDown,d(i)),i._eElement.on("mousedown touchstart",i._fDown),i}return f(t,i.b),c(t,[{key:"destroy",value:function(){this._eElement.unbind("mousedown touchstart",this._fDown),this._oDocument.unbind("mouseup touchend",this._fUp),this._eElement=null,this._oDocument=null,this._eBody=null}},{key:"onMouseDown",value:function(e){if(e.preventDefault(),0==e.button||"touchstart"===e.type){var t=this._getCoordinates(e);this._nOriginalX=t.x,this._nOriginalY=t.y,this._oDocument.on("mousemove touchmove",this._fMove),this._oDocument.one("mouseup touchend",this._fUp),this._timeout=setTimeout(Object(o.c)(this._startDrag,this),this._nDelay)}}},{key:"onMouseMove",value:function(e){var t=Math.abs;if(null!=this._timeout){e.preventDefault();var n=this._getCoordinates(e);this._nX=n.x-this._nOriginalX,this._nY=n.y-this._nOriginalY,!1===this._bDragging&&(t(this._nX)>this._nDistance||t(this._nY)>this._nDistance)&&(clearTimeout(this._timeout),this._startDrag()),this._bDragging&&this.emit("drag",this._nX,this._nY,e)}}},{key:"onMouseUp",value:function(e){null!=this._timeout&&(clearTimeout(this._timeout),this._eBody.removeClass("lm_dragging"),this._eElement.removeClass("lm_dragging"),this._oDocument.find("iframe").css("pointer-events",""),this._oDocument.unbind("mousemove touchmove",this._fMove),this._oDocument.unbind("mouseup touchend",this._fUp),!0===this._bDragging&&(this._bDragging=!1,this.emit("dragStop",e,this._nOriginalX+this._nX)))}},{key:"_startDrag",value:function(){this._bDragging=!0,this._eBody.addClass("lm_dragging"),this._eElement.addClass("lm_dragging"),this._oDocument.find("iframe").css("pointer-events","none"),this.emit("dragStart",this._nOriginalX,this._nOriginalY)}},{key:"_getCoordinates",value:function(e){return{x:(e=Object(o.e)(e)).pageX,y:e.pageY}}}]),t}();t.a=s},function(e,t,n){var i=n(9);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e){e.exports=function(e){return"object"==g(e)?null!==e:"function"==typeof e}},function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){"use strict";var i=n(0);t.a=function(){function e(){if(p(this,e),this._keys=["settings","hasHeaders","constrainDragToContainer","selectionEnabled","dimensions","borderWidth","minItemHeight","minItemWidth","headerHeight","dragProxyWidth","dragProxyHeight","labels","close","maximise","minimise","popout","content","componentName","componentState","id","width","type","height","isClosable","title","popoutWholeStack","openPopouts","parentId","activeItemIndex","reorderEnabled","borderGrabWidth"],36<this._keys.length)throw new Error("Too many keys in config minifier map");this._values=[!0,!1,"row","column","stack","component","close","maximise","minimise","open in new window"]}return c(e,[{key:"minifyConfig",value:function(e){var t={};return this._nextLevel(e,t,"_min"),t}},{key:"unminifyConfig",value:function(e){var t={};return this._nextLevel(e,t,"_max"),t}},{key:"_nextLevel",value:function(e,t,n){var i,o;for(i in e)e instanceof Array&&(i=parseInt(i,10)),e.hasOwnProperty(i)&&(o=this[n](i,this._keys),"object"==g(e[i])?(t[o]=e[i]instanceof Array?[]:{},this._nextLevel(e[i],t[o],n)):t[o]=this[n](e[i],this._values))}},{key:"_min",value:function(e,t){if("string"==typeof e&&1===e.length)return"___"+e;var n=Object(i.g)(e,t);return-1===n?e:n.toString(36)}},{key:"_max",value:function(e,t){return"string"==typeof e&&1===e.length?t[parseInt(e,36)]:"string"==typeof e&&"___"===e.substr(0,3)?e[3]:e}}]),e}()},function(e,t,n){"use strict";var i=n(3),o=n(6),s=function(e){function t(e,n,i){var o;return p(this,t),(o=h(this,u(t).call(this,e,n,null))).isRoot=!0,o.type="root",o.element=$('<div class="lm_goldenlayout lm_item lm_root"></div>'),o.childElementContainer=o.element,o._containerElement=i,o._containerElement.append(o.element),o}return f(t,i.a),c(t,[{key:"addChild",value:function(e){if(0<this.contentItems.length)throw new Error("Root node can only have a single child");e=this.layoutManager._$normalizeContentItem(e,this),this.childElementContainer.append(e.element),i.a.prototype.addChild.call(this,e),this.callDownwards("setSize"),this.emitBubblingEvent("stateChanged")}},{key:"setSize",value:function(e,t){e=void 0===e?this._containerElement.width():e,t=void 0===t?this._containerElement.height():t,this.element.width(e),this.element.height(t),this.contentItems[0]&&(this.contentItems[0].element.width(e),this.contentItems[0].element.height(t))}},{key:"_$highlightDropZone",value:function(){this.layoutManager.tabDropPlaceholder.remove(),i.a.prototype._$highlightDropZone.apply(this,arguments)}},{key:"_$onDrop",value:function(e,t){var n;if(e.isComponent&&((n=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this))._$init(),n.addChild(e),e=n),this.contentItems.length){("row"===e.config.type||"column"===e.config.type)&&((n=this.layoutManager.createContentItem({type:"stack"},this)).addChild(e),e=n);var i="x"==t.side[0]?"row":"column",s="x"==t.side[0]?"width":"height",r="2"==t.side[1],a=this.contentItems[0];if(a instanceof o.a&&a.type==i){var l=a.contentItems[r?0:a.contentItems.length-1];a.addChild(e,r?0:void 0,!0),l.config[s]*=.5,e.config[s]=l.config[s],a.callDownwards("setSize")}else{var c=this.layoutManager.createContentItem({type:i},this);this.replaceChild(a,c),c.addChild(e,r?0:void 0,!0),c.addChild(a,r?void 0:0,!0),a.config[s]=50,e.config[s]=50,c.callDownwards("setSize")}}else this.addChild(e)}}]),t}();t.a=s},function(t,i,o){"use strict";var s=o(3),r=o(6),a=o(28),l=o(0),m=function(t){function i(e,t,n){var o;p(this,i),(o=h(this,u(i).call(this,e,t,n))).element=$('<div class="lm_item lm_stack"></div>'),o._activeContentItem=null;var s=e.config;return o._header={show:!0===s.settings.hasHeaders&&!1!==t.hasHeaders,popout:s.settings.showPopoutIcon&&s.labels.popout,maximise:s.settings.showMaximiseIcon&&s.labels.maximise,close:s.settings.showCloseIcon&&s.labels.close,minimise:s.labels.minimise},s.header&&Object(l.b)(o._header,s.header),t.header&&Object(l.b)(o._header,t.header),t.content&&t.content[0]&&t.content[0].header&&Object(l.b)(o._header,t.content[0].header),o._dropZones={},o._dropSegment=null,o._contentAreaDimensions=null,o._dropIndex=null,o.isStack=!0,o.childElementContainer=$('<div class="lm_items"></div>'),o.header=new a.a(e,d(o)),o.element.on("mouseleave mouseenter",Object(l.c)(function(e){this._docker&&this._docker.docked&&this.childElementContainer[this._docker.dimension]("mouseenter"==e.type?this._docker.realSize:0)},d(o))),o.element.append(o.header.element),o.element.append(o.childElementContainer),o._setupHeaderPosition(),o._$validateClosability(),o}return f(i,s.a),c(i,[{key:"dock",value:function(e){this._header.dock&&this.parent instanceof r.a&&this.parent.dock(this,e)}},{key:"setSize",value:function(){if("none"!==this.element.css("display")){var e=this._docker&&this._docker.docked,t={width:this.element.width(),height:this.element.height()};this._header.show&&(t[this._sided?"width":"height"]-=this.layoutManager.config.dimensions.headerHeight),e&&(t[this._docker.dimension]=this._docker.realSize),e&&"height"!=this._docker.dimension||this.childElementContainer.width(t.width),e&&"width"!=this._docker.dimension||this.childElementContainer.height(t.height);for(var n=0;n<this.contentItems.length;n++)this.contentItems[n].element.width(t.width),this.contentItems[n].element.height(t.height);this.emit("resize"),this.emitBubblingEvent("stateChanged")}}},{key:"_$init",value:function(){var e,t;if(!0!==this.isInitialised){for(s.a.prototype._$init.call(this),e=0;e<this.contentItems.length;e++)this.header.createTab(this.contentItems[e]),this.contentItems[e]._$hide();if(0<this.contentItems.length){if(!(t=this.contentItems[this.config.activeItemIndex||0]))throw new Error("Configured activeItemIndex out of bounds");this.setActiveContentItem(t)}}}},{key:"setActiveContentItem",value:function(e){if(-1===Object(l.g)(e,this.contentItems))throw new Error("contentItem is not a child of this stack");null!==this._activeContentItem&&this._activeContentItem._$hide(),this._activeContentItem=e,this.header.setActiveContentItem(e),e._$show(),this.emit("activeContentItemChanged",e),this.layoutManager.emit("activeContentItemChanged",e),this.emitBubblingEvent("stateChanged")}},{key:"getActiveContentItem",value:function(){return this.header.activeContentItem}},{key:"addChild",value:function(e,t){t>this.contentItems.length&&(t-=1),e=this.layoutManager._$normalizeContentItem(e,this),s.a.prototype.addChild.call(this,e,t),this.childElementContainer.append(e.element),this.header.createTab(e,t),this.setActiveContentItem(e),this.callDownwards("setSize"),this._$validateClosability(),this.parent instanceof r.a&&this.parent._validateDocking(),this.emitBubblingEvent("stateChanged")}},{key:"removeChild",value:function(e,t){var i=Object(l.g)(e,this.contentItems);s.a.prototype.removeChild.call(this,e,t),this.header.removeTab(e),this.header.activeContentItem===e&&(0<this.contentItems.length?this.setActiveContentItem(this.contentItems[n(i-1,0)]):this._activeContentItem=null),this._$validateClosability(),this.parent instanceof r.a&&this.parent._validateDocking(),this.emitBubblingEvent("stateChanged")}},{key:"undisplayChild",value:function(e){if(1<this.contentItems.length){var t=Object(l.g)(e,this.contentItems);e._$hide&&e._$hide(),this.setActiveContentItem(this.contentItems[0===t?t+1:t-1])}else this.header.hideTab(e),e._$hide&&e._$hide(),s.a.prototype.undisplayChild.call(this,e),this.parent instanceof r.a&&this.parent._validateDocking();this.emitBubblingEvent("stateChanged")}},{key:"_$validateClosability",value:function(){var e,t,n;for(e=this.header._isClosable(),n=0,t=this.contentItems.length;n<t&&e;n++)e=this.contentItems[n].config.isClosable;this.header._$setClosable(e)}},{key:"_$destroy",value:function(){s.a.prototype._$destroy.call(this),this.header._$destroy(),this.element.off("mouseenter mouseleave")}},{key:"_$onDrop",value:function(e){if("header"===this._dropSegment)return this._resetHeaderDropZone(),void this.addChild(e,this._dropIndex);if("body"!==this._dropSegment){var t,n,i,o="top"===this._dropSegment||"bottom"===this._dropSegment,s="left"===this._dropSegment||"right"===this._dropSegment,r="top"===this._dropSegment||"left"===this._dropSegment,a=o&&this.parent.isColumn||s&&this.parent.isRow,c=o?"column":"row",h=o?"height":"width";e.isComponent&&((n=this.layoutManager.createContentItem({type:"stack",header:e.config.header||{}},this))._$init(),n.addChild(e),e=n),("row"===e.config.type||"column"===e.config.type)&&((n=this.layoutManager.createContentItem({type:"stack"},this)).addChild(e),e=n),a?(t=Object(l.g)(this,this.parent.contentItems),this.parent.addChild(e,r?t:t+1,!0),this.config[h]*=.5,e.config[h]=this.config[h],this.parent.callDownwards("setSize")):(c=o?"column":"row",i=this.layoutManager.createContentItem({type:c},this),this.parent.replaceChild(this,i),i.addChild(e,r?0:void 0,!0),i.addChild(this,r?void 0:0,!0),this.config[h]=50,e.config[h]=50,i.callDownwards("setSize")),this.parent._validateDocking()}else this.addChild(e)}},{key:"_$highlightDropZone",value:function(e,t){var n,i;for(n in this._contentAreaDimensions)if((i=this._contentAreaDimensions[n].hoverArea).x1<e&&i.x2>e&&i.y1<t&&i.y2>t)return void("header"===n?(this._dropSegment="header",this._highlightHeaderDropZone(this._sided?t:e)):(this._resetHeaderDropZone(),this._highlightBodyDropZone(n)))}},{key:"_$getArea",value:function(){if("none"===this.element.css("display"))return null;var e=s.a.prototype._$getArea,t=e.call(this,this.header.element),n=e.call(this,this.childElementContainer),i=n.x2-n.x1,o=n.y2-n.y1;return this._contentAreaDimensions={header:{hoverArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},highlightArea:{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}}},this._activeContentItem&&!1===this._activeContentItem.isComponent?t:0===this.contentItems.length?(this._contentAreaDimensions.body={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2}},e.call(this,this.element)):(this._contentAreaDimensions.left={hoverArea:{x1:n.x1,y1:n.y1,x2:n.x1+.25*i,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x1+.5*i,y2:n.y2}},this._contentAreaDimensions.top={hoverArea:{x1:n.x1+.25*i,y1:n.y1,x2:n.x1+.75*i,y2:n.y1+.5*o},highlightArea:{x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y1+.5*o}},this._contentAreaDimensions.right={hoverArea:{x1:n.x1+.75*i,y1:n.y1,x2:n.x2,y2:n.y2},highlightArea:{x1:n.x1+.5*i,y1:n.y1,x2:n.x2,y2:n.y2}},this._contentAreaDimensions.bottom={hoverArea:{x1:n.x1+.25*i,y1:n.y1+.5*o,x2:n.x1+.75*i,y2:n.y2},highlightArea:{x1:n.x1,y1:n.y1+.5*o,x2:n.x2,y2:n.y2}},e.call(this,this.element))}},{key:"_highlightHeaderDropZone",value:function(t){var n,i,o,s,r,a,l,c,h=this.header.tabs.length,u=!1;if(0===h)return l=this.header.element.offset(),void this.layoutManager.dropTargetIndicator.highlightArea({x1:l.left,x2:l.left+100,y1:l.top+this.header.element.height()-20,y2:l.top+this.header.element.height()});for(n=0;n<h;n++)if(r=(i=this.header.tabs[n].element).offset(),this._sided?(s=r.top,o=r.left,c=i.height()):(s=r.left,o=r.top,c=i.width()),t>s&&t<s+c){u=!0;break}if(!(0==u&&t<s)){if(t<s+c/2?(this._dropIndex=n,i.before(this.layoutManager.tabDropPlaceholder)):(this._dropIndex=e(n+1,h),i.after(this.layoutManager.tabDropPlaceholder)),this._sided){var d=this.layoutManager.tabDropPlaceholder.offset().top;return void this.layoutManager.dropTargetIndicator.highlightArea({x1:o,x2:o+i.innerHeight(),y1:d,y2:d+this.layoutManager.tabDropPlaceholder.width()})}a=this.layoutManager.tabDropPlaceholder.offset().left,this.layoutManager.dropTargetIndicator.highlightArea({x1:a,x2:a+this.layoutManager.tabDropPlaceholder.width(),y1:o,y2:o+i.innerHeight()})}}},{key:"_resetHeaderDropZone",value:function(){this.layoutManager.tabDropPlaceholder.remove()}},{key:"toggleMaximise",value:function(e){this.isMaximised||this.dock(!1),s.a.prototype.toggleMaximise.call(this,e)}},{key:"_setupHeaderPosition",value:function(){var e=0<=["right","left","bottom"].indexOf(this._header.show)&&this._header.show;if(this.header.element.toggle(!!this._header.show),this._side=e,this._sided=0<=["right","left"].indexOf(this._side),this.element.removeClass("lm_left lm_right lm_bottom"),this._side&&this.element.addClass("lm_"+this._side),this.element.find(".lm_header").length&&this.childElementContainer){var t=0<=["right","bottom"].indexOf(this._side)?"before":"after";this.header.element[t](this.childElementContainer),this.callDownwards("setSize")}}},{key:"_highlightBodyDropZone",value:function(e){var t=this._contentAreaDimensions[e].highlightArea;this.layoutManager.dropTargetIndicator.highlightArea(t),this._dropSegment=e}}]),i}();i.a=m},function(e){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var i=n(44),o=n(20);e.exports=Object.keys||function(e){return i(e,o)}},function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,t,n){var i=n(45),o=n(14);e.exports=function(e){return i(o(e))}},function(e){var n=Math.ceil;e.exports=function(e){return isNaN(e=+e)?0:(0<e?t:n)(e)}},function(e,t,n){var i=n(50)("keys"),o=n(52);e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){var i=n(4),o=n(2),s=n(54),r=n(56),a=n(16),l="prototype",c=function e(t,n,c){var h,u,d,f=t&e.F,m=t&e.G,p=t&e.S,g=t&e.P,y=t&e.B,v=t&e.W,_=m?o:o[n]||(o[n]={}),b=_[l],w=m?i:p?i[n]:(i[n]||{})[l];for(h in m&&(c=n),c)(u=!f&&w&&void 0!==w[h])&&a(_,h)||(d=u?w[h]:c[h],_[h]=m&&"function"!=typeof w[h]?c[h]:y&&u?s(d,i):v&&w[h]==d?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t[l]=e[l],t}(d):g&&"function"==typeof d?s(Function.call,d):d,g&&((_.virtual||(_.virtual={}))[h]=d,t&e.R&&b&&!b[h]&&r(b,h,d)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var i=n(8),o=n(57),s=n(58),r=Object.defineProperty;t.f=n(5)?Object.defineProperty:function(e,t,n){if(i(e),t=s(t,!0),i(n),o)try{return r(e,t,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(9),o=n(4).document,s=i(o)&&i(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},function(e,t){"use strict";t.a=function(){function e(t,n){p(this,e),this._reactComponent=null,this._originalComponentWillUpdate=null,this._container=t,this._initialState=n,this._reactClass=this._getReactClass(),this._container.on("open",this._render,this),this._container.on("destroy",this._destroy,this)}return c(e,[{key:"_render",value:function(){this._reactComponent=ReactDOM.render(this._getReactComponent(),this._container.getElement()[0]),this._originalComponentWillUpdate=this._reactComponent.componentWillUpdate||function(){},this._reactComponent.componentWillUpdate=this._onUpdate.bind(this),this._container.getState()&&this._reactComponent.setState(this._container.getState())}},{key:"_destroy",value:function(){ReactDOM.unmountComponentAtNode(this._container.getElement()[0]),this._container.off("open",this._render,this),this._container.off("destroy",this._destroy,this)}},{key:"_onUpdate",value:function(e,t){this._container.setState(t),this._originalComponentWillUpdate.call(this._reactComponent,e,t)}},{key:"_getReactClass",value:function(){var e,t=this._container._config.component;if(!t)throw new Error("No react component name. type: react-component needs a field `component`");if(!(e=this._container.layoutManager.getComponent(t)))throw new Error('React component "'+t+'" not found. Please register all components with GoldenLayout using `registerComponent(name, component)`');return e}},{key:"_getReactComponent",value:function(){var e={glEventHub:this._container.layoutManager.eventHub,glContainer:this._container},t=$.extend(e,this._container._config.props);return React.createElement(this._reactClass,t)}}]),e}()},function(e,t,n){"use strict";var i=n(1),o=n(0),s=function(e){function t(e){var n;return p(this,t),(n=h(this,u(t).call(this)))._layoutManager=e,n._dontPropagateToParent=null,n._childEventSource=null,n.on(i.a,Object(o.c)(n._onEventFromThis,d(n))),n._boundOnEventFromChild=Object(o.c)(n._onEventFromChild,d(n)),$(window).on("gl_child_event",n._boundOnEventFromChild),n}return f(t,i.b),c(t,[{key:"_onEventFromThis",value:function(){var e=Array.prototype.slice.call(arguments);this._layoutManager.isSubWindow&&e[0]!==this._dontPropagateToParent&&this._propagateToParent(e),this._propagateToChildren(e),this._dontPropagateToParent=null,this._childEventSource=null}},{key:"_$onEventFromParent",value:function(e){this._dontPropagateToParent=e[0],this.emit.apply(this,e)}},{key:"_onEventFromChild",value:function(e){this._childEventSource=e.originalEvent.__gl,this.emit.apply(this,e.originalEvent.__glArgs)}},{key:"_propagateToParent",value:function(e){var t,n="gl_child_event";document.createEvent?(t=window.opener.document.createEvent("HTMLEvents")).initEvent(n,!0,!0):(t=window.opener.document.createEventObject()).eventType=n,t.eventName=n,t.__glArgs=e,t.__gl=this._layoutManager,document.createEvent?window.opener.dispatchEvent(t):window.opener.fireEvent("on"+t.eventType,t)}},{key:"_propagateToChildren",value:function(e){var t,n;for(n=0;n<this._layoutManager.openPopouts.length;n++)(t=this._layoutManager.openPopouts[n].getGlInstance())&&t!==this._childEventSource&&t.eventHub._$onEventFromParent(e)}},{key:"destroy",value:function(){$(window).off("gl_child_event",this._boundOnEventFromChild)}}]),t}();t.a=s},function(e,t){"use strict";t.a=function(){function e(t,n){p(this,e),this.name=t,this.origin=n,this.isPropagationStopped=!1}return c(e,[{key:"stopPropagation",value:function(){this.isPropagationStopped=!0}}]),e}()},function(e,t){"use strict";var n=function(e){function t(e,n){var i;return p(this,t),(i=h(this,u(t).call(this))).name="Configuration Error",i.message=e,i.node=n,i}return f(t,r(Error)),t}();t.a=n},function(e,t,n){"use strict";var i=n(1),o=n(29),s=n(31),r=n(0),a=function(e){function t(e,n){var i;return p(this,t),(i=h(this,u(t).call(this))).layoutManager=e,i.element=$('<div class="lm_header"><ul class="lm_tabs"></ul><ul class="lm_controls"></ul><ul class="lm_tabdropdown_list"></ul></div>'),!0===i.layoutManager.config.settings.selectionEnabled&&(i.element.addClass("lm_selectable"),i.element.on("click touchstart",Object(r.c)(i._onHeaderClick,d(i)))),i.tabsContainer=i.element.find(".lm_tabs"),i.tabDropdownContainer=i.element.find(".lm_tabdropdown_list"),i.tabDropdownContainer.hide(),i.controlsContainer=i.element.find(".lm_controls"),i.parent=n,i.parent.on("resize",i._updateTabSizes,d(i)),i.tabs=[],i.tabsMarkedForRemoval=[],i.activeContentItem=null,i.closeButton=null,i.dockButton=null,i.tabDropdownButton=null,i.hideAdditionalTabsDropdown=Object(r.c)(i._hideAdditionalTabsDropdown,d(i)),$(document).mouseup(i.hideAdditionalTabsDropdown),i._lastVisibleTabIndex=-1,i._tabControlOffset=i.layoutManager.config.settings.tabControlOffset,i._createControls(),i}return f(t,i.b),c(t,[{key:"createTab",value:function(e,t){var n,i;for(i=0;i<this.tabs.length;i++)if(this.tabs[i].contentItem===e)return;return n=new o.a(this,e),0===this.tabs.length?(this.tabs.push(n),void this.tabsContainer.append(n.element)):(void 0===t&&(t=this.tabs.length),0<t?this.tabs[t-1].element.after(n.element):this.tabs[0].element.before(n.element),this.tabs.splice(t,0,n),void this._updateTabSizes())}},{key:"removeTab",value:function(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t]._$destroy(),void this.tabs.splice(t,1);for(t=0;t<this.tabsMarkedForRemoval.length;t++)if(this.tabsMarkedForRemoval[t].contentItem===e)return this.tabsMarkedForRemoval[t]._$destroy(),void this.tabsMarkedForRemoval.splice(t,1);throw new Error("contentItem is not controlled by this header")}},{key:"hideTab",value:function(e){for(var t=0;t<this.tabs.length;t++)if(this.tabs[t].contentItem===e)return this.tabs[t].element.hide(),this.tabsMarkedForRemoval.push(this.tabs[t]),void this.tabs.splice(t,1);throw new Error("contentItem is not controlled by this header")}},{key:"setActiveContentItem",value:function(e){var t,n,i,o;for(t=0;t<this.tabs.length;t++)i=this.tabs[t].contentItem===e,this.tabs[t].setActive(i),!0===i&&(this.activeContentItem=e,this.parent.config.activeItemIndex=t);if(this.layoutManager.config.settings.reorderOnTabMenuClick&&-1!==this._lastVisibleTabIndex&&this.parent.config.activeItemIndex>this._lastVisibleTabIndex){for(o=this.tabs[this.parent.config.activeItemIndex],n=this.parent.config.activeItemIndex;0<n;n--)this.tabs[n]=this.tabs[n-1];this.tabs[0]=o,this.parent.config.activeItemIndex=0}this._updateTabSizes(),this.parent.emitBubblingEvent("stateChanged")}},{key:"position",value:function(e){var t=this.parent._header.show;if(this.parent._docker&&this.parent._docker.docked)throw new Error("Can't change header position in docked stack");return t&&!this.parent._side&&(t="top"),void 0!==e&&this.parent._header.show!=e&&(this.parent._header.show=e,this.parent._setupHeaderPosition()),t}},{key:"_$setClosable",value:function(e){return this._canDestroy=e||1<this.tabs.length,this.closeButton&&this._isClosable()&&(this.closeButton.element[e?"show":"hide"](),!0)}},{key:"_setDockable",value:function(e){return this.dockButton&&this.parent._header&&this.parent._header.dock&&(this.dockButton.element.toggle(!!e),!0)}},{key:"_$destroy",value:function(){this.emit("destroy",this);for(var e=0;e<this.tabs.length;e++)this.tabs[e]._$destroy();$(document).off("mouseup",this.hideAdditionalTabsDropdown),this.element.remove()}},{key:"_getHeaderSetting",value:function(e){if(e in this.parent._header)return this.parent._header[e]}},{key:"_createControls",value:function(){var e,t,n,i,o,a,l,c,h;if(h=Object(r.c)(this._showAdditionalTabsDropdown,this),c=this.layoutManager.config.labels.tabDropdown,this.tabDropdownButton=new s.a(this,c,"lm_tabdropdown",h),this.tabDropdownButton.element.hide(),this.parent._header&&this.parent._header.dock){var u=Object(r.c)(this.parent.dock,this.parent);n=this._getHeaderSetting("dock"),this.dockButton=new s.a(this,n,"lm_dock",u)}this._getHeaderSetting("popout")&&(t=Object(r.c)(this._onPopoutClick,this),n=this._getHeaderSetting("popout"),new s.a(this,n,"lm_popout",t)),this._getHeaderSetting("maximise")&&(a=Object(r.c)(this.parent.toggleMaximise,this.parent),i=this._getHeaderSetting("maximise"),o=this._getHeaderSetting("minimise"),l=new s.a(this,i,"lm_maximise",a),this.parent.on("maximised",function(){l.element.attr("title",o)}),this.parent.on("minimised",function(){l.element.attr("title",i)})),this._isClosable()&&(e=Object(r.c)(this.parent.remove,this.parent),n=this._getHeaderSetting("close"),this.closeButton=new s.a(this,n,"lm_close",e))}},{key:"_showAdditionalTabsDropdown",value:function(){this.tabDropdownContainer.show()}},{key:"_hideAdditionalTabsDropdown",value:function(){this.tabDropdownContainer.hide()}},{key:"_isClosable",value:function(){return this.parent.config.isClosable&&this.layoutManager.config.settings.showCloseIcon}},{key:"_onPopoutClick",value:function(){!0===this.layoutManager.config.settings.popoutWholeStack?this.parent.popout():this.activeContentItem.popout()}},{key:"_onHeaderClick",value:function(e){e.target===this.element[0]&&this.parent.select()}},{key:"_updateTabSizes",value:function(e){if(0!==this.tabs.length){this.tabDropdownButton.element.toggle(!0===e);var t=function(e){return e?"width":"height"};this.element.css(t(!this.parent._sided),""),this.element[t(this.parent._sided)](this.layoutManager.config.dimensions.headerHeight);var n,i,o,s,r=this.element.outerWidth()-this.controlsContainer.outerWidth()-this._tabControlOffset,a=0,l=0,c=0,h=this.layoutManager.config.settings.tabOverlapAllowance,u=!1,d=this.activeContentItem?this.tabs.indexOf(this.activeContentItem.tab):0,f=this.tabs[d];for(this.parent._sided&&(r=this.element.outerHeight()-this.controlsContainer.outerHeight()-this._tabControlOffset),this._lastVisibleTabIndex=-1,i=0;i<this.tabs.length;i++)if(n=this.tabs[i].element,this.tabsContainer.append(n),a+=n.outerWidth()+parseInt(n.css("margin-right"),10),(l=d<=i?a:a+f.element.outerWidth()+parseInt(f.element.css("margin-right"),10))>r){if(u)i===d&&(n.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(n));else if((c=0<d&&d<=i?(l-r)/(i-1):(l-r)/i)<h){for(o=0;o<=i;o++)s=o!==d&&0!==o?"-"+c+"px":"",this.tabs[o].element.css({"z-index":i-o,"margin-left":s});this._lastVisibleTabIndex=i,this.tabsContainer.append(n)}else u=!0;if(u&&i!==d){if(!e)return void this._updateTabSizes(!0);n.css({"z-index":"auto","margin-left":""}),this.tabDropdownContainer.append(n)}}else this._lastVisibleTabIndex=i,n.css({"z-index":"auto","margin-left":""}),this.tabsContainer.append(n)}}}]),t}();t.a=a},function(e,t,n){"use strict";var i=n(7),o=n(30),s=n(0);t.a=function(){function e(t,n){p(this,e),this.header=t,this.contentItem=n,this.element=$('<li class="lm_tab"><i class="lm_left"></i><span class="lm_title"></span><div class="lm_close_tab"></div><i class="lm_right"></i></li>'),this.titleElement=this.element.find(".lm_title"),this.closeElement=this.element.find(".lm_close_tab"),this.closeElement[n.config.isClosable?"show":"hide"](),this.isActive=!1,this.setTitle(n.config.title),this.contentItem.on("titleChanged",this.setTitle,this),this._layoutManager=this.contentItem.layoutManager,!0===this._layoutManager.config.settings.reorderEnabled&&!0===n.config.reorderEnabled&&(this._dragListener=new i.a(this.element),this._dragListener.on("dragStart",this._onDragStart,this),this.contentItem.on("destroy",this._dragListener.destroy,this._dragListener)),this._onTabClickFn=Object(s.c)(this._onTabClick,this),this._onCloseClickFn=Object(s.c)(this._onCloseClick,this),this.element.on("mousedown touchstart",this._onTabClickFn),this.contentItem.config.isClosable?(this.closeElement.on("click touchstart",this._onCloseClickFn),this.closeElement.on("mousedown",this._onCloseMousedown)):this.closeElement.remove(),this.contentItem.tab=this,this.contentItem.emit("tab",this),this.contentItem.layoutManager.emit("tabCreated",this),this.contentItem.isComponent&&(this.contentItem.container.tab=this,this.contentItem.container.emit("tab",this))}return c(e,[{key:"setTitle",value:function(e){this.element.attr("title",Object(s.k)(e)),this.titleElement.html(e)}},{key:"setActive",value:function(e){e===this.isActive||(this.isActive=e,e?this.element.addClass("lm_active"):this.element.removeClass("lm_active"))}},{key:"_$destroy",value:function(){this.element.off("mousedown touchstart",this._onTabClickFn),this.closeElement.off("click touchstart",this._onCloseClickFn),this._dragListener&&(this.contentItem.off("destroy",this._dragListener.destroy,this._dragListener),this._dragListener.off("dragStart",this._onDragStart),this._dragListener=null),this.element.remove()}},{key:"_onDragStart",value:function(e,t){return this.header._canDestroy?(!0===this.contentItem.parent.isMaximised&&this.contentItem.parent.toggleMaximise(),void new o.a(e,t,this._dragListener,this._layoutManager,this.contentItem,this.header.parent)):null}},{key:"_onTabClick",value:function(e){if(0===e.button||"touchstart"===e.type){var t=this.header.parent.getActiveContentItem();this.contentItem!==t&&this.header.parent.setActiveContentItem(this.contentItem)}else 1===e.button&&this.contentItem.config.isClosable&&this._onCloseClick(e)}},{key:"_onCloseClick",value:function(e){e.stopPropagation(),this.header._canDestroy&&this.header.parent.removeChild(this.contentItem)}},{key:"_onCloseMousedown",value:function(e){e.stopPropagation()}}]),e}()},function(e,t,n){"use strict";var i=n(1),o=n(0),s=function(e){function t(e,n,i,s,r,a){var l;p(this,t),(l=h(this,u(t).call(this)))._dragListener=i,l._layoutManager=s,l._contentItem=r,l._originalParent=a,l._area=null,l._lastValidArea=null,l._dragListener.on("drag",l._onDrag,d(l)),l._dragListener.on("dragStop",l._onDrop,d(l)),l.element=$('<div class="lm_dragProxy"><div class="lm_header"><ul class="lm_tabs"><li class="lm_tab lm_active"><i class="lm_left"></i><span class="lm_title"></span><i class="lm_right"></i></li></ul></div><div class="lm_content"></div></div>'),a&&a._side&&(l._sided=a._sided,l.element.addClass("lm_"+a._side),0<=["right","bottom"].indexOf(a._side)&&l.element.find(".lm_content").after(l.element.find(".lm_header"))),l.element.css({left:e,top:n}),l.element.find(".lm_tab").attr("title",Object(o.k)(l._contentItem.config.title)),l.element.find(".lm_title").html(l._contentItem.config.title),l.childElementContainer=l.element.find(".lm_content"),l.childElementContainer.append(r.element),l._undisplayTree(),l._layoutManager._$calculateItemAreas(),l._setDimensions(),$(document.body).append(l.element);var c=l._layoutManager.container.offset();return l._minX=c.left,l._minY=c.top,l._maxX=l._layoutManager.container.width()+l._minX,l._maxY=l._layoutManager.container.height()+l._minY,l._width=l.element.width(),l._height=l.element.height(),l._setDropPosition(e,n),l}return f(t,i.b),c(t,[{key:"_onDrag",value:function(e,t,n){var i=(n=Object(o.e)(n)).pageX,s=n.pageY;(i>this._minX&&i<this._maxX&&s>this._minY&&s<this._maxY||!0!==this._layoutManager.config.settings.constrainDragToContainer)&&this._setDropPosition(i,s)}},{key:"_setDropPosition",value:function(e,t){this.element.css({left:e,top:t}),this._area=this._layoutManager._$getArea(e,t),null!==this._area&&(this._lastValidArea=this._area,this._area.contentItem._$highlightDropZone(e,t,this._area))}},{key:"_onDrop",value:function(){this._updateTree(),this._layoutManager.dropTargetIndicator.hide(),null===this._area?null===this._lastValidArea?this._originalParent?this._originalParent.addChild(this._contentItem):this._contentItem._$destroy():this._lastValidArea.contentItem._$onDrop(this._contentItem,this._lastValidArea):this._area.contentItem._$onDrop(this._contentItem,this._area),this.element.remove(),this._layoutManager.emit("itemDropped",this._contentItem)}},{key:"_undisplayTree",value:function(){this._contentItem.parent&&this._contentItem.parent.undisplayChild(this._contentItem)}},{key:"_updateTree",value:function(){this._contentItem.parent&&this._contentItem.parent.removeChild(this._contentItem,!0),this._contentItem._$setParent(this)}},{key:"_setDimensions",value:function(){var e=this._layoutManager.config.dimensions,t=e.dragProxyWidth,n=e.dragProxyHeight;this.element.width(t),this.element.height(n),t-=this._sided?e.headerHeight:0,n-=this._sided?0:e.headerHeight,this.childElementContainer.width(t),this.childElementContainer.height(n),this._contentItem.element.width(t),this._contentItem.element.height(n),this._contentItem.callDownwards("_$show"),this._contentItem.callDownwards("setSize")}}]),t}();t.a=s},function(e,t){"use strict";t.a=function(){function e(t,n,i,o){p(this,e),this._header=t,this.element=$('<li class="'+i+'" title="'+n+'"></li>'),this._header.on("destroy",this._$destroy,this),this._action=o,this.element.on("click touchstart",this._action),this._header.controlsContainer.append(this.element)}return c(e,[{key:"_$destroy",value:function(){this.element.off(),this.element.remove()}}]),e}()},function(e,t,n){"use strict";var i=n(3),o=n(33),s=function(e){function t(e,n,i){var s;p(this,t),s=h(this,u(t).call(this,e,n,i));var r=e.getComponent(s.config.componentName),a=$.extend(!0,{},s.config.componentState||{});return a.componentName=s.config.componentName,s.componentName=s.config.componentName,""===s.config.title&&(s.config.title=s.config.componentName),s.isComponent=!0,s.container=new o.a(s.config,d(s),e),s.instance=new r(s.container,a),s.element=s.container._element,s}return f(t,i.a),c(t,[{key:"close",value:function(){this.parent.removeChild(this)}},{key:"setSize",value:function(){"none"!==this.element.css("display")&&this.container._$setSize(this.element.width(),this.element.height())}},{key:"_$init",value:function(){i.a.prototype._$init.call(this),this.container.emit("open")}},{key:"_$hide",value:function(){this.container.hide(),i.a.prototype._$hide.call(this)}},{key:"_$show",value:function(){this.container.show(),i.a.prototype._$show.call(this)}},{key:"_$shown",value:function(){this.container.shown(),i.a.prototype._$shown.call(this)}},{key:"_$destroy",value:function(){this.container.emit("destroy",this),i.a.prototype._$destroy.call(this)}},{key:"_$getArea",value:function(){return null}}]),t}();t.a=s},function(e,t,n){"use strict";var i=n(1),o=function(e){function t(e,n,i){var o;return p(this,t),(o=h(this,u(t).call(this))).width=null,o.height=null,o.title=e.componentName,o.parent=n,o.layoutManager=i,o.isHidden=!1,o._config=e,o._element=$('<div class="lm_item_container"><div class="lm_content"></div></div>'),o._contentElement=o._element.find(".lm_content"),o}return f(t,i.b),c(t,[{key:"getElement",value:function(){return this._contentElement}},{key:"hide",value:function(){this.emit("hide"),this.isHidden=!0,this._element.hide()}},{key:"show",value:function(){this.emit("show"),this.isHidden=!1,this._element.show(),(0!=this.height||0!=this.width)&&this.emit("shown")}},{key:"setSize",value:function(e,t){for(var n,i,o,s,r=this.parent,a=this;!r.isColumn&&!r.isRow;)if(a=r,(r=r.parent).isRoot)return!1;for(n=("height"===(i=r.isColumn?"height":"width")?t:e)/(this[i]*(1/(a.config[i]/100)))*100,o=(a.config[i]-n)/(r.contentItems.length-1),s=0;s<r.contentItems.length;s++)r.contentItems[s]===a?r.contentItems[s].config[i]=n:r.contentItems[s].config[i]+=o;return r.callDownwards("setSize"),!0}},{key:"close",value:function(){this._config.isClosable&&(this.emit("close"),this.parent.close())}},{key:"getState",value:function(){return this._config.componentState}},{key:"extendState",value:function(e){this.setState($.extend(!0,this.getState(),e))}},{key:"setState",value:function(e){this._config.componentState=e,this.parent.emitBubblingEvent("stateChanged")}},{key:"setTitle",value:function(e){this.parent.setTitle(e)}},{key:"_$setSize",value:function(e,t){(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,$.zepto?this._contentElement.width(e):this._contentElement.outerWidth(e),$.zepto?this._contentElement.height(t):this._contentElement.outerHeight(t),this.emit("resize"))}}]),t}();t.a=o},function(e,n,i){"use strict";var o=i(68),s=i.n(o),r=i(1),a=i(11),l=i(0),d=function(e){function n(e,t,i,o,s){var r;return p(this,n),(r=h(this,u(n).call(this))).isInitialised=!1,r._config=e,r._dimensions=t,r._parentId=i,r._indexInParent=o,r._layoutManager=s,r._popoutWindow=null,r._id=null,r._createWindow(),r}return f(n,r.b),c(n,[{key:"toConfig",value:function(){if(!1===this.isInitialised)throw new Error("Can't create config, layout not yet initialised");return{dimensions:{width:this.getGlInstance().width,height:this.getGlInstance().height,left:this._popoutWindow.screenX||this._popoutWindow.screenLeft,top:this._popoutWindow.screenY||this._popoutWindow.screenTop},content:this.getGlInstance().toConfig().content,parentId:this._parentId,indexInParent:this._indexInParent}}},{key:"getGlInstance",value:function(){return this._popoutWindow.__glInstance}},{key:"getWindow",value:function(){return this._popoutWindow}},{key:"close",value:function(){if(this.getGlInstance())this.getGlInstance()._$closeWindow();else try{this.getWindow().close()}catch(e){}}},{key:"popIn",value:function(){var e,t;this._indexInParent;this._parentId&&(e=$.extend(!0,{},this.getGlInstance().toConfig()).content[0],!(t=this._layoutManager.root.getItemsById(this._parentId)[0])&&(t=0<this._layoutManager.root.contentItems.length?this._layoutManager.root.contentItems[0]:this._layoutManager.root)),t.addChild(e,this._indexInParent),this.close()}},{key:"_createWindow",value:function(){var e,n=this._createUrl(),i=t(1e6*Math.random()).toString(36),o=this._serializeWindowOptions({width:this._dimensions.width,height:this._dimensions.height,innerWidth:this._dimensions.width,innerHeight:this._dimensions.height,menubar:"no",toolbar:"no",location:"no",personalbar:"no",resizable:"yes",scrollbars:"no",status:"no"});if(this._popoutWindow=window.open(n,i,o),this._popoutWindow)$(this._popoutWindow).on("load",Object(l.c)(this._positionWindow,this)).on("unload beforeunload",Object(l.c)(this._onClose,this)),e=setInterval(Object(l.c)(function(){this._popoutWindow.__glInstance&&this._popoutWindow.__glInstance.isInitialised&&(this._onInitialised(),clearInterval(e))},this),10);else if(!0===this._layoutManager.config.settings.blockedPopoutsThrowError){var s=new Error("Popout blocked");throw s.type="popoutBlocked",s}}},{key:"_serializeWindowOptions",value:function(e){var t,n=[];for(t in e)n.push(t+"="+e[t]);return n.join(",")}},{key:"_createUrl",value:function(){var e,t={content:this._config},n="gl-window-config-"+Object(l.f)();t=(new a.a).minifyConfig(t);try{localStorage.setItem(n,s()(t))}catch(t){throw new Error("Error while writing to localStorage "+t.toString())}return 1===(e=document.location.href.split("?")).length?e[0]+"?gl-window="+n:document.location.href+"&gl-window="+n}},{key:"_positionWindow",value:function(){this._popoutWindow.moveTo(this._dimensions.left,this._dimensions.top),this._popoutWindow.focus()}},{key:"_onInitialised",value:function(){this.isInitialised=!0,this.getGlInstance().on("popIn",this.popIn,this),this.emit("initialised")}},{key:"_onClose",value:function(){setTimeout(Object(l.c)(this.emit,this,["closed"]),50)}}]),n}();n.a=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(36),o=(n.n(i),n(37)),s=(n.n(o),n(38)),r=(n.n(s),n(39));n.d(t,"default",function(){return r.a});var a=n(33);n.d(t,"ItemContainer",function(){return a.a});var l=n(34);n.d(t,"BrowserPopout",function(){return l.a});var c=n(28);n.d(t,"Header",function(){return c.a});var h=n(31);n.d(t,"HeaderButton",function(){return h.a});var u=n(29);n.d(t,"Tab",function(){return u.a});var d=n(32);n.d(t,"Component",function(){return d.a});var f=n(12);n.d(t,"Root",function(){return f.a});var m=n(6);n.d(t,"RowOrColumn",function(){return m.a});var p=n(13);n.d(t,"Stack",function(){return p.a});var g=n(26);n.d(t,"BubblingEvent",function(){return g.a});var y=n(11);n.d(t,"ConfigMinifier",function(){return y.a});var v=n(7);n.d(t,"DragListener",function(){return v.a});var _=n(1);n.d(t,"EventEmitter",function(){return _.b});var b=n(25);n.d(t,"EventHub",function(){return b.a});var w=n(24);n.d(t,"ReactComponentHandler",function(){return w.a}),{}.ES6&&(n(74),n(77))},function(){},function(){},function(){},function(e,i,o){"use strict";var s=o(1),r=o(24),a=o(11),l=o(25),m=o(12),y=o(6),v=o(13),_=o(32),b=o(3),w=o(34),x=o(70),k=o(71),I=o(72),C=o(27),S=o(73),E=o(0),j=function(e){function i(e,t){var n;if(p(this,i),!$){throw'Please either expose $ on GoldenLayout\'s scope (e.g. window) or add "jquery" to ',"your paths when using RequireJS/AMD",new Error('jQuery is missing as dependency for GoldenLayout. Please either expose $ on GoldenLayout\'s scope (e.g. window) or add "jquery" to your paths when using RequireJS/AMD')}return(n=h(this,u(i).call(this))).isInitialised=!1,n._isFullPage=!1,n._resizeTimeoutId=null,n._components={"lm-react-component":r.a},n._itemAreas=[],n._resizeFunction=Object(E.c)(n._onResize,d(n)),n._unloadFunction=Object(E.c)(n._onUnload,d(n)),n._maximisedItem=null,n._maximisePlaceholder=$('<div class="lm_maximise_place"></div>'),n._creationTimeoutPassed=!1,n._subWindowsCreated=!1,n._dragSources=[],n._updatingColumnsResponsive=!1,n._firstLoad=!0,n.width=null,n.height=null,n.root=null,n.openPopouts=[],n.selectedItem=null,n.isSubWindow=!1,n.eventHub=new l.a(d(n)),n.config=n._createConfig(e),n.container=t,n.dropTargetIndicator=null,n.transitionIndicator=null,n.tabDropPlaceholder=$('<div class="lm_drop_tab_placeholder"></div>'),!0===n.isSubWindow&&$("body").css("visibility","hidden"),n._typeToItem={column:Object(E.c)(y.a,d(n),[!0]),row:Object(E.c)(y.a,d(n),[!1]),stack:v.a,component:_.a},n}return f(i,s.b),c(i,[{key:"minifyConfig",value:function(e){return(new a.a).minifyConfig(e)}},{key:"unminifyConfig",value:function(e){return(new a.a).unminifyConfig(e)}},{key:"registerComponent",value:function(e,t){if("function"!=typeof t)throw new Error("Please register a constructor function");if(void 0!==this._components[e])throw new Error("Component "+e+" is already registered");this._components[e]=t}},{key:"toConfig",value:function(e){var t,n,i;if(!1===this.isInitialised)throw new Error("Can't create config, layout not yet initialised");if(e&&!(e instanceof b.a))throw new Error("Root must be a ContentItem");for((t={settings:Object(E.b)({},this.config.settings),dimensions:Object(E.b)({},this.config.dimensions),labels:Object(E.b)({},this.config.labels)}).content=[],(n=function(e,t){var i,o;for(i in t.config)"content"!==i&&(e[i]=t.config[i]);if(t.contentItems.length)for(e.content=[],o=0;o<t.contentItems.length;o++)e.content[o]={},n(e.content[o],t.contentItems[o])})(t,e?{contentItems:[e]}:this.root),this._$reconcilePopoutWindows(),t.openPopouts=[],i=0;i<this.openPopouts.length;i++)t.openPopouts.push(this.openPopouts[i].toConfig());return t.maximisedItemId=this._maximisedItem?"__glMaximised":null,t}},{key:"getComponent",value:function(e){if(void 0===this._components[e])throw new C.a('Unknown component "'+e+'"');return this._components[e]}},{key:"init",value:function(){return!1===this._subWindowsCreated&&(this._createSubWindows(),this._subWindowsCreated=!0),"loading"===document.readyState||null===document.body?void $(document).ready(Object(E.c)(this.init,this)):!0===this.isSubWindow&&!1===this._creationTimeoutPassed?(setTimeout(Object(E.c)(this.init,this),7),void(this._creationTimeoutPassed=!0)):(!0===this.isSubWindow&&this._adjustToWindowMode(),this._setContainer(),this.dropTargetIndicator=new k.a(this.container),this.transitionIndicator=new I.a,this.updateSize(),this._create(this.config),this._bindEvents(),this.isInitialised=!0,this._adjustColumnsResponsive(),void this.emit("initialised"))}},{key:"updateSize",value:function(e,t){2===arguments.length?(this.width=e,this.height=t):(this.width=this.container.width(),this.height=this.container.height()),!0===this.isInitialised&&(this.root.callDownwards("setSize",[this.width,this.height]),this._maximisedItem&&(this._maximisedItem.element.width(this.container.width()),this._maximisedItem.element.height(this.container.height()),this._maximisedItem.callDownwards("setSize")),this._adjustColumnsResponsive())}},{key:"destroy",value:function(){!1===this.isInitialised||(this._onUnload(),$(window).off("resize",this._resizeFunction),$(window).off("unload beforeunload",this._unloadFunction),this.root.callDownwards("_$destroy",[],!0),this.root.contentItems=[],this.tabDropPlaceholder.remove(),this.dropTargetIndicator.destroy(),this.transitionIndicator.destroy(),this.eventHub.destroy(),this._dragSources.forEach(function(e){e._dragListener.destroy(),e._element=null,e._itemConfig=null,e._dragListener=null}),this._dragSources=[])}},{key:"createContentItem",value:function(e,t){var n;if("string"!=typeof e.type)throw new C.a("Missing parameter 'type'",e);if("react-component"===e.type&&(e.type="component",e.componentName="lm-react-component"),!this._typeToItem[e.type])throw n="Unknown type '"+e.type+"'. Valid types are "+Object(E.j)(this._typeToItem).join(","),new C.a(n);return"component"!==e.type||t instanceof v.a||!t||!0===this.isSubWindow&&t instanceof m.a||(e={type:"stack",width:e.width,height:e.height,content:[e]}),new this._typeToItem[e.type](this,e,t)}},{key:"createPopout",value:function(e,t,n,i){var o,s,r,a,l,c,h=e,u=e instanceof b.a,d=this;if(n=n||null,u){for(h=this.toConfig(e).content,n=Object(E.f)(),a=e.parent,l=e;1===a.contentItems.length&&!a.isRoot;)a=a.parent,l=l.parent;a.addId(n),isNaN(i)&&(i=Object(E.g)(l,a.contentItems))}else h instanceof Array||(h=[h]);return!t&&u&&(o=window.screenX||window.screenLeft,s=window.screenY||window.screenTop,t={left:o+(r=e.element.offset()).left,top:s+r.top,width:e.element.width(),height:e.element.height()}),t||u||(t={left:window.screenX||window.screenLeft+20,top:window.screenY||window.screenTop+20,width:500,height:309}),u&&e.remove(),(c=new w.a(h,t,n,i,this)).on("initialised",function(){d.emit("windowOpened",c)}),c.on("closed",function(){d._$reconcilePopoutWindows()}),this.openPopouts.push(c),c}},{key:"createDragSource",value:function(e,t){this.config.settings.constrainDragToContainer=!1;var n=new x.a($(e),t,this);return this._dragSources.push(n),n}},{key:"selectItem",value:function(e,t){if(!0!==this.config.settings.selectionEnabled)throw new Error("Please set selectionEnabled to true to use this feature");e===this.selectedItem||(null!==this.selectedItem&&this.selectedItem.deselect(),e&&!0!==t&&e.select(),this.selectedItem=e,this.emit("selectionChanged",e))}},{key:"_$maximiseItem",value:function(e){null!==this._maximisedItem&&this._$minimiseItem(this._maximisedItem),this._maximisedItem=e,this._maximisedItem.addId("__glMaximised"),e.element.addClass("lm_maximised"),e.element.after(this._maximisePlaceholder),this.root.element.prepend(e.element),e.element.width(this.container.width()),e.element.height(this.container.height()),e.callDownwards("setSize"),this._maximisedItem.emit("maximised"),this.emit("stateChanged")}},{key:"_$minimiseItem",value:function(e){e.element.removeClass("lm_maximised"),e.removeId("__glMaximised"),this._maximisePlaceholder.after(e.element),this._maximisePlaceholder.remove(),e.parent.callDownwards("setSize"),this._maximisedItem=null,e.emit("minimised"),this.emit("stateChanged")}},{key:"_$closeWindow",value:function(){window.setTimeout(function(){window.close()},1)}},{key:"_$getArea",value:function(e,t){var n,i,o=1/0,s=null;for(n=0;n<this._itemAreas.length;n++)e>(i=this._itemAreas[n]).x1&&e<i.x2&&t>i.y1&&t<i.y2&&o>i.surface&&(o=i.surface,s=i);return s}},{key:"_$createRootItemAreas",value:function(){var e={y2:0,x2:0,y1:"y2",x1:"x2"};for(var t in e){var n=this.root._$getArea();n.side=t,n[t]=e[t]?n[e[t]]-50:50,n.surface=(n.x2-n.x1)*(n.y2-n.y1),this._itemAreas.push(n)}}},{key:"_$calculateItemAreas",value:function(){var e,t,n=this._getAllContentItems();if(this._itemAreas=[],1!==n.length){for(this._$createRootItemAreas(),e=0;e<n.length;e++)if(n[e].isStack){if(null===(t=n[e]._$getArea()))continue;if(t instanceof Array)this._itemAreas=this._itemAreas.concat(t);else{this._itemAreas.push(t);var i={};Object(E.b)(i,t),Object(E.b)(i,t.contentItem._contentAreaDimensions.header.highlightArea),i.surface=(i.x2-i.x1)*(i.y2-i.y1),this._itemAreas.push(i)}}}else this._itemAreas.push(this.root._$getArea())}},{key:"_$normalizeContentItem",value:function(e,t){if(!e)throw new Error("No content item defined");if(Object(E.h)(e)&&(e=e()),e instanceof b.a)return e;if($.isPlainObject(e)&&e.type){var n=this.createContentItem(e,t);return n.callDownwards("_$init"),n}throw new Error("Invalid contentItem")}},{key:"_$reconcilePopoutWindows",value:function(){var e,t=[];for(e=0;e<this.openPopouts.length;e++)!1===this.openPopouts[e].getWindow().closed?t.push(this.openPopouts[e]):this.emit("windowClosed",this.openPopouts[e]);this.openPopouts.length!==t.length&&(this.emit("stateChanged"),this.openPopouts=t)}},{key:"_getAllContentItems",value:function(){var e=[];return function t(n){if(e.push(n),n.contentItems instanceof Array)for(var i=0;i<n.contentItems.length;i++)t(n.contentItems[i])}(this.root),e}},{key:"_bindEvents",value:function(){this._isFullPage&&$(window).resize(this._resizeFunction),$(window).on("unload beforeunload",this._unloadFunction)}},{key:"_onResize",value:function(){clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout(Object(E.c)(this.updateSize,this),100)}},{key:"_createConfig",value:function(e){var t=Object(E.d)("gl-window");t&&(this.isSubWindow=!0,e=localStorage.getItem(t),e=JSON.parse(e),e=(new a.a).unminifyConfig(e),localStorage.removeItem(t));return function e(t){for(var n in t)"props"!=n&&"object"==g(t[n])?e(t[n]):"type"==n&&"react-component"===t[n]&&(t.type="component",t.componentName="lm-react-component")}(e=$.extend(!0,{},S.a,e)),!1===e.settings.hasHeaders&&(e.dimensions.headerHeight=0),e}},{key:"_adjustToWindowMode",value:function(){var e=$('<div class="lm_popin" title="'+this.config.labels.popin+'"><div class="lm_icon"></div><div class="lm_bg"></div></div>');e.click(Object(E.c)(function(){this.emit("popIn")},this)),document.title=Object(E.k)(this.config.content[0].title),$("head").append($("body link, body style, template, .gl_keep")),this.container=$("body").html("").css("visibility","visible").append(e),document.body.offsetHeight,window.__glInstance=this}},{key:"_createSubWindows",value:function(){var e,t;for(e=0;e<this.config.openPopouts.length;e++)t=this.config.openPopouts[e],this.createPopout(t.content,t.dimensions,t.parentId,t.indexInParent)}},{key:"_setContainer",value:function(){var e=$(this.container||"body");if(0===e.length)throw new Error("GoldenLayout container not found");if(1<e.length)throw new Error("GoldenLayout more than one container element specified");e[0]===document.body&&(this._isFullPage=!0,$("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"})),this.container=e}},{key:"_create",value:function(e){var t;if(!(e.content instanceof Array))throw t=void 0===e.content?"Missing setting 'content' on top level of configuration":"Configuration parameter 'content' must be an array",new C.a(t,e);if(1<e.content.length)throw t="Top level content can't contain more then one element.",new C.a(t,e);this.root=new m.a(this,{content:e.content},this.container),this.root.callDownwards("_$init"),"__glMaximised"===e.maximisedItemId&&this.root.getItemsById(e.maximisedItemId)[0].toggleMaximise()}},{key:"_onUnload",value:function(){if(!0===this.config.settings.closePopoutsOnUnload)for(var e=0;e<this.openPopouts.length;e++)this.openPopouts[e].close()}},{key:"_adjustColumnsResponsive",value:function(){if(this._useResponsiveLayout()&&!this._updatingColumnsResponsive&&this.config.dimensions&&this.config.dimensions.minItemWidth&&0!==this.root.contentItems.length&&this.root.contentItems[0].isRow){this._firstLoad=!1;var e=this.root.contentItems[0].contentItems.length;if(!(1>=e)){var i=this.config.dimensions.minItemWidth;if(!(e*i<=this.width)){this._updatingColumnsResponsive=!0;for(var o,s=n(t(this.width/i),1),r=this.root.contentItems[0],a=this._findAllStackContainers()[0],l=0;l<e-s;l++)o=r.contentItems[r.contentItems.length-1],this._addChildContentItemsToContainer(a,o);this._updatingColumnsResponsive=!1}}}else this._firstLoad=!1}},{key:"_useResponsiveLayout",value:function(){return this.config.settings&&("always"==this.config.settings.responsiveMode||"onload"==this.config.settings.responsiveMode&&this._firstLoad)}},{key:"_addChildContentItemsToContainer",value:function(e,t){"stack"===t.type?t.contentItems.forEach(function(n){e.addChild(n),t.removeChild(n,!0)}):t.contentItems.forEach(Object(E.c)(function(t){this._addChildContentItemsToContainer(e,t)},this))}},{key:"_findAllStackContainers",value:function(){var e=[];return this._findAllStackContainersRecursive(e,this.root),e}},{key:"_findAllStackContainersRecursive",value:function(e,t){t.contentItems.forEach(Object(E.c)(function(t){"stack"==t.type?e.push(t):!t.isComponent&&this._findAllStackContainersRecursive(e,t)},this))}}]),i}();i.a=j},function(e,t,n){e.exports={default:n(41),__esModule:!0}},function(e,t,n){n(42),e.exports=n(2).Object.keys},function(e,t,n){var i=n(43),o=n(15);n(53)("keys",function(){return function(e){return o(i(e))}})},function(e,t,n){var i=n(14);e.exports=function(e){return Object(i(e))}},function(e,t,n){var i=n(16),o=n(17),s=n(47)(!1),r=n(19)("IE_PROTO");e.exports=function(e,t){var n,a=o(e),l=0,c=[];for(n in a)n!=r&&i(a,n)&&c.push(n);for(;t.length>l;)i(a,n=t[l++])&&(~s(c,n)||c.push(n));return c}},function(e,t,n){var i=n(46);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,t,n){var i=n(17),o=n(48),s=n(49);e.exports=function(e){return function(t,n,r){var a,l=i(t),c=o(l.length),h=s(r,c);if(e&&n!=n){for(;c>h;)if((a=l[h++])!=a)return!0}else for(;c>h;h++)if((e||h in l)&&l[h]===n)return e||h||0;return!e&&-1}}},function(t,n,i){var o=i(18);t.exports=function(t){return 0<t?e(o(t),9007199254740991):0}},function(t,i,o){var s=o(18);t.exports=function(t,i){return 0>(t=s(t))?n(t+i,0):e(t,i)}},function(e,t,n){var i=n(2),o=n(4),s="__core-js_shared__",r=o[s]||(o[s]={});(e.exports=function(e,t){return r[e]||(r[e]=void 0===t?{}:t)})("versions",[]).push({version:i.version,mode:n(51)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(e){e.exports=!0},function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},function(e,t,n){var i=n(21),o=n(2),s=n(10);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],r={};r[e]=t(n),i(i.S+i.F*s(function(){n(1)}),"Object",r)}},function(e,t,n){var i=n(55);e.exports=function(e,t,n){return i(e),void 0===t?e:1===n?function(n){return e.call(t,n)}:2===n?function(n,i){return e.call(t,n,i)}:3===n?function(n,i,o){return e.call(t,n,i,o)}:function(){return e.apply(t,arguments)}}},function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var i=n(22),o=n(59);e.exports=n(5)?function(e,t,n){return i.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(5)&&!n(10)(function(){return 7!=Object.defineProperty(n(23)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(9);e.exports=function(e,t){if(!i(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!i(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!i(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!i(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){e.exports={default:n(61),__esModule:!0}},function(e,t,n){n(62);var i=n(2).Object;e.exports=function(e,t){return i.create(e,t)}},function(e,t,n){var i=n(21);i(i.S,"Object",{create:n(63)})},function(e,t,n){var i=n(8),o=n(64),s=n(20),r=n(19)("IE_PROTO"),a=function(){},l="prototype",c=function(){var e,t=n(23)("iframe"),i=s.length;for(t.style.display="none",n(65).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;i--;)delete c[l][s[i]];return c()};e.exports=Object.create||function(e,t){var n;return null===e?n=c():(a[l]=i(e),n=new a,a[l]=null,n[r]=e),void 0===t?n:o(n,t)}},function(e,t,n){var i=n(22),o=n(8),s=n(15);e.exports=n(5)?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},function(e,t,n){var i=n(4).document;e.exports=i&&i.documentElement},function(e,t){"use strict";t.a={isClosable:!0,reorderEnabled:!0,title:""}},function(e,t,n){"use strict";var i=n(7);t.a=function(){function e(t,n,o){p(this,e),this._isVertical=t,this._size=n,this._grabSize=o<n?n:o,this.element=this._createElement(),this._dragListener=new i.a(this.element)}return c(e,[{key:"on",value:function(e,t,n){this._dragListener.on(e,t,n)}},{key:"_$destroy",value:function(){this.element.remove()}},{key:"_createElement",value:function(){var e=$('<div class="lm_drag_handle"></div>'),t=$('<div class="lm_splitter"></div>');t.append(e);var n=this._grabSize-this._size,i=n/2;return this._isVertical?(e.css("top",-i),e.css("height",this._size+n),t.addClass("lm_vertical"),t.height(this._size)):(e.css("left",-i),e.css("width",this._size+n),t.addClass("lm_horizontal"),t.width(this._size)),t}}]),e}()},function(e,t,n){e.exports={default:n(69),__esModule:!0}},function(e,t,n){var i=n(2),o=i.JSON||(i.JSON={stringify:JSON.stringify});e.exports=function(){return o.stringify.apply(o,arguments)}},function(e,t,n){"use strict";var i=n(7),o=n(30),s=n(0);t.a=function(){function e(t,n,i){p(this,e),this._element=t,this._itemConfig=n,this._layoutManager=i,this._dragListener=null,this._createDragListener()}return c(e,[{key:"_createDragListener",value:function(){null!==this._dragListener&&this._dragListener.destroy(),this._dragListener=new i.a(this._element),this._dragListener.on("dragStart",this._onDragStart,this),this._dragListener.on("dragStop",this._createDragListener,this)}},{key:"_onDragStart",value:function(e,t){var n=this._itemConfig;Object(s.h)(n)&&(n=n());var i=this._layoutManager._$normalizeContentItem($.extend(!0,{},n)),r=new o.a(e,t,this._dragListener,this._layoutManager,i,null);this._layoutManager.transitionIndicator.transitionElements(this._element,r.element)}}]),e}()},function(e,t){"use strict";t.a=function(){function e(){p(this,e),this.element=$('<div class="lm_dropTargetIndicator"><div class="lm_inner"></div></div>'),$(document.body).append(this.element)}return c(e,[{key:"destroy",value:function(){this.element.remove()}},{key:"highlight",value:function(e,t,n,i){this.highlightArea({x1:e,y1:t,x2:n,y2:i})}},{key:"highlightArea",value:function(e){this.element.css({left:e.x1,top:e.y1,width:e.x2-e.x1,height:e.y2-e.y1}).show()}},{key:"hide",value:function(){this.element.hide()}}]),e}()},function(e,t,n){"use strict";var i=n(0);t.a=function(){function e(){p(this,e),this._element=$('<div class="lm_transition_indicator"></div>'),$(document.body).append(this._element),this._toElement=null,this._fromDimensions=null,this._totalAnimationDuration=200,this._animationStartTime=null}return c(e,[{key:"destroy",value:function(){this._element.remove()}},{key:"transitionElements",value:function(){}},{key:"_nextAnimationFrame",value:function(){var e,t=this._measure(this._toElement),n=(Object(i.i)()-this._animationStartTime)/this._totalAnimationDuration,o={};if(1<=n)this._element.hide();else{for(e in t.opacity=0,this._fromDimensions)o[e]=this._fromDimensions[e]+(t[e]-this._fromDimensions[e])*n;this._element.css(o),Object(i.a)(Object(i.c)(this._nextAnimationFrame,this))}}},{key:"_measure",value:function(e){var t=e.offset();return{left:t.left,top:t.top,width:e.outerWidth(),height:e.outerHeight()}}}]),e}()},function(e,t){"use strict";t.a={openPopouts:[],settings:{hasHeaders:!0,constrainDragToContainer:!0,reorderEnabled:!0,selectionEnabled:!1,popoutWholeStack:!1,blockedPopoutsThrowError:!0,closePopoutsOnUnload:!0,showPopoutIcon:!0,showMaximiseIcon:!0,showCloseIcon:!0,responsiveMode:"onload",tabOverlapAllowance:0,reorderOnTabMenuClick:!0,tabControlOffset:10},dimensions:{borderWidth:5,borderGrabWidth:15,minItemHeight:10,minItemWidth:10,headerHeight:20,dragProxyWidth:300,dragProxyHeight:200},labels:{close:"close",maximise:"maximise",minimise:"minimise",popout:"open in new window",popin:"pop in",tabDropdown:"additional tabs"}}},function(e,t,n){n(75)(n(76))},function(e){e.exports=function(e){function t(e){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",e)}try{"undefined"!=typeof execScript&&"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener?execScript(e):"undefined"==typeof eval?t("EvalError: No eval function available"):eval.call(null,e)}catch(e){t(e)}}},function(e){e.exports="/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n(function(global, factory) {\n if (typeof define === 'function' && define.amd)\n define(function() { return factory(global) })\n else\n factory(global)\n}(this, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\n })\n return result.join('&')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind('submit', callback)\n else if (this.length) {\n var event = $.Event('submit')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n"},function(){!function(e){e.expr={":":{}},e.support={},e.fn.clone=function(){var t=e();return this.each(function(){t.push(this.cloneNode(!0))}),t},["Left","Top"].forEach(function(t,n){function i(e){return function(e){return e&&"object"==g(e)&&"setInterval"in e}(e)?e:!(9!==e.nodeType)&&(e.defaultView||e.parentWindow)}var o="scroll"+t;e.fn[o]=function(t){var s,r;return void 0===t?(s=this[0])?(r=i(s))?"pageXOffset"in r?r[n?"pageYOffset":"pageXOffset"]:r.document.documentElement[o]||r.document.body[o]:s[o]:null:void this.each(function(){if(r=i(this)){var s=n?e(r).scrollLeft():t,a=n?t:e(r).scrollTop();r.scrollTo(s,a)}else this[o]=t})}}),["width","height"].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});e.fn["inner"+n]=function(e){var n=this;if(n){var i=n[t]();return{width:["left","right"],height:["top","bottom"]}[t].forEach(function(t){i+=parseInt(n.css("padding-"+t),10),e&&(i+=parseInt(n.css("margin-"+t),10))}),i}return null},e.fn["outer"+n]=function(e){var n=this;if(n){var i=n[t]();return{width:["left","right"],height:["top","bottom"]}[t].forEach(function(t){e&&(i+=parseInt(n.css("margin-"+t),10))}),i}return null}}),e.proxy=function(t,n){if("string"==typeof n){var i=t[n];n=t,t=i}if(e.isFunction(t)){var o=Array.prototype.slice.call(arguments,2),s=function(){return t.apply(n,o.concat(Array.prototype.slice.call(arguments)))};return s.guid=t.guid=t.guid||s.guid||e.guid++,s}};var t=String.prototype.trim;e.trim=function(e,n){return!n&&t?t.call(e):(n=defaultToWhiteSpace(n),e.replace(new RegExp("^["+n+"]+|["+n+"]+$","g"),""))};var n=/^(?:body|html)$/i;e.fn.position=function(){if(!this[0])return null;var t=this[0],i=this.offsetParent(),o=this.offset(),s=n.test(i[0].nodeName)?{top:0,left:0}:i.offset();return o.top-=parseFloat(e(t).css("margin-top"))||0,o.left-=parseFloat(e(t).css("margin-left"))||0,s.top+=parseFloat(e(i[0]).css("border-top-width"))||0,s.left+=parseFloat(e(i[0]).css("border-left-width"))||0,{top:o.top-s.top,left:o.left-s.left}},e.fn.offsetParent=function(){var t=e();return this.each(function(){for(var i=this.offsetParent||document.body;i&&!n.test(i.nodeName)&&"static"===e(i).css("position");)i=i.offsetParent;t.push(i)}),t}}(Zepto)}])},"object"==g(t)&&"object"==g(e)?e.exports=s():(i=[],void 0===(o="function"==typeof(n=s)?n.apply(t,i):n)||(e.exports=o))}).call(this,n(2)(e))},function(e,t,n){"use strict";n.r(t);var i=n(0),o=new(n.n(i).a)({settings:{showPopoutIcon:!1,showCloseIcon:!1},dimensions:{minItemHeight:40},content:[{type:"row",content:[{type:"column",width:40,content:[{type:"component",componentName:"template",title:"Game",componentState:{id:"client_wrapper"}}]},{type:"column",content:[{type:"row",height:65,content:[{type:"stack",content:[{type:"component",title:"Main",componentName:"template",componentState:{id:"mainmenu"}},{type:"component",title:"Log",componentName:"template",componentState:{id:"log"}}]},{type:"component",title:"Music",width:30,componentName:"template",componentState:{id:"music"}}]},{type:"row",content:[{type:"component",title:"Server chat",componentName:"template",componentState:{id:"ooc"}}]}]}]}]});o.registerComponent("template",function(e,t){var n=document.querySelector("#".concat(t.id));e.getElement().html(n.content)}),o.init()},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}}]); -//# sourceMappingURL=ui.b.js.map
\ No newline at end of file diff --git a/dist/ui.b.js.map b/dist/ui.b.js.map deleted file mode 100644 index 11bd0ee..0000000 --- a/dist/ui.b.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///webpack:///webpack/universalModuleDefinition","webpack:///./webAO/ui.js","webpack:///(webpack)/buildin/module.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","self","e","Math","min","floor","max","configurable","$","zepto","touches","targetTouches","originalEvent","j","a","push","window","location","hash","match","RegExp","search","substr","split","length","b","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","setTimeout","g","Array","Error","indexOf","Function","apply","concat","slice","arguments","this","Date","now","getTime","f","random","toString","replace","k","trim","Int8Array","_typeof","_class","_classCallCheck","_mSubscriptions","on","h","fn","ctx","emit","unshift","unbind","splice","off","trigger","version","__e","_o$b","_this","_possibleConstructorReturn","_getPrototypeOf","config","_extendItemNode","type","contentItems","parent","isInitialised","isMaximised","isRoot","isRow","isColumn","isStack","isComponent","layoutManager","_pendingEventPropagations","_throttledEvents","_propagateEvent","_assertThisInitialized","content","_createContentItems","_inherits","_createClass","callDownwards","_$destroy","isClosable","removeChild","undisplayChild","_$init","_$normalizeContentItem","element","parentNode","replaceChild","header","tabs","contentItem","createPopout","emitBubblingEvent","preventDefault","_$minimiseItem","_$maximiseItem","selectedItem","selectItem","addClass","removeClass","title","id","hasId","getItemsByFilter","_$getItemsByProperty","instance","dropTargetIndicator","highlightArea","addChild","_callOnActiveComponents","hide","updateSize","show","getItemsByType","getActiveContentItem","container","remove","offset","width","height","x1","left","y1","top","x2","y2","surface","setSize","childElementContainer","append","createContentItem","isPropagationStopped","_scheduleEventPropagationToLayoutManager","origin","_propagateEventToLayoutManager","__g","round","_s$a","_this2","_splitterSize","dimensions","borderWidth","_splitterGrabSize","borderGrabWidth","_isColumn","_dimension","_splitter","_splitterPosition","_splitterMinPosition","_splitterMaxPosition","_createSplitter","after","_isDocked","before","_validateDocking","_calculateRelativeSizes","_setAbsoluteSizes","headerHeight","_docker","docked","size","itemSize","column","first","last","row","position","_","dimension","realSize","toggleClass","_header","dock","_calculateAbsoluteSizes","additionalPixel","itemSizes","totalWidth","totalHeight","_respectMinItemWidth","minItemWidth","_onSplitterDrag","_onSplitterDragStop","_onSplitterDragStart","_setDockable","_$setClosable","minWidth","minHeight","horizontal","vertical","_getItemsForSplitter","_getMinimumDimensions","css","_o$b2","_this3","_timeout","_eElement","_oDocument","document","_eBody","body","_nButtonCode","_nDelay","_nDistance","_nX","_nY","_nOriginalX","_nOriginalY","_bDragging","_fMove","onMouseMove","_fUp","onMouseUp","_fDown","onMouseDown","button","_getCoordinates","x","y","one","_startDrag","abs","clearTimeout","find","pageX","pageY","TypeError","_class2","_keys","_values","_nextLevel","parseInt","_o$a","_this4","_containerElement","tabDropPlaceholder","_$highlightDropZone","side","_a$a","_this5","_activeContentItem","settings","hasHeaders","popout","showPopoutIcon","labels","maximise","showMaximiseIcon","close","showCloseIcon","minimise","_dropZones","_dropSegment","_contentAreaDimensions","_dropIndex","_setupHeaderPosition","_$validateClosability","_sided","createTab","_$hide","activeItemIndex","setActiveContentItem","_$show","activeContentItem","removeTab","hideTab","_isClosable","_resetHeaderDropZone","hoverArea","_highlightHeaderDropZone","_highlightBodyDropZone","_$getArea","right","bottom","innerHeight","toggleMaximise","toggle","_side","keys","ceil","isNaN","F","G","u","S","P","B","W","v","_t","virtual","R","U","createElement","_class3","_reactComponent","_originalComponentWillUpdate","_container","_initialState","_reactClass","_getReactClass","_render","_destroy","ReactDOM","render","_getReactComponent","getElement","componentWillUpdate","_onUpdate","getState","setState","unmountComponentAtNode","_config","component","getComponent","glEventHub","eventHub","glContainer","extend","props","React","_o$b3","_this6","_layoutManager","_dontPropagateToParent","_childEventSource","_onEventFromThis","_boundOnEventFromChild","_onEventFromChild","isSubWindow","_propagateToParent","_propagateToChildren","__gl","__glArgs","createEvent","opener","initEvent","createEventObject","eventType","eventName","dispatchEvent","fireEvent","openPopouts","getGlInstance","_$onEventFromParent","_class4","_Error","_this7","message","node","_wrapNativeSuper","_o$b4","_this8","selectionEnabled","_onHeaderClick","tabsContainer","tabDropdownContainer","controlsContainer","_updateTabSizes","tabsMarkedForRemoval","closeButton","dockButton","tabDropdownButton","hideAdditionalTabsDropdown","_hideAdditionalTabsDropdown","mouseup","_lastVisibleTabIndex","_tabControlOffset","tabControlOffset","_createControls","setActive","reorderOnTabMenuClick","_canDestroy","_showAdditionalTabsDropdown","tabDropdown","_getHeaderSetting","_onPopoutClick","attr","popoutWholeStack","target","select","outerWidth","tabOverlapAllowance","tab","outerHeight","z-index","margin-left","_class5","titleElement","closeElement","isActive","setTitle","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClickFn","_onTabClick","_onCloseClickFn","_onCloseClick","_onCloseMousedown","html","stopPropagation","_o$b5","_a","_this9","_contentItem","_originalParent","_area","_lastValidArea","_onDrag","_onDrop","_undisplayTree","_$calculateItemAreas","_setDimensions","_minX","_minY","_maxX","_maxY","_width","_height","_setDropPosition","constrainDragToContainer","_updateTree","_$onDrop","_$setParent","dragProxyWidth","dragProxyHeight","_class6","_action","_o$a2","_this10","componentName","_a2","componentState","_element","_$setSize","shown","_$shown","_o$b6","_this11","isHidden","_contentElement","_s$b","_this12","_dimensions","_parentId","_indexInParent","_popoutWindow","_id","_createWindow","screenX","screenLeft","screenY","screenTop","toConfig","parentId","indexInParent","__glInstance","_$closeWindow","getWindow","root","getItemsById","_createUrl","_serializeWindowOptions","innerWidth","menubar","toolbar","personalbar","resizable","scrollbars","status","open","_positionWindow","_onClose","setInterval","_onInitialised","clearInterval","blockedPopoutsThrowError","join","minifyConfig","localStorage","setItem","href","moveTo","focus","popIn","D","w","ES6","_a$b","_this13","_isFullPage","_resizeTimeoutId","_components","lm-react-component","_itemAreas","_resizeFunction","_onResize","_unloadFunction","_onUnload","_maximisedItem","_maximisePlaceholder","_creationTimeoutPassed","_subWindowsCreated","_dragSources","_updatingColumnsResponsive","_firstLoad","_createConfig","transitionIndicator","_typeToItem","stack","unminifyConfig","_n","_$reconcilePopoutWindows","maximisedItemId","_createSubWindows","readyState","ready","init","_adjustToWindowMode","_setContainer","_create","_bindEvents","_adjustColumnsResponsive","forEach","_itemConfig","addId","deselect","prepend","removeId","Infinity","_getAllContentItems","_$createRootItemAreas","isPlainObject","closed","resize","getItem","JSON","parse","removeItem","popin","click","offsetHeight","margin","padding","overflow","closePopoutsOnUnload","_useResponsiveLayout","_findAllStackContainers","_addChildContentItemsToContainer","responsiveMode","_findAllStackContainersRecursive","default","propertyIsEnumerable","copyright","valueOf","writable","_c","style","display","appendChild","src","contentWindow","write","defineProperties","documentElement","_class7","_isVertical","_size","_grabSize","_createElement","stringify","_class8","_createDragListener","transitionElements","_class9","_class10","_toElement","_fromDimensions","_totalAnimationDuration","_animationStartTime","_measure","opacity","_nextAnimationFrame","minItemHeight","console","error","log","execScript","attachEvent","addEventListener","eval","expr",":","support","clone","each","cloneNode","nodeType","defaultView","parentWindow","scrollLeft","scrollTop","scrollTo","toUpperCase","proxy","isFunction","guid","String","defaultToWhiteSpace","offsetParent","test","nodeName","parseFloat","Zepto","__WEBPACK_AMD_DEFINE_ARRAY__","undefined","__WEBPACK_AMD_DEFINE_RESULT__","__WEBPACK_AMD_DEFINE_FACTORY__","__webpack_exports__","_golden_js_goldenlayout_js__WEBPACK_IMPORTED_MODULE_0__","golden","GoldenLayout","registerComponent","template","querySelector","webpackPolyfill","deprecate","paths","children"],"mappings":"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","file":"ui.b.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"GoldenLayout\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GoldenLayout\"] = factory();\n\telse\n\t\troot[\"GoldenLayout\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/* eslint indent: [\"error\", 2] */\r\n\r\nimport GoldenLayout from \"./golden/js/goldenlayout.js\";\r\n\r\nvar config = {\r\n settings: {\r\n showPopoutIcon: false,\r\n showCloseIcon: false\r\n },\r\n dimensions: {\r\n minItemHeight: 40\r\n },\r\n content: [{\r\n type: \"row\",\r\n content: [{\r\n type: \"column\",\r\n width: 40,\r\n content: [{\r\n type: \"component\",\r\n componentName: \"template\",\r\n title: \"Game\",\r\n componentState: { id: \"client_wrapper\" }\r\n }]\r\n },\r\n {\r\n type: \"column\",\r\n content: [{\r\n type: \"row\",\r\n height: 65,\r\n content: [{\r\n type: \"stack\",\r\n content: [{\r\n type: \"component\",\r\n title: \"Main\",\r\n componentName: \"template\",\r\n componentState: { id: \"mainmenu\" }\r\n },\r\n {\r\n type: \"component\",\r\n title: \"Log\",\r\n componentName: \"template\",\r\n componentState: { id: \"log\" }\r\n }]\r\n },\r\n {\r\n type: \"component\",\r\n title: \"Music\",\r\n width: 30,\r\n componentName: \"template\",\r\n componentState: { id: \"music\" }\r\n }]\r\n },\r\n {\r\n type: \"row\",\r\n content: [{\r\n type: \"component\",\r\n title: \"Server chat\",\r\n componentName: \"template\",\r\n componentState: { id: \"ooc\" }\r\n }]\r\n }]\r\n }]\r\n }]\r\n};\r\n\r\nvar golden = new GoldenLayout(config);\r\ngolden.registerComponent(\"template\", function (container, componentState) {\r\n let template = document.querySelector(`#${componentState.id}`);\r\n container.getElement().html(template.content);\r\n // TODO: support multiple locales\r\n // container.setTitle(document.querySelector(`#${componentState.id} meta[name='frame-title']`).getAttribute(\"content\"));\r\n});\r\n\r\ngolden.init();","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}
\ No newline at end of file |
