VTTES Userscript Auto Update
🧩 Syntax:
// ==UserScript==
// @name VTT Enhancement Suite
// @namespace https://justas-d.github.io/
// @version 1.28.19
// @description aka R20ES. Provides quality-of-life and workflow speed improvements to Roll20.
// @author @Justas_Dabrila
// @updateURL https://justas-d.github.io/roll20-enhancement-suite/vttes.meta.js
// @downloadURL https://justas-d.github.io/roll20-enhancement-suite/vttes.user.js
// @match https://app.roll20.net/editor
// @match https://app.roll20.net/editor#*
// @match https://app.roll20.net/editor?*
// @match https://app.roll20.net/editor/
// @match https://app.roll20.net/editor/#*
// @match https://app.roll20.net/editor/?*
// @grant GM.xmlHttpRequest
// @connect cdn.roll20.net
// @run-at document-start
// @webRequest [{"selector":{"include":"*://browser.sentry-cdn.com/*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://www.datadoghq-browser-agent.com/datadog-rum.js"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://cdn.userleap.com/*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://www.google-analytics.com/*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/js/jquery-ui.1.9.0.custom.min.js?*","exclude":"*://app.roll20.net/js/jquery-ui.1.9.0.custom.min.js?n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/v2/js/jquery-1.9.1.js","exclude":"*://app.roll20.net/v2/js/jquery-1.9.1.js?n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/v2/js/jquery.migrate.js","exclude":"*://app.roll20.net/v2/js/jquery.migrate.js?n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/js/featuredetect.js?2","exclude":"*://app.roll20.net/js/featuredetect.js?2n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/v2/js/patience.js","exclude":"*://app.roll20.net/v2/js/patience.js?n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/editor/startjs/?timestamp*","exclude":"*://app.roll20.net/editor/startjs/?n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/js/d20/loading.js?v=11","exclude":"*://app.roll20.net/js/d20/loading.js?n=11&v=11"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://cdn.roll20.net/production/vtt.bundle.js","exclude":"*://cdn.roll20.net/production/vtt.bundle.js?n*"},"action":"cancel"}]
// @webRequest [{"selector":{"include":"*://app.roll20.net/js/tutorial_tips.js","exclude":"*://app.roll20.net/js/tutorial_tips.js?n*"},"action":"cancel"}]
// ==/UserScript==
unsafeWindow.enhancementSuiteEnabled = true;
const now = Date.now();
// @UserscriptScriptFetching
GM.xmlHttpRequest({
method: "GET",
url: `https://cdn.roll20.net/production/vtt.bundle.js?n${now}`,
onload: (response) => {
console.log("Userscript got vtt.bundle.js response:", response);
unsafeWindow.USERSCRIPT_VTT_BUNDLE_DATA = response.responseText;
}
});
function boot() {
!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},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 o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},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=42)}([function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){var t=e.replace(/\\/g,"/").split("/");if(t.length<=0)throw new Error("Invalid dirname given.");return t[t.length-1]+".js"}},function(e,t,n){"use strict";var o,r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};t.__esModule=!0,function(e){e.rerender=function(e,t){var n=e.nextSibling,o=e.parentNode;e.remove();var r=t();return n?o.insertBefore(r,n):o.appendChild(r),r},e.createElement=function(t,n){for(var o,a=[],l=2;l<arguments.length;l++)a[l-2]=arguments[l];var s=null,c="function"==typeof t;c&&t.name&&t.prototype instanceof e.ElementBase?s=new t(n).render():s=c?t(n):document.createElement(t);if(!(s instanceof HTMLElement))return console.error($(i||(i=r(["JSX Render must return a valid element: elem is not an instance of HTMLElement"],["JSX Render must return a valid element: elem is not an instance of HTMLElement"])))),console.table(((o={})['"type" argument']=t,o.Type=typeof s,o.Value=s,o)),console.trace(),null;if(a){var d=document.createDocumentFragment(),u=function(e){for(var t=0,n=e;t<n.length;t++){var o=n[t];if(o instanceof HTMLElement)d.appendChild(o);else if(Array.isArray(o))u(o);else if("number"==typeof o)d.appendChild(document.createTextNode(o.toString()));else if("string"==typeof o)d.appendChild(document.createTextNode(o));else if(null===o||void 0===o||"boolean"==typeof o)console.log("JSX got an unrenderable child value, assuming it's control flow related: type: "+typeof o+" value: "+o+".");else{var r=[];for(var i in o)r.push(o[i]);u(r)}}};u(a),s.appendChild(d)}var p=function(e){return e.startsWith("on")},h=function(e){return e.substring(2).toLowerCase()};for(var m in n)if(n.hasOwnProperty(m)){var f=n[m];if(p(m))s.addEventListener(h(m),f);else if("className"===m)if(f&&Array.isArray(f))for(var g=0,M=f;g<M.length;g++){var y=M[g];!y||y.length<=0||s.classList.add(y)}else"string"==typeof f&&f.length>0&&(s.className=s.className&&s.classList.length>0?s.className+" "+f:f);else"style"===m?"string"==typeof f?s.style.cssText=f:"object"==typeof f?e.apply_style(s,f):void 0!==f&&console.error("Unknown style attribute type: "+typeof f+", "+f):m.startsWith("data")?s.setAttribute(m,f):s[m]=f}return s};var t=function(){return function(){var t=this;this.elementRoot=null,this.render=function(){var e=t.internalRender();return t.setRoot(e),e},this.rerender=function(){return e.rerender(t.getRoot(),function(){return t.render()})},this.setRoot=function(e){return t.elementRoot=e},this.getRoot=function(){return t.elementRoot},this.dispose=function(){t.getRoot().remove()}}}();e.ElementBase=t,e.apply_style=function(e,t){for(var n in t)t.hasOwnProperty(n)&&n&&(e.style[n]=t[n])}}(o||(o={})),t.DOM=o;t.SidebarSeparator=function(e){var t=e&&e.big;return o.createElement("div",null,t&&o.createElement("div",{className:"clear",style:{height:t}}),o.createElement("hr",null),t&&o.createElement("div",{className:"clear",style:{height:t}}))};var i;t.SidebarCategoryTitle=function(e){return o.createElement("h3",{style:{marginBottom:"5px",marginLeft:"5px"}})}},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(0);!function(e){var t=function(){function e(e){this.getAllHooks=function(){return window.r20es.hooks},this.filename=r.default(e),this.isDisposed=!0}return e.prototype.installFirstTime=function(){},e.prototype.installUpdate=function(){},e.prototype.dispose=function(){},e.prototype.internalCanInstall=function(){return!!this.getHook().config.enabled&&(!!this.isDisposed||(console.error("Attempted to install module when it's not disposed."),console.table({"Module filename":this.filename}),console.trace(),!1))},e.prototype.internalInstallFirstTime=function(){if(this.internalCanInstall()){try{this.installFirstTime()}catch(e){console.error(e)}this.isDisposed=!1}},e.prototype.internalInstallUpdate=function(){if(this.internalCanInstall()){try{this.installUpdate()}catch(e){console.error(e)}this.isDisposed=!1}},e.prototype.internalDispose=function(){if(console.log(this),this.isDisposed)return console.error("internalDispose called on module that is already disposed!"),console.table({"Module filename":this.filename}),void console.trace();try{this.dispose()}catch(e){console.error(e)}this.isDisposed=!0},e.prototype.setConfigValue=function(e,t){var n=this.getHook(),o=this.getHook().config;if(e in o){var r=o[e];o[e]=t,window.r20es.save_configs(),o.enabled&&"onSettingChange"in this&&"function"==typeof this.onSettingChange&&this.onSettingChange(e,r,t)}else console.error("Tried to set config of key "+e+" to value "+t+" but key was not found in the config of module id "+n.id+'"')},e.prototype.getHook=function(){if(!("hooks"in window.r20es))return null;for(var e in window.r20es.hooks){var t=window.r20es.hooks[e];if(t.filename&&t.filename===this.filename)return t}return null},e.prototype.toggleEnabledState=function(e){var t=this.getHook(),n=void 0===e||null===e?!t.config.enabled:e;if(!t.config.enabled||!n){var o=t.config.enabled;t.config.enabled=n,window.r20es.save_configs(),o&&!n?(console.log("disabling"),this.internalDispose()):!o&&n&&(console.log("enabling"),this.internalInstallUpdate())}},e.prototype.install=function(){var e=this;"r20esInstalledModuleTable"in window&&("r20esDisposeTable"in window&&(console.log("Installing module filename: "+this.filename),!(this.filename in window.r20esInstalledModuleTable)?(console.log("First run"),this.internalInstallFirstTime()):(this.filename in window.r20esDisposeTable&&console.error("DUPLICATE MODULE FOUND: "+this.filename),console.log("Calling install update"),this.internalInstallUpdate()),window.r20esDisposeTable[this.filename]=function(){e.dispose()},window.r20esInstalledModuleTable[this.filename]=this,console.log("DONE! module ID: "+this.filename)))},e}();e.Base=t;var n=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.installFirstTime=function(){this.setup()},t.prototype.installUpdate=function(){this.setup()},t.prototype.setup=function(){},t}(t);e.SimpleBase=n;var i=function(e){function t(t){var n=e.call(this,t)||this;return n.setup=n.setup.bind(n),n}return o(t,e),t.prototype.installFirstTime=function(){window.r20es.isLoading?(this.earlySetup(),window.r20es.onAppLoad.addEventListener(this.setup)):(this.earlySetup(),this.setup())},t.prototype.earlySetup=function(){},t.prototype.setup=function(){},t.prototype.installUpdate=function(){this.installFirstTime()},t.prototype.dispose=function(){window.r20es.onAppLoad.removeEventListener(this.setup)},t}(t);e.OnAppLoadBase=i,e.getModule=function(e){return"r20esInstalledModuleTable"in window?window.r20esInstalledModuleTable[e]:null}}(t.R20Module||(t.R20Module={}))},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},r=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var i,a=n(15);!function(e){var t,n=this;function i(){return window.d20.engine.unselect()}function l(e){window.d20.engine.select(e)}function s(){return window.currentPlayer}function c(){return window.currentEditingLayer}function d(){try{var e=window.d20.Campaign.attributes.jukeboxfolder;return JSON.parse(e||"[]")}catch(e){console.error("[getJukeboxFileStructure] failed to get fs due to exception",e)}return[]}function u(e){return window.Jukebox.playlist.get(e)}function p(){return window.d20.Campaign.activePage()}function h(){return window.d20.engine.canvas.getObjects()}function m(t){for(var n=0,o=h();n<o.length;n++){var r=o[n],i=e.try_get_canvas_object_model(r);if(i&&i.get("id")===t)return r}return null}function f(e,t,n){n?($(document).on("mancerroll:"+t,function(e,o){$(document).off("mancerroll:"+t),n(e,o)}),window.d20.textchat.doChatInput(e,"chatbox",t)):window.d20.textchat.doChatInput(e)}function g(e){window.d20.textchat.incoming(!1,{who:"system",type:"system",content:e})}function M(){window.d20.engine.redrawScreenNextTick(!1)}!function(e){e[e.NumericAscending=0]="NumericAscending",e[e.NumericDescending=1]="NumericDescending",e[e.Alphabetical=2]="Alphabetical",e[e.AlphabeticalDescending=3]="AlphabeticalDescending",e[e.Card=4]="Card"}(t=e.InitiativeOrdering||(e.InitiativeOrdering={})),function(e){e.Map="map",e.PlayerTokens="objects",e.GMTokens="gmlayer",e.Lighting="walls",e.B20Foreground="foreground",e.B20Weather="weather",e.B20Background="background"}(e.CanvasLayer||(e.CanvasLayer={})),e.is_using_new_ui_preview=function(){return null!==document.body.querySelector("#master-toolbar")},e.getBackgroundStyle=function(){return window.d20.engine.backgroundColor},e.setBackgroundStyle=function(e){window.d20.engine.backgroundColor=e},e.setupImageDropTarget=function(e,t,n){var o={model:{save:t},updateModel:n};window.d20.utils.setupAvatar(e,o)},e.getCanvasMousePos=function(){return window.d20.engine.mousePos.slice()},e.onInitiativeChange=function(t){return new a.EventSubscriber("change:turnorder",t,function(){return e.getInitiativeWindow().model})},e.setCanvasObjectLocation=function(t,n,o){var r=e.try_get_canvas_object_model(t);r&&r.save({top:o,left:n})},e.getBlob=function(e,t,n){return void 0===n&&(n=5e3),new Promise(function(o,r){e._getLatestBlob(t,o),setTimeout(r,n)})},e.getCampaign=function(){return window.Campaign},e.canEditCharacter=function(t){var n=t.attributes.controlledby;return!!e.isGM()||(!!n.includes("all")||!!n.includes(e.getCurrentPlayer().id))},e.getHandout=function(e){return window.Campaign.handouts.get(e)},e.createCharacter=function(e){return window.Campaign.characters.create(e)},e.create_handout=function(e){return window.Campaign.handouts.create(e)},e.setCanvasObjectDimensions=function(t,n,o){var r=e.try_get_canvas_object_model(t);r&&r.save({width:n,height:o})},e.getCharacter=function(e){return window.Campaign.characters.get(e)},e.getAllCharacters=function(){return window.Campaign.characters.models},e.rerender_character_sheet=function(e){try{e.view.$el.dialog("close"),setTimeout(function(){e.view.showDialog()},500)}catch(e){console.log(e)}},e.getAllPages=function(){return window.Campaign.pages.models},e.createRollableTable=function(e){return window.d20.Campaign.rollabletables.create(e)},e.getRollableTable=function(e){return window.d20.Campaign.rollabletables.get(e)},e.getSelectedTokens=function(){return window.d20.engine.selected()},e.unselectTokens=i,e.addTokenToSelection=l,e.selectToken=function(e){i(),l(e)},e.hideTokenRadialMenu=function(){window.d20.token_editor.removeRadialMenu()},e.hideTokenContextMenu=function(){window.d20.token_editor.closeContextMenu()},e.getCurrentPlayer=s,e.set_zoom=function(e){e>2.5&&(e=2.5),.1>e&&(e=.1),window.d20.engine.setZoom(e)},e.getCanvasZoom=function(){return window.d20.engine.canvasZoom},e.getCanvasWidth=function(){return window.d20.engine.canvas.width},e.getCanvasHeight=function(){return window.d20.engine.canvas.height},e.getCanvasOffsetX=function(){return window.d20.engine.currentCanvasOffset[0]},e.getCanvasOffsetY=function(){return window.d20.engine.currentCanvasOffset[1]},e.getPageById=function(e){return window.Campaign.pages.get(e)},e.isGM=function(){return window.is_gm},e.getCurrentLayer=c,e.generateUUID=function(){return window.generateUUID()},e.generate_repeating_uuid=function(){return window.generateUUID().replace(/_/g,"Z")},e.getCurrentToolName=function(){return window.d20.engine.mode},e.advanceInitiative=function(){window.d20.Campaign.initiativewindow.nextTurn()},e.addTokenToInitiative=function(e){window.d20.Campaign.initiativewindow.addTokenToList(e)},e.addCustomItemToInitiative=function(e,t){window.d20.Campaign.initiativewindow.addTokenToList("-1",e,t)},e.rerenderMacroBar=function(){window.d20.player_settings.refreshMacroBar()},e.rerenderJournalMacros=function(){window.d20.player_settings.refreshRollsList()},e.orderInitiativeBy=function(e){var n,o=((n={})[t.NumericAscending]=".sortlist_numeric",n[t.NumericDescending]=".sortlist_numericdesc",n[t.Alphabetical]=".sortlist_alpha",n[t.AlphabeticalDescending]=".sortlist_alphadesc",n[t.Card]=".sortlist_card",n);if(e in o){var r=o[e];$("#initiativewindow_settings").dialog({modal:!1,title:"Turn Order Settings",beforeClose:function(){}}),$(r).click()}else console.error("Invalid initiative ordering: "+e)},e.getInitiativeWindow=function(){return window.d20.Campaign.initiativewindow},e.getJukeboxFileStructure=d,e.setJukeboxFileStructure=function(t){e.getCampaign().save({jukeboxfolder:JSON.stringify(t)})},e.createPlaylist=function(e){return window.d20.jukebox.addFolderToFolderStructure(e)},e.addTrackToPlaylist=function(e,t){return window.d20.jukebox.addItemToFolderStructure(e,t)},e.getSongById=u,e.getJukeboxPlaylists=function(){for(var e=[],t=0,n=d();t<n.length;t++){var o=n[t];if("string"!=typeof o){for(var r=o,i={id:r.id,name:r.n,mode:r.s,songs:[]},a=0,l=r.i;a<l.length;a++){var s=l[a],c=u(s);c?i.songs.push(c):console.warn("Tried to get song id "+s+" but the query returned a falsy value. Skipping")}e.push(i)}}return e},e.playAudio=function(e,t){window.Jukebox.soundObjs[e]=window.soundManager.createSound({id:e,url:t})},e.createSong=function(e){return window.Jukebox.playlist.create(e)},e.makePlaylistStructure=function(e,t,n){return{id:window.generateUUID(),n:e,s:t,i:n||[]}},e.getInitiativeData=function(){return window.d20.Campaign.initiativewindow.cleanList()},e.setInitiativeData=function(e){window.d20.Campaign.initiativewindow.model.save({turnorder:JSON.stringify(e)})},e.getCurrentPage=p,e.getCurrentPageTokens=h,e.doesTokenContainMouse=function(e,t){return window.d20.engine.canvas.containsPoint(e,t)},e.getCurrentPageTokenByUUID=m,e.try_get_canvas_object_model=function(e){return e._model?e._model:e.model?e.model:null},e.isUsing5EOGLSheet=function(){try{return window.d20.journal.customSheets.workerScripts[0].includes("5th Edition OGL by Roll20")}catch(e){return!1}},e.enter_measure_mode=function(){$("#measure").trigger("click")},e.get_camera_x=function(){return $("#editor-wrapper").scrollLeft()},e.get_camera_y=function(){return $("#editor-wrapper").scrollTop()},e.set_camera_x=function(e){return $("#editor-wrapper").scrollLeft(e)},e.set_camera_y=function(e){return $("#editor-wrapper").scrollTop(e)},e.moveCameraToTokenByUUID=function(e){if(e){var t=m(e);if(t){var n=$("#editor-wrapper")[0];n.scrollTop=Math.floor(t.top*window.d20.engine.canvasZoom)-Math.floor(window.d20.engine.canvasHeight/2)+125*window.d20.engine.canvasZoom,n.scrollLeft=Math.floor(t.left*window.d20.engine.canvasZoom)-Math.floor(window.d20.engine.canvasWidth/2)+125*window.d20.engine.canvasZoom}}},e.primitiveSay=function(e,t){window.d20.textchat.doChatInput(e,t)},e.say=f,e.say_async=function(t){return new Promise(function(n,o){var r=e.generateUUID();$(document).on("mancerroll:"+r,function(e,t){$(document).off("mancerroll:"+r),n({event:e,roll_data:t})}),window.d20.textchat.doChatInput(t,"chatbox",r)})},e.sayToSelf=function(t,n){var o='/w "'+s().get("displayname")+'" '+t;n?f(o,e.generateUUID(),n):f(o)},e.saySystemRaw=g,e.saySystem=function(e){g('<span style="background: rgba(6,26,45,255);\n color: whitesmoke;\n border: none;\n display: inline-block;\n padding: 8px;\n box-shadow: 0px 0px 10px rgb(6, 26, 45);\n "\n>\n'+e+"\n</span>\n ")},e.ping=function(e,t,n,o,r){n=n||s().id,window.d20.engine.pings[n]={left:e,top:t,radius:-5,player:n,pageid:o||p().id,currentLayer:r||c()},window.d20.engine.pinging={downx:e,downy:t},M()},e.getFabric=function(){return window.exports.fabric},e.renderAll=M,e.setGMLayerOpacity=function(e){window.d20.engine.gm_layer_opacity=e},e.hasBetteR20=function(){return void 0!==window.d20plus},e.set_drawing_brush_size=function(e){window.d20.engine.canvas.freeDrawingBrush.width=e},e.ensure_character_attributes_are_loaded=function(e){return o(n,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return e.attribs.backboneFirebase?[2]:(e.attribs.backboneFirebase=new BackboneFirebase(e.attribs),[4,e.attribs.backboneFirebase.reference.once("value")]);case 1:return t.sent(),[2]}})})},e.wipeObjectStorage=function(e){for(var t=e.length,n=0;n<t;n++){var o=e.length-1;if(0>o)break;var r=e.models[o];if(!r||void 0===r)break;r.destroy()}e.length<0&&console.error("FAILED TO WIPE OBJECT STORAGE!")}}(i||(i={})),t.R20=i},function(e,t,n){"use strict";t.__esModule=!0;t.copy=function(e,t){var n=Object.assign({},e);return t&&(n=Object.assign(n,t)),n};var o=function(e){if("currentTransform"in e)return e.currentTransform;if("getTransform"in e)return e.getTransform();if(e.mozCurrentTransform){var t=e.mozCurrentTransform;return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}};t.getTransform=o,t.nearly_format_file_url=function(e){var t="";try{var n=function(e,t){var n=e.indexOf(t);return n>0?e.substring(0,n):e},o=e.lastIndexOf("/");t=n(t=n(t=n(t=e.substring(o+1),"."),"?"),"#"),t=decodeURIComponent(t)}catch(n){t=e}return t};t.getRotation=function(e){var t=o(e),n=Math.atan2(t.b,t.a);return n<0&&(n+=2*Math.PI),n};t.findByIdAndRemove=function(e){var t=document.getElementById(e);t&&t.remove()};t.mapObj=function(e,t){return Object.keys(e).reduce(function(n,o){var r=t(e[o],o);return void 0!==r&&null!==r&&n.push(r),n},[])};t.safeCall=function(e){try{e()}catch(e){console.error(e)}};t.removeAllChildren=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},t.escapeRegExp=function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")};t.replaceAll=function(e,n,o){return e.replace(new RegExp(t.escapeRegExp(n),"g"),o)},t.replace_all_and_count=function(e,n,o){var r=0,i=new RegExp(t.escapeRegExp(n),"g");return{result:e.replace(i,function(e,t,n,i,a){return r+=1,o}),count:r}};t.safeParseJson=function(e){try{return JSON.parse(e)}catch(e){alert("File is not a valid JSON file.")}return null};t.readFile=function(e){return new Promise(function(t,n){if(e){var o=new FileReader;o.readAsText(e),o.onload=function(e){t(e.target.result)}}else n("No file given.")})};var r=function(){return console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.log("====================="),console.error("getBrowser call in userscript!"),console.trace(),chrome||browser};t.getBrowser=r;t.injectScript=function(e){console.log("Injecting "+e);var t=document.createElement("script");t.async=!1,t.src=r().extension.getURL(e),t.onload=function(){t.remove()},document.head.appendChild(t)};t.strIsNullOrEmpty=function(e){return null===e||void 0===e||e.length<=0||e.trim().length<=0};t.createCSSElement=function(e,t){var n=document.createElement("style");return n.innerHTML=e,n.id=t,n},t.LOGO_SVG_B64="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMzMuNTYxbW0iIGhlaWdodD0iNTQuMjkzbW0iIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMzLjU2MSA1NC4yOTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48dGl0bGU+UjIwRVMgTG9nbzwvdGl0bGU+PG1ldGFkYXRhPjxyZGY6UkRGPjxjYzpXb3JrIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIi8+PGRjOnRpdGxlPlIyMEVTIExvZ288L2RjOnRpdGxlPjxjYzpsaWNlbnNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyIvPjxkYzpkYXRlPjIwMTgtMDgtMjI8L2RjOmRhdGU+PGRjOmNyZWF0b3I+PGNjOkFnZW50PjxkYzp0aXRsZT5KdXN0YXMgRGFicmlsYWE8L2RjOnRpdGxlPjwvY2M6QWdlbnQ+PC9kYzpjcmVhdG9yPjxkYzpkZXNjcmlwdGlvbj5odHRwczovL2dpdGh1Yi5jb20vU1NTdG9ybXk8L2RjOmRlc2NyaXB0aW9uPjxkYzpjb250cmlidXRvcj48Y2M6QWdlbnQ+PGRjOnRpdGxlPkpheSAiVmFuZ3VhcmQiIEZvdGhlcmdpbGw8L2RjOnRpdGxlPjwvY2M6QWdlbnQ+PC9kYzpjb250cmlidXRvcj48L2NjOldvcms+PGNjOkxpY2Vuc2UgcmRmOmFib3V0PSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIj48Y2M6cGVybWl0cyByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zI1JlcHJvZHVjdGlvbiIvPjxjYzpwZXJtaXRzIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjRGlzdHJpYnV0aW9uIi8+PGNjOnJlcXVpcmVzIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjTm90aWNlIi8+PGNjOnJlcXVpcmVzIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjQXR0cmlidXRpb24iLz48Y2M6cGVybWl0cyByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zI0Rlcml2YXRpdmVXb3JrcyIvPjxjYzpyZXF1aXJlcyByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zI1NoYXJlQWxpa2UiLz48L2NjOkxpY2Vuc2U+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY2LjYwNCAtNDYuOTQ1KSIgZGlzcGxheT0ibm9uZSIgb3BhY2l0eT0iLjIzNTkiPjxpbWFnZSB4PSI2My41MzYiIHk9IjQ1LjgxMSIgd2lkdGg9IjQxLjQ4OCIgaGVpZ2h0PSI1OC4wNSIgb3BhY2l0eT0iMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFQTUFBQUZVQ0FJQUFBQisrcDJLQUFBQUNYQklXWE1BQUZ4R0FBQmNSZ0VVbEVOQkFBQWcgQUVsRVFWUjQydXlkZDN4VTFicitjN2oyQnRLa2QwTHZ2VGZwWFJDa2lBS0MwanNvZ2lnZHBVZ1ZsQzZJVkpFbVNPL1NEbFdRTHIxRSBRSnJvOFp6cjcvdkxjMTEzM3owek8zc21rNUNFckQveW1jenNzc3F6bnZkNVYzblhQLzc2NjYrUUdKK1V5WC84NHg4aDhTbGFhanNPIFZIV0NXSkZMVlhTczZJVHhzSTVIZGp5NFl6cXNZM1Z0L3lNZUsvRXBUdEoyUExMalU5eE1zVUNOL1A3NzcvSHRGRi9uY1pDelc3Um8gOGRSVFQ1VXNXYkpldlhxSkVpV0toMTNVcGYvODV6L3IxcTNic0dIRHlaTW5SNHdZa1RWcjFuaGtSMkU2ZXZSby8vNzlmL3Z0Tno3WCByRm16VFpzMlR6NzVaRHdLZzU3QTlOU3BVKy9jdWZQZi8vM2ZyNzMyMnB0dnZobXZScUkyNWN5WnMyblRwbi8rK2Vmenp6OC9aODZjIFNwVXFmZjMxMS9GQURHSTZkZXBVL2ZyMWUvWHFkZS9ldmNjZWV5eExsaXl4SGRheHlZUDg4TU1QcjEyNzl2UFBQeU1CYjl5NGtTNWQgdXVIRGgrZk9uVHNlbDVGSjkrL2ZwMkpYcjE2ZE1HSENmL3pqSDhXTEZ3OExDNXN3WWNKenp6MFg3MEZHVStyZHV6ZC9VWDdnKyt6WiBzOGVPSFd2Y3VERmYvdnJyci9FQURVeFN6NTA3dDBLRkNpdFhycnh3NGNLNWMrZW8yK3ZYcjcvMTFsdHhBTlloc1d2VUQ2TUp3ZUJFIExscTBDRUQvKzkvL1RwRWlSZHEwYWZ2MDZWT3JWaTNNYUR4ZVhXTDY5T25UdUM1NzkrNjllUEVpMytDZ2x5aFJJblhxMUdYS2xJa0QgT2lRMmNUYnU0K1hMbDlGL2lPeC8vZXRmcjc3Nktwb2I2M25seXBVSER4NTA2ZElGaitmNDhlTm84WGpnT2lSY3c1czNidzRkT3JSNiA5ZW9ZdlV1WEx2SE40NDgvbmo4OHZmRENDODJhTmFPZTVhekhJenM2MGpQUFBKTXFWYXFyVjY5V3FWSUZibjd4eFJmTGxpMzd4Qk5QIEFPNHpaODZVTGwwYTVWMitmUGxPblRyUllMUldQSWc5RXdKNnlwUXBSWW9VbVRkdkhuVjE5KzVkakY2Q0JBbVNKMC9ldm4xN1VONm8gVVNOZ1RUMVQyM0dndlArRmZZOHRlVVgvd1N1b2tXKy8vUmJhUG5ueUpLMEZoU083TWFQZ2U4T0dEV3ZYcmdYbE1CQzRqMGV6b2VvMSBhOWIwNk5Gang0NGRCUW9VcUZhdDJsZGZmUVdVZ1RXbWI4R0NCYk5uejg2WEx4OVZDbVhFbVZMSHl0bjFVYU5HYmR5NHNYdjM3bSsvIC9UYXVEeTMzNUpOUERoZ3dJRjI2ZE52Q1U4YU1HWWNQSDU0dFd6YlBlK1BNV2piM294L1VESDArWjg2Y2hRb1Z3aTBCNHNDYVNuajIgMldmSGpoMjdaY3VXUC83NFk4YU1HY2lTdUZUd1dJbHM5SFRMbGkxaDYvcjE2OU5PTURmMEEwbFBuandaTGY3enp6OVBuRGdSMGNJMSB6WnMzOThSeG5BUTMzWnRLc0gySk5zTlRwUFBYcmwyN2N1WEtYTk82ZFd0TW5MamdyYmZlZ3JOMzd0ejU2YWVmeHIzeDA5aWtSdjQzIDAvLzFYK25UcDErMmJObnZ2LytPR1QxNjlDZ2ZBQ3ZNaEZnc1hMaHdqaHc1ME4rWTRQUG56NWNxVllycjdSMDZiaUdidnVvSmF6VGIgNE1HRGYvMzExN1p0MitKaFV3bmR1blVENjhocjZMbGd3WUxBZmRHaVJiVnExYXBYcjE3Y00xYXhFdGtrSEoxcjE2NnRYNzhlVjVJMiBnNWFnY0toby8vNzlOQmlXTjNIaXhGRDc5OTkvZi9EZ3daSWxTOXE4b3JqSDJkWVMvZWMvL3hrM2Jod0M0Nm1ubmtLd1ZhOWVIWVllIE9YSWtYZjNCZ3dkVUY1YXRiOSsra3laTnlwQWh3OENCQStPWURvbmR5Q2JoREczZnZoMVYvY1liYnh3NmRFZ2ozTGR2Mzc1dzRRSWsgQkttblNKRUN1SzlidDI3djNyMVkyNlJKazhaaHpqWWwrdTIzMzFBZ0sxYXNTSklrU2NlT0hTdFdySWpudlhqeFlpUUhWY1JsQ1JNbSBiTldxRmE0MlYvYnIxdzl3eDBrSEl4WWpHNlpKblRyMTVzMmJVU1A0OWNBWFRRSlBYNzE2Tlh2MjdOQTJVT1lDQ0F6ZGN2anc0Y3laIE02ZEprMGF3NWt0UDh4MnJZUzFrZzkyZVBYdGlxU2dwSDRvVUtRS3NiOTY4MmFaTm00c1hMMkxUWUhFb0hIQlRYZlQveG8wYngxbmYgK2E5WW5nWU5HcFFuVHg1YUVYQS8vZlRUajRXbjBOQlFyVm1EczQ4ZlB6NTA2RkQ0KytXWFgwYUk2eTdZL2ErNGtreFpybCsvM3FKRiBpN1JwMHpaczJCQlRkdmZ1WFdxQVB0eWtTUk1BalFqQnljNmJOKytjT1hOd1RsRGU5KzdkK3l2dXBsaVBiQkJNSTBIU3lFb2dEcEdyIENWOS8vWFhhVlEyUENzZVhTcDQ4ZVpreVpiWnMyY0tYL0FUQnh3MVlDOW0zYnQxcTJyUnB5cFFwNjlldnYydlhyai8rK0VQRjM3bHogNS9QUFAwK2QwT0h4UFVhTkdvVkxYYUpFaWExYnQvNFZwMU5JSENnRHhyZHc0Y0tsUzVmR1NhTHhhRVdVQnZ3Tld3dkVKUGhzeUpBaCBnSnQyeGN2a2U5bytEcFJkL1JQRlRFL0dxOFo3eG1NRzY0STEvbUs2ZE9uK0t6emhSRFpyMXF4RGh3NFlOTnpIditKNkNva2J4VUNOIDRBbDE2dFNwVHAwNkVMYmFNbVBHakFhK3REVHMzcnQzYjVxZlBuRDU4bVdFQ3BZNnRoZWNBb0xqMXExYmcyQTZMWjJaUWduV2ZLQ3IgUC9aM3lwbzE2OVNwVTdOa3lZTE92bkhqUmp5eVkwY0NxZVhLbGNOSG5EZHZIaEEzelRsNThtVEJWOHlOOUd6WnNtVzJiTm1xVmFzRyAyMEZwc1YySzNMOS9mOFNJRVRseTVNQnFBV3NWVTcvaU1qN3p6RE5VQXAwY1FUSnMyTEN5WmN1Qzd3VUxGdnoxQ0tRNE1qNkF2c1I1IG9xVlIyKys4OHc0dHFoRURTUHJLbFN2NnpGL05KK05qd2Q5anhveEJtOGJxcmZ1VTR0aXhZK3ZXcmNOTVRaOCtIVDYyVHRQaVVtdnggSThpR3pxbUJVNmRPRlN0V3JFR0RCby9FdW9JNDAwZXh5OWpaMUtsVDQvdlhxRkhqcWFlZXdwc0U0bHI0cW12K0U1NnVYYnRXcUZBaCBHdnZUVHo5RmY4ZlM4b0xhNWN1WFU5SzhlZk91WHIxYVJUTTZCS0JUZGhCUEpTQ3NWNjFhbFR0M2JvelZnUU1IL25vMFVvSTQwMFZwIHhmYnQyL05oeXBRcFhidDJ6WlFwazRaNGQrM2F0WERoUWkxdEZYTW5TWktFYXlDOFJZc1dqUm8xS3BhV0Y3OTU0c1NKbHk1ZHFsKy8gZm9VS0ZVem9RdzMvRFJnd1FET0xDUk1tckZ1MzdxRkRoOExDd2xBaitmTGxDM2xFVWx6cXBxaVI4dVhMNHlQQ1RCMDdkb1MvNGExRSBpUkxseXBYcmwxOStNWHdtZVlvc3laOC9mOEdDQlhHellsMUpUNTQ4V2JSb1VmS1BtYUpvOExmRy9pZ2puOXUyYll1dzFxSmZTUDNxIDFhdndPbDM5eHg5Ly9PdVJTUW5pVWk5RlVQYnMyVE5CZ2dUWTRsYXRXaUU1bm56eVNmN0ZseG85ZXJTUXpiOFFHM3pXdUhGajhUb1ggWTlaalVURlJVNjFidDc1Mzd4NzlGcjhRRUt2czRxbjkrL2RUSElySk4vaUxFUGFKRXlkKy9mWFgwcVZMNTh5Wk0rU1JTUW5pV0hscSAxcXdKYlo4NWM0WjJoYTV3RmlGcDRMdGd3WUt6WjgvK1QyOE9UNGtUSng0NGNDQzN3SFpEaGd6WnVuVnJyQ2pnN2R1M08zZnVmUDc4ICthZWZmcnBObXpaZ2w5STk5dGhqNnJjUU5tWEJJbEZBY0YreVpFbElIYTg2UTRZTU9CVWhqMUpLRVBlS1JIdnpkK3JVcWJCVXVYTGwgY0NWcFprejJtREZqQUxGaGR3Q0JhelYrL0hnUUFBc0NDRFJNREMvYWI3LzkxcVZMRjFnWnBWRzdkdTFHalJyaFhXaHJNOFVCM0JzMyBidHk5ZTdkS2x5ZFBIdnI1OXUzYk1WbmdPeTd0bDNsRWtZMmZsRDU5ZWczdVZxNWNPWFBtekdwNFdoMjdMRzRUdUVGODRjS0ZKMDJhIGhCYi8rZWVmOGJyNEcyUExCUi8zNmRNSHJVd1JtalZyMXF0WEx6cXRXUXVsMFNFNjZvTUhEeWdYMEs5VnF4YnlldFdxVmJBNzZpWGsgRVVzSjRtU3BLbFNvQUE2Kyt1cXJoQWtUdnY3NjZ5QUFZb09ZSjA2Y2FQYTNDeE9BQURtT040a2l2M0Rod3Z2dnYzL3IxcTJZV2FqaCB3NGZ2M2J2M3pwMDc3ZHExNjlDaGcwTEFtVTBWSUp1dWUrVElFYTFocEh2VHBZOGVQUXBoSTBXU0pVc1dqK3k0a0twVXFZSmZkZWpRIG9TUkprbUNVb1M0TjkrN2N1UlA0bXMzdDhpYjVXNlJJRVhDRFd3blQ5K3ZYejRpV21KTm16NTY5ZHUzYTMzLy92VVdMRm0rKytTWTAgL0pkbEh3MmYvL1d2ZitFS2czdStwRCtEL3VUSmsydTZFY01WOHVpbHVJbHNZSTJHeHRsYXVYSWxyQVpZUmR1WEwxLys4c3N2cldFYiBCRzUrS2xHaUJBSWRIT3pidDIvY3VIRXhxamhrYWU3Y3ViLysraXM5c0huejV0YkJFQ1U2TGZRTVlRdmxkZXZXbGRRK2ZmcjBDeSs4IGdBV0xSM2JjU2ZoTW9IYkhqaDNRR3pLNlFJRUNHdXVGK1VDOGRWSmRnaHMvc2xxMWFpKy8vRElBV3JaczJhWk5tMkxPWU1pSUVTTXUgWGJxVU5tM2F0bTNid3NRYTBiTnVDNkpjRUhaWVdCaGZVbGdrK1AzNzkrZlBuNC9IbVQxNzltZWZmVFllMlhFbmxTcFZLbW5TcEdqciBYYnQyMGVRalI0NUVtQUxvYytmT2JkaXd3YVkzTkE3STlhKzg4a3JxMUttdlhMa0NiZCs4ZVRNbUZHVG8wS0hIamgzRHFyejY2cXRaIHNtVFJBblRiYVRLZ2Y5dTJiUnJmckZldjNvMGJON0JSQnc4ZTVLNDZkZXFFUEpJcHppSWJIS093YVd5YW5MYkhuY3FkT3pjTkQ0M2ggV2ZLOTlXSysxOXA4R0s1eDQ4WWdBd0V3ZXZUb2gxNEtPdUg2OWVzUlViZ0tGU3RXeExCNGJuS2pMR3ZXcktFM1NvWjk4TUVIVjY5ZSBKZi9BSFlJdldyUm9QTExqb0NCNTRva25MbDY4Q01xaFBTMmxBQWQ0bHZDeExVaWFYRW1rQzVxa2ZQbnl2L3p5eTV3NWM4REhROHcvIC9pSitMVGxIVHFCRGtpVkxKcmEyYlUvRy9zeWJOKytQUC80Zy8waHFoRFVmZHUvZXpmYzVjdVNJay92U0gzVms1OCtmUDNIaXhIZnUgM0VHUVhMOSt2V1RKa2hrelpnUVdLT2tsUzVaNHJsK1Zma1dUZE83Y0dmS0QrUkNzRDNHWjY3UnAwN1p2MzA2R08zYnNxSTF3OG5ldCAxOUEvc1RENGp2UllHTDFMbHk0Ly9mUVRYOUtmNmRYbHlwVUxlVlJUWEVZMldoTW8wK1JRcjVRMGZDemEvdnp6ejIyQ3hJQWJRT1RMIGx3OXdjK1dlUFhzMmI5NzhVREtQYXRKYWwyTEZpcGt0dWw2RFNTeGF0QWgva1orUVVvZ1dPdVNQUC81NDc5NjloQWtURmk5ZVBCN1ogY2RhUEJLQjRqY2dQb0Z5N2R1MFhYM3dSTTMzMjdGbnRtTEpkTDhFTmpGNTc3VFVwMUVHREJqMlVuRStlUEJsRmxDSkZpdDY5ZXlkSiBrb1JTZUlVMVpmbnNzODhvR2gyeVRKa3k5RXl1aE9uNUpuMzY5SEVqeG5zOHNyMGtHaHZkK2VEQmc0TUhENTQ2ZFFwOUVob2FLa0F2IFhyellxOUlBUUtBRTM2dE5tellwVTZhRS8vRFBvbDloVDVreUJYbU40aTljdURENThSb2RoZnpUUDArZlBnMk9VZUdha2VIZmE5ZXUgY2YyalROaHhIOWtwdzlPZmYvNkordFR4UWpoVlVES1ltRFJwa3ErNVJzRE5OWGhqMEI3WDRIcEdjN1pIamh3SlpOSDZLR3p3N1JtWCAwS1JseTVacE5KT3MwZ2NvS2Y0eHJnWDMwaXZpa1IyWEU5SVRaSVNGaFVGbS9BdVRZZHlCd3ZuejU4RzZyN3U0QmJMdjA2Y1BFRWU2IGJOaXdJZG95L01jZmY4eWRPNWZlVmFWS2xTeFpzaWdBdnRjcm9lb1pNMllvdmdvZUJSRC8rZWVmRldvVm14Tlh3NXJGSS90L3BmYlQgVHo4TmpRRmwvaTFSb2dUaWxiYUh2MUVhdnU0Q1RBQ2xRSUVDdUdYUTlzY2ZmeHh0Z3lTQUZZVU5XTnUxYS9mTU04ODRoQ0NrRDBpSyB3TkNGQ2hYaUc5eUpXN2R1Y1l0MXQyODhzdU5teXBVckZ3WWRYQ0pJK0RkMTZ0UXZ2ZlFTTWhSd2E4R1FBN2hCVFAvKy9ibm02TkdqIDBiTTE0YmZmZnBzOWV6WjVhOVNvVWRxMGFaMlBsYnB5NVFyZ0J0bUtFTVEzbEpFbjBDc0tGaXdZait3NG5oSW1UQWhKMC95WExsMFMgWHBHa21yOVFKRFFIWkFPc1BIbnk1TXlaRXgvMHl5Ky9qSWJjTGxteTVNS0ZDK1RxcmJmZUVtRTdjUGEyYmR2b0ExeUEreWlTUG56NCBNTjRuTnhZcFVpUWUyWEUvWmM2Y1dSRUFCVzdBaXRJQUU2aFNPTS9oUmtDRDJuNzMzWGRCOXY3d0ZLWDV4UDlic1dJRjc2cFdyUnE2IEdjUGkwUEg0YWZYcTFTSGhZL0NwVXFYU3VUd29MdnB3NHNTSjRmdDRaTWY5aEFhRnhqRFQvL3puUC9tM2NPSENva05nSGVGQnFlQUcgUTQvVGlmYkZzWXZTZkg3Ly9mZG56cHk1Zi85K2x5NWR0TEhBZ2JCQjlzR0RCelVBcjMxREZKQk04bSthTkdrZXFiTjRIbDFrNTgrZiBIeWZ5WC8vNjE1NDllL2czVTZaTVNKU1E4S25wMjdkdk8zTTI2Ym5ubmdOcWVHYW83YXRYcjBaZFBwY3ZYNDRMbURWclZpM2VjcjRZIHYxWXhybEJXaWlLQ0ZNRXVnV3lNVXNnam54NEpaT00xUXJwODBEWkhDRHRwMHFReTlGb2lGeUZ0TjI3Y0dDUkI4Q3RYcm95aVRGNjggZUJIQ3ZuYnRXdS9ldlNGc1o0VWRFajdrQjd2emdVNnJVOVFRUzFnaDdzVW94U1A3a1VBMkVBSFpBQlJHMU93TUxwZDhyd2c1V0FpaiBKMVNzV0JIZkx1cEdTQ0RzR3pkdWtNbXFWYXU2MFJJVVJIczZnWEs2ZE9uNFFNZlF2MmowZUdRbmVFVEttVEpsU3N6MHZYdjNJRVd4IHVMN0g1WXB3b0ZwYXRrK2ZQam9FNStUSmsxR1J3eDA3ZHVEZ05tellFSjgxUXNJT0NUKzRRK0ZUTUVFUzVTcGFva1NKcExYaWtmMUkgSksxZmZmRGd3Ymx6NS9nM1E0WU1DdENCQnJENlpMNlFEWlhteXBVTDVrYlBSTVV5a3JObnp3SnJYTUQyN2R2N1d0TW5uamFmMFZFcSBnamFENlV4MUlUdmVmWHlFa0kxYjlzUVRUMkMrVDV3NGdac0ZHdFQ4di96eWl4WEJEclROTFIwN2RrUXdIRHg0TU9qWjI3eDU4K25UIHArbHZtVE5uOWx5RTdUV0hWbVRUMzhMQ3dwRGQ5SW9VS1ZMRXcvb1JRbmJhdEdtZmV1b3BPQTh4aXJsLzdMSEhoQktIcFNNMlNIRkwgelpvMThkdFFJODRqS2dHa3ZYdjNvaTdhdFd2bnZPN1V1alJLeUpZZ29Vc2dxNkI4dnBIbWprK1BDckpmZlBGRmhZdS9mdjI2L2xXNCBlSkR0M25hblQ1OWVwd09qaVlPWU54Q3B5RTgxYXRSd0lHeGJ3dHJvU3MzUm9HZis5YTkvQWYzNE9acEhDOW5hVHdDYVJkTFF0dlpCIG1wQlJibWo3OGNjZjc5cTFLNFM5ZS9mdUlPWU5XTk5iY3ViTWlaQnc0enNxM2IxN1Y3NEI1ZUlEYW9RU2tVUHJnYTd4eUk3N1NRY0EgaElRdjZnOEpEK0toNzNWaW9udHdseXRYamxzMGx4bXM5TU1QUHlCRjZEUE82NTlzQ1c5WWFrUjM2WEJIN2VPTWgvVWpoR3k0V2R3bSBramFSS1UwQVN6ZXdsb3pKbGkwYmJtZ1F3Ly90MjdlUFBCUXZYdHk5TGxLSWUxMnZwUzhHMmVyQThlbFJRYmEyeVFqWitKRWE3Qk15IDNFZngwMGF5cGsyYm9uRWQxbmI3bFhqN3dZTUhreWRQbmpoeDRoQi9Eb1EzVjBMZTlFK2RrMGIyRWlaTUdBUGpFc1lqTzZvU0psc3ggZVdsMVNFNVRqeHFvOW10TEFiY1VMRmlRN3JGMzc5NmdaT3pjdVhNNHRRMGJObFQyL08ydS9MMS8vejVQQU5rcXBvN29qa2QyZ2tlbiBxRExUMEJ2SWxwYVF1K1l2c2xPbVRNbWpncldpRldHRDlDOVFvQUJ3OURjblFqYVl2bkRoZ3M1UGs1c2JEK3RIQzlrbVFkZ21KSVBpIGtQakZrUys4OEVLT0hEbU9IVHNXbE16QS9XU0EzdUorVk9SL1d1N3Y4VUU2NnA0OWUvVFozNDRhait3WW5WeTJwWWI1QU1UaHc0YzEgcWFINUY0ZWQ0VjdUYzg4OWh4K0pBT0Foa2MvOG9VT0gwQTg2YXNNdlpIT1hpb0EwT25Ma2lEbUJ5UmJWTFI3WnNkczdkT21yNmVKOSArL2FoVFdXN25iZlFlazEzNzk3RjRVTkNhTXR3Sk5PWk0yZm9LdTVISGszU0FnRWhtNXpvczA2bmpvZjFvNlZHaEI2YVgzRUxCSVdFIENSUDZpMno0VmF1NnRmY3NNZ2xRb291d0d6cEsySy9PbkRadFdpTklidDY4cWJYYWZnM1B4eU03RmlzUUc0eUU3MnZYcmduWi9PdnYgeGlvTi9KMDdkNDRQUjQ4ZWpXUXB3c0xDeU5VdnYvd1N3TUJJNXN5WnphcEF6QWlQMGpnUHJtUThyR014c2dOWXFJbW54VjIzYjk5VyBSQTRSWHZiczJmMUZ0aDZGR29uOG9yL0xseS96S0xBWUFMSXpaY3FrZFYzZys4R0RCN0ErSlRJYmJlTFRJNlJHRExMNVlDTDI1c2lSIEk0Qk9CVzBEeDhoUDFzRDZtdTNYTkkxZktVbVNKQW9meFY4QWpUdXJVNlpjcmw2TVIzYWNRalpPSlBURzM2ZWZmbHJIMDJUTGxpMkEgK1JFOFNQUk01SFgyL3YzN0ZVWTFnRjB3WkQ1Um9rVElEeHhRUHRQVHdIUThzaDg1Wk5Qa0lCczlxcUVEdkVBK0FDbE51ZnVidExxZiBwMFZ5OFBqdzRjUGFPcURqd3Z4RmRvWU1HWFE3QlNFbm91MFllNTVsUExLakpOMjVjd2RXMC9tMm9CazBnQW5ZenQvQmJLVzBhZE5xIHVDMlNwelNKOVNGc2g3Q1VEcVlqZGVyVTVKOXkwVEcwY0FDUnJkMlE4ZWxSUVRidC9jc3Z2MEJwS0d5UXBOTzNBdkRiakJxaGg0Q2sgU0E2UGFERXRIU3l3bllzS3EzbjE2bFV0N09ZYnloV2xFVkhpa1IyekVwWWFaR3MzRFNTWExsMDZ5RklITmx0SGY3WHp5czBENlJzOCBoM3VQSHo4ZWNLNjBRQzhrL0VBd2w4aTI1bERlc0lKeGtwbG5ubm1HVHFzMUpQR3dmaVNRclJYWWUvYnNVWkRTRjE1NDRkZGZmMzNzIHNjY2tVb1V0WGZiNzc3OXJSV2lFRU5mcGRTYSthMkJKUTM0aDRiT0piZ0NOK0VGVFdhY1k2YTQ0a2FHaG9YU3dsQ2xUYXFObmNQZjcgeENNNzVySzFQcXhhdFVyT0ZzUzJZOGVPL1Buenc5bFcrR290djlFbldvRGhhNllhRFFCTmNzM1BQLytzWFZzQnBCOS8vRkc3QitnbiB2akt2UENpZjlFWjVpaWJiZEl3a1NaTFVyMS8vL1BuemlCQ3RYNFd6VFhjTlNnWEcwaVZXajRRYXVYTGx5dW5UcDJGWjJCbzgwVlJkIHUzYlZTTEFraW93N3lOQzZQN1dsbG1Gb2RhanRnV2J5RDEwYjhLclJzTEF3QTFuUFg3VkR3bE5WRzkyaTZVWVVkcWxTcFRKbnpvejEgMERUa3ZYdjNnaHNRT1phQys1SGc3RW1USnQyNmRRdXhvYm5EMHFWTEZ5MWFGRVFpY0UxY1B4MEdHZkwzTEtQNUM2MENNaHQ1RzNXTyAwZzFzM05DS2JFL2NBRm05MFN4dDFWL3JpZXZpY3AyazA2RkRCODArL2hhZTVzK2ZIMFRhRGdsb0xVTThzcU1jMWxqcUpVdVdhS29QIEVFQ1EvZnIxUTBJQWtaZGVlc25yUEtLbUowM3lsQ1ZnM2NydWdTVVR1dHYya1AvK094bGtlMTFCZnZic1dZVk94dFM4L3ZycldiTm0gbGJiaHhuMzc5czJZTVNPS2RGMDhzbU5LQXNmbnpwMHpDNWNyVnF3SVp3TUlrSjB3WVVLRXN2T3hCMTZ4eGUxNldtUjJIQ3JVaVZ4RCAyMHUxYXR4NVN3UmU0M1BQUFllcWxvN3EwNmNQZDVFZlRkbE1tREFoV0pPUnh2R0lYZUNPNDV4Tjg2OWZ2eDdvbUlVaUFKMmZVcVZLIDlWL2g2ZUxGaXc3b2xCYlh3aU5ydTJxMkx5U2doVmttYWQ3UjYrbzhOMXNpRGgwNnBLTXVGUlNxVWFOR0ZDb2tmRk1jejZSY0kwYU0gQ0Jhc1l5TnRKNGpEc09adjM3NTlFUjVJWWVnTjk2dHk1Y3FLTGMyWDhCeGUxNTA3ZDZ5aC9idzJyUlZoZWl6SVZuK0l6Q0c1R3B3aCBTUk5iY2VObUR4dUdDSWVZSHF1dFBaVHh3dzgvUko5UUxoQlBaNTQzYjU1ejBRTEFkeXdDZDF6bTdPM2J0MnR3RjB5anM1OTk5dG5KIGt5ZHJJQUlkQWhTMDd1L0VpUk4rVWRmTm16ZnBHSklRa1FrUG1TRkRCZzJLeTdzMVV0N2xoc2pyMTYrZk9YTUdoalk3elpvMmJWcXMgV0RFeXBzQlJYREJtekppZzAzWnNBWGVjUlRhYytzVVhYK2pjWG5BRGh0cTNieTk3TFZJRTZQeTlkT21TeTJYV1JtNmVQbjBhTHRUZSBoY2lFaCtSZUlmdkdqUnM3ZCs3MGF5OE12ZXZxMWF0YTFHWFluZndncitGc3VxdEdUdGF1WGV1bTM4WkpUUkpua2YzdHQ5OXFLa1FEIDBwa3laWHIzM1hldEZ5UlBuaHlaQVFnT0hEamcxNU12WDc2czgwVnA3OXk1YzBkR2pTalVJS0ppMzc1OWZqbWorL2Z2cHovb0RCM3IgOTFteVpIbm5uWGZvekpTYUhJTCtzV1BIQmxlUXhCWnd4MDFrMzc5L2YrN2N1VUFRMDB3RG96MldMMTl1YzhneVo4Nk1TRVdvK0xVNCBEaTdrc2VmUG45Y3B3RG81TjdCRXJyUmlCTU55OXV4WjUvUDdiRWxNckpNZ2JUOTk4TUVIT1hQbTFFZzhjbXZ2M3IxQk9ZRWsxbW1TIHVJbnNLVk9tSERseWhIWUZmemhWQXdZTU1NZDNXTVVBbElrcDl5c1FIbDNsNHNXTFdxUEhrOU9uVHgrWmZISTdpSUZmRVVVNm5jUGwgalZ5TW1xSnJlY1lVcGtUTGxpMlRlMHB2b2MvZ1hRUWxIbHJzb3UwNGlPeHo1ODR0WHJ6NHlwVXJvSkMycjFTcFV0dTJiVDB2UzVreSBKYVpjQzZIY3Q5TnZ2LzBHWnl0Y1NaSWtTZVM5Qlp6eTVjdUhKU0dmUEZDUkZWemVxQlc1OU1uczJiTjcxVGtqUjQ1VXNBZWNYVHpwIG9NeTMyN0lYdzhFZEI1RTlhTkFnQ0Z2R0hSMDhaODRjcjRoQmlpQzErUW5wWWtLenVuRk1BZlNEQnc5MHZtZ2tUNFFwVXFRSTZGVHYgaXZETVZXdWkzNEphc090ckgrZXJyNzdhcGswYnpkMWN2MzU5MHFSSlFSa0J0STVGeGlNN1d0T0tGU3Z3SFJXWUZPRHkyV0ZkQjNvVSBmTU5xN3M4d29HbkR3c0kwU3gvNVl4ZUxGeS8rOU5OUGsxV1FXcUJBQVpkM2tRSDVCaFRRalBaNHBoRWpSbUN2UXNKWG9SdzdkcXhiIHQyNlBsQ3NacDVDTld1M1NwUXNpR0Q0RE1jaE5KSWZEOWVYTGw0ZjJFQVB1a1kzYjk5TlBQOUdpdUo1VnExYU5aSWF6Wk1tQ25xRzMgUUtqdVk2bHQyN1pOUzh4MXdLbERRcFhwYkVoc3dxcFZxMmJPbkJtUDdOaVhzT25ObWpXN2NPR0NCT2pFaVJNalpNSDgrZk1uVFpvVSBBajV4NG9SWnp1cWNGUFNNMW4zKytlY2pmd2cwa2dZbkVtUURhL2ZCWGIvNzdqdTBGdjZyS05raDBmMzI3Tm1EZkFLQ2RQaisvZnNIIEpleDNyQUIzM0VGMnYzNzlmdmpoQjJBTm1UVnMyTEI1OCtZaEVhM3JvQU1BYnBvZit6NS8vbnczN3RIaHc0ZUJpSUtQQmVWQTBSbzEgYW1qajJmZmZmKy8xQWx0T3pwdzVnOUdnRzJPT1NwUW80Y2JJNEQ1aW1xUjU2UHp4eUk1TmFlZk9uV1BHakVGWGdCSnM5R2VmZlJiaSBicmtTSFNCUm9rUlE0THAxNjJ4NndHdWJnVCs5QlVRR0plY3Z2L3l5RGozYnZYdTM1eHYvK2p1WmJ6Ny8vSE9rQ0ZxclhMbHlMc2NyIHExU3AwclJwVXpvd3o0R3pHelJvOENpQU95NGdHeXFxVnEyYXpveER0bjc2NmFlKzlsOTVwdERRVVB4SWFCNk5NVzdjT09mVzRrdVUgQUh3SnNDSlVBaTRUL1RCejVzd2hmMGYxZHI0WXhZSkxRRW1USlV2V3BFa1Q5MjhaT1hKazl1elp0UXh3K2ZMbFU2ZE9qVHl5WS9neSBxVmlQYklpMmR1M2E5KzdkQTliUTBtdXZ2WVpmNk1rckRxbERodzZvYlFUMG1qVnJ6S0ZoWHUrOWMrZU9EcmZHODR1OHlGWjYvUEhIIFM1Y3VqZFMrZi8vK3BrMmJITHJXZ3djUEFDam9wOS9TazE5NjZTWDNiM24yMldkSGpScjF3Z3N2S1BaZjkrN2RnM3M4V2d3RTk4TkIgZGhBcllzU0lFWWNPSGRMbUFNanZ3dzgvOUF2V0llRmozdGhyYUJnbmNzaVFJUnBRTTV4a0ZRUGJ0MjhIM0x3SUNSSGhobk9ib25DNCBvRzdkdXVoZ0hOazVjK2JZYmpTUk5mbE0wZEFTaXJMNXpqdnYrRnRSRlNwVXFGZXZIclFOQmRDTE9uZnU3TmNJZXV3VEpIOUZleks3IG9TTC9xRzNidHFWSWtZSzJSMDRrVHB4NDJiSmxDaUJOOHVzNUVQOGJiN3lSSzFjdVVJNlBoYnk1ZGV1V2Z1SlJKcXV2dnZxcWpoTEYgVlhWZldPc1R2S2E3ZCs5QzJ3QXVkZXJVT3Z6T2RoY083a2NmZlZTb1VDRXdUYWRDa3dSV1hSUUs4WU5sMDVvQ3VuSGttL0kvZjZlZyBOR2dRVXl4R05yVUpDc0cwQXByQmZDNlI1RFZkdkhpeGZ2MzZhQXpBelljbFM1YmN2SGxUYjlFRFlYU1FCN0pSQXNLZnkwenFkdWNzIElYd3BBakpqNWNxVnV0aVVZdlBtelIwN2RpeFlzQ0N3TGxPbXpNS0ZDeU5UYWZQbno4ZGoxbjRpTk5YWnMyZmprUjE4WkVleUxyWnUgM1VvamFUdDNxbFNwOE1BaWcyelNzV1BIR2pSb2tEZHZYc2k3Yk5teXNEak9GaUtCQi9KMzdkcTEycTd5N2JmZnVpK21TMlQvOU5OUCBHVE5taEVjYk5teW9ONUpPblRyVnFWT25PblhxNU11WGp5emhQOHljT1RQeTlZOTlFRzNUUy92MTZ4ZDVmakhwa1VhMndYVGtLK0wxIDExL1hObGlvRHBmSVd0RUJQNVB1MGFaTm15SkZpdVRNbVROLy92enAwNmVITE9mTm0zZisvUG5LbFN1RHZENU5xa0VBQUNBQVNVUkIgVktKRmk1NDhlVExDbm1NNm1FdGtJMGlRMGZRY3BNNkpFeWZRRzdWcTFjcVFJUU0yUkRuQkltM2N1REVvVFhEMDZGSGVvZzFwYWRPbSAvZU9QUCtJa2JUOEVaQWVsRmc0ZlBxekZ6WUFiQkdnSnFFMFdCNWIrL1BQUGFkT213WlNBR0dXU0pFbVN3b1VMdzVyU3B1UEhqNzk5ICs3WjdFV0p0ZFllTXdkTUFOMW15WkRwdnNsS2xTcGdqMUFMOXFtTEZpbjM2OU5GQk5zRktOV3ZXMUdZY3ROeDc3NzBYait5Z3dUcnkgdFZDMWFsVkQyRjI3ZHJVYWhLQmtGU1dOb3UzU3BRdXFPa2VPSEJvSlFUQ2dldjNxdlM2UnJXMzJtQXVKcTlEUVVIaWFmOGVPSGF1USBFc0ZOMjdkdlZ6aFpPaEl1T0ZZb1dJSWs1b0E3NUtIQU9wSlZNR3ZXTENoTmhKMHBVNllqUjQ0RUhkbld0R0hEQnV3RHFuVGt5SkZJIEJYL2x0Zld6US9ad1dOZXZYNTg0Y1dKNDlLT1BQdEp5eFNoS21BaDZySUoyVXk0ODVyaEgydzl0cGlZeUs1dEhqeDZ0TURGUFBmVVUgOWhydktpaVBkWmdNUW95bVNaTUczOHQ1ZnNRV3pjeXZ6Q1JNbUJEbGd3cmk5aDA3ZGdRY1ZNM2xTcXdxVmFyUWk3U3BEQW9QMXNSTiB6Qm5ZVGhDZEErZEJ3ZCtYWDM1NTVzd1piUjFIbUNJWm94VFdwSUVEQjlMODdkdTNCM2t2dlBCQ0ZMVXIyb0J1Z3dKQitRQTFiVWlMIHV0U2tTUlBjUndpYlBOKzVjNmR2Mzc1eGJENHlRZlRET2pJSjl3N3BxU0I5VHo3NVpPclVxV3ZYcmgybE9iOTI3ZHFCQXdjUW8vNU8gYUFlUTZLaThBbTJBbFFqV25uTmZpUkxoRnROUmRRekkzcjE3RHgwNkZCS0hVaXhiTjRMQ2xydWpnQVRvRUhnMFN0L1lyMTgvR3I1YiB0MjZwVXFXS01DSlVoRWJEZWFZZGtaQXlaY3BPblRvaFJTWk1tQkRWNTB4ckJFYUJ3RkYzZ3dZTkNveUFvc2hVUGtMSXhrQXJmaTROIGdKdUZNRFdMbjZJb0lhOFhMbHlZTkduUzFxMWJpOTdjMjZYQTJodE01ODZkdTNIanhyZHUzVnExYWxXVWxnNnBUWGZGOUlXRTcrL2MgczJmUHQ5OStHNVExSkRGQmtFUUhzajJMR2xpcmp4OC8vdmp4NC9LK2FROEFWNkZDaFNqTithZWZma3BIZ3N5ZWYvNzV3RTRoODFlUCBhWXg1eUpBaFFMeG56NTVSV2pvOHlBd1pNanp6ekROYWNSVVdGalpuenB5Z3hHOTRSRGs3TUZqLyt1dXZtelp0b3ZaQnRvYXhVNFNuIHFNc25YdVBvMGFPeERNMmJOOWZRYjlEN3VWZTQ4eTdLVmE5ZXZYUG56a1gxb1RPWk1tVjY4Y1VYRmVzUUE4VWJ2L25tbTNoa1IydWEgUEhueTJiTm5GWkNYbGdqS05rVG5OR1hLRlBSUGx5NWRubjc2YWZld2R1Wm1OOC9STllNSER3YmlYaU9sQkRGVnIxNGQ1MEY3YzZDTSAwNmRQZi9ubGw3WjQza0d4MG5FUTJVRXBKSVM5Yk5teUN4Y3V5SGQ4L1BISDRleGl4WXBGWGJacFppVEJzODgrMjY1ZHU4aXd0Zk85IHZuN1ZQc3Q4K2ZMaExrY3BiZU9DdzlubWdCN3ErZENoUXhzM2Jvd0RUbVNVSXpzb1pWNjZkT24rL2Z2RkpUd1F3Q0ZEczJiTkduWFogMXRFMmxTdFhqbVFVcUlCN3U0TFlZNTBDMkdUZzNwNUFFSEMyRGdIVUJkQUhaWTg4YlQ4U2FzUUdibit4RHBFTUd6Wk1ZOWdoNFVOaiBpc2NYZGNoR2NVTFlPRmc5ZXZRSXVHZWFHNjFQY1A4MHJuejU1WmNMRkNnQWJmdmExaDRVbHFHWVd1eGxEdVZadlhyMXZuMzdJdk53IGx5SEE0NExPamt3NVY2MWFSZXVhaDlBRytIYlFkdFRWM2FCQmcrN2R1MWVwVXFVaVJZb0VsNnBETEhHNEl4eXVwcVN0V3JXaUcydkogVnhRVnRtREJnbmd2MXMxdmRPejMzMy9mODR5Uk9NalprZFRLa1lIZ3paczNPM2Z1ek51bHJTVkZIang0a0NGRGhpaXFFYnpHYWRPbSBwVW1UQm9VZEdkSnlNL1lTNFRXTkdqVXFWYXJVbFN0WDVzeVpFMFhnTGx1MkxDRFcva2orNnZTY1RaczJiZG15NWVGSzBEak8yZWdRIHhTb29WS2hRcWxTcHRCUGszLy8rTjB3VFJZNGpCTW5mOHVYTEZ5OWVQUEpDMXRjRkxtRUtZVGR1M0RoWnNtUURCdzZNb3BGbStqQlYgaXRnRDFrbVRKcVVqOFM4MTBMRmp4OEFPbFl3aDNtUUNONjFsRGtpTzVvVGFtekpsQ2g5ZWVPR0Z0OTkrRzNmcXlTZWZ4RlpTZHpseiA1b3dLeCs3aXhZdHIxNjRORFExOTQ0MDNZa2duZitXVlYvTG56My8vL3YyaFE0ZjZkZUtIeXdSSjZ3QVFIVytTTVdOR0RUcWRPSEVpIEtLZVR4V2pPRGtvdjlQY2hpa053OSs1ZGJvUzNZQlFhQUE2akRmZ2JGWXVUNk1EZHVuWFRjcFFnRXJabndjMFprMjc0Z3M1Y3AwNmQgZE9uU0xWaXdJRmhIUEZvVGZKRWtTUkw2REZTdDRiLysvZnNyNXM3VXFWUFBuRGtUbUNQeHFLaVJBTktTSlVzMHNKb2lSUW9jbXV2WCByK3VVUkxtUDJNMmd2M0g3OXUySERoM0M5Tk9SWWxSVk5HellNR1hLbEgvKytXZmZ2bjNsZHdaM0tpUjU4dVRhSm9mZ3hqaWd4QkRmIFFCeDlqek1kemJBT1Z0RVNCRXhGQVhDMis4RWdGTjdZc1dOLysrMDM2TGxaczJZd2xqYW82NHhhbmZBU1hQVDg4c3N2bjN6eUNZUU4gaHNxVUtSTmNBMlVMRkdhT1VuZlppbFJDa1NKRmtHUjc5dXhSeU5iZzhxSTIvR0lNcVdRNk52UUJsZWc4a0ZXclZya1B3ZXkxTExkdSAzUXE2dXhKa3p2YnJmV2I0T2JBMGUvWnNSRFp2eEw5NTU1MTNkSll1VkswWkJPM2RDaTZ5TjIvZURMaHAycElsUzJvZFJZeHlxUnMwIGFLQ3pSNlpQbjY3eHVDQ0NHK0xRNlFoMEllcVdEM0EycnFRQ2U0OGNPZEpsMDN2Tmt2TmVqYWdEZDRLZ3Q0RlJid0UvQ29NNFk4WU0gYUJ2NFZxcFVLVk9tVENIaDh6VTZ5Sm5xMXE3MTRQcU9xRmhJaTJhSWZLaFN2eGE3dW16Q2JObXlVUTkwN0ZPblR1M2R1emU0M1N4MSA2dFNhSmNDcm9XNTFJR0RUcGsycERmclN0bTNiMXE5Zkg3Qk45aGVqc21PUmI5OEVMbk5zdFpzZ0wwcWR6bG16WnYzNDQ0KzhEaXRKIC9hcTB6enp6VEZoWW1NSmphd05mRUZYYXQ5OStpNDZIcTBKRFF6MVA2NHBxem5hWjRhcFZxNEsvbXpkdkJyQ0sybXk4OWFXekZZTVkgRHhWa1M4clhxRkVqYjk2ODVKTTNUcHc0MGMxeUFLK040ckQ2MTR4aldzL1FDWmI2VGVDK0pVaDM3dHk1ZHUwYXpDR3hvV05rdlQvWCB4N0hoRVNJZWJUMXo1a3orVWlPRkNoVkNHeGhrSzlZZVJJN085aHovc2dZSklKL3VLNGdyRVQvWUJHeHg5ZXJWbzAxNytOdjV5UnZhIEY4T3laY3VXeTVjdnV5OGRoazdoY3J6aWhtK2s3clNuWGVkY1N0d0RiaDFRaHRTR3VRTW91T2pmNjA5a1NTODZkKzRjT1lTMlFpeEIgT3FOdjFFOExsREZQTDczMEVqb0JUQjg1Y2lSRmloUys0bmtHUFBLcXVYVHFGL2dpRE1BM0wzcnZ2ZmVtVEpuQzk3S1l1M2J0Z2tpOCBBa1doR3Z4UzRULzg4QU92NE1sSmtpU3BYTGx5Vk9QWVYvajNDQjlMNVdOU3hIQ2pSNC8yS3o5YUZ1STFieFNjcmlLVGhUV2VNR0ZDIHAwNmRsaTFieHIvTm16ZlhpWlZ3eXVUSmt3T0JsdytNM3I1OVc1N2xoZzBiVXFWS0pjL1ZpclNITStwSEY4ZCswYWZwYlhRN3IwY0ggOFgxZzIvaFEyQnJEenBFalI3bHk1ZnIzNzkraFE0Y1ZLMWJBVWpxNGtiOUhqeDd0MWF1WDU4a3lSdXE1WDFGTnU0NGZQMTduTzJiUCBudDE5U1BsSXl2b1FqK0RxYnNDTklLRm9ZRzdObWpWbno1NTFDV3Y2T2REeHFoWW9QZzdpdkhuendMVENvV0NUQWZyUW9VUGZldXN0IGFyaE1tVEwwQ3Q0SVo3czBGRmF5ODFVb2tBMStWcTVjV2FSSUVmSVdGYk1UZ1NCYjZ4NHpaTWlBWXdHNHQyL2Y3a3hkN3BkRUF0bjkgKy9kVDNUdy9TNVlzd0JmeXVITGxpbVNpWkpuWmE4MnZiaFMvYzFxNmRPbWVQWHUwL2N3TllidVJtNEhsUkFPYXp0ZUFNNFhhd1hZSCBaWE03RDFteVpJbkJvcVMydERXR3NWdTNialFFam9mMmtrRTZic3B1alpUaXRVVDBTUnFPOXlaS2xNaUIxeDhDc2cwcm94YSsrKzY3IEd6ZHVIRDU4Mkt2WEVnQmhVNmNVRldId1kzaWlDckRDK2ZMbEsxKyt2T3lVaHY5UVpnY09IUEJyK3RlVEZ3SFRnZ1VMZEFJZHRSemggTUhiUWw0WFplRFRDNVhWd1N1Yk1tYWtCcmtSRTJhcmRYKzhaYnY3bW0yK29jT3lBb3JPU0dRaUxldEEydklzWEx5cmFHNnlQTElZRiAzS3hkTVVnRkFGN2RSL3JNMnJWcmVWR3BVcVdDUGk4UkJHU0hoSWMxQW5OMHdjOCsrOHhoNGxjcmJDSjhHcTFGZ1hXSUtOY0RPTDVKIG1qUnArL2J0eDQwYlY3Um9VV3BmQXlNb00rQ09oRUNsK2JzQnhOcjJ4NDhmLyttbm4zZ0xqMDJYTHAxekxVZCtic3lyMURaRFQyWjEgcS9ORFNwUW9vZm9FZGhpMGdET0RrdzFodzhUMEUxZ1pLRk85UERscjFxeGR1M1pGb2tqVGczdmNLdTNiUDMzNk5OMHBZRzJ0OVBYWCBYeU9sYUR1TkRVUmRTaERKSmtUNUZTeFk4UHo1OHdNSER2UWM3akYrcEJ0a2I5MjY5ZWVmZjlZcWVQRE5CM3BPang0OVhudnROUjF2IGg1TkIxY3ZWSzFTb0VGL0tLSHQ2a3c3QXNpNk1QbmJzR0ZLU0I1SlZYOGM4UnppcUZlR0FyaHY2MTEwSy9lRmMrWVVMRjlaWlpGQUogUGRNb1BYOHQ1T0RCZzdtZDU5Q2xxY3ovSHdndlFRSVFUSU5pRW5QbnpqMW16QmpjUjZTRkZqWG9HRzgzNTdjYm52WXNDTzA3YXRRbyBkR2JkdW5Xak5MeWJGMlNic1NIMzRNNlpNMmU5ZXZVd1ZYUkhCK2tTNFhQbXpwMkxkNmlsT2FBV0ZtbmR1aldBRGduZjFGUzhlSEV0IGl1SUNXTFp2Mzc0MENaazhjK2JNc0dIREFsQzAydEFLZWVpTmJvNmFqcUsxUHYrd3BBZ3ZSbzI4K09LTFpKNUtvT3h5MzNYSXZQc2MgcmxxMUNvK1F1K0NPRmkxYUFGbnFoRW9BM0tCY0I2UWd6enAxNmdSekszNlFYQjN1aXZDc1lkUEhQTFhmbTIrK2liM0ZhNHlRUjRLUCBiUGxuSWY0c1hzV1dGU3RXakx3T0dUTGsxS2xUWHFFUTRTQWdETFJ2M3o0eEVHWVJaeGtSQXRxQThoUGhTYTRKU2NNakVFUExsaTFwIEdENWpJbDFPeXlrL1pFWmRDR1R3UnJtUEx1czZXTHQ5UFRuYkpiTGhDQzFnSXYrWExsMUNWRkFFOVZXWGVRUFFzMmJOK3VXWFh5ZzEgRGRla1NaTnIxNjd4Tk9wVzRINHlQT2xFbnA0OWUwS3gvQ1FMTE9YdGJJdkUyWnBUcy83VXZYdDNNdHl1WGJ2ZzdsVHlRNDJRSWVzQyBlVGZnenA0OSs5dHZ2MDFoOEtiUkJsUzN2L25ZczJjUHBrcmRIYjNickZrenlnODV3UnhtY0JvY3ErcFJmaWRQbm16VXFCRkNpSHBFIGt5RDBYWnBqTlQ5bzRDR0lLSFU1dFdJVWpXUzdCTGY3Y1Z4b1Q3ZmZEMC8rTG0zRk5wNDRjWUozOFp6MzMzK2ZlcnQ3OXk1L01ZencgaU9iZ3lBeWFCSmRHQ3kxTmJFdGV0MjdkT3VkUlZFK25BcHFmTTJjT1RoUytLVkJ4czJrNlN0YU4yQ2FCM0lDYllxUE1VQTcwL284LyAvdGpVdFU0ZkRIR3hRQXBuU0VONElCVW5xWEhqeGhoQnlNbDRkYkFJS09jdi9FRk42Znh3SGVVSVl4MDVjZ1E1NU43MGt5czZFZ3lrIDBubmRWUm45UVROY01uZmV2SG1WUGRqM3dvVUxtbDkwT1hZR0N5eGV2SmlxcGhxclZLa0NjQzlmdmd3VDZVd21LWGdqbHpOa3lJRHkgUnYrMGJkdVdocEFaWDc5K3ZRT0plQTZlVU1sWTQyblRwdEY4eUVzM1Izb0hwZVlUdVBHVzNDZ1RPbUtEQmczZys1OSsrbW5CZ2dVSCBEeDYwL2txVk9ZTWI1V2NJdTNQbnpscDBwdkZPazVBb1pncEc4WjVwNDlLbFMvUGxyNy8raW5QamtyMWtXR2xSSFpFUkVyNXd3b2FuIEtJSjFoTXRGM05BMmpwMGh5UDM3OXdNbVRjUzR5Y0M0Y2VPd1ZDSGg1emNvVEE5Qzd2YnQyem9uRnBLMlRwcFFzVFFCYlZHeFlzVnMgMmJJcHoyZlBublhRZnJZNWZKeUJjK2ZPZmY3NTV6d2NFNUVzV2JJSUNUdksxMmQ3OG9mekt3RWlYS3N0L2hEcTFxMWJFVlhHbjlEQSBscTk3bHk5ZnJwUEJKR3lnWVRtTG5vSWVDaEV1WVZ6UkErb3RUWm8wZk1BZG5EUnBrc3VSZUcwTU16TVVjUFpmUG82akRqcSsvVjBMIDVaa0hqVlJJVXgwNGNBRE9kcm1hQUxwQkpVTXhWQ09PbzlhWGJ0KytuWnJVMW1uQXA4cTBXbU9RRFM3Tk9mT291TUdEQnpzUEZTaEMgSFI5V3IxNzl4UmRmZ0FyTVF0MjZkWkhzemlVTjRyN0VCSDRaUitlV2h2bWFObTBLRjRKT3VqVjQxWUNhL0VJSGN6bCsvSGpENkhBRCBWZXdKYTRFZVJxR1dLZitOR3plMEJoOGF3RlpvUS90MzMzMkhMSEdETGRvUzJ5TDNVY2lPem1paWtRekhZWGlSVW1DN0tMaWJvU2RxIGVQVG8wYWdSV2lSZnZuejE2dFVUNng4NmRFaGlCa0xCR25qV3ZGZ21kZXJVVmtPaGs0NDlNMmE2SEgvcGRVaEU3Q3EwalFoNTdiWFggSERBUTlEcFA0Rzh6T09TQSttM1lzQ0gyYThlT0hXKzk5ZGEyYmR2d0d5aU15dWxyTmVQUm8wZVBIVHRtcEJ2V0NvWHR0ZUh4UDZnbSBuVkNEMDJPRTlldXZ2NTRyVnk3ZVRxY2FPSENnZFVta3I4VHR2TmNVME9vMFI0K1lqdENPT2JTNm1kdmpTd3dqbWlwQzcxbkIzSUFhIHVFUmJkKzNhVlNDRGdMQ1dmQWxmUUtnRkNoVHdlanZJVHBreXBma1g5VEpyMWl6UHkyaG9XVlFlamkrRUNkV0NxaXRYcnJScTFjcGggdU5CV3dLQUU0a2tRQU1mWThtSDlESDgwYjk0Y2hOR3RtelZyaGw5NDh1Ukp4SmJEcU4vOCtmUEJtZmxYWTB4ZXI0UTJTcFlzeVYrcSBUL0dlemVFSFBYcjAwSWpCNGNPSDI3ZHZiMURySzBGVUdzQVJ6Vmc1ejFvNjV5cU8vR1M3ZTNEYnhoK00vQ0RuR3pkdU5PUFp2a1pVIGUvZnV2WExsU2h4SFJHT2RPblZNc004bFM1YW84dUZVaUtOY3VYTGVVWklnUVdob3FHRmNFTHh1M1RyUDVVQ3FMaEFNemIvNzdyc1UgRFREczNMa1QyWU5TdDNwTk52eDR3anFha08wTWJtdnpVRUUxYTliRVgwUm5ZL0tLRlN2V3MyZFBhc1FjSis3WlNEak9tbkVVcjFNRiBEdG1BYjRvV0xhcWQxZENWR1lIS256OC8vaERLaEFjQ2JqakpPYXc2K285bU5vVUtqTE1qV2Z2K3psbWFIRDRlbnN4RDZPRU9zN0M0IEUzVDE3Ny8vbnA0TXJJRnZwMDZkOUJNMWdKZ0JvRlIraGd3WkVIdm9TVi9QZ1ZBMHJLRU00K2RnQWJ4bWtxNHlZOFlNRkVpZlBuMVcgckZoQk0ybXJtOWVxaXdxMjlnL1pFWUxiZkU4WnFsU3BBbTNEQjIrODhRWlVPbWpRSUdRWjEzajI4Z3NYTGxCeW5XRVFFcjRFV1Q2NCBRLzFXcTFZTnhhTHBaZXZDaWNhTkczZm8wRUVMMDNEL2h3OGZQblhxVkFlZ2FCR3NKS1kxOXBkTHduNklDZUl3VGlSV1M0ZFIrVEpOIEhUdDJSSEp3R1c3Y3l5Ky9QSFRvVU5NcmdCMFZwVVcvc0xYemVCeTFWTFpzV2ZNWitOS2piTmRnbkJFcXRDbDJ1SFBuemp3V3dzYWkgMGpRNldTRWFSRWdneUxhOTIyd2hzN0VkRlljTmduM1IyVnhEelNKSThPMm9YTStZUXppQzFKSG1YL2czd3RNNXFIM01ZczZjT2JXMiBoSmFEUE15dlRabzArZVNUVDNMa3lNSFQ2RXNnRzNIcFZRako0L3lmZ3dQREY2akVUQkI3VFpxOVVyVnJ5TTgyUEtxRVFldlZxeGVPIHNyUTFTdmZqano4MkM5QzVIVjZnRWlnNFZJMkRGT0dKUDEyNmRLR3U2RWh5NG0zK0RHL1JOczNCZ3dkamVBc1dMTGhvMFNKb3EwYU4gR2w0ZDNDaUZkVWdBYS8xTURuenRQcExEVWFKRUNVb09LOEN5TFZ1MnBCTFhyMTh2VFdMek9iUkVRZHVLOEFVanpBQVByMTI3dG1MOCA4UW9iTVZPaGt5ZFBMbEtrQ0dJZEc3MTQ4ZUp1M2JwNWpuTkRZR2JKS0ZuaTN4aEwySjRyQk1tdDJkZklCMHJxdVdGaSt2VHBJSXh1IHorMlpNbVg2NElNUEZBTEFYSUNYanplaWFrZDJhNjdBT1Nmb1FLMXVnQmUwM3NHYTBEWUlucEVqUjlKUHNOVmM5c01QUC9Cd2JLem4gSWtvenVtZjhqYURYZG9MQTZ0cTY5Y2lUdHFuNlNwVXFVV3ViTjI5V25BT2NiZ0NIOXJMNU9qU0puRzZLQ2c4VktsVElUUWFnQVZxTCBKME01MkR0dG9iTk82RXljT0xGQ2hRcm9JakM5YWRNbUpQanAwNmV0MTZSTGw4NkFReUh0WWxxUVhBY2RDQVZhTjNwYXBaVDB5ZnZ2IHZ6OWx5cFFyVjY1d0pSWU10S0ZEYk0rY1BYczJCbE5uYXVMcnU4a0dMMUljQWFvT0kyRERLMC83L1BQUDRScGtQUjBBVDRadjh1Yk4gYTRZTGZibVBVVlRiQ1lKUzE1N2doZ2FRdkpSenk1WXRHQzlvbStvWU1HQ0FiUndVR2FCZDAzUUQxTE50bXNCWG91SXFWNjVNUld2SyBSckgvckFsTTA1eFkyS1JKazlMU0J3OGVSQlJoUU13RjZCa3pDcWtsRThIeUM2T090cTNrclkxeitsZURRa29JdjNidDJ1RTkzN3AxIGkvckJnNmVUVzg4NFZzTDVrKzlJSmVBNHVnLzFoa21VQ3VWZWEyUFJFSWdmM2x1L2ZuMUZMMW03ZGkyWElTK05QZlExOUJSRkZaNGcgaU5WdEJUZDlHZ0wrN2JmZjZMdVVFeDdGUWgwL2ZuekJnZ1hXaDBDNldrZkt2ZkNCKzQxRFNIbHFrRjZCVEllVjRTZlB3ZlcrZmZzaSBORFVYZmZic1dSeFpPaGk4OHRWWFg5RUd4cDNsMWZSQW0zR01nZUMyN3I0em8weDhvRmJSSGhTcVo4K2VTSTVkdTNaUnBkQUVsZzFZIFc4ZWhUWG41SGhlZkJ3STczRHYzMVk3NUZiS3h2ZFp0a1ZldlhoMDllalJjVnJWcVZYaUhub01oaFZaczI1U0NkY3FjbS9SWTVMbkUgRmpuWDVMVlVxVklBQ084YjhNRWZhTi84K2ZPUEd6Y09pSnZSSlZ4cE00RHZTUzBPaVpaRDhGeThlSkZteGtuQ2NmUzZuUnNLd2VORSBjUjQ3ZGd3YVExenUzYnRYYnBCMUNOSTYvaDN6WFVudE03ZG1YbTcwdjhNVG9nNDJwZWUzYU5IQzYrM2ZmLzg5Nk1mTlFFNmdWZndLIFJJRVJrRHNJR1ZsRjRMQmh3L2lYeHRWSlpSQTJMVXMzc01yeHFIWVpnOGJaWHFGZ3pUMDhuU1ZMRnVpUXF0UXVMeFFZZm9ZVmduQ3QgcHJpMVdkMnY5Nzc5OXR2UVBIV0hhY1lVK2pxQWdnNkRsNG1VekpvMXEyWTM1WFZaUjFqZGg2NkxDVW1ib1BVWk9RR1kxQVJhZFlRQSBnSko5d1JxdS9mVFRUNkZZclg5cTFhcVZYNkhlc0pPYVRLQU96U0E2SUY2MmJGblpzbVV6WnN5b0pXdEhqaHlob2EwTFZxTVoxcEhsIGJHZm14alpCSHV2WHI5KzZkU3ZBa3Q0b1hicjAwcVZMdTNmdkx0cW1kaVJGQWtDMklwVkJWL1NOUzVjdWRlclVDWHg3RGF1QXhVQ1cgNEVlQ1lBaGVXNlQyN05rRDB5dTNmQm1Ma0kzQU03Vk5KY09YV0NSMEhRb1FPeWtuejFmcTM3OC9CVmNrY3R4NjdKNWZyd2FweGk4eSBnUVBHakJuRDU3ZmVla3ZyNFRBSU5BY0d3WnhMRWYydy90KzNSajdSaWY5alNmeUw5YWNydzVRVktsVEFWTUVXOFBlaVJZdmdja2hVIDNqMlZRcy9XOWxLYXg5K1hnbW42VE9iTW1YSHdnVytkT25YYzM0c1JOMDRrTFMyZkxPWW5LbFo3YjgzOGxQdDc1ODZkaTh1ZUtGRWkgK2dNVXF4QnovaVpJQVZiQ2U5R3JVWnU0bFZBTTlVbnZvdWsvK09BREd2MlZWMTR4dS9LczJEQkRVbEdkZ2hicXdYTzBoRXFFb2JINyBGeTVjd0tVQVBZQ1BNdWZMbCsrYmI3N1J4ZHJOb2NCT0FSekl5elA3OU9tRFpkQlNFK1JkNTg2ZFhkNEx0NWtKRHRwZ3c0WU5zWUt3IDBjY21oZzdGTjR0TEkwdzdkKzdFckNtdVBnVUhlWUdkRzZHUXNCcWY0VjlzOG8wYk4wQTJjRThRbmhSTEE4STI2emNmeW9FWndReGkgNG1sbDhHYW9DT0M3ZS9kdXlxeG9RTlFDOGxxbklPTSttaGtmMjlJQ2x5bFBuanpRTm5aUW0zOW56SmdCMXQzY2lGNkU2VTJHaHc0ZCArdENQblhXVGNGck1xQTVGZGluaGdIVzlldlVBSEoyQmVzYWI3OUNoUTJBWk1KUHo5TEY3OSs3UnNsZ0F6QWkweGNOLy9mVlhwQjNYIGFBVDk0ZWlRb0NQYlUrZWdlc0VjZ05ZV0dENGd2M0RwNE1nelo4NGdWK1EreW1ZRkhDc0loWWR4MEVaR09Bbi9DWEp5Z0treFdObXkgWlRNVlRkdDdYWE1jb3hLMTlONTc3NWwvcVZ1dGszSHVrOUJxM2JwMXFXMnFuZnJIclI4NGNHREFNY0kxbGlXcHZYRGhRdFFJZlNabCB5cFE4a0JZOGRPZ1FMd0xaK2ZQbk4yRXlveC9Xd1VlMkxmY0lhK1FIZ0Q1eDRvUW0waWt6L252bHlwWHAzSGhDSWY5M0hYM0FMeDAwIGFGRHUzTG5SUDdROUZUcHo1a3l6b3MyR0RPczBRZEdpUlEwRDBVNGpSb3lJNGJSOUxEejlUOHVGcnl3MTQ2ZStEcGpjdEdsVGt5Wk4gYnQrK3JiV3ZhTENlUFh0NnpndTZUMXI4by9WdDE2OWZ4NE1IeE5TOG5KYkRody9MT0tNdHJSdkRvbjlhTi9pY2JaMTdwMnd3TkI5QSBteGhSbzFRbFNwVFl2SGt6OWFJTjIycVZpeGN2QnZ4U25qbHMyRENRcXZoU0tMelpzMmQzN2RyVlJ0WFdhRXo4clZLbGluV0c3UFBQIFB3L2c2SWxvUzBDemVmUG1CcjZVdEdUSmtxcEFYL05sMjdkdkI5WTQ2OW9QQnN1MGJkdlczL0VRejNGRGZZQ2JVSFM0ajlyWnJqeG8gbEFsYnJhbjdxRnNXOG5EVWlKazFSWXJoTDhwRkUzQnBDVHdZUE9zbm4zd1NtYXU1UTdXSHkxQlB2bExtekprRmJtMU54MmlpdWJYRSBTZ09MMW1ENitrdXJ3UFNtMG1HamhnMGJCaFpDTmhvU25vbDI3Q3NsU1pJRWpXR3Jkc0ZhUlZpeVpBa3VEYldxdFYrdyt6dnZ2T05tIHpabHowb2lIMHBvMWE4cVZLMGRPakxiQnU0VzgrRVplVTVUT256OGNuYTNDNExKb2hRYUExb1pmdVNDWXFqSmx5dUFNbVQwSFZKT3YgVU54K2VaTWpSNDdFNEdvNlJnRS9rZUR3dDQ0bXM5VXlyNlpoVEt1UWgxMjdkZ1Z3NUhnMEpIb2Qrc29JTmtwUm9FQUJoV2V3c1FrRiAzN2h4STVodTA2WU54Q2wzRXhMdDBhTkgrL2J0SXc5clRSTFJXMkFvbkNWcW00ZWJScVFqOFJlMTQvWFkrWmlPYkpkaWxDcE9sQ2lSIHR1dFNjak9EcldXcjhDVnVOWjNiYkxPTkpHY3JZM0QyMUtsVDZUbHFZMlFKcmlFbUdESWVNMllNdnBRdDNpbmZXemVTQUNETXQvdXcgeU5HVEtCYytIekMxYnFzcFg3NjhiV3NwR3BleXQyN2RHaTVmdW5TcHRMVmczYVZMbCs3ZHUwYytKMGdSalU5cjZ3WlNFeWxpcUFFNyBTZlZTODJuU3BOSEs0WWRvQUI4TG1JOGo3alFKRXBnVHE2QlBBeGZGS3MrUUlRUEZQblhxbE5uQkVNbWhDV09MeTVZdE8zLysvRnExIGFxRXY2VlMwS3pXTzRvU1BGV0FBdWRtclY2LzY5ZXR6TVU1WW9VS0ZMbCsrYkJ6WkN4Y3VZUGNiTldvVWM1Qk5uNTg4ZWJLVnNPbTYgdFd2WDFyL0hqeDhmTUdEQXRtM2I3dDY5U3lVTGZIQUg5VSsxSzNEWGUrKzlGOWllUzArdEx6TkxUZEp6OEpkMDRwNSs1UnQ5MERMQSBvQnlrRkJOSC9VTCszbGFrYlVobTZGcmZJN1d6WjgrdU5jUWhmNThNSFpTWDZvQXNiRUs2ZE9uZzdMQ3dNTTBEMHlRUUNacG43OTY5IEVETnZSNnZ3ZmZIaXhhMTdpZ0VIVUxCdU9uN29qbVAvL3YydEM3SWxSYkpseTRZWXFGYXRHajJUZ3NBTGxNNnNicVdZOUllVUtWTnEgc05rTWFFUWVhcHBLNUlIUU0xSlRnYmYxRXdTaFdGUDBLN25tY1JiWndwTUNaMWtIOWFnTFBJekNoUXZmRFU4eW1vcGRGRW5haHJFTyBIRGlBOGRWNHVTWTRyZlVyKzhoZkxtalpzaVhNVjdKa3lWU3BVbG1IRjBESm5EbHpBaDZGREs0T29WcG16WnBsaGJXMkxRSjNmSlVOIEd6WklYMGtoMk1ZaUlBdXFldWpRb1lnVHMxSTNNb25Pb3hseVhrb0wwcnVzc3hDUGhTY2htejcyY0ZkTkpuQmZ4YmJrOGtZSVc3R0kgckFpVFQxbXFWQ21xeVl6bld4My9nQlBhL2YzMzN3ZmN3QnBlb1ZONUJxWFdVSWxVOWFaTm0yQm9ESWpaTXl1VThCQ2c4SERIU1JRaCBzbmZ2M3RxeWFlb1FXNzl1M2JwSmt5WnBKNklaeWJidFRLWG1LUlFkQTRIKzRZY2ZlbzBRNG04NmVQQWc3NUt3eEg4Vk1adTYxZDR6IHBLYmk5dnNGclNCR2gvS09iRitvOVRSa0x2TkJPVkc2dHZPKzlCYWt0cGJ6cXFZZ21JQlBKRE11MUFjZmZMQm56eDZxRlZPQXhzaVQgSncvRUpoZlcydmFtSHJVcDlkS2xTOXBZYVU0Z3dKcERkWkU4aVRqeTV1N1FvVU1tWUpBMWdBU0NDdEJieTJJbGJLNUJnV0NMTkhWRiBXZkQyNXM2ZEcvbWpiWlFadmJGU3BVcm1iQ2RqaW1sQkhiZmlzaWxOdG9OMXBKaFBaRnUzTm5yZEFXSGJCT2xHSVNodXZ1ZFBFQ3FlIGtJS3A2c3JJRFB5ZE8zZXVaOCtlT3AxREc4QXcyZlBtemNOZTkrblRSOGYrV2cvTk1LdlBNQm9RbEljQ3BnQUFJQUJKUkVGVXZKV3ogOVFGU1BIcjA2TVBTSkVMa3E2KytLb2hZendTa2dKSndXa05uWUMzcEJiQW9PTzd5Z2dVTE1FZlFxdHkrSTBlT2ZQMzExN1k5VFg0bCAzcXQ5TkFxU1hiUm9VWkcwVlNrcC9MYlgyTFlPb3hFTzU5WUdVNDNZNXJUTUtJOXREWUQ3ZDJpQ1NodFJ6VU5BSG54SnY0ZDdSS2hVIG5Kc1F0TDZHZTd0MjdZcmxSU0tyM25IYjBjbzZrQmNpYjlDZ0FTYVNGOW0ybDhxMllxL05FVVJXYkZXdlhoMTRSYjhtMFhhc1hyMTYgWGIxNjFWYm5XRGtzak1LTVdETW1jRk9LZlBueVRaa3loWnBFQjlPbDhaVzFwRkhXYWVUSWtZcUhHRURTQ2NJaGZ3ZHBTWjA2TmMrMCAxcGdPcTRESWJEdW1BeWkrVjlRRmlHd2JUOXZtTmF5R3p5OUpwQ2tyS3NLNmlzRElYSHg4bzdQNTRQV01NamRwNE1DQng0OGZwK1hVIHdPam1oZzBibW43Q04rUEdqUVBjWm5tRHJSN2huaXRYcnRpV1pPbndPTzRpbjlFSmJxMDdCNTNvQjl1WUpwblhHY3BlelNtaUszLysgL0pNblQ4NmNPYlA1dmtlUEhrZ3lhUWFLZ3l3Qjd2NEdremZKakYveEl1ckVHcUpFMFJwQy9qNEsxT0ZRYWplQTlxV0JBMEcyMStpMyBubWVxV2creWNZTnZtVXN0enJhT092TVhLUUt2cEVxVnlnU0YwUm9wZjlPTUdUTldybHdKazJsMUJQS21YYnQyclZxMXNsN0Qyd0YzIHg0NGRhUXliNGpmNkJLTmhLeEgvN3RpeGc2ZDUvaFNsOG5yTm1qWFlHZXZSenFhS3JPTEVOdGFFQVp3NWM2WXQ2bVM2ZE9rQU44NjYgYWg1b0l0c0NXOEtLWmpPemFWV3JWdlhNbnV5ZWdPRnlMYUZoVEJ0ZFJ2NHczd1JlWmJUdGlWNWZZM05mSElhMGRaUzN0YWptU0V4byBwa0tGQ2diclc3WnM4YmNBMk9XSkV5ZFM0eHFCUnVSTW16WU5FK3daVXBxZlB2cm9JN3lvVEpreW1XQmNOdkZ0NjdFYVY1ay9mejQzIFJnKzRGWW56elRmZjFNbnp0bU5WakRtMWZzOWxpR202Myt6WnM2M2JiVXlxVXFYS2tDRkRrTVVpR2hRTzNYWDU4dVgrNW0zbnpwMGEgRjZjcHMyZlBibDFBSzh4b0xXdUlpNmxIQi9BRTY0QnEvK0w2ZVYxQ2JUWnVtZEUwbThoV0R6YlQyc1lYNW50a0F6VnVIdXNtK3JVdCBEUjQ4bUtZS0N3c1RRQUZ1MXF4WmRZaTMxOVM0Y2VQRml4ZWp3clZqMGxla0src0tLc28xZXZUb1VhTkdSVFc0Z1RWNnJGNjllb2g3IDZ4Q2VqY3lzTVFKUXRHblNwTUhaSFRac21DOHZoVzZjTVdQR1R6NzVSRVdHQW5qUmh4OSs2Ry8ycURkQkZpbUNZZFJtWGhzUG1qRlcgcjZlMld0V3MxOEdKSUk2UStEMVRZNVpOMmpLaHdNbWFtckoyV1NwUnFzczJES1FuNkJnVWM1Z0c5czdsNGQ3R2NadzNieDRDWGVPRyAyYkpsSzFhc0dNemhMUEp5NXN5NWF0V3ExcTFiNndCUFo5bG5CZ2NIREJqdzZhZWZSaDI0Tlh4UnNXSkZNMHJ0MVJoYXZ3R3loUW9WIDJyeDVNMDZGYzBFQUlxcVBJcWhqSU5hUkpTRFYzN2tDdlIwemk4Z0o4YkdMeXJndTFneFFPbm05WG9WdVZDd0pEREQ2bVZmRG9WMFYgZ0lBeW1GVWlKbmkybGUrdDVVRWIwSno2Qm94dTI3Yk5mVTRHRFJwME96ekpTVVdXYUt0dmhBWVJJUVM3TDF5NDBMa2JxSVhFM0xUTiBlKys5WjUwM0NXTFNhZFBGaXhjMzQ1NjJvUS9QSmtCWXYvUE9PMVNYUU9aUUJBRU9CNk4yN2RxS3EwOEQ4VVljRC9jckduQTZGYjJXIGVzNlJJNGRXODNraVVwOTV1S2xWa0tDVlVvS0h6VFdNdW1XdWdVYy84enJJVFExS2FTbU9rYXlTMXFwNzNjZkJYZFExcm8vS0RIcVEgMmk2SGtIRVpvVjV3SnNjeFE0WU0wRCt3ZHUrVlY2NWMrZGl4WStYS2xYTSs1MFVnRTl1Tkh6LytsVmRlTVFmOEJTVmR1WElGaVZ5KyBmSGxWVklTalQ5UVZHbmZGaWhWanhveUpjSXVkOFNMb3pEQjMzNzU5VlJEUWR1Yk1HZmRuZXg4L2Zsd0xudWhJNkJCZlp6NmhqbVM2IEZid0JHQUFBN2FYeTdBQUJqQ0JIT2JLOURvR0x3aW16eG4zTVFsNU50RG9jdUZpbVRCa1RKK1NmLy95blMyUWpMbS9jdUNFOXg2dUggRHgrTzBEUkJpVFJ6RWVGREVDVHIxNi8vNG9zdjNKeDVwYjlyMXF3cFc3YXNqcm1KL0FBZjZxdGJ0MjV0MjdaMU9Xa0hSUENQVDU4KyBiYUpadTRHMU1FZHEwS0FCbU5OZUwyaVlncnRVU2djT0hGQlZvMyswSnNRckltRVdMc2J5S0JLeEJyekYxbGFRUk1NUVUzRGVZWFdRIFZRek5tVk0yYWhNcUF1NE9zekFwVXFUQXBWTk4wV1lhVG9ud3BVdVhMdFVDSGQ2dVJVTFdPWHhiZkIvbjlNWWJiNXcvZi83bGwxOTIgeVI4WThUeDU4cUJ1STdPS2l3NlArNHUvTzMvK2ZKZjV4Q0doSDg2Wk04ZjltSnBWT2xJNWlSTW5OdkVweWNEUDRjbk5jOWF0VzZkTSBob2FHT2pqb09xVU4zU0lWYXM1c3R5STdlZ1pQbzZUM0tBUVI5UWk0SVVYKzh0a1hzbFhqcFVxVjBrZ2MvaE5NSE9FclRwMDZ4V1ZhIG5zb1RpaFFwQXJpdE0rUWhmcDRDZzJ5ZEZaNDhJMFA3a2lqTGxpMmptZDk4ODgydFc3ZjZwYnpQblR2MzRZY2Zac21TQlpmTzVjb2gga0ZHalJvMzkrL2ZiWWtDNmhMWHhPSG1PRVNTU0N2Mzc5NDl3Um9LSzNiNTl1MW9XK25DSXdFZzFhbWNOcEFONTYzcEpsMmhlK3ZkWSA1Tm5hYTQ2RlY0ckhYNnBQNjc4Y21pMWJ0bXd3d1lVTEYwRE1wazJiSWx6NFAzTGtTRXlCY2U5dzdQaGdBNlVaT0hOLzZqUEdHaytyIFRaczJMb2RveUFNU2VmSGl4VkI0bFNwVjBNcklVSGlSNzFVRHRDNEFvdGZ4RFk3QnZuMzd2dnZ1dTUwN2Q1cERWdDBrSkhMNzl1MTcgOWVybFB0aVExNEpyaVNVc1FNYWs2ZmxMdDR4UWF1cU05NUR3Z3d2UjBKVFJWNVVxcUxZMi84cnBjbDRURW9Wd2oyU01LYTNMOFJYUyA2bVo0b3IzcjFLbGozV1pyQytjbHVaay9mMzRaV1Z4dmpSTTV2QmRuMFJ5dVJ3MWV2WG9WL3ZiTWh1Uyt2eEczdnZycUt3ZzFBRG1vIEZVczBLZ1lLdjRLK1NqOUJ3UnVYeTkrRzVIb1lBVmo3V3dRdDl2TDhIb2w4NTg0ZGMrSW9XZVg1V3JydEs5RVFDeGN1Vk1mQWUwYWEgTzJSbTRzU0pDRXVJUm9zbXZEYTNDWVlXbzZPZnlSZnhPa2NURXI1OEIwK0xxa0YrT1FDRkN3QkIwNlpOdFZjVXBXR2R1ZlZNdk5GcyB5UlpQS0VCUnNKYU00YUwxN05rVGduUi82ck4xbEZBSEVRR1hzTEF3SkpOV2lwdUc5R3Rlak41YnExYXRNV1BHK0pzTlgzUW9lWUN3IDBhK0FUSlA1RHFLTDY5OTk5MTJaRHVxRS9EaVVnZ3ZJTnB6dG9MTCtERTlSTFU2Q2cyeGZhNFpvMUxObno5S290c0QzdHFSemZsOTcgN2JYY3VYTkR3Rnh2allUa2RjcEF1LzFVeFFyVzQzV3d6M2FxanZ2VXRtMWI4SzIxcjhHZEczTURhRE8vQ1ArTkhUdldwZlMzR21GZiB5Slp6WDdkdVhXc0FJN01FM0d1Q1JQQXlNVHMwSW5XQ09YSWdxWXdaTTlJUTNPTHJVRTkxKzJpb3p5QjRrSlQ1UVhqeUJIZWlSSW53IGxxZys2em4xWG9mR3FRZ0kvdU9QUDRhOHdkUFVxVk1kL0wrVksxZEtxNWhCUXlsSU4rM3RIbUU0ZVNic0FjWkVVVFdpcmowTVNWTlggZWd1R2FPalFvUTZqcFM0bkhEeTdPa0xaeEZHZzFSU1UxZGVqOERyNE5XWEtsQWg5cU1mNW9DYUVPSDRxaEsxZ3ZKN09LS0xSRnczRiBPR1Jyc2JrY2JVL09WcXdjclpOMjlsSEFUYzZjT1lzVkswYUwwcTN4ekh3MXp3OC8vR0Nkb2l0ZHVuUlV1TjZBakd4cnFUR1doSTVIIHMybjdXWERmSlV6VHQzRWVNbVhLSkNYR1cvQm9YUjdjNDFjSDF0SnFvMFowbUFrSzBPdkY2UExWcTFkVENScmxoS3FjbjY5Z0FkQWMganBQbmtXSjhyNUpHZ3dFTXpxZ2ZXS1FZdHBOd29WWHNGNGFKNzYwcmhqMUxTL1hKZDZSRGQrM2FsZHFoeHZ2Mzd5L256elptVEpWZCB2SGpST2t1SEJYU29LYXNnOFl1MkR4dzR3SXZBRmdoVGhBT0tDWFhwOU1wZzlTVTlCMm9vWHJ4NGhnd1p4SFBRTmlZQ1BNMmNPVE80IHNBNzVlenVaOVFBcUtOYTJxT0YrZU9KRDM3NTlhU0JhcEZtelpzbVRKOWRjckFtSzVHdDRCSTY3Y09HQ0oyZnpISjI0RjJ1UUxURmcgMHdOYVZncjdhajJhUXk4SDJWUVdyY3RuT0Q1OSt2VGN3amVMRmkwQzNEWnpqT25reWRhRk5hRE4vUm5QN2d1MWVQRmlYa1Mzd2QvUyBFbnZ5aHI1LzRZVVh6TkdzUVlFMWhhWG44MERrTE9XbEVqRDZ2SlRQV0Nmbk05V2RPN1BEcjlZRkJWcGphS01xN1hLZ2ExRnBWSUpPIERhYzFvU3JyYVdaZXA1UEkrWWtUSnp6UFg3VjFxbGlBYk92ZVdDdU1hQ3E2UGo2SHN4cWhDbUNwNDhlUFkvSHo1Y3RIOVlrZUVIWWEgR2JWZVRCdFlRNWZvZG1ka2U5MVU0WngwSmpsNW9KdU5HVE9tVktsU0FCb0U4UDI5ZS9jUUtqQ1QyVFVjR0FPcG1Ya09sbzBpNDVEQSBqaFEyTkRSMCtQRGhsU3BWNGxmNmtzdWxIZTR0a2czWm1yTHhwR0crSHpKa3lKMDdkMkFjcERaWWg0T3BlWExyWEY1NktSZDRYWDBRIG5kT1F3VHp6d0lZYkdwNVdnWExvNGhIT0Jtc3hPMG9EY0xkbzBRTDAwTE9wYmlyWGR1WFpzMmV0Tk9adkhHaVhDRml6WmsxWVdCZ1AgQjlNSVI3ekpnZ1VMYXV3U1FsSWIwNlBNQ0lDME10ZHI2TnBhSjBLdzU5b0p1b3FPajZLd0FFaVNETi91M1hmZjFRa3lpbTFnUGNiUyBwVGx5QXgydEhqR0NCSHEyblIyK1o4K2VhZE9tYWV0VGd3WU5xSFp5NnlZOGNZVUtGYmdTTmFJNFVpRVBLUVUvZnJaUnp6VDh3WU1IIHFScXZHejI4SmtRTERWeXVYRG5NbjJwODFxeFp1M2J0c2w0RDRLeExwcVRGQXhqdWRVNzBTWW9BbEJXN240ekJvN2x5NVlLdEFad0cgeTBBaytKQkRxUWthSzNDMXhNRDhLaXRzOEUwSGtNK3Q5YmRLeUtvZVBYcVVMRmxTQThPOFZBSGlJZ3hZRmNDcVdqSmd2UXZiYUYzUiBTdWs2ZHV3b2gyL1FvRUYwUEZyRVlSYlpOanpDbFdDYXpoQnRwejlHT2JKTmtvU2dzdVJXaDdqZU9xa1R5VHAxNmlUbW80TGF0bTFyIGpyRUtDVjhvYk9NbjY2OE9Bd0loM3M0dzl6VWdjT2JNR1ExV3lrUGdkcUEyZVBCZ2VJZ01hRW1qMmZDbkNScW9uY3liWTF3MFpXTjIga2ZDVE5saVlzRlU4QVhqcENHMHdoSlYvL2ZYWGtkZkdEcUMyZVRqMkFiWHRjZ0RiUFhSc0dnL3NXaU9Hb2dPUEhqM0tZOHVXTFpzdCBXellFaHEveGFhL3NSa2twa1E2NmlBdWNiYTFXQkFQQ0VTYWcrK29zRmZmMWpydldxRkdqRGgwNlNMaWoySm8wYWFKRm5yTGRWbHpTIDlwaHNOMDgyZ1pRaVJQYisvZnV4REZ4cEhkTFJvS1FXeXNsUWFGd1dvYXdkY1VEdy9QbnpzSjFSSXdad2tEZktDcTJsZ1ZGdWtWTG4gbVlxWXlvZktsU3UvODg0NzFtem8vQ3I2N2RxMWExMVd2dnREVWF3cVRzdTF6Y21sOCtmUC8reXp6OGdWSnF0bno1N2FRT2xYeXBJbCBDem5adDI4ZlpYeFkwWWlpU28zUXdPdldyUVBmU1pNbWhlMk1QWFVKYnVyMG80OCthdHk0c1paNnIxcTFxbWJObWp5RXJtSWRHQW41IE81YWZ5d0VjQTI3blpZRExsaTJqcFdFMUNRTnJ6aWRNbUFDNHlaVW9XYzJtZUtUaWFYSm9sZ2FZVi9BMHN4TkhoNndxZGoxTXFSNVMgc1dKRkRJSXlhZDZZTjI5ZW5HK3VQSExraUsvY21wVlBadm1YU3oxbUc2Q2dMTm95Zzd2OHhodHZxRXJKa3Z1enk0eEY1Vy9od29XcCBQUVhKZUZnSHBFUUpza1hWMkZBRnRBNEpLSTR5M1gzaXhJbTFhOWZHVFBPYzlldlg4eG1SWUhOMFhLcVJrTDhYQWhnY09EQTNWZ0k4IEthQ3I3UW5na3B6QXIxcEV6Z1BwYWRoeDIrNTNxd3F5N3BIUnJqUHh0Slp3Q1FmVHAwLzNIT1hWOERrZmJ0eTRnUUYwSHV2UUVJZjcgZGR1MmI4Z1ZwZWpkdTNlL2Z2MjBzK3Y5OTk5SEUvcXJqT20wMks0U0pVb0FBTEo5Nk5DaGh4V01QRXAwdHB4aWlleENoUXBoNWdJTCAvZ1NtY2MrcEp1MUIycjE3ZDVjdVhUeWp3TUI4TGgrSUtqQmJkSDIxR1U5VG9DbmU3blhnbGh2bnpwMnIzWWRtSzZ0dFlORXpySVVWIDY5UVBaQy9aZ0RxSEduMnRxOG1VS1JNZ284aDc5KzcxQ2xEVFM4bUcreUYyVDg0RzJRc1dMSmd4WTRiVzZIWHUzTGwvLy82QkRUeFQgTlBvazljT2pzTnZhWlJNWGtFMjlBS0FOR3piQVNkQWVsdHFvaFFBTTA0c3Z2cmh3NGNJeVpjclFmckQxc1dQSHRMWGIyaVMyYjV4cCAyN3FMM2l1NDhad1VrTTFoTVRRZDllT1BQOVlKNUdwK1BwdFpkNjk3Vjgya0RKVmpvcS93RGYzV2JIRDJUSElpRlRyWlFmdHBYYWp6IGJrNWJwZGtrbkE1UWhXNTVEbDdOOE9IRFRVZ1dmeE4yaHVma3laT0huTVBaUVYrTThEQTVtNUpzM2JwVkFYUXdvMll1eWk4dGFCMmYgV3JwMEtRSUFxa09iMmp3U0dzbWNXT0FteWR0elVFZDc5dXdSb1pwanc3MFdzRUdEQnVuVHB6ZTdMYlVzMDZ6VUV6RS9IcDdNOXhJdyBHdDdXcGdTdW1USmxpa051Y2I0MVBIZjgrSEVIS3VHeDdtR3RucUQxUE5adkVBLzhiZE9tRFJiSnI2ZDVjcFlPTzZXVG9OMHhnTWJEIGljWElOZ0VNYUFuS2MvWHFWZGttRzgzNEMyNU05dUxGaStFMmpTWGIzbmp3NEVIL3l2eDNoQzZ2djhMWndCUnloUytkZXk4cVFxNmsgbWZXdzdXUlJpMW9kVmw0TjMzTzlwakMwVnNTQjBqSm16S2lWdEFEUjE2aTJlYkw3R29Dd2JYTW95dmJRb1VNblRacmtMOFY2MW1TMiBiTmwyN2RvbFgyTG56cDMrWmkvbWVwQ0FBN1dLU0tBR2FUd0Rvd0NHWGEzZy92cnJyOHVYTCsvcEpLRjgvS0lFNlFldnlPWkxNTVRUIFlFcWF4L2s1ZGV2V2hiWTFaRVpQTUdkYm1yMDhrcjhobGdNSjBHWWdXNitBc0VHU2MxVm9jUzhaQnRZblQ1NzBSZGorQ21McllVNm0gNFZxMGFOR2pSdytYMjZzOVhWaHJsckRTNkd6dGlGdXpaazNRbzc0L05EV0NlQkN5OCtiTmF3NDhNRll2QUVHaTYvRzdKMDZjNkxsSyBSQ2NQQllXMkVZZ2F5UWJaRWE0Z3hlQml1MlYyRlZYRE1KUFpGbVgxODZCcU9nRFBWMVNEZ2dVTEZpNWNPTUtzNm5CNGJ2RVVKUCt6IExjci9WZnkyOGFXUThPZ1VkZXJVMGRxQkFEamJNMFpLeDQ0ZGFaUUxGeTZnVEhSa1lheEhObTJ3YWRNbTVEVkVNbnIwYUd0N2U0WXQgZG44QW44Z3ZjZUxFb2FHaHRtcUNnZHc3a2JhUk11dVhHT2hMbHk3SmZhUVhSZWhDOFlTV0xWc3FSSUdteXEzei9KNEYxSEhPMm5RSSB4TnUyYmVzR2xFSTI5K3JrSFU5VUJXRG9iVk0vV21HZktWTW1jK1NOWDVpMk5hNmNDa3hUdVhMbGJ0NjhpUmNFSHVLQ0Ivbmpqei9TIFRUSFErRmp5SGIxR1JMWkpsQWoxZzhZME5IT3J2UzBHRTN4ZnZYcjFFeWRPUkpLMjZTRS8vL3d6UFpOMzZRaGFaMWh6YjVJa1NTcFUgcUdBTzJMWXRkYlE5SC9kREd5SkR3aU5tNlFUZUNJdi8wa3N2cWV4b0dDdXk5Y1lBWUwxaXhRb1QwYzhNNFBBS09yYUs0Q2J1bE5kbyA2eUgvTjhBVmtoMThVNlhUcDAvM0dpY29TaVZLa0pGTnFTZ1B6S1Q0aUtiNmJHRXNiZmgybzhQTWlqa05idGlpRGRHWGF0ZXU3Vy80IGJXbEs4MnFRQnkvcXJFN25qWnZXaER3MWF5bzhEMVR3eW5DYWROU1JheEZ5Tm9KVmdnZXlOd1BEMXFsSHY0cjh6VGZmREJ3NDBJeU8gbXdxRVhQRXJGRXJCK1ptK01HMVl4cFFhaGRPOGVYTXV3NG4wRlhMSUdpNzVZU0k3UXYyQWwvUFZWMS9SY3ZnaVpzZUFKS1p6VEc2WCBCZVBKV2JObU5VRURqUy9Jb3dCbCsvYnRuUWZSdkdvU0kvMGgxSXNYTCtva1QvZklMbHUyYk02Y09YMXRwL1Y2aTVyYy9mQ3dCczV4IEo4eHNxMUhZZmpYZm9rV0wrdmJ0dTMvL2ZvSFA3SUhTY2k2ZGh1VUcxdFlDZW9ZMHNUN2tndzgreUpFakJ4VTdlUEJnVDlxMkxnb0kgK2p4OEFyOWdIZUlZZU9tUFAvNW8wcVFKeU1CQWV4N3g3U3Znam1rZWw4eGRvRUFCc3p0VmppUGtoNGtBTHVCeXlKQWhIMzMwa1h1SCAwanJFZnUvZVBhaExRdzBPVzVKdDkwSnlsTmUyQ3NxSVY2OXd6NVVybHdsQkZtSFNJUTA2UWUvcTFhdld3TjcrdXZYdnZ2dXVCbGdxIFY2NU1iMVFBYUdWWWIzRVBhMS9oK1d4UFFOUk5tREFCbXpacjFpd3RhZmI2NUFEYzFtQWkyekNjcjh4MTZ0VHA4T0hETk52OCtmUDkgR29jeVhkLzVFQVY5bVRkdlhsdWRvcnpwVVhueTVFRzhJb1NtVHAzYXUzZHZsMGV4cUlYMDVEdDM3bWpUTmQrNDNER3UybWpZc0tGTyBlcmNpRzZCWVp6SE45MUFhTkMrK2ROT2NTRlZoRHViVEFkNHUxYkExMFNLOWV2WENyZWU5eUVVMENhYlBlZ0gvdWd3bDdtK01pakpsIHluejg4Y2ZnQVlmU2VxQ1V0UW5NeEhBUWFkcy96dlkxeGtTeFAvend3eGt6WmtDb0N4Y3VER0NWaU9lQlpwNHFSUmVrU1pQR0ZoZ0EgUUdNaTJyWnRDK2hEUTBQaFhUeWtidDI2dVlrUEdHSlp0R1JPZDZhaVhZWm1WVDRwdGRhZ1d4T01xTlZ6dGdUY1gzMzFWVFBVSFdGeiBQdnZzczBJMkRvREdvZjBkd0VhRTlPelpFMCtPZGxtMmJGbnIxcTE1b0EzSytmTGxjMURBa1R3UzZlMjMzOGFXVXQ3Q2hRdDczUjBzIEp5cGdFSHV0d0FTQmdjLzJYR0E5YXRRbzJIcjgrUEUyTWdqcytZclQ0Rlg4QUd2cllkSWg0V2VBWU84Z1RveEcvdno1eVVCWVdOaDMgMzMzSHY4NjdySzNxVU9jdmFqMFF0ZXh5LzRqYWc5dTFsdHBhMGVUZjAyNlFiWEtvMlUzYjhaTU9lWk9xUVdMQjJZSzFlM2doQnZCNSBJRXRndldEQkFqeFhjWk9XUFpvTVdFOEpDL20vaTdvQ1BpM1JXb1IyN2RxOTk5NTdPTUVJSVYraldKSFpVZW9Ic2wzYUJYSkpqaEVBIGI3NzU1b1lORzRvVkt4WVpDK0lHM1B4cjZ6eVE5T25UcDJYbHFjRXFWYW9BL1Z1M2JtM2N1TEZyMTY1dW91aktJRkx2Mmp2c0J0bTIgSXpxYk5XdG0xcGs0SE1FQkFaTTlzN2JFWmJVb1FJZUd3ODBpUVRkcDRNQ0JLSUVyVjY3Z0lPSmJGeWxTUkYzUmN5R0tMNC9aNWk4RyAzTElVdkUrZlB1dlhyK2VCR05nNWMrYTRIRFVQd25tUWJ2cUJOVkhSbUxuUFB2c01Ya1RHalJrekprSUxIckJsc0JVUDc4ZG1qb0d2IHBqK3dxdGo2amgwN2FsdlgxcTFiMFpmZzNvMG1vWWNvR3AxMnl2aVY1M1RwMHRXclY4ODZCK2xaQkczU2FkeTRzYi84cDVFbExhSDIgZXJLUjE0Uy9PSDM2ZEdnZVdGTUo1Y3VYTjRkT0tUQ2lOZjlXdjhMTU4xbGQxY2d2L0tCMWloWXRTb3RnTnlDZER6NzQ0TUtGQzRIeCBjUlNPWng4NmRBaXF4aVBCdGxhb1VHSDM3dDNEaGczREwrRjdFNTB4OHVCV2M1cUJaM05CcVZLbGJCVjk5dXhaZmFEeHdEM2FRR0doIHlReFZTVmJQbkRrVDRYdDFuSXJEc0lheksvbnl5eStiRVJWZlZJZmkxQVpFditwSFJLdFRNandueHIybTd0MjdRemZBR3ZGV3YzNTkgM211Tng2ZmQ4dFljV2xuSnFrUDhPb25jbDI5R0kySTNObTNhTkczYU5QUXFuaElObENWTEZ0aVF2dWV5UlA0bXYyVTcrU0EzSUNsOSArdlNvTjNDajQzejRIZ3JuNzNQUFBmZmFhNis5OWRaYkdMaUFZNmJZaGtwc1JJNGpRb05aMld2SGpoMTZ0Y0NOWE1GSkdqUm9FSmdHIEZ0dTJiY01UR0RGaWhMYW9PQlROTFBid3R5M0pESzZoOXFGWWo1TzBLbHJZdW1EQmdscTI3aGM0ekJ5bmdvTkdlQXVGeGMzQTJhQVMgcUt2Um8wY0RheXRmWEw1ODJUcDFRaFdaUFJabVhqTW84YTNCQm1TSER0RjRKUm9QV2ZMRER6L3dSdkFOQjlIMyt2YnQyN0psU3hOQyA4U0VnVzV2OGFKaGF0V3Bwd0ZneEJoUXdpYXp6Szhwa3hZb1ZxS2pKa3lmWHFGRUR0OUljUUJNd3VMR2IrRGZpYjdGWHF2QmtYWWRKIEI2T096SlE0TlFoOUlnL3UzcjA3ZE9oUUVMWnUzYnArL2ZvaE9tMnVrazFmYVdEVnJ6RmpFM0dUTml0VXFGRFRwazExcXJSdCtESjEgNnRUTm16ZUhHZ01ZT0RMMlNuSG1uUyttdkV1V0xBRzdsRHB0MnJTTEZ5K1d6MkE5MFBYWXNXT21oMmdMbkRqYmVrMWdVL2ZXUEcvWiBza1doSFpBNlRabzB3UWVqOHZrTUpQNGRucWh0L2lxQXZFTE5PSWZERE1SZXVJazAvdSsvazBOZ2NNVmozcmR2SHg1VmFHZ29UcFdKIHdSZEE0a1k2L2RHalIwMXNBL01vN1d5M2VuSTQvdVpHVGVaaldIQUt1UkpwUVozU0dUREsydnJ1TlpIbmJObXlVZlhZU2lyYTMyeFQgY0hvWHdreUhsVm1YWk5ETnZ2MzJXMFdCc2gxZkcyRU5VUE92di82NmdsV1VLRkZDd1JKOHBYSGp4bWxmTUdhQjZ5bitmLytkVEtUOSBQLzc0bzJIRGh0YWVTYzNvVnhQazJ4cndPNEJFcTlIQjZNellxQysvL05JY0orUlFSb1AxZ05GaVg4M2lzbjc5UFR5QVhBNFlNQURGIEFsQzJiOTh1aXh4QW9vcFBuRGhoZGtHYkN0cXpaNCtramtFMk1sZDdISFdaWnVBaEp5aS9VYU5HMEZLeVpNbHc0TkFudms1VHdQVkUgL0pIaE1tWEs0Tnc0OTJGZmlmZlNvM3IzN28yM2hDaktuVHMzTEU0TmFOVEZkdEtERzFpRGtoWXRXZ0JUZ0lLMG9FUytydWN0dUQzMCBZVzNTTTV6Q1gxTXpKRndPeVNIakdxSUtiTys5Y2VOR1lNaFdjR0dzSlZvVWdxRGgzTmVoOEIyczR4QkNJZ1MwU1FFVUVpY0dQT2tzIGRHdmwrZ1VVRktIT1JiYjFIQk8yWFMwRVVRRjM2d1VDOS83OSs5RWtnQlcxUUdZQXg5aXhZNzIrcTI3ZHVrQWZaSEF4NGtxODVhYmcgVVhRd0JZK0ZYeW5JRzIrOElRR1dKMDhlWDhpbS8rTllZeVRSSGxTRmR1dnBJZWJ3WENWVW1kbUZLVWxadFdwVjY2TlFsZmlYQVJTSyB0OEFJZEdhTUpFU2pFMmo5ZlVLd09EdUJHeDBaMkJBNnQwQ1cyaXVBM2hvNGNHQUFHL1JoRkc0SGNEYlBDY0sybmwycktUbzZrdlVDIENkTWNPWElnTFpZdlg1NHhZMGIraGNtV0xWdUdOdkNsRG8ybWV1S0pKNnp4NXgyU3YzdXozUXpsR3FWTFFXUTlWRXl2NXgrQTNhNWQgdTk0TlQ5eUl5d2pLNVRDb0lLYjVxS1cxYTlkYUJ6MTBKcE5OblFZUTRscnlIU1dHeVlJYXFIQ1hzMTFCbWF4eE8rb1g4Q0pKejZUUiBaZEE1WnN3WVZLQy9JS0RlNFZyTXVtZTRIQWpNNnVMdzVKMDdkMXIzLzVxVEtWT21UTW12R3pkdVZJalg0OGVQejU0OW0yYXdQZEI2IFpyajJIeWlPVDRSQTlEY01Vb1JqMG1aOWdjaFZSNWVvdTNyZGU5dXJWNit3c0RCVU5UbkhyMmpac3FVYVRqNjN0UkdwSXR1R2FIQVAgWjl0bVZRS0lBM3JwMHFWWFhua0Y3WmM5ZS9hRkN4ZTZqNVlXUlNsQlZIY2RFdEtXVGd5NEJ3MGF0SFRwMGdDMjJTbm1nZTE3MnNQYSB6RHlXMWwyL2ZyMk4yalVPaU16Rjc0YXRhVGFhSHg5MzFLaFJ0ajJ6T25aV1BwWiswb2FnQ0JkWTZrWlBwenpFMi80RHhVbHpEK3VRIDhKREg1Rm5iTHp3NUc3NUFpbHkvZnAweTFxNWRlOGlRSVZaWTI4WTN2dm5tRzF2MGNhcWxVS0ZDdGtyekZ3QUltQ1pObXRDMTBIdXogWnMzeWpKd2RVNUFkOVBURkYxL2cwNkNNdTNUcDRtYlN4SVpzR1dYYjkxV3FWQUd5MW1rRnJZWHlYTFRBVDdoZjE2NWRDdzBOL2V5eiB6d1NkTFZ1MmpCdzUwb3JJRjE5OFVhTitNdXZHYUVRWVRBSmtlOUsyMGQrZVVzUWg1b0d4bHRiRnZVQld1c2h6czgrbVRadm96RGhxIDkrN2R3NFdZTkdtU2JsUlBzS0VUdHFaTFd5MkdCa2FzWTIwQnJJL2xYZjM3OStmSlZDQXVnY001cUhFUTJVaXVQbjM2MENwMDY4R0QgQi9zN1ErbDFiSlVtTVd0SDFTU2FGd0N5bm5ONEN0d1BzZEVmdW5mdkRuQ0JDd1MyWU1FQ2M5bExMNzBrWktQcHJiUnFaaTRjc20xViBXZFlqNkwyZSt4SGhNZ1RyTFJRS3poYmdkQnFHdVF3M2Q4S0VDVC85OUJNWFVCVURCZ3dRN2swb0NOdGo4WG00eGVydFVETW80MGl1IDA4QnJoS2VwUGVqai9mZmZENGtaS2ZxaVFHQ3Q4TnhwMU5XclY3dVBWMloxN0R5L3IxaXhvcFhMYVRNUU9YYnNXRThHRlhOak5IRFkgZS9Ub1VhZE9IY1hqbXpsenBqbDhDRXVxWmJvMlpJZTRPSDNQL1JTRFJyamR1emVnVm9NTUdnNnlYbytnT25mdW5DcXpkKy9lZUkwaCB2c09Qd0trS0NtN01sT1pvM243N2JWdFYreVVYZWQzVXFWT3BlUlFJRlJzU1kxSzB4amRwM3J4NWtpUkpJTXZ2di8vZXY1bFNINGViIHRHdlh6aXBJTk1LRmF3aTR2VHFqV2xwRTRvS1NKVXVpcHlHOFljT0d5VDNWU1Vza2hVaHN3aWdRQUFBZ0FFbEVRVlQybkdoMDluVGQgUThIaGUwK3VCYmc2UUpIU1dROUZtVEZqQm1CVnJDTEVRTE5tell4cThzd00xOUFOcmx5NUl2cTNTaEhGZ0hiVDhYeEpFVnFUSGdKdCBWYTllUFM0ajI4R2NWYXRXRGJWTjNhMWN1ZEl2cXdjbGFFK0E3ZnVjT1hOYVl5eVowNWRYckZqaE5abzZWMEo3S0tLRUNSTisrZVdYIEFJVnVobFRWN2trZUpXMUthM21HclhIZXN1a2VEZTZQMURIaUdLTFZiaVl6MElub1dyaHdJZDBQeTBQM3JsV3Jsa0d6MXo3MnlTZWYgL1Bqamo2cEc2MWpRSzYrOFludWoxM3AyU1BBSU9VUWplUTF5RktlUTdkQnlFSGFlUEhtNGdGcjJ5K1NaV1RUUG43UjZ6a2dGQmFtQiB5VWFNR0lIRDdsVy9DcjcwTVlVTndQZjYvUFBQRHg4K0RJRnBySXJYZVhWekk5d202SEljMDRHd1BYODZlUEFnaUpSa0Y3THB1dVBHIGpUdDkralJjWHJ0MjdWYXRXdkc5Q052ckU5YXVYZnZkZDk5Ukc5Yk5mcG9vNk5xMXF5ZUorTlhjdTNidDBocXZNbVhLaE1Ta0ZMVnEgeEhPN2NzR0NCVFhMNWU5aGNMNXFIR2RjNTNZYVd3d0lwRW53V1QzZndtVm9mVDJ0V0xGaVE0WU0wWXIrOXUzYjQzNEJkUG1DdnVKViBPeHp0N3JXdjJ1RHVzSXZaMTVOMzc5NXQxbWxweXdYdTJ2YnQyM0VTVXFaTU9YejRjSmxCWDdBK2Z2eTRkSWpHMFkyVWgxOHJWYXJrIHVkM1QzM2JSSXI3a3laUEhrQ0dSYUVLMjJUeHJrb0phYVBtTFh3ckhsNURGZFlPMGpBT254c000WXNFUkpJTUdEZkpFa2tZLzlMbCsgL2ZxREJ3OVdqTjErL2ZxbFNaTkdVUm5nUlUvS2Q0YWduRlFiamwyT29EbGNwaGtsd0kwOVFUNWhURkRZd0pwdmdIaml4SWtkQm85diAzTGp4L3Z2dnkvNW9BN3haN3c0V0thOGJNbkp1RjYyQTRHbCtIUTRmNjVIdDZROUJFcmh4MUs5ZlMvc1Y0Y1hYcisrODgwNysvUG1sIGRMVWlSd0Y4Z1NaV2VNeVlNVjdiejFCWDA2Wk5jUUF3cVNoWHVvUjZFYTExNU1pUnlIZHNyOS80SldRMVpVamZ3OVJRYWQyN2Q3OTQgOFNLUVJaRGt5NWZQUkZ6eDdCdVVxRWVQSHBSQ3A3UHlsd3JScXlHQ21qVnJacytlM2ZOMS9pNnlUWllzR1hXdVpjWXhDdG5STGZteCArRnJTYmJZVTJDN1EwYjA3ZHV3NGNlSUV4RWw3YUlzck5WaWtTQkVvRm9zTVVWa25iMm55VjE5OUZkMnBzd3B3Q2xFWHVQdzBQN1p5IHdZSUZ2TFJ0MjdhMkVXV2FXZXZ4K1lzbVFTL3lPcDFBSXVQT2phVkxsdzZXanhIQVplcW9talBpQXc3dXpKa3o5K3paUTlmRlRHbHogbWd5RjV3TXhTc0NhNHVpa1dYd0poWmlTbTRIbmJWWFkvSXI2MnJKbHkvcjE2M0dkRlFHVUs1OTU1aGw4andJRkN0QU5rTkdlNUFKQiA1TTZkMnprZStVTkxmMFZ2MnJkdkgrNU8wYUpGclVGaE5LRk50YUxDcWMwbnc1Tk9Lc0xVZ2tMdHhRRFF3QnBoRGJuaVYybWZ1UksrIFZQWHExYzJKakRRZXpWbW9VS0VzV2JJZ01ORFRPclRUMStJeW1uemx5cFc4bE5meFZ5ZWEydFoyUnJoSUxlaFhrclp1M1FxLzZnRFYgTm0zYVpNNmNtVElDY1oxajdXdGxISDI3WGJ0MjlHM0tEakh6Z2NvMDI0cXB6QUVEQnVoS2VPVG8wYVBJa3BJbFM2TGFkZWdabFVCViBVNEZxQzk3STdYenp3UWNmMEdyV045Si9JQlF1YTlpdzRWOHhMRVUzWisvY3VSUGN5T2N6TGd0T0VsNE9MandNa1RkdlhxQ3NneGlwIFlsb0Njc1VCT24vKy9JWHdORy9lUEVoZCt3T1EwVG9UbGZiQVROTnRGTGhmVkVmejgwREY5NTgwYVJJRzNYWXNuWFZrdDJMRml2RDYgNTU5L2JvNU9wZFUxUngwWURmdHk2Znl5Mmt1WExqWENDWlNqUS9oM3lwUXBEaEdRSVdEWWV2UG16Y0NPL3FDVnBXWmtpZUxnNnZUcyAyWk4veDQ0ZFMyV2VPblZLUWRWUUZCQXd2TVBEdGZPRlI2R0ZNSUJVQmIyRjY1SDR2WHIxYXRDZ2djNjYxNndXbGM4VDhOb2YraXFvIC8xUFAwUnl5dTArZlB0QnRpaFFweG84ZkQ4UkJiZS9ldmVuM2NBTWNTWjJDTUlVeWt5VFY4UjF5YXpDUjlBRWFHL1ZzWWdHWEtGR0MgdWdibDhDN2duajU5dWhteXBlcnBHelNZNGx1alo1bzBhYUxnNXpad3E1ZlRpanhOdENSRHYyYk5tdkxseXorc3RpSGJsU3RYQnRCOCBVT1I1aW9ZT29lcjByMmRYb1dOVEc5cm9RSlVxenFXQWF5SUUwVEYrK3Vrbk1FcUgxeGdSV0cvVXFCRkdEMExoeWRRcUhxcU9BcFN3IFFmL3MzNzhmNHNEUEJ1VmNvMVZ1MmdMU29VT0hVcVZLOFlTeVpjdkdmVFZDMVdoTm1UWGh6WHo3N2JlZ3AxdTNibUFhTzFpN2R1MEsgRlNwOC9QSEhpaXJ0Yk1SQkp5d0M4bERoTFZ1MmhGUlFmdkFFa3FOMTY5WWJOMjVFa3hRdlhseHkwTWdTMmpKdDJyUlFlL3IwNlhHNSBvQ3ZQN1MzYVBFdWFOV3VXZGRWSCsvYnRINkk5M2J0M3IwNWdVa0UwQWcwTG1EMTdOaWx5N05neFZFRm9hQ2k4UzNreGpIQ0hkV012IE5WYXVYTGthTldwQUhOUVNBS1hxWnMrZURXM1RIRnFnNGl5VzZDb2JObXpBNTZhZUoweVlRSVhUUFhnbTd1eXlaY3RpbEJxSkVtUlQgTzhPR0RaczhlYksxbXFnNGV2enExYXRSdldpRG9VT0hvclpoVVB3MmY1OFB4TUUzYXB0V3BMVUFOMFlBMnU3VXFST2dwN1hNUmpLTiBmaUFaWWFOMDRRbCtRcWxqMWoybE5zaW1nVFZpb0hzTEZ5NGM4RDYzeUtjUkkwWm9XdFFRODhDQkF4VXB3SE5MRlJWYnRXclZUSmt5IDBZRXhmY21USjBlSy9NT1NnRElTZ3RKQnlkUVk0RWFMSHpwMENMTHdkeHNMMS9NNnJDdWQ1UERodzd3WFMwS1hRL1pFeHFtSTZjalcgN2ozRjdyRDlSUC9HVm1xSWcrcWdkaUw1SWp4NitFUHJZMG0wYTcxNjlUNzk5Rk5JMmdwdVJjWkJsdEMwZ0J1NDREQWhhV3g1MXBtOCBabU9PbGxYczJyWHJvVFFNbVhuOTlkZDFWTHZ5QXdjREhkd1NJZHVBaGp6akVlYktsVXRkbDF2dzlvQzFXV1pvWEdyTWx4eEVQRkZFIG5jMTIrWnVRS05nMDFCcUdGNUpDMlVmUnJybVl4ZG1laGVTYkgzNzRBZk5LdGRKbUowNmNDTXE3NEZwa0pScGR2angvNFJMSUczRGIgbWhhV2t1em1KMUJDTnVobVdpRms5azJpS2VsK0p2Z0dVclZyMTY2QjdlQjBMOXU4ZnI5Ky9YcjZ2M1hERlM0S0FnOGNXN2NldzVUViBxbFdUMjBlMk5YR2p2VjRtNlFnL3NBNnN3VDFVcmNVaFFhbDhlSVFLaHl3d3YyQTk3aVBiMXJrMUZJVU13RlpDcTRvcEdxeksxVjVyIGFoYkpRZU1wVEJTZGg1YTJuajRxNWs0WW5pQnZjb0pQeVpVSUdLUGpRVGFQNGw1RDIzU0FDSDJBcUVoZHVuVEIxaHMzRWJ4Ky8vMzMgSUp0TVNpQlI4Q0ZEaHRCRlpZaDBhaG1YR2JZTytYdlRCbm9NWlBNcjF2TGt5Wk5CeDkrY09YTkN3OU0vLy9uUGh5Zy9vZ1BaWHJHKyBjdVZLRkRBRUV5ekNzQ2FhSERkbyt2VHB5R2dkbmdTSE5XalFnTDltNzVNWnphWDVnVGowQm5uemwyL29iTWhObld3TGpxZE5tMmJjIFVEQXhjdVRJYUc0VnlvS0pCeXVHc092VXFhTzVKQzJ3UG5EZ2dFb0tyT25BQ2pDQzJLQlhXeTJWL0dDRlcrbllzU09hR0lzVWVhcnkgVEd2V3JJRzJNVExvd3hpQzdBVFJNL3lDN3poMjdOaUNCUXN1WHJ3NHdubjFBQVlpYVdQSUZjM1h2SGx6eUJpdi8vcjE2NUF4N0FzKyByQWNTeUdIaUc4Z1AxMTRydjlIY0FHWHUzTGxhbmdHWEswNmFwcENtVHAzcTd6cWhTQ2EwUHN4cWdoWHEzQ25LcUgzc2I3LzlkcGt5IFpjNmZQMDlXNFc5NnRVcEVKcTFyVUkzalNFL21saFl0V3NBc0RrZHVPeVNGQVhHNG9FcVZLdVBIajhjZ25EbHp4bXZVOExnNUIwbTkgTEZ1MkRMOCtRc0dxb0ZDUmNVVFFQTHlJSm9URHdEY1luVHg1TWw2bVZYb0NnbWVmZlJhZUF5dFNuenBYZ0ErVktsVTZlUEFnTFlUaCBOcTRiMXd3ZlBqeUszRVRQTDBFR05zUzZmWWEraWpoQkpuMzU1WmRaczJiVnZDQU1UU25JbXdLTVdGMUc3YkhRdUI1ZDlMMzMzanQrIC9IZ2s4eGtXRmhaaDg2Rkcyclp0RzBCNHJWaXBSaWdrOXAyYWpYRDRqQ3N4dGI0Q09MbFB2RWpESXhyd2hxVysrT0lMekhldVhMbU0gTXBHTkJoT2cyUnhacHAzaG9LUkVpUkxseXBVejYraWx0azNnc3VET24zdW1vVU9IOGpxanNNa0dIUlZsaFpnMnVTV2Z5clA2cHpLdiBvdkdUUVQ4ZEcxZ0hSZjVSZkFrMjU4dm9manFoK0pIUTJmUjFOM2pWZEVsUWNFTmJUcHc0RVV6VHdDQWdiOTY4VzdkdTVmc05HemFnIE9CUDhuYlFlQTNZVU12U2xUc2ZTWElhaGJUNzM2ZE1uNkRXanhYZldoRTR0VmFxVWRVcGZPYVNYV25Pb25xbVJhWDJwN3BvL2YvN08gblR0ek1VVkFoUFR1M2R0bDFDV3Z3MW1ldHRkTlJEaFIrME1IZDBpVXNyVVo3d3N1MWJrRTk3dnZ2Z3VPbndoUDJIZGxnODdUdDI5ZiBRQzhwQWliNFZXYmQwL2V5cmIrTmhrR1M3dDI3a3pIcndRL21IRHFUK0pkcmRINk5QZ1A5SERseWZQLzk5MHVYTG9XbnVRVnc0M0s0IHdhc2c2eERJMDkrYWp5SERJeUYveGRUa1REWVJWcDhXUlRWcDBvUldCNmI4eFhtMXpoazFhdFFvVmFwVThzdzBMaWIrODdWMGlYL0wgbGkwTHB3YWw1YncrWk0yYU5TKzk5SkwxdmJhRHZQU3ZWSmFFRTBYSWxDblRpQkVqWk83d0xLVlY4QlA0eG8ycGRJQjFFS1BzeFNQNyBmeE9ldmkrK0FaZHU1czlvczB1WExpR2FGV0lLUzIzOWxZZi85Tk5QTld2V0RBME5CZC9TTGJhVDAyemc1Z0tkdEJLVTB0bStJVDhsIFM1YTBHZ3BiUkVVek9LMkJlUndKUEFmMGhsbWVzR3JWS25WT3VzZTFhOWZjd0ZyOTRlclZxMTRuakRUR0gwdkJIVU9SN1lZdDNBUksgUlpPQVJlMzRBTi9XWUsxbUxHWDU4dVUxYXRUQW1vTnZxeUR4dWdCVkMrMGpiM3c5NDVST21UTEZxa004ZHlRWkJ4RlhNaytlUEsxYSB0YUpuV2p1L2p1L2hnczgrKzh5TklOWWlzTmlpTHVJT1o3dEpFWXBJV2dWS2UrKzk5K1IrL2IvMnJqVW1xbXNMRXpXbHBVVkFRZVNwIHZLMGdEeEVxNWFFQzFqZkVJR3BibFZKREt0UkVLMDByVmxBd210RDZTS1ZOYUZTS1NsdHFOYlEyZ0Vhd0dJdUZVa05GRUpBTFdrUkUgUU1SSEVVcDZ1VjltdGVlZW5ETno1c3d3dlBmM2c4d2N6dXpaTS9QdHRiKzE5MTVyVVh5eEdOQXRodzRkZ25WM2RIVGtaeTRWQXpJZyBKeWVuL3o4OEphSGtqMEFYRnhkQlZnTkJXVDA2bE92azVCUWVIZzVYV0xEaTBkRFFRSEljWTA5T1huYzZCTmIvbFNqRzdLRmsvNjFiIHQraWtQRmdyWG83Z2JudjQ4Q0djVHNoV2dlQVdBTlRocit4cXgyekJoSVAzcFhUZ3FzSWEwQi9NUEJCVUdGZEsxNVZEUWtMb3RxS2kgb21GMU1va3hld0FCeS9UeHh4L1RiQTRPU1ZzeVNIT3doTEpKS1E4ZG5UQUJCbDZIM2F1cnEvUHk4bEtWaG9hNmJXWm10bVBIRGdueCBRQjNHc0J6UTgxdU0yY01PYlcxdHRPd3dhZElrT2NvU0EwQkNkanM0T01oY0pwT0R4TVJFZmg1S2dmdUlQbmg3ZTRzOUJEN2dLdEROIFdWbFpqTk5qaTlrQTFEYmxSYUN5cU5LQTVkdTZkZXUwYWRPb2NocUJuMW9rTlRWVko3MXFhbXB5ZDNjWHJEYlNpS0pkUnFqL3Fxb3EgNlVhZzBlbHN5YkE2UjhxWVBVaW9yS3cwTVRFQkF6WnQyaVRuL3ZiMjlwaVlHRk5UVThodTJ0UG1XMjVyYTJ2NSsrMFNTRTVPRmhRVyBwS1U5Mm1CeWRuYVdLTG5FTFhIUWRtbFNVdEx3V2NjUTkyU1FWOGZINlkwQmRIZDM0K2UzczdPTGlvckMwL3o4ZkRtdmdzY0daaTlZIHNJRGJadWRiMXBhV2xyUzB0SDUyRENZMk56ZVhuMFdTTTlnZ0FZVFRnUU1IK0dkWmxhSzR1QmlPQlBSTVdGZ1l6VGJESW5SY1dUQy8gekxvL0l5QkhsTnBqaGhKNTduUUlHRjFhNkYyMmJCbk00ZjM3OS9sVlVpWGc0K096WXNXSzVjdVg5LzJibEpxZjBUZ2pJME5PTGorSiBjN25mZi85OVRVME52eEZpTnE2Z3o3REJpeFl0VXB1LytNaVJJM3FLOU9TVXFtRzRaU0hqZnpUK1VaelJ6R3c5cldwSFNHZFVra2hFIEJuTERiSHQ1ZWNHcVhiMTZWV2FiNjlhdHM3Q3dDQTRPRmhRUzZGTWNPaGUwdzUrRkJlZUV4V01ZVjA2ZE9rVXBFL2o5cERmYXVIRWogM2xvaTV4c0g5QUd2d3ZDai9GdkRkdVljNVBSbzQ0YjJvMnBkbUYwVmZhWGZEam9iRGhuZTlPTEZpL0k3bVpLU0FrTUlMMDJRV0FjaiBKRDA5WGRVNm5maXBnTmszYnR3b0t5dmpqMGJ5VS9FdVFVRkJFRUtDa2pTcVlnS2VQSGxpWm1aR3BlYjFHSWFKelI1azZPdnJlM3A2IGdnSGw1ZVh5WHdVSkd4OGZEOHROZVE3NDQ2ZWdvRUJPVWxtbDV1cTc3NzZqSXgvODIwQnJTMHRMR093Wk0yYklNWEwxOWZXdytyYTIgdG5URWp4RjZaRE5iYTJrT1VqbzRPRURDTmpZMnFtcE5hZVB6NTgrSHNZZVNvUnpFM0oydHJhMVZWVlVTQmx2VmRaanF2THc4U293dCA4QjNYcjE4ZkhoNHVrNmFWbFpWd2pqRVhZZFQxRFc2Nkw4YnM0WVhKa3llRE5Qd1NVUHhLQUJKSVRrNDJORFIwZEhUazIyQUlrdXpzIGJLNWNrMFFaUmNHL0dob2F1SnJrM0tqRHNKazNieDdrdFhqalJ0WFlvK1FXbEtsc3VPWDVaY3pXMkdBTFhEU05iRFpseUJaRTdQTEogTFpINGZjZU9IY2JHeG53SEg2ODZlL2JzaFFzWE5Pb0dUSFZXVnRiVHAwOEZud3VqRGdaYlVCSkovRnIrMDQ2T0RqMUZvS1M0K2lOaiA5bGlSSW4yS2xPOEdCZ2FVT2t5c2c5VmFibjkvLzltelo5dloyZkU1OU1jZmY1U1dsbXBVS2dDMldWRExtREoycjFCQWxSL2Nwd2k4IEY5aG1TamtKTmNKRTlzaG1Oa2RyN2ZoTmhrMXBrUTJPM05JdDc5MjdsL1FNZCtYWnMyZFhybHpoeW9QSUFkUjVVMU9UWUNCTm1UTGwgelRmZm5EUnBrcW9QRHZVaXJqcEp1bVhZcm1Felptc003V1plTW8yMER5SXhlQ1MyOGNDOGdJQUFTMHRML3NKMlRVMk4vTEk3ZVBlSyBpZ3BCeVhjZ01qSVNIcXFxTHQyOWU5ZmEybG9zcGpFZSt2bWRNR1lQRjBKci9mdlJhekY5MDhhMXRCeVhJSGQ4ZkR5WCtJOFRDWUlOIEYya3BjdnIwYWNGSWdHOGFFUkdodEdwMUg2OUlqZmkvcnE2dStGQVVPOGVZUGJKdHRpRG9WVk14UXlSd2NYR1JtQVJvdzFKVlhpaU0gQ3ZDSm4rbUdvaGJrZDRQeXUvS3ZMRjY4bUQ4UDhBMDh4WDJwbW1UczdlMG5USmdBZVRNY0s4VXdaZyttVEc5dmJ3ZUJsSlpXRXBDYiAvRE14WTNCYmRIUzB3R3hETGNqc1EyZG5KOVhvNFRlNFpNa1NjWUVPTGh4T0lvQU4zY0FZZ3dUWHFBb2hZL1pvQTJoYVhWME5vdmo1ICthbVZPclM2Ujl3UzNEbHIxaXhCK2dTeGJsYUY3dTV1d2MxUUdsWldWbUx2a0t2ZEtCRjNERnMrWThhTW16ZHZZaTVpYkI2N3pJYkEgT0gvK1BHams2ZW1wVnVwd2o4WG0wTURBZ01wczgxZElaT29CaXUzbFgwRm5ZTENWU2hHTzFoSU80cXBWcXpBSk5EWTJNa0V5UnBsTiBtdUhTcFVzeE1UR3FnZzc1c29RTDFoTGJiRnpjdUhFamY2ZFF6RmVKZVVNZ1JUdzhQQ2oxcTZDM1hKMDc2WFdQMWF0WG01cWEvdmpqIGo1cVdUR2ZNSGowR096czcyOEhCWWUzYXRYTDhWRDFlTUtLWTNEWTJOdnl5MFByNituS1cyTGxRWFA2VnVYUG44djFSeml1bHpENXEgMjBRM0VoTVRqeDgvVG1WaUdLZkhGck5CbEtxcXFxKy8vam9sSlFVV1RxT2xtUEhqeDR2dE1SVys0WjZLaTY1TDJHeitVem8xTHQ1QiBsTDlianR0ZWUrMjFwVXVYcHFXbE1iVTl0cGpkcDBqdzllR0hIKzdjdWRQTnpVM1Q0L2xLRnhuaGh2SnR0c3cyYVorSWY1QWFJOFRNIHpFeDZvVVl0MEFMVTBZMGJOODZkT3pmSVNld1pzNGR5UGFTdHJTMHBLU2s0T05qSHgwZDZqMGFDM0VwbGdLYk1wc1VXN21hcWdhMWQgbC9pQWJvRmJuSkNRY1BEZ3daS1NrbUVTQ3NtWVBiRFcrdEdqUjBlT0hNRnZ2MlRKRXVnSGFkOVJJNENSL0xvSU1xMHNmd2JBWTR3MyBPYkV6Y2pwamEydTdiZHUyUFh2MlZGWldzdVh0VWM3czd1NXVXT3ZjM053MzNuZ0RCSkp2SGVXSVpqQ0pleXd6QnBHeWlQQ3YrUG41IDZTUjRrYkxaT3pzN1EzQkhSa2FXbHBZeVpvOWEzTGx6QitRN2VmSmtmSHk4a1pFUjVtdjVIRks2SGlKaGZhRk1aRFpPVlVTNEZzUmIgajFxTU1jS1VLVk9lZi83NXVYUG4rdnI2WWlyWXQyK2ZSbWRyR2JOSEJ1cnE2cUtqbzhFOC9NRHU3dTZRczRLRU5XckRGOVJPNkIwZCBIZndzcVRJN1J1VllPVGVVZTZ5SzFocTVrazVPVHZiMjlsdTNidlgwOUlRRysrS0xMOGJzOXMyRTBmUmhRRFU0VHpDRUxTMHRjWEZ4IHNJNzUrZm11cnE1S2p4T3B0Y3BxUThHNXFuWW1KaVlncUV3Szhwa05DVUdKcG5SNFRHL3ExS2xtWm1ZUVlKOSsrdW1YWDM1WlgxOVAgMVdvbzZrSzhjTTZZUFFJQUdZMzVGMXdCVVE0Y09ORGIyM3YvL3YzcjE2L2psdzRORFJXZkFsWExKMm5PdGJXMTBRTXdWVHB5VVNDSSBxUjRwN1RJK2VQQkE0aTAwWlR6YXJLMnQvZVdYWDlDZmtKQVF5aHlFeWNmYzNGeVFtcEF4ZTRSaC9QanhjT2JjM055b0VzV2pSNDlBIDd1TGlZa3pUNE4vNzc3Ky9ZY01HK1hTUnBqV2RYS1UwZlBKemZWQStXRENQYXE3VzFOVDQrL3YzLzRQalk4Ykd4cGFWbGZuNCtHemUgdk5uT3pvNEtSZ3JTRVRLZFBiSkJHNGN2dlBBQ3B1WlpzMmE5OWRaYkdSa1pJRHBjU1ZDOHBLUkV2bHVtNms3b2VJb1FnOVRSS0trWCBaYm1tRlJMTU1HaW5ueDhXM1hqOTlkY3htUEc1QWdNRDA5UFQ4WGY2OU9tQ1lHVEc3RkgzQ2NlTkEvbTh2THhBN2syYk5zRnBDdzhQIFQwbEo2ZXJxa3VOZHFXSkdWVlVWWlpxazRyOGFFV2o1OHVWMFA1amQwTkNnOVVlRHpLaXNyQXdJQ0xoOCtUSmN4a09IRHUzZXZSdUUgSHJOMmVzU29rWC9TeGZaYkhWTGVNMTlmWHdjSEJ4c2JtejE3OXFTbHBZRVdXN1pzb2JyVVdyUjU4K1pOcWhTRDRhRTJYYW9Bc0trMCBxNERaemMzTjZJbW0rMGNVb3RiVTFMUjY5ZW8vLy96VDNkMTk3OTY5NkFiVklXRzAvajk3Um5TWkpma1puZEVVNlBqcnI3OVN5dmVvIHFLajI5bmJ0cWhDdFc3Y09hZ2ZzbkRoeDR1SERoelY5T1ZlbjcrV1hYNzUxNjVhbUwzLzgrSEZCUVFGRlAwQml3UTJWVTB5TVpZWWYgemFBYTJMZHYzdzRMQ3dPNVBUdzhmdi85ZHkwR1QxQlFFS1dMaHp1SW9TS2RGRjBNZUhoa1h6SEc0T0JxU3V0ZHUzYkJPOFJiWjJWbCBZYXl5a2t1ampkbGFXeW1RdTYydDdiUFBQb05FaGtRNWNlSUU1blQ1cmVGbU9qT0lzUUVuRlU4MTdkVzhlZlBBYkpKSjMzenpqZnpQIEN3VVNIUjBOZSsvdjcxOVJVUUZ2Z2RGNnhOYzhFQzlUYUMwb1lXc25UNTY4WWNPR0gzNzRvYk96Yy92MjdlbnA2YkNGTW5mczZ1dnIgcWZvZUxhSUxkamZsd01mSGgvd0hVQk9TWGViSEI1WGZmdnZ0a3lkUG91ZW5UcDF5Y1hHaGN2Rk1WSTlJblUycEZKNDhlVElRSmg5KyBXRmxaR1VXQXYvZmVlNURkY3NyYUhqdDJER0lBNHdxMmM5V3FWVnE4ZFg1K1BvWVc3WjdJYVFHRytmTGx5ek5uenNUOWlZbUpNb3RQIE16VXlwb0ZoYy9YcVZXdHJhMGlMTld2V3RMYTJxaVgzcGsyYktPWUY0K0dUVHo3UlFqVTlldlFJVXB2V01TQnN4TVdxK1FDSkwxeTQgUUlkbTkrM2IxOUxTd2hRSVk3WmMyWDN0MmpWUUJ5cGw1Y3FWMHBhN3A2Y0hXb0ppYjYyc3JHamZSNHZsSFFobFduaUcxRDUvL3J3RSByWC83N1RkU0hidDM3MGJmMk8vRmFvdHBJTHRuelpwVldsb0tua0Y1UTNQRGlLbzZBdnJ6enovZnZuMmJWRDRzUFJTQ3pHMUxBZHpkIDNTblRKQlNScWp6RjVESXVYTGl3dTd0NzY5YXQyN1p0NHdkZk1venBQVWo1dXprT0RnNUZSVVdRenJ0MjdTb29LRkRsVU1LK1Vpb2MgOE5MSnlVbnIwM093MlhSQ0VGWVpjb2hmTzQ4YkljM056VkZSVVJobTRlSGhIMzMwMGRnNXFjZVlyV055Ky9uNUhUOStISUliTkNvdiBMeGZ2d0Q5OCtCQ21IWUtFUlBiY3VYTmx0aXkrK09xcnIwSnEwK1BxNnVxOHZEekJEUkFlUjQ4ZXZYTGxTbkJ3Y0ZwYW10SjhsZ3dqIGUyMWtrRFgzL3YzN0tkY2VUS2xnclRvMU5YWHExS20wTnc3UGo3OUh3M2NUQlM2anFoWHVzTEF3MnErQitWKzdkaTF0MTNOK2JXWm0gcG9XRmhaZVhGOFlTV3dsaE9sc0htbnZkdW5YcjE2K0h6VTVPVG01c2JPU0sydHkvZjcrd3NCQm1HOHdHRjIxc2JLRE90VkRZSEh4OSBmZWswRlloYlZWVjErdlJwdWc2Si85TlBQMkdBUFh2MkxDa3B5ZFhWbFpVMFlHcEVCekEzTjQrTGl6TXdNSUN6ZVBqd1lmaHdsRmdzIEl5TURSTWRqaWsveDlQUlVsZnhYSUQ4RVNhRzR4Nis4OGdwWDdlN2V2WHR3WGlsRXJiS3lNaUVoNGU3ZHV4QkZFQzN5d3hvWUdMUFYgN3hGdTM3NGRybHQrZmo2VU53d3FPQWZ0UVhFMHRJVUp6Z240MmljdkFScjNlTjY4ZVk2T2pqRC9HQ3FZR1RDRUlMamhudTdidDYrdSByczdEdzJQUm9rVWFaYlJpK1AvY3k3NEM1U04rM0RqbzdNV0xGNFBabjMvK09hZ01yZHphMmdyKzRWLzYrdnJPenM3OEpOeDlpcmd5IENqZVVTV3M5eGRsdWIyOXZESmhlQmFCMklJRnljbklnUlhCbmJHd3Mzb1Z0bmpPYnJXTllXMXRIUjBkVEVHNXVibTU2ZWpydGFVTTggR0JzYno1a3pSeEN2L3MvV2x6eXZuWHNjR0Job2FXa0ppdmNwNnFZV0tZQzVZdlhxMVpnVFdHa2x4dXdCUVdob2FFUkVSSitpcmhmcyBLS1N3bmlJZEZDUUUvcVcxRk9IZkdSd2NQSHYyN0VtVEpzRTJZd2dWRnhmWDF0YlNZUkphaEdHL0FtTzI3bUZrWkxSbXpSb1k2YTZ1IHJwYVdGdHBNc2JHeEFSZmgvSEczY1l0NmFvOEtjbmZ5TC9yNStVRjF3RHpqdjNmdTNJR1VYN2x5SlZTS0RoTzFNV1l6Q0xGdzRVSUkgajc1L1N6ZFJTQ1VkK2VETU1KVk9sWE1DbG02bXhXbnVJdHhFRnhlWDZkT242eW5TdFVGd0wxMjZsRjhPajRFeFcvY3dNRERZdkhreiBaMjR0TEN3Z0VoWXNXQ0J3TndHMTdxT2VJaWFYamxMeGg0R1ZsVlZRVU5DMGFkUEluT01weGhJejJHeHRaTUFSRmhZR3FVQ3BleUdJIElSNzQyVlBCUlc0YlJlMStDZ1dZQ2RRSXVPN3U3bzRoUkRHLzgrZlA1M2JkR1pqTkhrQVlHaHJHeGNWeFR4MGNIUGlPSFpmYVQwNlYgQWpxMktxNFNCdTBCVFU4bVB5UWtSR2xSVXdiR2JOM2pndzgrNE9UQjlldlhCY3lXcnYwbE1NOTZ5aW9STnpVMTJkdmJrMWFCN0daZiBPR1AySUFIYU9qdzhYRSt4QjY2VFJPNENHQnNiUDNqd0FBOG1UcHlJOTJKZk9HUDJJQUdtTkRrNUdXYjc4ZVBIQTFIbENQSzlzTEFRIDc1S1FrTUEySFJtekJ4VXVMaTV1Ym02OXZiMEZCUVU2Yjd5a3BLUzF0UlZLZmVQR2pleXJac3dlVk1CZ0p5VWx3YUJXVjFjM056ZnIgdHZHc3JLeWVucDdBd01EK1YyTmlZTXpXREgvLy9iZS92ejlFZGtkSHg0a1RKM1RZY2sxTlRWVlZGYVRJenAwN1dlVWt4dXpCQnFRQyBEUGI2OWV2eHQ2aW9TQnkycUIzNit2b3lNek9mUG4xcWJtN3U0ZUhCTm1nWXM0Y0FNTmd4TVRGZ05qUnhmbjYrVHRxRVMxcGFXZ3BDIHYvUE9PMzI2U0R6THdKaXRNZlQxOVdHNXAwMmIxdFhWZGZic1daMjBlZWJNbVljUEg2SkJYMTlmK1dXY0dCaXpkUWxJWVZ0YjI5RFEgVUJqYS95alEvelloYkNCRkhCMGRuWnljV0xBalkvYVE0Ym5ubm91SWlPanQ3VzFzYkN3c0xPeG5hM2Z1M0ttdHJiMTM3eDVFRG9zSyBZOHdlYkFpT3AxcFpXYjM3N3J2TnpjM0hqaDNUTkZoZGdPenM3SXFLQ2hNVGs2VkxsN0lnQXgyREphWlFDM0d1RDZnUktyd1VIQno4IDRNRUQ3WnFsbkU5d0dTOWR1c1MrWkpheGNtZ2dTRGtKS3c0UGttbzdXVnBheHNmSFN5ZFRGWXlUcjc3NmF1Yk1tUysrK0NLRU5heTEgT0RzbXE4dlJmNml2THM0QS9QWFhYNEpnVzF6WnNtWEwwYU5IOVJRaDZKTW5UdzRNREZ5elprMVFVSkRTTkdXNHY3eTgvTXlaTTNsNSBlZERvbEE0S1h1UEZpeGZGUjZENmRGclZkNHk2KzR6Wjh0VTJmN0daY21EdjM3OC9OVFdWaUVoSnpLaDhqTGUzTnd5NXA2ZG5SMGZIIHdZTUh6NTA3MTlMUzh2VHAwNTZlSGk1VXpNZkhKek16MDlIUmtTMkpNR1lQR2MxNG1jZ0FBQUZlU1VSQlZMcTZ1c0JhL2dZaGFRYVEgdTc2K0hzb2tKeWVucHFibUg2OWNVZFVYbGpzMk52YmJiNys5ZmZzMkREWW5NR0RkVjZ4WXNXelpzb0NBQUNNakl6UXJNTTl5b3M0WSBHTE4xS1VqQVY0SFovcThDY0NqQjc5cmFXaWdOeWtFTXN1Sm1Nek16Mkd5aU5RenpuRGx6SWlNajNkM2Q3ZXpzTEN3c3hpc2dvUFUvIDJSWVpzeG16QjNNUnFiVzExZHpjWEhDUkhzREZCS0U3T3p1Ym1wckE4bXZYcmxWVVZCZ2FHb0xaOXZiMnMyZlBkbloydHJHeE1UVTEgNVJlTkZvdHBhcENKYk1ic1FXVTJ0REtvS2FqNXkzR1I3RGNsWGFDU1ViMjl2YkRLVU40dnZmUVNYaVV3MGtycHk1ak5tRDBFZ00yZSBPSEVpT0NwUkFacjdQbW10VUtBM0dHVVpzNGNqcUFJMHlJcS9GSVd1azZtQTBaMHhlMWhvRW1hQUdiTVpHSVlNYkhXSmdUR2JnWUV4IG00R0JNWnVCZ1RHYmdVRWVXQTZBL2tLY01sam16V3pSY0VEQlZ2MTBSbTZaMzZUOHhLME1qTmtNREV4bk00d04vQStZVWljUVB0bWcgYVFBQUFBQkpSVTVFcmtKZ2dnPT0gIi8+PC9nPjxnIGRpc3BsYXk9Im5vbmUiPjxpbWFnZSB4PSIzNS42MjYiIHk9IjMyLjUwMiIgd2lkdGg9IjExLjQzIiBoZWlnaHQ9IjE2LjU5NSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFRNEFBQUdJQ0FJQUFBQS9PcGszQUFBQUNYQklXWE1BQUZ4R0FBQmNSZ0VVbEVOQkFBQWcgQUVsRVFWUjQydTJkQjRCY1IzMy9aMTdaZHJ2WHEwN2xWR3hKbG1STHRsemtLa3cxdGdNWUI1S1lHb2lwQ1NWL3dqOGgvQWsxRUFpZCBtQjRnQm96cHhYYkFCdHh0ZGF0YlhTZGQwZlhiMi9yMmxmblB6SHRicnQvdWJabDVPK1BsV0oydDNmZmV6R2UrdisrVTMwQ0VFT0N0IElGcndHMGhMS1Q1NU1hWG9WN1g0bThyOGRHVXB6d09YK0gwNmtpUVYvUUc1anhQN2tqSS9SYWtpVkRKNlVxSlBkaGtuZ3BicVJhVjAgelhHUnFERExTUzR0cml6bGlTMGxJRW9WY01MUlJRcFZjWFBocVAwSldnUXFpNVdVeGF1S29NWGRNWmhBcFJwYlhvbkdENFdxQ0tQaSBXc2dGTUFLVk1uSGlnbUJHQUxQQW9vaEhVREFxYmdyNk16ZFNuUUlyVUJHaGw2QkZCR0RDelpmeXZyaTd0VExnTFZSRjlLQkNYb1NxIENKY2laRk9nSWlSRjBDSlFFUTFJM0t4QVJVaUtvRVdnVWlXb1ZHZTdzYWNwcXh3VlJYQlNobUlZNXA3OWh3OGVQWDZtKy96dzZIZ2sgRmtza2t2aGxXcFpwbXZnL2tHVlpWWENSL1g1L1RjQmZYeHRhMXRteFlkMmFHN2R0OVhtOTdBQlR6VklzVU1tN3VjejJyOElUMFo2KyBDMmZQOTBhaXNYZ2lnYjlpZEh6aXhLbXovUU5EbytQaFJES0pmNnRwS2NNd0xBdmxGdHhoNDUvcEJTWUFFNFBmWTNnQ2ZsOXRLTmhZIFg3ZWt2WFhMcHZVdjJYN2RxcTVsbFVXRjVjRFZmb1lsdlAzcTdDY3N5MXA4OUxWejc0SEhudGw5N09UcEVZekNSQ1NlU0dvcFRBTFcgQ1F0VGdmL1JOTjMrSWdTY2h3enhBd2NJVHB2b3kxUUNoTmx2d2VUSUVpbFViWHlZbVk2MmxqVXJWOXg4d3pXM3ZQQ0dTc1dCUmNuVSB3YU9ucWtaVUN1TUVsN0h3eEFOL2VHekgzdjNkNS9zR2gwZkh3bUdzRWhZSm9peFNFSG1qNjRacG1YazFwd3dldWYyaUJDVktDLzRsIERzL0lleHFoS1RZem5SMnRtOVpmZk5lZHQ2KzdhSldnSmV1OFMybW9xZzZWQXFwWlMrbmZ2KytYanorNysreTUzckh4Q1J4S3BWSTYgaWFNUXNwMkdqUW9sWkpFMURhY2syWERTUjZSVmlLNEFocGdaajBmRnpMUzNObDl5OFpvM3ZQWVYxMTExdWFCRm9GTEpPc1l5OHU5ZiAvT2JlQTRjdkRJNVFwNkZoSG5DSVJTUUVPVkU3L2czK1V3bkNDUktWMllKanEwMnU0RWowZng1VjlmbThiUzNONnk5ZTlaNjczM0Q1IHBaZFVPUzBsamNHcUM1V0YxeTVXa3ZkLytOTjc5aDhlR2hsTkpqV3NIZ2JWRHZ5RGZvU1RoSzRVa015TlRhWk5ZRmhzbmNGUm1jL3IgYVc5dHdkYi8vNzduNzFaM0xhOWFXZ1FxWmExYTNQci80VjgrOGV5ZS9VUERvempRMG0yZmJvOVpBWlRKMUZpcHg1WnBDVTVJbGdOTSB3TzliMXRteGJldm1qM3pnWGFGZ2pVQkZvRkxDZXYzQXYzMzI4V2QyOXc4TUpyV1VhWnEyQ2Nsb1NHVWhtUmNZN1A2eGphbXREYTFkIDNYWG5YN3owelg5OVJ4WFNVanE3SWxCeHlsZStmZSt2SC9yanFiTTk4VVRjRVJJS1NlN2ZZdk5SWlFiUWJHQVVoVXpJWUFOenhXVWIgc0x4MGRyUlZGUzJsUTZXS3BpQm5xODY5QjQ1ODltdmYzWC80K1hBNGtzVEdmUm9rakhjbWRseEl6RDhrN2gvcEtHTEdjT0E0UGhIcCA3Ujk0eTEydnZ1TzJsd0JSaEtvc3N1Zjc5SmUvOWVBamozZWY3MDBrTlYzWGlXdm5CNUk1RkVhV1pGdGVzS3JjK3VLYi90Ly9lVmVWIENFdnA3RXExb0RKOTJoRlQ4WGZ2Ly9DT1BRZkd4c1AyTERzWjBVSVdwNUJNc1RGMlBJWnA4WG84alEzMTI2Kzc2cDdQZnFUTVQxaWcgNGdaVTloMDgrbS8vOGRXRFI0L0g0c1Naa0trU1pEbUxVRnp4UERMeW9zaXlxcXExb2VCVmwxLzZ3M3MrYTAvOHUxaFlCQ3JGck1XZiAvZmIzOS96M2ZTZE9uOFZCbDJFUUR3L0tPRWxTcVdDc0p1RGZ2SEg5bHovMW9aVXJscnFZRm9GSzBTVGw2OS8veWYvYy8rdnU4MzJKIFpOSTByZlI2TGI2RHJubHB3Y0dZcWlwK24vZVN0V3MrL0kvdnZISGJWb0dLUUdXdSt2djgxNzkzM3k4ZTdPbTc0SXgwb2N4cStFcGUgM3ZUS0xvVjF3ZHFDbzYrQTMzL0oydFh2ZS9zYmIzM3hkbGZTVWpwVTNEOVluTXZKajM3K3U3NytRWnNUVzA4cUxpWlQ2blZLVTF0OCByV2ZtaE96N2pTY1N6NTg0L2RtdmZoZC85cTB2dmdtSUlsQ1pVcjd5N1h0LzhzdUhNQ2QyM0lVWW0yV2Vqc1QwczA0WGc0MzlZUmF3IFRCUEc0b21UWjdvL2Y4OS8rLzIrbTYrL3VoUTM0c3BReGVVYnB1MDZ1KytYRCtMWGxMaUxKVWNCcDcrZm51Vng4WERqdjQ2MVJkZU4gYUN5T3RlVXpYLzdXOFZObjNScEVDRlR5TGp2Mkh2alcvL3pVOXZIMm9IREYvVWtCd1hkdXhzZkNMcDFPNmdONzdnZy9CNnd0UjQ2ZCAvS2VQZnJib0Q4S3RtVHBjanNydzZQZ25QLzkxSEcvWW5HVGlMaDREaEtJb1RDNHRXRnYySFh6K3pmL3dMOEtIQ0ZUQSt6Lzg2VVBQIG44QTlhRVpQR0k4WjVyN0M2ZkpTd0IybDl4SWcvRXdpMGVnVHorNzU1MDk4dnRUV1M2RENkUG5YVDMxeDEzTUg3Zmw0eHVPdXZOcjkgOUpDc0FGcnNNVUQ4WkNZaWtRY2VmdXpYRC8zUkhiU1U3bnRkaThvRER6LzZ5T1BQakkyRlV5bmR5dTdNY3M4Tkx0Njk0S2RpbUFaKyBQZ09EdzUrLzUzdmpFeEVoTE5XSXlqZSsvNVB6dmYxYUtzWGdrQmVhdlJUbStBc094dkNqU2VrNmZrcll6cjN0SHo5U0lwZ0ZLdXlXIDkzN29VNGVQbmFKTHZFeDJwbERzNjdDbUpNeWJYREwvTmw5Z0ZtTmRNQ3JZenUzWmZ4aUhyTUsrVnhFcU9PNTZkcy8rYURTV1dTOWMgY1U3eVlxQUFacWJJUzJHMGpJNk5QL3pZMDQ4OXZVdW9TcldnOHMwZjNOL2JQMEJDcnp4VDExWGNyeGZGNnhkTVN5S1o3RDdmOTlYdiAvRkRFWUZXQnlwZSsrWU5EUjAvRUUwbG4zeStybk1DWnl0eUt0UERXV1RBdGtWaHMxNzZEbi9uS3QwVzQ1WEpVTUI0UFAvcjBlSGlDIDdrSXhXT0JrUmtMc2MrS25sOHp2Ri9ocGMvVGloZEdDSCtEb1dQaFhEejZDK3hxaEttNUc1Uk9mLzYvanA4OXFORTBxYTV6TVRjS00gTEJWTXkySWFxRzdvSjA1My8wdnhKaVZkUTR0N1ZoYmpIdkhwWGM5TlRFU1RtbGJaL1l3emNwSnZpNW5SZUV6SmFEeDM2MXpnZnp3OSBESXNuRXIvLzgxT2NOZ014QlRsLytlUVg3amx6cnNkZVk4ODdKM1A4M2J5MHBlREpscDYrQysvOHA0OEtUbHlvS3RqNDd0eDdFTWZaIEtWMW5oNU9pckxHZDN1anprb3ZDdEFVN3ZmLzkwNVBGYXI3dTJMN2lFbFg1d2YyL1BuYnFESmFVeW03OW5hNG5SZXd2ODExWnZCaFEgOFdjUERvMzgwMGMvSyt5SzIxQjU2STlQakl5T1Z6ejBLbW43S0hpblY0R2pZWmI1Mjk4L0NrUnhFeXFIanA3WWQvQUlkdk5NY1ZLSyByalJmV2hZcExIMFhCcjU5NzgrRVYzRVBLbC82NWc5d3RGRHhVYTlTY3pKamExaTRzQlR3WGJwaGZPKytYd3BPWElKS0pCcDdjc2RlIExaV3FCazRLb0NWelBZVU5oUjAvZWFhNGkvTkZBRmF4OHEvLy9xVUxnME1WbjNBc2MvZFpnR2twN0NMamllUUhQL281WWV1NVI2WDcgZk4rVHorNWh4NldVTFFQRGRGcEtoTFNGckozN0RvZ0FqSHRVUHZYRmIzVDM5RldWcEJSd0dZc0JHTWRnL1JlR29yRjRsWFBDTnlwSCBqNS9hZStCSUlwbGtwSUdXT2FsUFljSlNXQXoyeVM5OFhYZ1ZqbEg1ajY5KzUzeHZmMlhuVXBqcVN1ZWxwVENjVE12RVhSTGp2YjVRIGxWbkxqajBIOWgwOFdxeTE0c1ZTbGNyU1VpSnpiMW5XdVo3K0tvKytPRWJscTkvNTRjRGdzR0VhMWN6SndvVmxrZm1Pd3hPUjUwK2MgRmdFWWYrWFJwM1llUG5aQ1M2V3E1M2preGZlcGk2RWxxV2xZdzVtOWZhRXFzNWJ2LytSWFE4T2o5UFJHUVVwKzhWV0IwL2E2Y2VqbyBjYUVxbkpYZHp4MDZjdXdrU1Z4VTBlaUxrUUFNRkxyVUpUKzdncXh6dlJlcVdWSzRST1VIOS85NmNIaFUxL1hLUmwrTWNGS2VDOERPIGZuQjRSS2dLVDJWb1pBejd5MlJTc3l6aFV3cGh1MkNvSXRGWU5Vc0tmNmo4OURmLzI5TTNJQXo5SEtwU29pY1RpeWRLYXFLRXFoUzUgUExWamJ5UWFOY2tSZFJhYkxkV3QxNENkZlRWTENtZW9YQmdjN3U3cG81bnRLNStFbU9WdWN2cTFMZjVxVGN0a1ZrZ0ZLbFBMejMvMyBoNkdSMFpTdTA4ejJJdXdxZHlsNERWRXB6dEFyZjZmREV5cTc5aDJNUm1PV3hkYWlMMWVlVURXOXlKSmM4ZEg1U29WZS9LSFNmYjVQIEU5Rlgvc1RtN3YwcXVKSEpzbFFsbmNKc3Rjd05LanYzSGhnWUdyRU52UmorS3JNQTRyL29VVlZGbHF0V1VuaEM1VmNQL25FaUVpR2sgQ0U0cTBVQzlYbzhrRmRoYWlsVmw1ZWNrOSt1NFFlWG9pZE9aNlJRQnk4SkZJeE45TGFhZFNWRHkrN3l1Q1ZiZEhJQmhLOTkzWVlDdSBqeFNVVkNMMmtHQmRiVzNWaGw0OG9mS0wzejA4RnA1d0Rna1d0T1RUTHhibGNjbXlIQW9HcW9vVC9OeW1mQ01mcUR5NVkwODhubUQzIDJIbm1JN0ZGTmpWVlVab2E2cXRXVDNoQ3BidW5uNXlCYWdtamtnY25SZXhac0tmdld0NVpFVm1yRkNmVEw1c0RWRWJIdzhPam82ek4gUExKdlE0dlkyandlejZXWHJLMWFQZUVHbGVjT1BUOFJpWkZUVU1XTVNrSGQrZUpiVzdBbWNPV1dUZFhEeVl3YkZqaEE1Y0RoWS9RcyBMaE1DS0JoWVNQTXFMaWU0MUlVd0xQNXlSbDhWMTVQcDM4NEJLdDNuZXpXTjdIa1VxeVRuYnBkRmQvT1pVaHNLVm0zY3habFhNZWxDIFBTWWZJSE9xVW9weHdrRCtrc0kxSnpNK1FBN09naVJHaGF4bkFXS3NlTjZBWVVyb1ZaUTJoejlEa21BQnJhMkEybUtXRXo1VUpaNGcgTXlwaUJDemYxbG1zTm9jL0o1bE1sWWQyZHNJR0xyMEtSc1V3VGVDSy9kbmNjV0ovVkNyL2s1N3lyU3pHT2VFREZkeWxrWUZpSURqSiBnNU1pTmp0Wmt2TTlib0JyVG5nTndCSkpyYkpIMFMrODEzRWxKNEN1bFV6cGhtR1lwVUFGWDZva01iZHBqRXRWR1ErSGRkMWcyYWhVIFBITmZxYzk0d1UxWjEvVklMRllLVGxpRFpNWXhkejVRR1IyYk1DMlRydzI2YnVMRVJnVi9TWExCTWRoQ0tvdE5NWm5uT1RCK2ZjT2ogWTNsSmYvVUlTM2s0c1QvU3Nxd0ZublcrUUU1WWhtUzJhMk45WG1Wc1BDeW1VK2FHcEtTTmozVC9WQUVXdUZ0NDNwUEJBYmM1YmxoSCBKUnlKNGc1TlROSlhoQk5BdHdvRG1xN0Y2L1VzbmhPdVYxdXdqZ3I3Wjl1NkwraWEzcjVWUmZIN2ZQa3l6QjBrYzNoNkRyeUtuU3FYIHdRZGRudE45Szh0SjVsdDhQcTl2QWFveTIxL25SVXptdms2SithdG5ON1F0R3kzMnVwNUtjQUxvTUJYRW5NejlkVE5LQ2wrY3pGdUogckFkZ01pMzJndG5xakxpbVYySDVUaitrb0NpS1hGTVRtUGRDWFdCTDVyNW0xbEd4MDAvWlFTUnJ0T1JlMHR4aGJoRWRmRG5EVWF6byBkT2hMYnF5dm01Y1RtRU9KSzdzdDFnTXdYRW15TE1rTXBBQXRad3cyUGVJcWZ6eGpoNzc0R3ZEelg3cWtmUzVPY0RkaFg1N2s1cnpHIHJLdEtSM3VycWlqVkUzM05GbkdWZjJ6RHhoSnpFZ3JXekpxRGduSmlVK1g2cW1FZGxhNWxuWXFpa0tDWnlZMzFVMkt3eFRUb0dTR3AgWU54dmY2MGlLM1doNEkzYnRzNWhhS3FrRjJNZGxmYldabXhYTXEyUXpjVmdpNlJsdGhtSkNzNXRFNTJnUmdWNytwYm1SaXdzczBvSyBBS0E2Wm9nNTJEQmNFL0E3UFN1VmV0Wmd5ZXpVelplVzJXUUVNTEFBSkhNQkhvOW54ZElsYzNGU05iUndnRXB0S0NTblZaNEx6ekpIIFlxRXBSREVJU2FiWlo0ekt0VmR1bVpXVEtiWGlhbUE0UUtXdHBTblRnTmljWDVraUxITXJ4cndkT1NOM2hPMmhxcWdkcmMwdnZHbmIgVkU1bUZCbTMwOElCS3F1Nmx0bW5xeUdMWFUyWlRndW5rRGhkRXYzaDhhZ3JsblUyMU5YT0NzYU12M2NwTFJ5Z2NzVmxHMVJWSllzcyBvR1FpazJWYThrckR4ZWFLOUV6MHBTaEtmVjN0UzdaZk8xZm9WVTIwY0REU2Q5V1dUZGpaeTdLTWE0bjlHYTdNL3I3cGc3d3dwMlQrIEd6YUJ4ekt1S3NxS3BSMTMzUGFTUERqSjZ6OFRxQlM5QkdzQ2RiVWhzc0FDU3J6TVJlWWlrU201cUxCNjJmUW5IU1lPQlB4Yk4yOHMgRUFEOFgxcVd5NERoWS82b3FhRmVvWXNtUlM3V01rQ09KUVUvN1dWTDJqL3c3cmRrSVNtZzNidExYdmhBcGJPalRWRmt1MThXcmJsMCBrbUliZWl3cGZyL3YwZzFyZlY1djRaeTRqaFkrVUxsazdXcXYxeXRhYzdtTWlyeWt2ZlZENzN0N2NScTZXMmpoQTVVWFhIKzE3ZXlkIGprK1Uwa2dLb052b2F3S0J5emFzYTJ0dUxGb1Rkd1V0ZktDeWFmM0YySzdJNlRYZUFwWlN0UVlvZVQyZXBVdmEzditPTnhXNWNmTlAgQ3pmTFFwY3Y3ZkI0MUFKT0x4QmxJWklDbkxrVXN1SHhjdHd6clZ3dUhndXZxTnk0YlN1MksvYVFzYWkyVXJnVVdaS3hwSFF0Vy9LZSB1MTlma3UvZ1hGaTRhWFp2dWV2T2VqcTdJb2FNUytGU2NBZWtxa3BqUS8wTjEyeGQwMVV5U2VHWkZvV2phMTNWdGF5M2Y4QXdEQXV4IHQ4OGVnQm9BZlFBR0lQQUFxQ0NrNHAvMFg2VUFXWTFqUUlqZnhCRklBaFJqcWIxa3B1Y0RmdC82aTFaOTBKNUxLVjNoZHVVTFQ2aTggWlB0MU8vY2UwRklwYUZwVVZpckFpMHFSYUFWd09aQmFvUlRBYkFEb1FVaWhZTWgwcjZaRVd3SktJNFRveTZLTkJET0RYenFHQjBJTiBvQ1FBY1lCR2tUVUlVQzlBSTZEY0MwSXprdUx6ZXBlMHQ3NytMMi9Id0pUOFcrMDl4dHpKTDEvYjFpOS80UjNuZXZvMUxXVWhtbkc2IGxOZGVCMkFuZVVtTlVBb0JHQVN3QmdFL0JGNUtoVVJlcE1KaGpyQmtHd1BJbnB5VWVXOEhIMU5lSnFVSXc1UENnZ01KT1JNQURTRHIgREVUbmtLbVhuaE5zVVR3ZXRiR2g3cllYYi8vQ3h6NVlUa2FGcXBTd3JGMno4c0xBc0s3cmxnbEtJU3hOQUs0SGNoZVU2ckZjSUlBRCBLaS9FWVJWNVRES0F1Y052Y0w1NGJPYU9LWWNmKzhnWWkzS0V5TUlyOGh0OFd4YUoxdVJ0Q01XQk1nSEJFTEJPSVBOSUNRVEgxaE1jIGV2bThua3N2V1ZzK1R2Z013emhENVJVdmUrR09QUWNTeWFTRVpRVll4UUpsR1pTdUFrbzdnTFVJK215ekFZQUhVandXQUVaZWxpYnogUm5LWWdSbUZVUnlFeUUzVlFJaHhiY2NPRFVpWFFUbUswRGdFV0dmMkFXc1lXTVhneEZudWhkMzh5aFhMUHY3QnZ5OTNYZklXaHZHWCB0ZkdtdjNqOThWTm43Yk5VRVZyVUtlMU5RTm9PbGFVQWE0aURoNUlSRUZDQkRERzIxTUJzd0dhL2tCMm5tWFNFd0dibVBMTDJRN01IIFdZdmloSVplMktMOC9WdGZkL2ZyN3F6SWtBSkh0SENtS3JoczNyVCs3UG0rcEtZVkxDeTRjcTRGeWlZb3R5Sm9HdytadnRRS0VaSjcgWVhJYWtoeVRROWViVUxYQlBQc2hiQVJnS1lRYmtUUUN3UmxrN2dMbUJFRDVjbUtQRHRmWDFkNTh3elYzdi80dkt6TW14MVVZeHArcSBuRHpUL1pxM3ZxKzNid0RUa3Erd1lHdCtFMUF1aG5JREJVTjJOQVQvWkhSZWM2YXhBV0NsZGNZQVFBTW9ERUFmc0hZRDg4VEN0b2phIFUxT3FvdFRWaHE2OWFzdVB2LzY1Q285ZGM1SkpqRDlWV2JOeUJmYWdJNlBobEs0dlhGaENBTjRNbFRWQXJnUE9FQmFraENnQXNOeW4gd1dudkVkMTZCUndaeFBjQ0FnQTBBM2tsa2dhaDhod3lkZ056RGoyeDNid2l5elVCLzRhMWE3NzY2UTlYL2lZdGl3dGErRU1GbDdlOSA4YlVIamh4THBWSnhLMEZtS09ZY0NzTk42b1ZBdlFUS09HN3hwY2Q1WlNvcEhKbktIRTZ5NzIxc0tEUElSNGNCT3FGNkZWQU9JL014IElqa3p4RjFwVGdJWHIxNzV6Kzk5VzFOOUhSUFRvVHhZZkM1UjJiWjE4K2FONjBmSHdycGhJS1RibVZ4bVpPVXlJRytEWkdnTFE2SlMgYkNUYXRqaGRSZ1p6NGpFNFdXZm9QQStaQ2NWQlpodDJNa0ErTkJrWVoxWmVrbjFlNy9LbEhYZS80VFUzWEhNRks4c0dlREF0dko1YiBjdnJzK2J2ZThZSHU4MzJKWk5MQWxzVXlwemlXQUlDdmhDb09TMExRZ1FSV2JtaXJ6R2JHcEV0cG9nQU5BclFQbVUrVFZUWGtzQlRNIGlkL25YZGJaOGVhL3VlTmRmL3MzekszSVludEFUT0cwaWF6cVdyYjl1cXQrL3JzL0dFUllTTWsxTFZ1QmZCMVVXM0FvRDZHY0l5YnUgVzJPWk8xR0RKb3RNSFYyRDAwd1Y1bG5KZWw0Q1BxOW5TVWZyMzd6Nk5oWTVzYytvWVZoYitENE42eFd2Zitkemg1NlB4dUtHclN4RSBXOEJyb2VjaUpBVmhOdUtTMG9Pd1ZWWHNXUnFzTURvQUV3RDBLZEtoSlUyMzNmV3EvL1BPdjJWemhTL0tpUlFaZko1ODcvMTQzOXZmIDFOblI1dlY0N0VQd09pWDViZEM3Q1VoMUVIclNrNGxLVlhJQzByTTBIcnFnc3hYQVRRaThRVVBYZGc5YWhzRTA0WXVaVkJhcU1rZjUgMk9lKzlwTmZQVFF5T3I0eG9WOXR3aVpFeGsvZDZrd1dWZFBFck1peTF4Tm9iMm5ac21ITlg3NjgvZXJOREtvS1l2VW9TVGNjUi9yVyA5LzByK3YyVEsyTmFDQUVWSVNrTmlkZ3RtV09ZMDQyUCtCaFo4WHNEN2ExTkd5OXV1M3J6Nmp0ZUpudFVwbEFCVE5LaThONEl6SlQrIGxtRERia0FDTUJraG1icEN3VWt1SlZKdW04TW14VFQxV0h6aXpQbmt5T2pZODZmNm50alpkdFhtMWE5NnFhYzJ5RlFZQmhoTDZNeTMgcXVqUitLNVBmR1ZneDc3NHlIZzhFZ1dtQmFtcWlLQnJaazZtaDJRZTFWc1g4cmMyQlpkMWRHN2YxblhieldvWnRuWXRRRlZzcndWWiBtc1huR0JWdGZHTDN4Nzh5dU9jQWZtTnF1cW5qWWtETEVwd3NoSk5NZThRR1JnbjRQWFVoWDFORDNlcmxLMjkvVWVkTlYxY1FsUXduIDlpMndNM2JNS3lxcGllaXVqMzVwY085QmJUU01ZekFjVk9DWFpaaVdTOU93bDRTVEhIbVJ2YW9hQ3FyQkdxd3dyVmRzV3ZlR093S3QgVFJXaEJVNjdFVVpvNGRLcldJYXg2K05meG5xU0hBMWJ1bzRKQVJiWlFReEkwamV5aTdES2FjblhFK05IWjJvcHk1d2dEMVBYKzZMeCBTSGZ2bWp0dktiKzhNTDEwbFVkVjJmSGgvK3g3Y3BjMkZzWVZqTENRWUVraHFHUnZwSHExSlI4eG1TMFlVL3crcFNaUTA5R3k1TWFyIE45NzkxeXpjRkF2Q3doOHFlejl6ei9tSG4weU1qSm5KbEIxM1RlR2thbWtwd2dCcmVpZ1oweUw3dkw3Ryt1WXRHeTc3aHpmNUd1b0UgS3B5aGN2UjdQenYxMHdkamZRTWtZRENNMlRoeDRvcjA0YVZDVFBMN01Ld3RQcS9zOWNoK242Y3UyTGgremFYdmZrTnQxN0pLM2lBRCBRMkU4VFQ5Y2VIcFA5d04vaWwwWU1rbkdGbHRQMEJ4bnFVSzdBYms3RWFWOU5saFI3eEUvV0NPUk5KS2FtVWlteGlNakI1N2Y5NS9mIEdYcnVTQ1Z2azRIK2podFVqSGppOExmdnczYlRUQ1l0bmVvSkFyYVZuK2NPNlNsejdnU0dRbEtLZVRwaTlKTWFwc1ZJSkZJVDBiSG4gVHgzNnhvOEdkaCtvWmxTNEdRSGI4WkV2akIwOVJYeThSWDA4R1JiT0kxK0oyMGJHaXEwa3M5SGlXSVZJTkh5eSsvQzM3cE05bnVaTCAxMVdNbG9yMmQzeW95cUY3N2gxKzdnanU0YkNlRUVteDZQNlVQSnU5MHdIekxpLzJVYXhsdVF2OGtISGZaQ1pUWmlxbFIyTVRwODhmIHZPZmU4S2x1VUpXRkExU0c5aDN1ZWZSWmJYeUN6REFhUnZwMHdnSURlNDdkU3hraFNiT0N0Y1cwVWluY1BabWFwc2N3TGVmMmYrWDcgV2pnaVVHR3VZRGFlLzk3UG91ZjdjVEJBOWNSeUpHVXg5OHlkdkpRZmtoeGFMTk0wVXpxbEpaV0tSTWVQbmQ3M3VXOFYyRmZ4YkZkWSBSK1hvZCs4ZlBYclNUQ1N4cE5oRFhyU3ZXM3piUzhzTDQ4QlVFSkpjV3VpU0NCTDlhbm9xRXNQQjhNR3YzVnR0NXA1cFZMRGM5ejJSIG1aVTNhZHhsb2VMbHVaYVlCY1llQXE0NEpMbTAwSVYyV09TeHZHTnQ2WHQ4UjgrZm54RUJHQ3ZsMkwyL3BLUERtcFdlYWl6RmhDbEQgd05CcmtOSkhrekZWRitTUWpwUnUyMFVqbmtnTWo1NjQvNEhrNkxoQXBmS2wvNm5kSXdlUDZkRTRtWlYzcHVSTEdDSGJ3RGd6TUdWdSBwam1FU0F3SGhCWlZGZVRRa3B3NGMvN2dQVDhVcUZTK25QbnRIK01YaGt4Tkk1QllGaWhYZGdJcE02OVhVbWJTeVI3Wkp5UTNEQ1BUIFdSYVoxTUlLbzBkaVEvc09uZi9UMHdLVlNwYStKM2FPSHp1bHh4TE9na2o3dUo0eW1qcmI5OXM2azhWbU1RMDYvUW01ZUhCMytpc1ogTzhibUhnc0xWWmpreVBpcFgveXZRS1dTNWV6di9wUVlHclYwbW1TVlRxUWdxMktqSDFsczdGWStCWjVaWGpCRFJmcnZjSXJIVkdFaCB5eVFzT3d6RG1oODUyM1AwZXo4cjE3ZUxFYkRKWldqUG9mREpiajJXZGltMnBMQlVKc0V6eTh1dFI0WVRmNjhiQkJmczhsTUdEc042IEg5OXAyRXRnaEtxVVcxSWV3Skl5UXRkRVdvNmtpRDNBak9GQzFaN0VZMlpLai9VTkhQbk8vYTYvYWVhV1MySi9NdmE4N1ZLc3JLUUkgVWhnamhSaElDQ3dEQzZkdUpyWEIzUWR3Q0NBcGlvdnZtamxWT1hIZmIyTDlnOVNsQ0VsaG1CWjdFd1R0enN4VUtuNWg2TVI5dnkxRCA0Q3RReVpiQlBRZjFhTXhaN2pVbE01UW9UQWtMNmNzc09qVkovSDNmVTN1RVZ5bGZDWjg4RytzZFFJWkpsMUxZWng0S1VGaWx4WEIyIDE5bHI5YkZqd2QyY1FLVk01ZlN2SGs0T2oxbk96aTJRMlI0dkNwdXdPS3VOeU1DeGFjU1QzUTg5SmxBcFV4azdkZ29IdnJTN1NoTWkgU0dIYXNUZ3hHSjIvVDQyZk9NTW0wVzVEWmVUZ01ld095V2k5YVpaekpZc29CZHNWZTJyWUhoQXpkVDA1TXU3aUdJd2hWUHFmM0pVYSBuM0FXRVF0R09PSEZnWVlLQzNZc1BYOSt0bFJmVmVtbDN3eWhNbmJzdEpIVW5HbEhFWHZ4WVZhY003WXlTMTJpNTNwZEdYMHhoQXJXIGJoeDlrYkV2WkdWUEtoU3dNQzhxcEd1ejN5Q3k0Q1UrTUp5S3hrUUFWc0l5dE8rd0ZwNGdpNzVRdHNjU1RaRVQwMEw5Q25Vc1JpSTUgdlArb1FLV1UwZGZSazBZMG5oTjlpY0pORUpaZStrM3lzMkZoR1Q5V2duR3dRbzBLS2w3Mk1GWlFpWFQza0dOU1VPWjhXYkh1aXlkbiBUK2VLU2NYaFNzUlZLVlNsVklWc0Vob2R4eDJTWTFTY2prUzBRajZjZmJiS2lMazN0TEZ3U1ZTbG9wNmVGVlJpZlFPcGNOVFo3U2c4IFBiOFduem9XUFJaZlNDN3BrblBpU2xXSm5PM1JvekhIeDlQbklqdzlYMjZGUmwrV3ZZUEZTR3FwQ1JlbW4yUUNsWW51WHBwdUltZVkgV0JSK3hBUjNicmxkbTZYcGVqUmVjVU52ZDdoRjNJaktCQ3J4dmdFelpZQWNUdytoY0NwY3FVcE82N1JNTTFrS3V5SlVCZEQ1UjJ3SCBwNXBGVWZqQ0JkazdXT2hKUnJGRXhTV2w2T0VKRTZoZ3ZjNmVVeWNnNGExTWI4eG1TaGVxVXBKU0RmaytYQjZBWlhDeEEyakxyTENrIHVCVVZlaGJYWkVrUjBzS25YNkhUTE9TWTRvcHpnbHdaZ0ZtNlBsWE9oYXZuTFFpejNRb1pqNUdnN0ZIWmpRNzVSWVhrTVRKTVIwckUgWURIUGpzVWV0NVJVUlFuNEt4eDZsZUxFQkFZOGZjemVTcGM1RjFNTWYvR05peVQ1R3V0WXNDakZuWEtvUENxbXB0RU12OW56c3NXayBDbmVBWlA0UGN5SjdQSjc2V25kWWViWlFTZThObXF3a1FsZTRBV1Z5THc2aFV1TlhnNEZLanpLNE1RQ0RNa21IblgzcXd0WnpKaWt3IEN3MjI5TEtrMWdSZ1lmWEg5dEdjbFVkRlVsVW80V2NzcFhNYUNFSGhyQkNQNlp6SkowRkY5aFlXZlJXUmsrdytEdWd5VkJUOElyUXcgMzYrSU1tT29rL1lxdERabE9kalo3akk5WVFVVnhlZVZ2UjZxNHdJU2JvTXdTSC9La2hMdzE2OWJ4UUluUlI4Y3Fqd3FPTFJWL0g3cSBXQVFxdktJQzZOZ1hmcW5CbXNaTExuS1puckNDaWoxbUFtWFo2WjZnTVBVODBrSjZPbXc3L1MyTnZvYTZ5bkpTb25tNVNwNGRZOFFUIGVqU0dEYjIzcnBhZ0lnbWp3bTM4WlI5NzZWRkRLem9yckNlbDhmUVZRd1ZEY3ZhQlAvVTlzU3M1UEdxU0l3WEp5YzY1bVkwZ1dWTWsgaHNMNEtSSXhLbXFOdjNuekpTekVYYVVJNWl1QUNrYWkrOEZIdXgvOGMrekNVR3A4Z2lSZk5VaXFOWnFHZ3VZMGdpRDdVeFErNGk5cyBVeFFjZmJWZGRabWIvRW1GVWRIR3dvTjdEMnJoaUpsSW1pa0RTd3B5RGxSSjUvNFNLWXY1NGtTV0pGbVd2WjdnOGs1MTdvV1NQRThHIFZNRFdZeGt4NGtuNy9CcGttU1FoRGxuYkluTGtjUXdMTnB4cUtOaXg3ZktLYzVLYjk0ZDdWRHgxUVU5dEVMU0pHcEVBQUIvSlNVUkIgVkNveWxLUnNaQWtsMGVMNDlmU3lSdzIwTm5kdXY0WUZQU25SckVNRkFqQlBLTGp5OWhlbHdoRnk2cEN1a3dPZjhPM1Jrd2VjdlpDaSA4RVdMSXNzK2IvM2FWVFB2NkNwbjBGWEtvYURLaklDMWJ0M2thMjQ0OTRmSHg0NmVTZ3dPYStNVHFZbG9mR0FZNmJvSXcvaXo5SXJpIGIyMWE5Y29YdTh5Y01JRUtmbnkxSzVkdGZOdGRnQTZJeGZvSGh2WWRQdnpOSDRkUG5qV1RxU0tuOFJTbHhFWDJxclZkUyt2WGRMRUMgaVdzQ3NLbjNKVXZCcFIzNE5YN3NUSEo0TEJXSm11VHNMbE1FWTV4b0N2UTIxSzE0MlUyVEJ2Y3J4RWx4MDBsVzN0YlBWbGJmZVl0YSA0NWNVbVN3MGxtVm5yYkVvVElPQ2pZb1NXdEhadWYxcSs0K0VFRWx5NWFvTGhsREJJbDdUMlM2cEtubmU1SEZMaEJiQkMrdlJsNmZ0IHFzMDJKZmJ1cm9xVmtnMFRNNGNLTGsyYjFqazd2ZWcySVdkNXQ2Q0ZXVkdCa3JlK2RzWEx0K2UwVjFEQnllT1NMazVuQzVVMXIzbTUgcHk0b2VTYlJJbG9rdTZnb3NxKzVJZERhUExsM0I2NWNhc0VXS3FIbG5YV3JWc2hZV09paWJtY2poQkFXVmcyOTdGRm4zaDVjQ1ZxSyBlT3dqQjZqZ3N1S1c3V1F1WDdhTlNnNHRvckNHaWl5VFBFYTFvVmxhcnR1MGhURlVFT3E2OVFXQmpsYko0N0YzQzltVmt2a2hDanVTIFFzWXFQYXEvdFhIMjJpd2pMYVhmc2lFeFFnZzlOTUt5MTdwMVhMOVZEUWJzM0JUcElXTUJDbXVvU0ZBaCtVUHFMMW81WjgyV2o1WlMgaHg0U0M1eE1vV2JkRzE0ZDdHeWpRMkZ5MnR3THg4S1dwR0JPY0kyb29acVdMZlB0NVhKTEpNYWNWOEVWb1BoOUhkZHRWZnhlaUNWZSBucHlnVmREQ2lLU1F5VWNaRzVXNjFWMEw2QTFMVGd1cWlnQXNiZHp0L2RuMkh6ZSs0M1cxWFV0SjBpTkpUdjlTVU1JS0ovWndpeVRMIHZxYjY2cmx4TmxRRndpbXJobkI5ckxqMVppWGdsN3lxczhnbFE0dEFwcUtoVjdxbUlEWXFOVXZhRnR6dGwxSllTanhQejJnQWxpa1ggLzlYdDlSZDFZV0dSRkpuUTRtU2ZGRHZBS2doS09ncUdaUGhMclFrMGJWcWJUNFBtMk5NempRb3U2OTkwcDYreEh2dDdpYVEra3NTTSBaR1U1eVRaSGdvcmliYWhiY3YyVitmYi9JZ0FyU1dtLzlvcVd6UnVVZ0kvNGU2SXRnaFltUW1VblAwdHJFKzdJOGllbCtMU1VKdzhXIHU2alk5Ny8xWDk4ZFdyRlU4ZnZzUEorVGNrOEtXc29hZXFYN0tNeUpJc3QrWDkyYUZWWDFEQlJtUWJIL1gvWjVWNy9xcFVlKyt4UEwgTUVFaWFaSGZtOGdpdlZzRmMrckpDdkNHb0tjR3FuNmcrcURzSWIrUlpKZzVJUVpmbW1VQ1UwZVdEb3dVMHBQQVNJSlVES1VTeURJNCBsUlBuM3VpOHNPU3RDK1VmZmFXRkJaYWdxWlRlcXlqc1Y5S3FPMTQ2ZXVSNDc2TTdrb1pCVDQxRUVGZ09MYzZSTENWV1hoblVMNU5DIHJkQmZKeWxlb0hpaEpDUE1CclQzMUVnMDI4ems4VG1VVG1WbW53T0xyOVl5RWNMd0dQZ054UEFZU1pTS2dlaXdGUmxBeVFqaUJSZUsgQ2tuNUZlaG9hYnAwWGNHdHU3aTRsR2VKb01KRkhWMzY3amZHK2dlSDkydTJrcENPbVJ5eldrSnRDYlpJalN0Z1RaUGt4ZExoUTdMSCBYam5nVUpGcmNCZVNqcHl1ZVlYMkZtaDZ2Zmc5elZGalNLYUJEQTNvR3RHYytEaUtYRUNSQWNzMFdHTUVaa2pCamhGSFgvVVhyNUk5IEhoR0FNVmM4OWJXWHZPV3Y5djNuTnlObmUxSVJTNkxpQW1odjdXaExNWGlSRk5DOFdtcGNMdnRxb2NkUDhYQVVJMzErU05yY3dUek4ga3JPT3pWN1BobklDQnc5UUVQUUdhV0pOQytJdXdGaUhCVWRPSlVBaWpNSjkxbmlQWmVxc0dCVjZnb3BNMHQwM05TeDl3YlpGaEV6RiBqc0dFcXVTVzFpczJybm4xTGNkLzlCdEw3elhpQ01vQW1hYWQrbUR4dExSZUxEV3RsUDExMUhpb0pPSnk5bC9hUTIxd0todnpWMDBtIEo4UDB6TXM1b3hKRWJValRjWDZGVktENElBZ2g3SFBxMm1IektrbFBJQzBLSW9QVzBBbXJNbkZhTGllMm9TY0pWNWUwYk5td1NJZkIgM2JBTW82ak1HRmF0ZnZVdGlhR1JzNy83YzN4Z3lFaHFOQU1Tc2ZpQTV1a29nQlpQQUM3ZktvZGFKVThBMklUUUk4Rno4SmlERFRoZiBqY05wYjZZMWxhbnFoQnkvZzY4RVB3REZCN3cxSU5BQTZqcGtERE5tSmpxTStnK1pXclNzekRqUkY4MTFUOWQ5QmR1djJjemE4STlRIGxhbStiZVBiWDZlRm83MlBQcE1ZSEtYZTNxWkZvclRrb1MyMUhWTG5wWEt3aVhyMHRFR0hjeEFDWjZHaTRKNXhwcjBGTUVlTFlOcmggRUd5dzJuaUJ2eGJVdHNMbUxwaU1nb2tMVnY5aEMydE9HUWUreUFnR2xwU2FwZTByYnIwWlZGOVJ1THZpTGYvNFZsUFRMank5TnpFMCBDclJjYlhHV2lXVXo2czlVR3BiREpSdVZta2FnZUhBM2FTc0p6Q1Zra29Ea0VsS2VlQ0ZYWVdCV3U0aHMwcXVWUGNBYkFxRm11WG1sIEZBK0RrVE1tanMxS0hYM1praUtwaXVMM3QxNiswUk9zV2JRYUZPbDVsbkY3TEpNbi9pQ1VlMVhUaHdJdDA5ejE4YTljZUhwUGNqUnMgSnBNMG83NlZQc2tvL1hlbjNWWnR1OVI1bVJ4cUlYNGdQWncxSnlTc1BJM0pzUWF5N3hLUXZYQW13TUtTbkFBVEE5YUZJMWFSQTdQMCBvanZLQ2Rud3FBWUQ5UmV0dk9HTEgvWTFOaFRwOCtIaW0wcjVzb2J6aUlyOWxIZCs5SXY5VCszUlJzZE5MV1dtOUJ4YThBOHJ0NUZoIHM5NTFqVnpYQWJFNWNReUpEUW5MaEN5TUdYcmtCakEwZ0tPeTZLRFZkOUJNaEl0VG9lbmowU1dpSjlUTis1b2FWOXk2ZmN2NzNsbzggRkhseTlxeWpNdlBzVXZvcDcvbjMvK3A3WW1kaWNBVFRZaGtHbWRHM011bjBrUjJKWVNWcFdTMzdhbkhFbFhidGt2TUJFUEpBeUh6TSAyRk9jeUVSR0NtZ1JOREdJZXZZdDJ2bzdjMGZRM3ZDSVF5OHNLWTNyMTl6MHRZL2hHS3c2VWVIUHErU1dLLzc1blo3YTRQbEhub3oyIFhJQTZybFZNaXdFZ3BRVWhYeTFjZWJVU2FzV3FRdVpNcURlZEJnbmdjQzNadEVWdytMNlFCRldaZEFmZUVLeHRrOFo3ckRQUEdvdjcgZkdjaWhiaDVWZlhVaHRxdTNsSTBUamdzVEt2S3JBc1dKbmRJWjM3N3lJa2YvMmJpekhramtiUjB3N1l1N2V0QTYwVVEweUlyeVBidSAyYjFoTHN0c2tTTXlqc0xnVURRRjR1TmcrSlRaZThBc1VGTFNMZ1dIWG1xUTdLRy82YXNmSy9yNG1sQ1ZzbzBUa2JMeTloZGh1N24vIGk5OGRQWHBTajhTZ2xPcTZ5cXhyUTFSTWtDVFJpR3VLTFhIVHF1VDBFTE56ajFSaDhNOVFDL0lHNWZxbDB2bTk1c1FGS3o5T01vdUkgVlJ4OXFZSDI1bFd2ZkFtbzdzS3Bxc3p3ZXlPZTJQT1pyNGNQNzJ0Wk91Q3ZNeFRWRmhNdzFiNjdlK2wrMnIzWXB0OWVvNW1Nb1BFKyBkT1pwd3pJWHlna052YkNiVjJTUDZtdHE2THg1MjVVZmVuZHBlanh1Nm9OZFZjbDN1YWdTOEYvMmxodjdmM3ZJbXFERFd4S2lGWTQ0IHR1K0Z5aTFNUzQxRXh6RDg5Y0RqaDRGRzljSmhjK2lrTmI5RlNXZkVveXNqdmJXcmwyMjgrNjlCMVJlRjA5WXd2Y1NQUHhvOStJRFggbnpLUng5Uk1ZTkdKU0VocHFSSk9Kb2RrVGdjaEVXQ2dIOVFxd0xOVnJsc2luWDNXTUZKejlVMzJqaFRpNWoyZVlHZkhSYSs1emQvUyBKRkJSM0hFYnNhT1B4QTQvWkV3TVdGcWN6R3Q3RkdRQU11T0E3S2dDZ1p4Rlc5VkNTNDY4RUhIMVFIOHRVTDNRRjFKNzlwdmpQZGFNIGtrS21VeVRKbnB2M05kVXZ1WDdyc2hkZFg4SndFUXBVeWxqaXgvNFVPL3g3WTd3ZkdVbGc2WlFRaXc1NXlaWkR5OVMxaTFVRVRHYUIgREk3SFZLaEtxTFlkcnZUSmcwMndkNytaaFNwdFVUQW5ra3oweEJNS05sKzJmdU03N2lxOXU0SUNsWElZbGNTcHA2S0hIakxDZldSaiBvV2x6WW8rWWtuL0lqaFB5SGs1SmdGQkZ3R1JYa2RFLzBWM05OVTFnaVZmeTE4RlRUeGdvaHhOaVVjanlZVVVKK09yWHJicnNQVytXIHZWNFJldkdyS2xtS3RMNUQySjhZNFg2a0o5S2NXQmxPc2l1MG5XNTFabUNxZ3Buc3hoNlNKUXBCNkEyQnBpNm8rdFVUajVsbUNqbG4gUDhrazVab2E4SWU2bGw3eWx0Y0dsM1lJUWpLRjR3eDBabVF3c3ZjWCtsZ1AwcE1Za2xrNFFaT2Fpd1Jtek9rS3MzdmpYVTBMZFBZOCBremhMaHA0QXFGOEMxNzlFRHRSTFZIRElnYlZLd0YrenRQMmkxOXphZnZVV2dRZlBxS1NiTXpKUzRXZi9SeDg1NCtpSmFhUW5xM1AzIHJLQ1pQeUVMek16TXVGOWo2RVpvSEl3cFhoQnFrUzdhcnRSMUtoS1ptUGNHMnBwWDNuYnpxbGUrdEV5WHdvK2dLNHp5TU44VG5OajEgNDlUZ0NTdVZRSVlPc25xUzNxcUNyUG0vd2duaVlmcTdVRDdmN3hMckFuREFCVUJOSTFoNUZldy9ybWhHOC9LWDNyait6YThSR3VJTyByd0lTcDUvUmVnK1J6ZWFHQml5Uzhjam1oRFlDbEhmVHlUQURzdWtQb2JzTkRNdzErc1NrK0J2UXNzc0FiRm01N3QxdkZGUzR4S3ZnIGlDdDI5QkVqTW9EZjBKVWJKTWRXWnEzZ0lrTjU4anpTV2ZkZGJtQXlpMzJvZTVGVktkQWtON1NQeGs4K0xxaHdCeXB3WXVlUGpkRnogazZ4OEpucXlGejh0WGc4bUR3QzRrcG5jdlo5WVdEQXErR1dNOVViMi9TcHhkb2NBZ3hkVVptMld5WE43dFA3RFZpcU9yWHphb3FDYyAzZlRGM2pFN2VUMmZhNWlCdWJRNGgwQkJNanFpSjR6eDNzamVuMnQ5aHdRYmZLdEsvTmlqWm5RMGExRXlnOElJbFNUUERaeDU5U3ZrIG41UDBlM3BpalFRem00OHhMZnJvdVlsZDl4bmhQb0VIcjZqRWp6K3FEOXVqdzBaMkh4TW9VbTdKdVlNeFY5QXlUUktoVS8rMkxOdEogUEV3RHBSTDZ5Tm54cDc1cmFSRkJDUE9vVEd1SnlFd2x6dXd3a3hOa2d4L0t1cFNjMEF1VitEbnhQUWt6N2VyaGxNcEhOQTBNemVGaCBXbG9zTlhCOC9Lbi9ybHlzTFZBcHRDUk9QMk9NOVNBalJkMjhCWEp6NEpkbmQ1bzA4NVl5eUFNa1U4Vms2bGxPS0RzVFJWTmE0UGdXIDA2TDFIWXpzL1puUUU1NVF3V0ZCNHN4T0xDbUFTSXFWSHZYS2hnMWxiSFE4emZIUGRHRlVUR2JPRGVzc2RuQXlKcGtwS3g2T24zeFMgNno4c09HRVpsVW1WcWZVY01NWjdzWnRQU3dySTBGS0I2NUptMWhLbWdKa1prbWxCMTZ5MDBEQU1QM0J6WWlDeSszN0JDVGVxa2p5NyAwMHBNa0lOOG5GRXZLMmV0RjZyTVk0T1FUV0JtdWF6WnhTUTNETXRtZjBtYkZrTkxEWjhlZitJYkFoV0dVVW5YcXhrZDFrZlBrZTBvIG1iMG9BRldTazZueUFtZHBiaFVnWk9iOGdsSStwOHhtd3pENnFFMGRwUkxKbnYzYWhhTlY3dXM1VUJWY1QyWjBoQTRRVzhpWmN5eWogbTU5ZlhpcGMzN1ByR0lXa2dCcDJwblNSL2NBUnR2aXhzWktFWVZ5TnVMT01pdk1ndGQ2RDVIaUV6Tnc4RStNTTlHWFIxK1J4QlZoSSBteTVRUUdhVkVWZ29KSmw3Yy9KTE9TbVNMQ09sRDUrSlBQZExFWUN4QzR1WkdETW1Ca2c2WG5wZ2FqYm9LaHN6R1NRc2xIMGhOTWQ2IE16aDVLeitjL1RjTGhHZkIvejFjbUNkWjJHMVRRMGdseGlKangzbzhjZW9wM0djSlZCZ3RXczlCS3psQmwzdVpaVFgwR1R3S1hZSzUgY0EyQjg3M20vNENNakJRMXBFSDJWQy9WY3h3QUcrRUxFenZ1cmRvSWpIRlVZT3JDVWFURkNDZnBqcnhNbkN6U256dHQxNTdzSzhVeSB5L1FubDRDUXlialFoV0VXT1VRY21TbXQvNGdaRzZsQ284S0JxaGpSWVR1L3hLU0VzU1dOdnRDaW0wRHVpRk4yR3d5WWpBM01zMW5CIEdmQW9VMnVqQzhOd0xSaTZHUnV0MnZsN3BuZEJXcW00bFFnNzV3bzVkak8zOWFDU29ZSUtoV1FCL1dqdW9uNjBBRWJZR01jZ3dvS2wgSlJuVitvK2FzV0c1cG5uUmtzS1pyREN0S3FuK283aHVjdmVsRkxIekwzNDRKQlhVWWhablU4b0lDeGsxUm5yQ2pBeEZEejRvYkQxaiBxQXlkUW5veVo0eVlnWm5IMlNDcGhrUXZkRysybFp4SW5ObFJoT2NtVUNsaU1hTkRaQkFtRzRDVjNxamtFUnRVRXlRNWNSZzJMVWE0IGYrVDMvMUY0aDhYbkUyTWFGV3hVbkpISzNFbjYwdXZFUExTVVlkeUpaVmh3ZFJoYTZzTFI4U2UvVFU1dkVRRVlFejFZS3A1ZTkxVXUgU1psS0M4d3g0K25ScDJva1pGSzlBTXN3NDJOYTc4R0paKytkUCtVYS80YWVkVlFzamFiNXltWjN5eHppVmk1YXBNd0xwa2Q3Z1NqTyBvV3FtYmliQ1d1K0J5TDVmNXY5a2hhb1VGNVZrRk9tYXZRYkpxU0lYWkxGRExvR0Z6RWltNG1ac0xORzlLL2I4STI3SGhIRlU5RGdKIGhhZm9PNnFXazFGWUp4NExpNTVFWnNxS2pjV1BQNjcxSDNGeDZNVTZLblE5UzJiUE4zSkpmd3hkeElwbDRBZ1o5MmhtYkRoMjZDRWogT2lSc2ZZVXFnNndtZHBhMmltNmN2ZXF4Z0dVNUMxNVNTWDI4SjM3MGp5NldGTFpSY1E2VFJtNE05bDBpTEdRWks2YkZTT0lRUU92ZCBuK3g1enNWNnl2aCtGVmhnZm50UnlrTUw1b1N1TzdZTXpVeUVZMGNleGovZEduYXlpd3FVWlljVzRlbFoxWDBuMFpSRkppV1JycG1SIHdlVFpYZTRMdlpoSFJmWFRFOVJ6SjFJRUtxekZ5SmE5akJMUUtYeExpeVZPUFdsRUJ0ekhDZE9veUw1YUlFbU9rRUNJOHAwVkZxVnMgbGhMUkRLNGtiMWpTU2thU21jV1VMdUtFYlZTQ3pWQlNja0l2SVNsc3N1SUlDMW5ZYXFRc1BaRTh0OWRNakxudlJsa093SHhROWtDNyBaeEl1aFZtN2tqbEsweVNMS3JCanNiUW9jU3p1a2hUQStBZ1lWRlQ3cEJ3a0pJVlZWdWlLc1BRWmcxaGJ5UFl2VGVzNTRMNEZjNHlqIDRzUE9IcFhvbUNGUmlrVkxSbUZvZWhjY2hwbnhzZFRRS1lGS0dTL09YMGUzMEZ2Q3FEQk5Dc29NaFZGemIrbFdLcDdzM2kxUUtWOVIgNmpySWtaNkNFeDdDTUNlWE5EbWJ4Y0xDWW95ZUU2aVVyM2phTG9hU0RNUXdNZHVVNUd5OG93a055V29YSGNkZ1ptUklvRkpHVkdSViBMSmRrMms4NjlwM21PTFluNzAyRC9NSFFGclF5WDZCU25JdnpCSUNraU9iSWliTjNsb0ZUMzRMTnZXNk1uUmVvbExIVGdwSVkvdUxDIDJhZGZkTXVxUlNZbGplaXdRS1ZjVldCb001NVVLZ3BiWG1YcXI2aTV4K0tTQ0x1cG0yTWFGYTNuQU5uZ0pRb25NWml6VHMvSlJHV1IgVkpUeE1ZRktPVXBxNkNSTjJpSUtQOEtTT1FhSHB0QXZXdHA4Z2NyY3hZd09rNDVLeEdBY21mc01KM2JXMXNTRVFLVWNoZVQyTm5YUiBCaGt2TUpQU1B6ZXpJWlVYS3hVVHFKUUZsVlNNYkJzU2hXa3RRVFA5eWo1MzFiSTBnVW81SkdXQ3BzRVhJOFU4dytPaW5vNWRWTXo0IEdObXhiWm1pN2ZGaDYxSE92bTQzYnNWak9XZHhPdm9Td3NLZGVjbkFBeVdCU3VuN0tqMnhpTFBtUkNrYkY5Q2hZNlovQlJWUGZ2b2sgVUNrRWxWU0NpeWNveWt6VjVKeXhBUld2VUpYU1AzakxGTXZ2dVRIeENEam56K1RBQXFFa2VXb1d3WnRBWmVIS25qMEZVaFIrc0NFbiBocE4yaFNWRjh0Zm1od25EdGMxeWRrbFZ0RDBlSEh4Nnk4clVSUlVRcWo0NTJKSy9uaUNCU3A2VklDbHVHaitwQW1Sc1BZRjJraDBvIHlaSTNLQWZxRjJWNUJDb0xldmdldjBDRkIwamdsQjZPd2lJQlNaSHk0Z1N4amd1N2JWSHloY1JDU2ZiZENaaTBzdGlPeENTaUs3S2kgaEZvTGxCSW1oWVhsUkt3dFVLZ0tYL29DWWNiV1E5V3ZOQ3hiSklRQ2xZVmRHZGxZTDRzR3lJMnR6L3dHYzRLakwzK3RwM2xsNFZ5dyBKeXhzWjVjVXFIRGc1VE9Fd1BRd01ZNEdGQ1hZVERJZUxrcEFrRUJsNFZjbjByV3dqOHVra1dKNzhBdDYvSjYyaTR2aGd3UXFRbFZjIEY0VVJZMGtOUFpCeDlGWG42ZGhRRENTUVFHVmhWZUFzdGhQallPdzYrVWtWUk1hSVpVbnhxZzFMbGRxMkltZ0hTOExDZGdBbXEySnEgaFhsT2N2OUlYQXBVL2I3bFZ4VHZhNUJBWlVFQkdKUWtNYnZDdEtlSGFUMGhBMThTbEZXbHZzTzc1QkpPRFFtM3FrTHFRTmdWOWoyOSBmYm90QkVSU2ZONmxtOG1SdDhVQ0JRbFVGc2FKV0RUSk9pZnBZV0lTQW1CSnFlc0lyTG0rMkYrRkJDcnpCMkRZSm9vNWU2YWpNRnRQIGNCM0pxcVQ2dloyYnlJb2sxMFZmZ1AxNUZVS0xRSVZGUllGWlZteEprV1Nsb1RPNDZiYmlhd1VTcU14N2NhclAwUll4WHN3V0tUQXIgS2ZoRnhKK3NaUEd0MkpyblpucWVZakRtejRLa01aZ1lCR01zNnJLTmlqMDZUUFFFRTZJMmRnVTMzY3FiQVhFTEtuS2dIa0tabUh1QiBDb09HUHJQb0M3djVVR3R3MDh1QmkwRmhIWlhhZGlpcjFEZUtJV1BHWEFyTVNvcmtDWGc2MW1ORFg4S3ZSUUtWT1l0UzIwWmlYekszIEpjdzlheTdGWHZHRlF5K2YydFJWZCsyYjgydjRpRDljV0QrTUczcUR6a3l3aU1IWWNpbUF6TTBycWx6YkdyejBObGdGYThCWjc2b2wgWHhEYXRoNktjYkRLYzVLUkZIdkNVZkxYK1ZkY21mZUtMeVJRS1lXd2hOcUFIWDFCc1Jpczh0RVh0R2NiNlFBeDlOUjQyOWZYWG4wWCBxQVpRMkVkRmJWNEpGUytFemp5WGFLNlY1Z1JrbGc5N1dsYmxhVkg0ZHZhc28rTHYyaXFwL3JTa1FHSHVLeFI2WlVhSDZTeUs2bFhyIGw0UXV2MU91YWVTdXhidlhxL2pycFVCOUpuMmVFSlpLU2dxdEFLaDQ1R0JMemFaYkN4b2Q1aml0TGdlZHRGTFhBV1RGc1N0Q1dNb3YgS1U3b1JmMEo1cVNtdVdiZEMvR3JFa0VVRXFqTUdZT3R2ZzZxUHFMNzBObkVMZHB2T1RseFFpL3NUMlRNU2FOL3pYV2h5MS9OcGR0dyBQU3ErWlp0bGV6R1k3VmpJSElzSXc4cGpVV3hNNkx5V3JNaUJlditLSyt1MnZiRTZId2Nmd1l6YTFJVzd0UFRlRmVqTUZvdFNCb3RpIDkwMTBDc1hYZFdYOVRXL25NM3FxR2xRQ2ExOUFob3lKdWMrbVhCY3R1WlI2UWkyS3ZYUkZWa25jdGVxYWh1M3ZBbFVMQ2krb2VKZHMgVk9yYVljYmMyNUlpaEtXRWNpTFpzNDNVeDFOT2Jub250NGE4bWxBaHRDeTlsT1k2a2pNNXBET0xrVVFwdXA3a2pIYzFZa212di9IdCBvTXBCNFFpVjRLYmJjTFZCV2M3eDkrbU4zYUlVVjArZ295ZEtxSzFtd3kxVjYrT25GRzRXaEVxZUFBN0R6TmdvTWswSVRZUWNVQkFFIDRzenVJdWtKeU5FVHIxSy9KSFRwN1RVYlhyYm9UMGJ1cUJ5ZTFrNkhOcjlTNnp1TTlBU3lzS3JZWjJ3aVNQNFJ0QlJIVCt6NUUwbjEga2kwbzI5NUVnbDVSZUVSRkRqWjdPOWFiMFdFaUxNaXloY1VoaEJ4SExGQXBWRTlzK3lkSmRCMmt6OU8ydHZIRjc1ZHJtb3J4NGNXViBsRW9HMjV3TklvVzJ2SnB1alZSelZ1WlB0cVNpNU04SnRCY0x5NnJrSTFsWFdsNzV5U0p4SWxTbGtzTFNoT3NTQzR0bEdnQUxpNFU3IExUb2todHdTRVplZkUzdTlzS3hpMGZhdnZyYisrcmNXNy9PTFdpZFFvSkpucWIzeXRhbitJNm5Ca3doWkVPRW9ETmVIUlV3TGxCQjUgSTBvZVFSZDB6SWxQcVZzUzNQeUttdlV2Rm8vR1BhamcrcTNaOEZJak1vUXNnN0JCOEhCa3hSazdGc0FzTE9oeXpJbTN4dE42Y2YyTiBkNnVMT3VWMFpsRVJxRlM0K0ZkZmwremVrK2plRFN5VGhtSDJyNjEwM1VBWFZsU1JneTU3QmFRcUJ4cTh5N2MwdnZDOUpmZ2l0ejEvIEVzTHdlTjNJU0EwLzhERjkrSXlseFFDV0Y4b00valc1SGVlT0JDcXppRWw2UkJnSFhUVWJiOGt2SldRZU5WVHM1MS9welJlODVxU0IgaWllNDhlVVR1MzZNSVVGNmdrUmdoQlRMRHNCUkppb1RaWHJRSmF1U3A4YlR2cTdoNXI4djJVaVhDNTg4eCttYi9LdXZUUTJkaWg5LyB6RUltRnBsME4yYVJOM1lQSk9ZbDArRW96R3oxVWJ4S3FBVkhzSFhYdnFsMGtsLzhwdzRGS29zcmRkZTgzb3dNYXIySExCUWxWV1FhIE5pM1FIanNtODVLdTdlUVcycjR5ZTA2d2cvY0VQSzFyNm05NG05cTBRdWhzdFhpVlRMRVM0ZEUvZlRrMWVBSnBVUktNbVRxd2g4VnMgV3FyVXQrUXN2czZ1Zld6MWRWMVZmOFBmbGRwRmx1Umh3OG9yQy9lbzRJSTVDVC96Zlgza0xFckZzYkJRaTIrQ3RMOVBUN2FncXVJRSAydXNZYUM0aXlSdFVXeStxdi9iTmFzdXFNZ3k0bENiNnFud0U1Z1pVY0VtZWZ3NWJmR09zaHl5bU5OTURZc2h5YUxGckR5RzNBek1wIDRxSzV0NzFLWFZ0ZzlmWDU1NEFVa3VJdXI1SXB2bVdiVVNvV2VlNVhSdmdDU01VQUFEbVRMV2p5VTBjdWh3VFFWZlN5aXNYRTI3a1IgTzVOQ0V0dUo0bFpVQUoyWHhBb1pQZkJiWTd5UDBBSmgxdVhiL1IyMGhjVmx0T1JDNHB6SkRGV2Yycmc4dVBtVkpUanN0MG9seFQwQiBXRFlTTzdzcnN2L1grdWc1Nmx0MGdJMitNenNKcGdWanZCdVk5RG91SjRVTnNTVkE5aWkxYmY0MTE5VmQvYnF5WDQ5QWhiZWk5UjJPIDdQMDVtY2hQUmNsOEM2YkZXU3FHQmNiaW41Yk1vVmxUSVpGckdyeExOamErNkwyVmFGc2xXOWpOVElaRUY2S0NDNDdCSm5iK0tEVncgM0VwT1dJWkd0Y1dnWTJKV2xoUXVoNUxUbzF0Mkc3S1hjaWtlMlZmcmFWOWJ0KzJOU24xblphNnJSSzJJR1VseExTcDJHWC9xdTFyUCBmckpyVWs4U1ZPeGd6Q0VFVGRyaXdnRXprNDI3ZmVpZnBFaStrS2QxVFdqTEhhVTlpckZpa2lKUUtWZUpIWDA0ZnZ3eFk2ekh3clJnIGVURjFsTlVXaXdkYWNzS3RkUFl6R202cEJKTG1WY0hML3NLMy9QS0tYbUVwOTlTeGxKL2E1YWpnWWthR3dqdnUxWWRPbWZHeHJMemsgQXBNR1pMS0hxU0EyOWhoZHJtdUhtYk5Oc0pMSXZwRGFzanEwNVZVVlZaTHFrcFNxUU1VdTBVTVBKVTQvWTR5ZHQxSnhaT2hrT3QreCArMmlHOGJFWmdtOVVGa0t5dlNuTXBtYTJzd2JUUlBTQkJyVjFEZkVrdFcxc1BOZHFrWlFxUWdVWEt4bUo3UG1wMW4rVWJNM1g0L2JnIEdOa1o1a3pxWnozTXBGWXdWV1NLT3kwRHB6ZUxqQnNCOXBsKzJKQjRBbktveGR1eGdXeDhaNmdCbFpRVHdGcFNrU3BDeFM2cHdST3ggdzc5UERaMDBveU5PUElaUm1SU1NvZW50WUNhMVFmbHZ0NFF6OXBycEE3SEFKRUxJc2hTUDVLdFZHNWNGTHJvaHNQWm05cDZsUUtVSyBpdFovSlA3OEgvWGhNMlpzek5JVGRMdUxaUyt5VElzTXlPck1aRE1EQVp4S1RtNFdzaG5mVDVPQ3lYamtER3JaSnpSNGErUlFxN2ZqIGt1Qmx0N09hWjZqRUdYTFlPM0NxU2xHeGl6N1NIVHY2c0Q1ODJvd01XNmtZTW5GSVpqa0R5cmJPVEJLWm5OV1dhSVpXWTdmKzJkNVAgRnBVTUhzNDJkem85b2txZW9CeHE5clNzRG02NlRXbFl5dkNUS3pVbmdNR1VibFdOaWwzclZqSWFQL21FMW5QUWpBeVFVVElqUmFJeSBrNmFEU2MvRG9FbkE1T0JpNzdoMEtJTHpkWkFPSVRBem9pV3JkcFNsMUxaNjJ0WUdMNzFkOG9XNGVHalZKaWtDbFVtMWJvVDc0aWVmIElsRlpkTWhLUm5CZ1JyVEZKRnVSblpXWHRwbkp5WitFSmtrTnlweVVsREV6bVNNdTdMRXNhdFBKcmwyTWhCeG9WQnVXK2JxdTlLMjQgZ3RNblZqMlNJbENadWVLdFZEUjVkamUyL2taNHdFcUdzZXdnVTZmaFdYcUltVVJvRGpZNXRPUzYvUFNtRVlrZTlJN1Z3K1BINmlINyA2NVhHWmI3bGwzczcxdk9aTnJiMFNUd0ZLZ3pYL2x4UHdJeVA2cVBuamZGZWMyTEFUSXhiV3B6dUh0UHBzdVhNSGpLVVhwRkZ2QWNOIHE3eFE5VW5lb09TdnhkS2hOcTN3dEsrYllSQk1jTUlKSndLVitWR1p5ZHdZV0dHUW9aR3BUTXdNUU9TUVN2eFRWdTJrcGdDak11TVogeUZDZ0lsQnhYUXhXaFUxQmNESjNFU2VQVnFMTkNVNW1aMFdnSWdxM21KU0hFK2ExVnFCUzlscmlMT2RsMlRpQkFoVlIrS1dsYkM2TyBBLzhtVUtsUVRYRkFTN2s0NFdTWVE2QWl2RXZGT1lFQ0ZTRXJDOEVFVlM4blhCV0JTa1hEQUpTSnhCQXJrSWhaSm9FSzgxRVlxdngxIGxKTlozbVpqQlNwc3VFczBTV1ZFMENWUUViRE1HNHlWSHhoVUFVNDRYT0FqVUdHSGxTbFJXQm1BUWVVT3VyamxCTGdwRTM3UmFoR3ggUVF1YzRROUZ4aEZWNkFuenVXQlVvTUlnSzdNQnM4aEdobVo4SzRwQWhYdFlabUlFNVJrdW9qbitKQ1JGb09JbVZtWmpKcCtHajVoNSByanp2YkJPb2NBTUwzN0VUOXp0QXhRalliQlVMeFVNUW5BaFVSQkdjQ0ZTRXNBaE9TbFQrUDMraWVsRml1dnpZQUFBQUFFbEZUa1N1IFFtQ0MgIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC02Ni42MDQgLTQ2Ljk0NSkiIGRpc3BsYXk9Im5vbmUiPjxwYXRoIGQ9Im04My4zODQgNzYuOTE2YzEuNTI3My0wLjEyMjQgMy4wOTczLTEuMDExMiAzLjgxNjgtMi4zMjg1IDAuNTcyMTMtMS4wMjMxIDEuMDg5OC0yLjIwOTQgMS4xNTQxLTMuNDMzMyAwLjA5MzQtMS43Nzk3LTAuMTY3MS0yLjcwODktMS42MTg0LTUuNzczMi0xLjMzOC0yLjgyNDktMS41MTgyLTQuMTU4NS0xLjUxOC01Ljk1ODcgMC40NjI2Mi01LjczNzQgNC4yNTY2LTExLjQyMSA4LjUwODktMTIuNDc3LTEuNTkyOSAxLjQ0OTgtMi40MjE3IDMuMjQ2LTMuMDQwOCA1LjE5MjctMC4zNTQ1MiAxLjEyNTctMC41NDA2NiAyLjEyMTktMC41ODQ5NCAzLjA1NDUgMC45NTEyOCA4LjI5NDIgNS4yNTk4IDEwLjMyMSA1Ljk3NzkgMTguMDM0IDAuMTkyMzQtMC4zMzM2MiAwLjY1NzMxLTEuNTYwOCAxLjI0OTUtMi4zNzY2IDEuMDgzNy0xLjQ5MjkgMi41MTQ2LTIuNzA1MSAyLjY0MjctMi44MTE3LTIuOTg5NyAzLjMwNDMtNC41MzQ0IDkuODU5NCAwLjE5Mjc3IDE0LjE2MS0yLjQxMDYtMC4xNTI3OC0zLjk3NzUgMi43Mzc1LTIuODY5MyA0Ljc0NDMtNS4wMzg3LTQuMTY1NS0xMC4yNDcgMi4zMDE5LTYuMDUzNCA2LjYzMjUgMCAwLTEuOTUwOCAwLjY0MjEtMi44ODQyIDEuNDY0OC0wLjYwNDg2IDAuNDc3NjMtMS4xNDIxIDEuNzM4Ny0xLjUxNjcgMi40MTEtMS4wNjY4IDEuOTE0OS0xLjM4NTUgMy43MDctMy40NTUyIDMuNzg2Ni0wLjAwMzMtMC4yMTMwNi0wLjAwMTctMC44NTc0OC0wLjAwMTYtMC45NjYzNSA1ZS02IC0wLjAxMDIgMC4wMzU3NyA0ZS0zIDAuMjMwNDItMC4wNjAzIDEuNzYwNC0wLjU1MTA4IDIuMTQzOC0xLjA1MjcgMS44MDQ4LTIuNzAzNi0wLjc4OTk5LTQuNDgzNC0xLjE3MDItNi4wNDY0IDAuNzExMjMtOS43ODggMS4wMjk2LTIuMDM2OSAxLjE0MDYtMi43OTY3IDEuMTM2Ny01LjIxNTItMC4wMDUyLTEuNjUxNy0wLjYzODA2LTQuMDczMS0xLjA4MTUtMy44ODcyLTAuMjg1NjggMC4wNDIwMS0wLjExMTIxIDAuMDI2Ny0wLjYxMTg0IDEuMTQ0OS0wLjYyNjg3IDEuNDAwMi0xLjE4MTggMy4wODA1LTIuMTg5NiAzLjE4NDltOC4yNDIyIDAuMTc3NjFjMC4zNjQ1LTEuMDYxMiAwLjQxODM4LTEuOTI1MyAwLjQxODM4LTEuOTI1MyA0LjFlLTUgLTFlLTUgLTEuODI2NSAyLjAyNzEtMy4xMzA5IDMuNTg5NS0wLjY3NjI5IDAuODEwMDUtMS4xODU0IDIuNzA3NS0xLjE4NTQgMi43MDc1IDEuNTE0Mi0wLjg2NzE4IDMuMjYxNC0yLjY3MzQgMy44OTc5LTQuMzcxNnptMC42OTMxOC0zLjc5NTRjMC4xMTUyMS0wLjk4MjAzLTAuNjA0MzQtMi42MDk2LTAuNzQ4NzItMy4wODE1LTAuODQ1NjQtMi42NTI5LTIuOTQxOC0wLjQyNTI0LTQuMjYyMSAwLjkzNTI5LTAuMjkxODYgMC4zMjUwNC0wLjI5NDM1IDAuMzk1MTMtMC4wNDA2IDEuMTQyNiAwLjUyMzMzIDEuNTQxNCAwLjgyMzQ3IDMuODQyNCAwLjcxMTk1IDUuNDU4MmwtMC4xMDU0MyAxLjUyNzdjMS41MDU5LTIuNTQ1NyA0LjE1NzMtNC4wNTI1IDQuNDQ0OS01Ljk4MjR6bTIuNzk5OS0zLjgwNDZjMC41MTUxMS0yLjcxNTQgMC4yMDI2OC01LjQ1LTAuNzI5MTMtNi4zODE4LTAuNTcyMDYtMC41NzIwNi0wLjczNDE2LTAuNDIzNjQtMC44ODAzMiAwLjIyMzUtMC40MDcxOCAxLjgwMjgtMi43NTM3IDQuMzgxNC0yLjM3MyA0Ljk1MTQgMC4yMTUxNSAwLjM3NzUyIDAuNzY3NjIgMS4yNTcxIDEuMTExOCAyLjA2OTYgMC40MDgzOCAwLjk2MzkxIDAuNDY3MzMgMS43NDM2IDAuODY3ODMgMi4zMDAzIDAuODM3ODggMS4wNTQ5IDEuOTEtMi42ODY2IDIuMDAyOC0zLjE2M3ptLTMuNDUyMi0xMy4xNDVjLTAuMjA5NDcgMS42ODcyLTEuMTA5MyAzLjk0NTQtMy4wNjM3IDQuODkwOS0wLjcxNzgyIDAuNDc2NDUgMC44NTk4OCAyLjA1NTkgMC4yOTA5MSA1LjUzMDctMC4xMDQyOCAwLjM4NzI5LTAuNDUzMyAxLjA0NzktMC4zMjMxNSAxLjIzMzggMC45MDQ2NCAwLjM2MzIzIDIuOTc2NC0xLjI0MDUgMy45ODItMy43MDM2IDAuMzQ2NjYtMC44NDkxMSAwLjk3MzE5LTIuNTQwNiAwLjY1OTY5LTQuMDM3NC0wLjM5NjY5LTEuODkzOS0xLjU5ODItMy41MjY1LTEuNTQ1Ny0zLjkxNDR6bS0zLjgzMSAzLjkzOGMwLjgyMzQ2IDAuOTM5NDIgMy40Nzc3LTEuNzQ2MSAzLjAxNTUtNC45OTk5LTAuNDE4MzYtMS40OTQ2LTEuMDY1NC0zLjI0MjgtMS4yNTQ4LTQuNjc0Ni0wLjEwNjQ1LTAuODA1MDYgMC4wODM0OC0xLjk2MTctMC4wNDA2Ni0yLjAwODItNC44MTQxIDEuNzYzLTQuNTU1NCA3LjMwMDctMS43MjAxIDExLjY4M3ptNC45NTc5LTE4LjczNWMtMS41MTk1IDAuNDEzNDUtMy4zMTkgMi4yMTQzLTQuNjQ1MSA0LjI3MDctMS40MjU4IDIuMjExMS0yLjQgNS44Nzk1LTIuNCA1Ljg3OTUgMC4zMjIxMS0wLjgxMTI1IDEuMTc1LTIuMTk2MyAyLjAwMzMtMi43NzggMC45MjY1Ny0wLjY1MDY0IDEuOTU4OC0xLjAxNCAxLjk1ODgtMS4wMTRzMS4xNjItNC41NjgxIDMuMDgzLTYuMzU4M3ptLTkuNDEwMiAyOS4zMzNjLTEuNTI3My0wLjEyMjQtMy4wOTczLTEuMDExMi0zLjgxNjgtMi4zMjg1LTAuNTcyMTMtMS4wMjMxLTEuMDg5OC0yLjIwOTQtMS4xNTQxLTMuNDMzMy0wLjA5MzQtMS43Nzk3IDAuMTY3MS0yLjcwODkgMS42MTg0LTUuNzczMiAxLjMzOC0yLjgyNDkgMS41MTgyLTQuMTU4NSAxLjUxOC01Ljk1ODctMC40NjI2Mi01LjczNzQtNC4yNTY2LTExLjQyMS04LjUwODktMTIuNDc3IDEuNTkyOSAxLjQ0OTggMi40MjE3IDMuMjQ2IDMuMDQwOCA1LjE5MjcgMC4zNTQ1MiAxLjEyNTcgMC41NDA2NiAyLjEyMTkgMC41ODQ5NCAzLjA1NDUtMC45NTEyOCA4LjI5NDItNS4yNTk4IDEwLjMyMS01Ljk3NzkgMTguMDM0LTAuMTkyMzQtMC4zMzM2Mi0wLjY1NzMxLTEuNTYwOC0xLjI0OTUtMi4zNzY2LTEuMDgzNy0xLjQ5MjktMi41MTQ2LTIuNzA1MS0yLjY0MjctMi44MTE3IDIuOTg5NyAzLjMwNDMgNC41MzQ0IDkuODU5NC0wLjE5Mjc3IDE0LjE2MSAyLjQxMDYtMC4xNTI3OCAzLjk3NzUgMi43Mzc1IDIuODY5MyA0Ljc0NDMgNS4wMzg3LTQuMTY1NSAxMC4yNDcgMi4zMDE5IDYuMDUzNCA2LjYzMjUgMCAwIDEuOTUwOCAwLjY0MjEgMi44ODQyIDEuNDY0OCAwLjYwNDg2IDAuNDc3NjMgMS4xNDIxIDEuNzM4NyAxLjUxNjcgMi40MTEgMS4wNjY4IDEuOTE0OSAxLjM4NTUgMy43MDcgMy40NTUyIDMuNzg2NiAwLjAwMzMtMC4yMTMwNiAwLjAwMTctMC44NTc0OCAwLjAwMTYtMC45NjYzNS01ZS02IC0wLjAxMDItMC4wMzU3NyA0ZS0zIC0wLjIzMDQyLTAuMDYwMy0xLjc2MDQtMC41NTEwOC0yLjE0MzgtMS4wNTI3LTEuODA0OC0yLjcwMzYgMC43ODk5OS00LjQ4MzQgMS4xNzAyLTYuMDQ2NC0wLjcxMTIzLTkuNzg4LTEuMDI5Ni0yLjAzNjktMS4xNDA2LTIuNzk2Ny0xLjEzNjctNS4yMTUyIDAuMDA1Mi0xLjY1MTcgMC42MzgwNi00LjA3MzEgMS4wODE1LTMuODg3MiAwLjI4NTY4IDAuMDQyMDEgMC4xMTEyMSAwLjAyNjcgMC42MTE4NCAxLjE0NDkgMC42MjY4NyAxLjQwMDIgMS4xODE4IDMuMDgwNSAyLjE4OTYgMy4xODQ5bS04LjI0MjIgMC4xNzc2MWMtMC4zNjQ1LTEuMDYxMi0wLjQxODM4LTEuOTI1My0wLjQxODM4LTEuOTI1My00LjFlLTUgLTFlLTUgMS44MjY1IDIuMDI3MSAzLjEzMDkgMy41ODk1IDAuNjc2MjkgMC44MTAwNSAxLjE4NTQgMi43MDc1IDEuMTg1NCAyLjcwNzUtMS41MTQyLTAuODY3MTgtMy4yNjE0LTIuNjczNC0zLjg5NzktNC4zNzE2em0tMC42OTMxOC0zLjc5NTRjLTAuMTE1MjEtMC45ODIwMyAwLjYwNDM0LTIuNjA5NiAwLjc0ODcyLTMuMDgxNSAwLjg0NTY0LTIuNjUyOSAyLjk0MTgtMC40MjUyNCA0LjI2MjEgMC45MzUyOSAwLjI5MTg2IDAuMzI1MDQgMC4yOTQzNSAwLjM5NTEzIDAuMDQwNiAxLjE0MjYtMC41MjMzMyAxLjU0MTQtMC44MjM0NyAzLjg0MjQtMC43MTE5NSA1LjQ1ODJsMC4xMDU0MyAxLjUyNzdjLTEuNTA1OS0yLjU0NTctNC4xNTczLTQuMDUyNS00LjQ0NDktNS45ODI0em0tMi43OTk5LTMuODA0NmMtMC41MTUxMS0yLjcxNTQtMC4yMDI2OC01LjQ1IDAuNzI5MTMtNi4zODE4IDAuNTcyMDYtMC41NzIwNiAwLjczNDE2LTAuNDIzNjQgMC44ODAzMiAwLjIyMzUgMC40MDcxOCAxLjgwMjggMi43NTM3IDQuMzgxNCAyLjM3MyA0Ljk1MTQtMC4yMTUxNSAwLjM3NzUyLTAuNzY3NjIgMS4yNTcxLTEuMTExOCAyLjA2OTYtMC40MDgzOCAwLjk2MzkxLTAuNDY3MzMgMS43NDM2LTAuODY3ODMgMi4zMDAzLTAuODM3ODggMS4wNTQ5LTEuOTEtMi42ODY2LTIuMDAyOC0zLjE2M3ptMy40NTIyLTEzLjE0NWMwLjIwOTQ3IDEuNjg3MiAxLjEwOTMgMy45NDU0IDMuMDYzNyA0Ljg5MDkgMC43MTc4MiAwLjQ3NjQ1LTAuODU5ODggMi4wNTU5LTAuMjkwOTEgNS41MzA3IDAuMTA0MjggMC4zODcyOSAwLjQ1MzMgMS4wNDc5IDAuMzIzMTUgMS4yMzM4LTAuOTA0NjQgMC4zNjMyMy0yLjk3NjQtMS4yNDA1LTMuOTgyLTMuNzAzNi0wLjM0NjY2LTAuODQ5MTEtMC45NzMxOS0yLjU0MDYtMC42NTk2OS00LjAzNzQgMC4zOTY2OS0xLjg5MzkgMS41OTgyLTMuNTI2NSAxLjU0NTctMy45MTQ0em0zLjgzMSAzLjkzOGMtMC44MjM0NiAwLjkzOTQyLTMuNDc3Ny0xLjc0NjEtMy4wMTU1LTQuOTk5OSAwLjQxODM2LTEuNDk0NiAxLjA2NTQtMy4yNDI4IDEuMjU0OC00LjY3NDYgMC4xMDY0NS0wLjgwNTA2LTAuMDgzNDgtMS45NjE3IDAuMDQwNjYtMi4wMDgyIDQuODE0MSAxLjc2MyA0LjU1NTQgNy4zMDA3IDEuNzIwMSAxMS42ODN6bS00Ljk1NzktMTguNzM1YzEuNTE5NSAwLjQxMzQ1IDMuMzE5IDIuMjE0MyA0LjY0NTEgNC4yNzA3IDEuNDI1OCAyLjIxMTEgMi40IDUuODc5NSAyLjQgNS44Nzk1LTAuMzIyMTEtMC44MTEyNS0xLjE3NS0yLjE5NjMtMi4wMDMzLTIuNzc4LTAuOTI2NTctMC42NTA2NC0xLjk1ODgtMS4wMTQtMS45NTg4LTEuMDE0cy0xLjE2Mi00LjU2ODEtMy4wODMtNi4zNTgzeiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIuMTcwNzMiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY2LjYwNCAtNDYuOTQ1KSI+PHBhdGggZD0ibTgzLjM4NCA3Ni45MTZjMS41MjczLTAuMTIyNCAzLjA5NzMtMS4wMTEyIDMuODE2OC0yLjMyODUgMC41NzIxMy0xLjAyMzEgMS4wODk4LTIuMjA5NCAxLjE1NDEtMy40MzMzIDAuMDkzNC0xLjc3OTctMC4xNjcxLTIuNzA4OS0xLjYxODQtNS43NzMyLTEuMzM4LTIuODI0OS0xLjUxODItNC4xNTg1LTEuNTE4LTUuOTU4NyAwLjQ2MjYyLTUuNzM3NCA0LjI1NjYtMTEuNDIxIDguNTA4OS0xMi40NzctMS41OTI5IDEuNDQ5OC0yLjQyMTcgMy4yNDYtMy4wNDA4IDUuMTkyNy0wLjM1NDUyIDEuMTI1Ny0wLjU0MDY2IDIuMTIxOS0wLjU4NDk0IDMuMDU0NSAwLjk1MTI4IDguMjk0MiA1LjI1OTggMTAuMzIxIDUuOTc3OSAxOC4wMzQgMC4xOTIzNC0wLjMzMzYyIDAuNjU3MzEtMS41NjA4IDEuMjQ5NS0yLjM3NjYgMS4wODM3LTEuNDkyOSAyLjUxNDYtMi43MDUxIDIuNjQyNy0yLjgxMTctMi45ODk3IDMuMzA0My00LjUzNDQgOS44NTk0IDAuMTkyNzcgMTQuMTYxLTIuNDEwNi0wLjE1Mjc4LTMuOTc3NSAyLjczNzUtMi44NjkzIDQuNzQ0My01LjAzODctNC4xNjU1LTEwLjI0NyAyLjMwMTktNi4wNTM0IDYuNjMyNSAwIDAtMS45NTA4IDAuNjQyMS0yLjg4NDIgMS40NjQ4LTAuNjA0ODYgMC40Nzc2My0xLjE0MjEgMS43Mzg3LTEuNTE2NyAyLjQxMS0xLjA2NjggMS45MTQ5LTEuMzg1NSAzLjcwNy0zLjQ1NTIgMy43ODY2LTAuMDAzMy0wLjIxMzA2LTAuMDAxNy0wLjg1NzQ4LTAuMDAxNi0wLjk2NjM1IDVlLTYgLTAuMDEwMiAwLjAzNTc3IDRlLTMgMC4yMzA0Mi0wLjA2MDMgMS43NjA0LTAuNTUxMDggMi4xNDM4LTEuMDUyNyAxLjgwNDgtMi43MDM2LTAuNzg5OTktNC40ODM0LTEuMTcwMi02LjA0NjQgMC43MTEyMy05Ljc4OCAxLjAyOTYtMi4wMzY5IDEuMTQwNi0yLjc5NjcgMS4xMzY3LTUuMjE1Mi0wLjAwNTItMS42NTE3LTAuNjM4MDYtNC4wNzMxLTEuMDgxNS0zLjg4NzItMC4yODU2OCAwLjA0MjAxLTAuMTExMjEgMC4wMjY3LTAuNjExODQgMS4xNDQ5LTAuNjI2ODcgMS40MDAyLTEuMTgxOCAzLjA4MDUtMi4xODk2IDMuMTg0OW04LjI0MjIgMC4xNzc2MWMwLjM2NDUtMS4wNjEyIDAuNDE4MzgtMS45MjUzIDAuNDE4MzgtMS45MjUzIDQuMWUtNSAtMWUtNSAtMS44MTgyIDEuOTg1OC0zLjEzMDkgMy41ODk1LTAuNjY4MzggMC44MTY1OC0xLjE4NTQgMi43MDc1LTEuMTg1NCAyLjcwNzUgMS41MTQyLTAuODY3MTggMy4yNjE0LTIuNjczNCAzLjg5NzktNC4zNzE2em0wLjY5MzE4LTMuNzk1NGMwLjExNTIxLTAuOTgyMDMtMC42MDQzNC0yLjYwOTYtMC43NDg3Mi0zLjA4MTUtMC44NDU2NC0yLjY1MjktMi45NDE4LTAuNDI1MjQtNC4yNjIxIDAuOTM1MjktMC4yOTE4NiAwLjMyNTA0LTAuMjk0MzUgMC4zOTUxMy0wLjA0MDYgMS4xNDI2IDAuNTIzMzMgMS41NDE0IDAuODIzNDcgMy44NDI0IDAuNzExOTUgNS40NTgybC0wLjEwNTQzIDEuNTI3N2MxLjUwNTktMi41NDU3IDQuMTU3My00LjA1MjUgNC40NDQ5LTUuOTgyNHptMi43OTk5LTMuODA0NmMwLjUxNTExLTIuNzE1NCAwLjIwMjY4LTUuNDUtMC43MjkxMy02LjM4MTgtMC41NzIwNi0wLjU3MjA2LTAuNzM0MTYtMC40MjM2NC0wLjg4MDMyIDAuMjIzNS0wLjQwNzE4IDEuODAyOC0yLjc1MzcgNC4zODE0LTIuMzczIDQuOTUxNCAwLjIxNTE1IDAuMzc3NTIgMC43Njc2MiAxLjI1NzEgMS4xMTE4IDIuMDY5NiAwLjQwODM4IDAuOTYzOTEgMC40NjczMyAxLjc0MzYgMC44Njc4MyAyLjMwMDMgMC44Mzc4OCAxLjA1NDkgMS45MS0yLjY4NjYgMi4wMDI4LTMuMTYzem0tMy40NTIyLTEzLjE0NWMtMC4yMDk0NyAxLjY4NzItMS4xMDkzIDMuOTQ1NC0zLjA2MzcgNC44OTA5LTAuNzE3ODIgMC40NzY0NSAwLjg1OTg4IDIuMDU1OSAwLjI5MDkxIDUuNTMwNy0wLjEwNDI4IDAuMzg3MjktMC40NTMzIDEuMDQ3OS0wLjMyMzE1IDEuMjMzOCAwLjkwNDY0IDAuMzYzMjMgMi45NzY0LTEuMjQwNSAzLjk4Mi0zLjcwMzYgMC4zNDY2Ni0wLjg0OTExIDAuOTczMTktMi41NDA2IDAuNjU5NjktNC4wMzc0LTAuMzk2NjktMS44OTM5LTEuNTk4Mi0zLjUyNjUtMS41NDU3LTMuOTE0NHptLTMuODMxIDMuOTM4YzAuODIzNDYgMC45Mzk0MiAzLjQ3NzctMS43NDYxIDMuMDE1NS00Ljk5OTktMC40MTgzNi0xLjQ5NDYtMS4wNjU0LTMuMjQyOC0xLjI1NDgtNC42NzQ2LTAuMTA2NDUtMC44MDUwNiAwLjA4MzQ4LTEuOTYxNy0wLjA0MDY2LTIuMDA4Mi00LjgxNDEgMS43NjMtNC41NTU0IDcuMzAwNy0xLjcyMDEgMTEuNjgzem00Ljk1NzktMTguNzM1Yy0xLjUxOTUgMC40MTM0NS0zLjMxOSAyLjIxNDMtNC42NDUxIDQuMjcwNy0xLjQyNTggMi4yMTExLTIuNCA1Ljg3OTUtMi40IDUuODc5NSAwLjMyMjExLTAuODExMjUgMS4xNzUtMi4xOTYzIDIuMDAzMy0yLjc3OCAwLjkyNjU3LTAuNjUwNjQgMS45NTg4LTEuMDE0IDEuOTU4OC0xLjAxNHMxLjE2Mi00LjU2ODEgMy4wODMtNi4zNTgzem0tOS40MTAyIDI5LjMzM2MtMS41MjczLTAuMTIyNC0zLjA5NzMtMS4wMTEyLTMuODE2OC0yLjMyODUtMC41NzIxMy0xLjAyMzEtMS4wODk4LTIuMjA5NC0xLjE1NDEtMy40MzMzLTAuMDkzNC0xLjc3OTcgMC4xNjcxLTIuNzA4OSAxLjYxODQtNS43NzMyIDEuMzM4LTIuODI0OSAxLjUxODItNC4xNTg1IDEuNTE4LTUuOTU4Ny0wLjQ2MjYyLTUuNzM3NC00LjI1NjYtMTEuNDIxLTguNTA4OS0xMi40NzcgMS41OTI5IDEuNDQ5OCAyLjQyMTcgMy4yNDYgMy4wNDA4IDUuMTkyNyAwLjM1NDUyIDEuMTI1NyAwLjU0MDY2IDIuMTIxOSAwLjU4NDk0IDMuMDU0NS0wLjk1MTI4IDguMjk0Mi01LjI1OTggMTAuMzIxLTUuOTc3OSAxOC4wMzQtMC4xOTIzNC0wLjMzMzYyLTAuNjU3MzEtMS41NjA4LTEuMjQ5NS0yLjM3NjYtMS4wODM3LTEuNDkyOS0yLjUxNDYtMi43MDUxLTIuNjQyNy0yLjgxMTcgMi45ODk3IDMuMzA0MyA0LjUzNDQgOS44NTk0LTAuMTkyNzcgMTQuMTYxIDIuNDEwNi0wLjE1Mjc4IDMuOTc3NSAyLjczNzUgMi44NjkzIDQuNzQ0MyA1LjAzODctNC4xNjU1IDEwLjI0NyAyLjMwMTkgNi4wNTM0IDYuNjMyNSAwIDAgMS45NTA4IDAuNjQyMSAyLjg4NDIgMS40NjQ4IDAuNjA0ODYgMC40Nzc2MyAxLjE0MjEgMS43Mzg3IDEuNTE2NyAyLjQxMSAxLjA2NjggMS45MTQ5IDEuMzg1NSAzLjcwNyAzLjQ1NTIgMy43ODY2IDAuMDAzMy0wLjIxMzA2IDAuMDAxNy0wLjg1NzQ4IDAuMDAxNi0wLjk2NjM1LTVlLTYgLTAuMDEwMi0wLjAzNTc3IDRlLTMgLTAuMjMwNDItMC4wNjAzLTEuNzYwNC0wLjU1MTA4LTIuMTQzOC0xLjA1MjctMS44MDQ4LTIuNzAzNiAwLjc4OTk5LTQuNDgzNCAxLjE3MDItNi4wNDY0LTAuNzExMjMtOS43ODgtMS4wMjk2LTIuMDM2OS0xLjE0MDYtMi43OTY3LTEuMTM2Ny01LjIxNTIgMC4wMDUyLTEuNjUxNyAwLjYzODA2LTQuMDczMSAxLjA4MTUtMy44ODcyIDAuMjg1NjggMC4wNDIwMSAwLjExMTIxIDAuMDI2NyAwLjYxMTg0IDEuMTQ0OSAwLjYyNjg3IDEuNDAwMiAxLjE4MTggMy4wODA1IDIuMTg5NiAzLjE4NDltLTguMjQyMiAwLjE3NzYxYy0wLjM2NDUtMS4wNjEyLTAuNDE4MzgtMS45MjUzLTAuNDE4MzgtMS45MjUzLTQuMWUtNSAtMWUtNSAxLjgxODIgMS45ODU4IDMuMTMwOSAzLjU4OTUgMC42NjgzOCAwLjgxNjU4IDEuMTg1NCAyLjcwNzUgMS4xODU0IDIuNzA3NS0xLjUxNDItMC44NjcxOC0zLjI2MTQtMi42NzM0LTMuODk3OS00LjM3MTZ6bS0wLjY5MzE4LTMuNzk1NGMtMC4xMTUyMS0wLjk4MjAzIDAuNjA0MzQtMi42MDk2IDAuNzQ4NzItMy4wODE1IDAuODQ1NjQtMi42NTI5IDIuOTQxOC0wLjQyNTI0IDQuMjYyMSAwLjkzNTI5IDAuMjkxODYgMC4zMjUwNCAwLjI5NDM1IDAuMzk1MTMgMC4wNDA2IDEuMTQyNi0wLjUyMzMzIDEuNTQxNC0wLjgyMzQ3IDMuODQyNC0wLjcxMTk1IDUuNDU4MmwwLjEwNTQzIDEuNTI3N2MtMS41MDU5LTIuNTQ1Ny00LjE1NzMtNC4wNTI1LTQuNDQ0OS01Ljk4MjR6bS0yLjc5OTktMy44MDQ2Yy0wLjUxNTExLTIuNzE1NC0wLjIwMjY4LTUuNDUgMC43MjkxMy02LjM4MTggMC41NzIwNi0wLjU3MjA2IDAuNzM0MTYtMC40MjM2NCAwLjg4MDMyIDAuMjIzNSAwLjQwNzE4IDEuODAyOCAyLjc1MzcgNC4zODE0IDIuMzczIDQuOTUxNC0wLjIxNTE1IDAuMzc3NTItMC43Njc2MiAxLjI1NzEtMS4xMTE4IDIuMDY5Ni0wLjQwODM4IDAuOTYzOTEtMC40NjczMyAxLjc0MzYtMC44Njc4MyAyLjMwMDMtMC44Mzc4OCAxLjA1NDktMS45MS0yLjY4NjYtMi4wMDI4LTMuMTYzem0zLjQ1MjItMTMuMTQ1YzAuMjA5NDcgMS42ODcyIDEuMTA5MyAzLjk0NTQgMy4wNjM3IDQuODkwOSAwLjcxNzgyIDAuNDc2NDUtMC44NTk4OCAyLjA1NTktMC4yOTA5MSA1LjUzMDcgMC4xMDQyOCAwLjM4NzI5IDAuNDUzMyAxLjA0NzkgMC4zMjMxNSAxLjIzMzgtMC45MDQ2NCAwLjM2MzIzLTIuOTc2NC0xLjI0MDUtMy45ODItMy43MDM2LTAuMzQ2NjYtMC44NDkxMS0wLjk3MzE5LTIuNTQwNi0wLjY1OTY5LTQuMDM3NCAwLjM5NjY5LTEuODkzOSAxLjU5ODItMy41MjY1IDEuNTQ1Ny0zLjkxNDR6bTMuODMxIDMuOTM4Yy0wLjgyMzQ2IDAuOTM5NDItMy40Nzc3LTEuNzQ2MS0zLjAxNTUtNC45OTk5IDAuNDE4MzYtMS40OTQ2IDEuMDY1NC0zLjI0MjggMS4yNTQ4LTQuNjc0NiAwLjEwNjQ1LTAuODA1MDYtMC4wODM0OC0xLjk2MTcgMC4wNDA2Ni0yLjAwODIgNC44MTQxIDEuNzYzIDQuNTU1NCA3LjMwMDcgMS43MjAxIDExLjY4M3ptLTQuOTU3OS0xOC43MzVjMS41MTk1IDAuNDEzNDUgMy4zMTkgMi4yMTQzIDQuNjQ1MSA0LjI3MDcgMS40MjU4IDIuMjExMSAyLjQgNS44Nzk1IDIuNCA1Ljg3OTUtMC4zMjIxMS0wLjgxMTI1LTEuMTc1LTIuMTk2My0yLjAwMzMtMi43NzgtMC45MjY1Ny0wLjY1MDY0LTEuOTU4OC0xLjAxNC0xLjk1ODgtMS4wMTRzLTEuMTYyLTQuNTY4MS0zLjA4My02LjM1ODN6IiBmaWxsPSIjMDYxYTJkIiBzdHJva2Utd2lkdGg9Ii4xNzA3MyIvPjxwYXRoIHRyYW5zZm9ybT0ibWF0cml4KC4yNjQ1OCAwIDAgLjI2NDU4IDY2LjYwNCA0Ni45NDUpIiBkPSJtODAuMzk1IDE0NS4wMXMwLjIxNDU4LTMuMDA4OCAwLjMzMzMyLTUuMTAyNGMwLjQxMDktNy4yNDQ4LTAuNDcwODMtMTQuNDQ5LTIuNjk2Mi0yMS41Mi0wLjcxNDM0LTIuMjY5Ny0wLjkwMDY0LTIuNDk5OC0wLjU1NTQ5LTMuMTU0MiAwLjMzMDAxLTAuNjI1NzkgNC44NTk3LTUuMjEgNi41NTQyLTYuNTg4MiAyLjQ2NzItMi4wMDY4IDUuMTE2Mi0yLjkzMzggNi43OTcyLTIuNDgwNCAwLjkwNTMxIDAuMjQ0MjEgMi4xNTM5IDEuMzYzIDIuNzQ1NiAyLjUzMDYgMC40NjUwNSAwLjkxNzczIDIuMjI1NCA2LjA1NjUgMi43NzIgNy42OTcyIDEuOTQ2OCA1Ljg0NCAxLjI5NTMgOS4wNDUxLTYuMTQxMiAxNi44NjYtNC45OTM2IDUuMjUyMS03LjA3NDkgNy41NjI2LTguODE5OSAxMC4yMTItMC42NzU3MiAxLjAyNi0wLjk4OTM5IDEuNTM5LTAuOTg5MzkgMS41Mzl6bS0zMy45NDUgMHMtMC4yMTQ1OC0zLjAwODgtMC4zMzMzMi01LjEwMjRjLTAuNDEwOS03LjI0NDggMC40NzA4My0xNC40NDkgMi42OTYyLTIxLjUyIDAuNzE0MzQtMi4yNjk3IDAuOTAwNjQtMi40OTk4IDAuNTU1NDktMy4xNTQyLTAuMzMwMDEtMC42MjU3OS00Ljg1OTctNS4yMS02LjU1NDItNi41ODgyLTIuNDY3Mi0yLjAwNjgtNS4xMTYyLTIuOTMzOC02Ljc5NzItMi40ODA0LTAuOTA1MzEgMC4yNDQyMS0yLjE1MzkgMS4zNjMtMi43NDU2IDIuNTMwNi0wLjQ2NTA1IDAuOTE3NzMtMi4yMjU0IDYuMDU2NS0yLjc3MiA3LjY5NzItMS45NDY4IDUuODQ0LTEuMjk1MyA5LjA0NTEgNi4xNDEyIDE2Ljg2NiA0Ljk5MzYgNS4yNTIxIDcuMDc0OSA3LjU2MjYgOC44MTk5IDEwLjIxMiAwLjY3NTcyIDEuMDI2IDAuOTg5MzkgMS41MzkgMC45ODkzOSAxLjUzOXoiIGZpbGw9IiNhMDFlM2EiLz48ZyBmaWxsPSIjZTE4ZTQyIj48cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguMjY0NTggMCAwIC4yNjQ1OCA2Ni42MDQgNDYuOTQ1KSIgZD0ibTgwLjI0OSA3My4yMjFjLTAuMzAzMTYtMC4zMjI5OC0xLjA3MDctMS41NTY2LTEuNjc5NS0yLjYzMjItNC40NzM3LTcuOTA0NS02LjUzODgtMTYuMTIxLTUuOTUyNC0yMy4wNjYgMC42NzU2Ny04LjAwMjEgNC42OTEzLTEzLjk5MyAxMS41MzctMTcuMzg4IDAuODU0MTktMC4zOTAwNyAxLjcxMzctMC43NjcwMiAyLjU5NjQtMS4wNjkyIDAgMCAwLjMwNDg5IDAuMjE0MjcgMC4xOTU1MiAwLjY2NzRsLTAuMTQyNjYgMy41Nzc1Yy0wLjA2ODUgMS43MTc4IDAuMDU2MSAyLjc1NzYgMC4xNTY1OSAzLjU5ODkgMC4xMjY3IDEuMDYwNyAwLjIzNTI3IDEuNTIyNSAwLjUyNDk3IDIuNzU0MiAwLjU2NzE5IDIuNDEyMyAxLjE4NTUgNS4yMDE3IDMuMTYzNiAxMS4xMDkgMC4yNDczOSAwLjczODc4IDAuOTk4MTEgMy41NTEyIDAuOTk4MTEgMy41NTEyIDEuMDkzOSA2LjY5MTItMS42NTIxIDEzLjMwOS01LjIzMDIgMTcuMDUzLTEuODE4MSAxLjg2NjMtMy4xMzM0IDIuNTY5NC00LjU1MzIgMi41NzIzLTAuODA0NjQgMC4xMTc1MS0xLjI2OTUtMC4zNTM1OS0xLjYxMzgtMC43MjgyNXptLTMzLjY1NSAwYzAuMzAzMTYtMC4zMjI5OCAxLjA3MDctMS41NTY2IDEuNjc5NS0yLjYzMjIgNC40NzM3LTcuOTA0NSA2LjUzODgtMTYuMTIxIDUuOTUyNC0yMy4wNjYtMC42NzU2Ny04LjAwMjEtNC42OTEzLTEzLjk5My0xMS41MzctMTcuMzg4LTAuODU0MTktMC4zOTAwNy0xLjcxMzctMC43NjcwMi0yLjU5NjQtMS4wNjkyIDAgMC0wLjMwNDg5IDAuMjE0MjctMC4xOTU1MiAwLjY2NzRsMC4xNDI2NiAzLjU3NzVjMC4wNjg1IDEuNzE3OC0wLjA1NjEgMi43NTc2LTAuMTU2NTkgMy41OTg5LTAuMTI2NyAxLjA2MDctMC4yMzUyNyAxLjUyMjUtMC41MjQ5NyAyLjc1NDItMC41NjcxOSAyLjQxMjMtMS4xODU1IDUuMjAxNy0zLjE2MzYgMTEuMTA5LTAuMjQ3MzkgMC43Mzg3OC0wLjk5ODExIDMuNTUxMi0wLjk5ODExIDMuNTUxMi0xLjA5MzkgNi42OTEyIDEuNjUyMSAxMy4zMDkgNS4yMzAyIDE3LjA1MyAxLjgxODEgMS44NjYzIDMuMTMzNCAyLjU2OTQgNC41NTMyIDIuNTcyMyAwLjgwNDY0IDAuMTE3NTEgMS4yNjk1LTAuMzUzNTkgMS42MTM4LTAuNzI4MjV6Ii8+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoLjI2NDU4IDAgMCAuMjY0NTggNjYuNjA0IDQ2Ljk0NSkiIGQ9Im03Mi4zNjEgNDAuNzczYzMuNTczMi0xNy4wMjYgMTUuMTgxLTM0LjY5MSAyNi42MTQtMzguMzY0IDAgMC0wLjczMzM1IDAuNzU4MTktMS4yNDU4IDEuMzE3Mi0zLjI3NzggMy41NzYyLTcuMjQzNyAxMi4wMTYtOS43MTE2IDIwLjM0Mi0wLjMzMDU1IDEuMTE1Mi0wLjYwNzUzIDIuMjczMS0wLjY4MTQ5IDIuMzcyOC0wLjA3Mzk2IDAuMDk5NzgtMC41MzYxIDAuMjYzNjQtMC45MDY4NSAwLjM5NTUzLTEuMDM2NiAwLjM2ODc3LTMuNjk4IDEuNzUzNS01LjM2NjUgMi43NTY1LTIuNTIzMiAxLjUxNjgtNC44NzY5IDQuMTgwOS03LjE3NzggOC4xMjM3LTAuMzg5NjEgMC42Njc2MS0xLjUyMiAzLjE3NzctMS41MjM3IDMuMDU2MXptLTE3Ljg3OCAwYy0zLjU3MzItMTcuMDI2LTE1LjE4MS0zNC42OTEtMjYuNjE0LTM4LjM2NCAwIDAgMC43MzMzNSAwLjc1ODE5IDEuMjQ1OCAxLjMxNzIgMy4yNzc4IDMuNTc2MiA3LjI0MzcgMTIuMDE2IDkuNzExNiAyMC4zNDIgMC4zMzA1NSAxLjExNTIgMC42MDc1MyAyLjI3MzEgMC42ODE0OSAyLjM3MjggMC4wNzM5NiAwLjA5OTc4IDAuNTM2MSAwLjI2MzY0IDAuOTA2ODUgMC4zOTU1MyAxLjAzNjYgMC4zNjg3NyAzLjY5OCAxLjc1MzUgNS4zNjY1IDIuNzU2NSAyLjUyMzIgMS41MTY4IDQuODc2OSA0LjE4MDkgNy4xNzc4IDguMTIzNyAwLjM4OTYxIDAuNjY3NjEgMS41MjIgMy4xNzc3IDEuNTIzNyAzLjA1NjF6Ii8+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoLjI2NDU4IDAgMCAuMjY0NTggNjYuNjA0IDQ2Ljk0NSkiIGQ9Im04MC4yIDE1Mi4wMWMwLjc2MzIzLTIuNjcyMyAyLjM4Mi02LjU1NzggMy41NTMzLTguMjIxIDAuODk5MzUtMS40MDU5IDEyLjIzMy0xNC40OTQgMTIuNDAyLTE0LjMyNSAwLjExMjE4IDAuMTEyMTgtMC40NDg0OSAzLjQ5NTUtMC44OTYzMSA1LjIxOTYtMS41NDY1IDUuOTUzOS03LjA0NzQgMTMuMDEtMTMuNTU3IDE3LjQyMy0wLjczNzkgMC41MDAyMy0xLjc3MjcgMS4xNzUxLTEuODMxNyAxLjE3NTEtMC4wNTg5OCAwIDAuMTc5NDYtMC43NjEzOSAwLjMyOTM2LTEuMjcxOHptLTMzLjU1NiAwYy0wLjc2MzIzLTIuNjcyMy0yLjM4Mi02LjU1NzgtMy41NTMzLTguMjIxLTAuODk5MzUtMS40MDU5LTEyLjIzMy0xNC40OTQtMTIuNDAyLTE0LjMyNS0wLjExMjE4IDAuMTEyMTggMC40NDg0OSAzLjQ5NTUgMC44OTYzMSA1LjIxOTYgMS41NDY1IDUuOTUzOSA3LjA0NzQgMTMuMDEgMTMuNTU3IDE3LjQyMyAwLjczNzkgMC41MDAyMyAxLjc3MjcgMS4xNzUxIDEuODMxNyAxLjE3NTEgMC4wNTg5OCAwLTAuMTc5NDYtMC43NjEzOS0wLjMyOTM2LTEuMjcxOHoiLz48L2c+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoLjI2NDU4IDAgMCAuMjY0NTggNjYuNjA0IDQ2Ljk0NSkiIGQ9Im0xMDAuNjkgMTIwLjQ2Yy0wLjgyNDg1LTAuNTU0MzMtMS40NDkyLTEuODU3OC0yLjUzMzYtNS40MTY5LTEuMDg2LTMuNTY0NS0xLjkzMTMtNS41MDE4LTQuMzU0OC05LjY4NjktMS4yODE1LTIuMjEyOS0xLjMyMjUtMi4yMzE1LTEuMjQ3OC0yLjg3NSAwLjEwNzgtMC45Mjg0NyAxLjIzNjYtMy4wMTQzIDMuNzU0Mi03LjA3MDcgMy41MTA0LTUuNjU1OSA0LjU5NzQtNy43NTI5IDUuNDA5OS0xMC43NDYgMC4zODY2Ny0xLjg2NzYgMC43NDkxOS0yLjMzMzggMS42NDk1LTIuMDgzIDAuNDI4NjYgMC4xMDc1OSAxLjczMDQgMS4yNzEzIDIuMjUyMiAxLjk4MjIgMi44MzYzIDMuODQ1OCAzLjk1MjMgMTIuMzQxIDIuNTY4MyAyMS4xOTItMC4zNjM1NyAyLjMyNTItMC43ODM0NiA0LjE4ODItMS43NTU1IDYuOTkxMy0xLjQ4OTEgNC4yOTQxLTMuMDA3NiA3LjEwNjktNC4yNzI1IDcuNzA3MS0wLjg4NjM4IDAuNTY5MjktMS4xOTE4IDAuMTAyNjItMS40NyA2ZS0zem0tNzQuNTQyIDBjMC44MjQ4NS0wLjU1NDMzIDEuNDQ5Mi0xLjg1NzggMi41MzM2LTUuNDE2OSAxLjA4Ni0zLjU2NDUgMS45MzEzLTUuNTAxOCA0LjM1NDgtOS42ODY5IDEuMjgxNS0yLjIxMjkgMS4zMjI1LTIuMjMxNSAxLjI0NzgtMi44NzUtMC4xMDc4LTAuOTI4NDctMS4yMzY2LTMuMDE0My0zLjc1NDItNy4wNzA3LTMuNTEwNC01LjY1NTktNC41OTc0LTcuNzUyOS01LjQwOTktMTAuNzQ2LTAuMzg2NjctMS44Njc2LTAuNzQ5MTktMi4zMzM4LTEuNjQ5NS0yLjA4My0wLjQyODY2IDAuMTA3NTktMS43MzA0IDEuMjcxMy0yLjI1MjIgMS45ODIyLTIuODM2MyAzLjg0NTgtMy45NTIzIDEyLjM0MS0yLjU2ODMgMjEuMTkyIDAuMzYzNTcgMi4zMjUyIDAuNzgzNDYgNC4xODgyIDEuNzU1NSA2Ljk5MTMgMS40ODkxIDQuMjk0MSAzLjAwNzYgNy4xMDY5IDQuMjcyNSA3LjcwNzEgMC44ODYzOCAwLjU2OTI5IDEuMTkxOCAwLjEwMjYyIDEuNDcgNmUtM3oiIGZpbGw9IiNhMDFlM2EiLz48cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguMjY0NTggMCAwIC4yNjQ1OCA2Ni42MDQgNDYuOTQ1KSIgZD0ibTgzLjYwNSAxMDIuNTdjLTAuMzY5MjItMC4wODQtMC41MTc3Mi0wLjExNTc5LTAuNTk4My0wLjIwMjA1LTAuMDIyMy0wLjAyMzktMC4wNjU4OS0wLjE2ODY5LTAuMDkwMDYtMC4zMDE3LTAuMDA5OS0wLjY5Njc5IDAuMDU4OTYtMC44OTAxIDAuNzI5NTgtMi42ODEyIDAuNTQ2NTYtMS40NTk4IDAuNjIzOTMtMS41ODgyIDAuNzUzNDQtMi41MzM0IDAuMzk1ODctMi44ODg5IDAuNDE2MjItNS42MzM1IDAuMTIzNjYtOC4yODUxLTAuMjMyNDItMi4xMDY1LTAuNTcwMjQtMy44MjUzLTEuMzM2MS02LjYyNjYtMC42NzcxNy0yLjQ3Ny0wLjg1MTM0LTMuMzU2LTAuNzQ5NzYtMy45NzExIDAuMTExMjQtMC42NzM1NyAwLjM3MTMtMS4wMDc1IDEuMTA2OC0xLjM4OTIgMS41NzQ0LTAuODE3MDMgMi45OS0xLjc3ODQgNC4zMTQ5LTMuMTM2IDEuNjE4LTEuNjU3OCAyLjg0NTQtMy40MjQzIDQuMDMyOC01LjcwNDQgMS4zNjc1LTIuNjI1OSAyLjEzMjYtNS41NjA0IDIuNjkwMy04LjQybDAuMTQ2ODQtMC45NzcgMC4xNzA5OSAwLjc1NjAzYzAuMTM5NzggMC42MTgwMSAwLjQ3MzI0IDEuMTczNiAxLjc3OTcgMy44MDY3IDAuNjE1NSAxLjI0MDUgMS4yODc2IDIuNjQwNiAxLjUwMzMgMy4xMjY3IDEuNDM2IDMuMjM2NCAyLjM0NyA2LjA4MTggMi42NDkgOC40MjEzIDAuMDk5MSAwLjc2Nzc0IDAuMDk3NiAzLjAwMjggOWUtMyAzLjg1OTItMC4zMTM1MyAzLjAxODQtMS4xMTA4IDYuMDYwNi0yLjUzNjEgOS42MjI3LTAuNTA2NjQgMS4yNjYyLTAuNzg4ODYgMS44MzgtMS4zNzQ4IDIuOTc5MS0xLjk5NDYgMy44ODQ4LTQuODE0IDcuMzI1Ni03LjgxODYgOS41NTg5LTAuNjA0MTYgMC40MDUxNi0xLjEzMyAwLjc5MTczLTEuODUwNCAxLjE2OTQtMS4xNTM3IDAuNjA3MjktMi41NjA2IDEuMDc5LTMuNjU2MyAwLjkyNzY0em0tNDAuMzY2IDBjMC4zNjkyMi0wLjA4NCAwLjUxNzcyLTAuMTE1NzkgMC41OTgzLTAuMjAyMDUgMC4wMjIzLTAuMDIzOSAwLjA2NTg5LTAuMTY4NjkgMC4wOTAwNi0wLjMwMTcgMC4wMDk5LTAuNjk2NzktMC4wNTg5Ni0wLjg5MDEtMC43Mjk1OC0yLjY4MTItMC41NDY1Ni0xLjQ1OTgtMC42MjM5My0xLjU4ODItMC43NTM0NC0yLjUzMzQtMC4zOTU4Ny0yLjg4ODktMC40MTYyMi01LjYzMzUtMC4xMjM2Ni04LjI4NTEgMC4yMzI0Mi0yLjEwNjUgMC41NzAyNC0zLjgyNTMgMS4zMzYxLTYuNjI2NiAwLjY3NzE3LTIuNDc3IDAuODUxMzQtMy4zNTYgMC43NDk3Ni0zLjk3MTEtMC4xMTEyNC0wLjY3MzU3LTAuMzcxMy0xLjAwNzUtMS4xMDY4LTEuMzg5Mi0xLjU3NDQtMC44MTcwMy0yLjk5LTEuNzc4NC00LjMxNDktMy4xMzYtMS42MTgtMS42NTc4LTIuODQ1NC0zLjQyNDMtNC4wMzI4LTUuNzA0NC0xLjM2NzUtMi42MjU5LTIuMTMyNi01LjU2MDQtMi42OTAzLTguNDJsLTAuMTQ2ODQtMC45NzctMC4xNzA5OSAwLjc1NjAzYy0wLjEzOTc4IDAuNjE4MDEtMC40NzMyNCAxLjE3MzYtMS43Nzk3IDMuODA2Ny0wLjYxNTUgMS4yNDA1LTEuMjg3NiAyLjY0MDYtMS41MDMzIDMuMTI2Ny0xLjQzNiAzLjIzNjQtMi4zNDcgNi4wODE4LTIuNjQ5IDguNDIxMy0wLjA5OTEgMC43Njc3NC0wLjA5NzYgMy4wMDI4LTllLTMgMy44NTkyIDAuMzEzNTMgMy4wMTg0IDEuMTEwOCA2LjA2MDYgMi41MzYxIDkuNjIyNyAwLjUwNjY0IDEuMjY2MiAwLjc4ODg2IDEuODM4IDEuMzc0OCAyLjk3OTEgMS45OTQ2IDMuODg0OCA0LjgxNCA3LjMyNTYgNy44MTg2IDkuNTU4OSAwLjYwNDE2IDAuNDA1MTYgMS4xMzMgMC43OTE3MyAxLjg1MDQgMS4xNjk0IDEuMTUzNyAwLjYwNzI5IDIuNTYwNiAxLjA3OSAzLjY1NjMgMC45Mjc2NHoiIGZpbGw9IiNlMThlNDIiLz48cGF0aCBkPSJtODQuODUgODEuMzkzYzAuODU5MDctMi4xNjEgMS4wOTQyLTIuNjM2NCAxLjE2Ni0yLjcxOTYgMC4wNTc2OC0wLjA2Njc0IDAuMjU0NDYtMC4xMDA3MiAwLjMzNTc3LTAuMDI2ODkgMC41MzA0MSAwLjQ4MTU4IDAuOTk2IDIuODQ2NCAwLjkxMTY2IDQuNjQyOS0xLjk4ZS00IDEuOTk2OC0wLjExMjI5IDIuMzAyOC0wLjk3Njg3IDQuMTIwNi0wLjY2NTYyIDEuMzk5NS0xLjAwMjQgMi4xODg2LTEuMjIzNCAzLjAyMDktMC4xNzQxNSAwLjY1NjEtMC4yNTAwMiAwLjkzOTk5LTAuMjc2MzYgMS44ODM4LTAuMDM1MDMgMS4yNTQ4IDAuMDcxNTEgMi4wMjAyIDAuNDk2NzggNC4zNDIxIDAuMTExMTUgMC42NDE2OCAwLjI2MTMgMS4zOTU3IDAuMjUwMjcgMS43OTUtMC4wMDcxIDAuMjU4MTMtMC4wNDE4MSAwLjU4OTY4LTAuMjA3NjIgMC44MjE2My0wLjE3NTE0IDAuMjQ1MDEtMC40MDgyNiAwLjM4Njg4LTAuNTM1NjQgMC40NzEzNC0wLjE0OTk2IDAuMDk5NDMtMS4wMTQ4IDAuNDY4NTctMS40MDU1IDAuNTI0NDFsLTkuMjZlLTQgLTE3LjMyMmMwLjYyNzA0LTAuMDQwMTcgMS4yMTkxLTEuMDYyNCAxLjQ2NTgtMS41NTM5em0tMi45MzE5IDBjLTAuODU5MDctMi4xNjEtMS4wOTQyLTIuNjM2NC0xLjE2Ni0yLjcxOTYtMC4wNTc2OC0wLjA2Njc0LTAuMjU0NDYtMC4xMDA3Mi0wLjMzNTc3LTAuMDI2ODktMC41MzA0MSAwLjQ4MTU4LTAuOTk2IDIuODQ2NC0wLjkxMTY2IDQuNjQyOSAxLjk4ZS00IDEuOTk2OCAwLjExMjI5IDIuMzAyOCAwLjk3Njg3IDQuMTIwNiAwLjY2NTYyIDEuMzk5NSAxLjAwMjQgMi4xODg2IDEuMjIzNCAzLjAyMDkgMC4xNzQxNSAwLjY1NjEgMC4yNTAwMiAwLjkzOTk5IDAuMjc2MzYgMS44ODM4IDAuMDM1MDMgMS4yNTQ4LTAuMDcxNTEgMi4wMjAyLTAuNDk2NzggNC4zNDIxLTAuMTExMTUgMC42NDE2OC0wLjI2MTMgMS4zOTU3LTAuMjUwMjcgMS43OTUgMC4wMDcxIDAuMjU4MTMgMC4wNDE4MSAwLjU4OTY4IDAuMjA3NjIgMC44MjE2MyAwLjE3NTE0IDAuMjQ1MDEgMC40MDgyNiAwLjM4Njg4IDAuNTM1NjQgMC40NzEzNCAwLjE0OTk2IDAuMDk5NDMgMS4wMTQ4IDAuNDY4NTcgMS40MDU1IDAuNTI0NDFsOS4yNmUtNCAtMTcuMzIyYy0wLjYyNzA0LTAuMDQwMTctMS4yMTkxLTEuMDYyNC0xLjQ2NTgtMS41NTM5eiIgZmlsbD0iI2EwMWUzYSIvPjwvZz48Zmxvd1Jvb3QgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY2LjYwNCAtNDYuOTQ1KSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iNDBweCIgbGV0dGVyLXNwYWNpbmc9IjBweCIgd29yZC1zcGFjaW5nPSIwcHgiIHN0eWxlPSJsaW5lLWhlaWdodDoxLjI1IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zmxvd1JlZ2lvbj48cmVjdCB4PSI0MzEiIHk9IjUyLjAyIiB3aWR0aD0iMTAuNSIgaGVpZ2h0PSIxMzQuNSIvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEvPjwvZmxvd1Jvb3Q+PC9zdmc+Cg=="},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(4),a=function(e){function t(t,n,o){var i=e.call(this,n,o)||this;return i.show=i.internalShow,i.set_text=function(e){i.action_element.innerText=e},i.render=function(){return r.DOM.createElement(s,null,r.DOM.createElement(l,null,i.action_element))},i.action_element=r.DOM.createElement("h3",null,t),i}return o(t,e),t}(n(6).DialogBase);function l(e){return r.DOM.createElement("div",{className:"dialog-body"})}function s(e){return r.DOM.createElement("div",{className:"r20es-dialog"})}t.LoadingDialog=a,t.DialogHeader=function(e){return r.DOM.createElement("div",{className:"dialog-header"})},t.DialogBody=l,t.DialogFooter=function(e){return r.DOM.createElement("div",{className:"dialog-footer"},r.DOM.createElement("hr",null))},t.DialogFooterContent=function(e){return r.DOM.createElement("div",{className:"dialog-footer-content"})},t.Dialog=s,t.CheckboxWithText=function(e){var t=i.copy(e,{style:{verticalAlign:"middle",marginRight:"4px"},type:"checkbox"}),n=r.DOM.createElement("input",t),o=t&&t.component||"div";return r.DOM.createElement(o,null,n,r.DOM.createElement("span",{style:{verticalAlign:"middle"}},t.checkboxText))}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(1),r=n(4),i=function(){function e(e,t,n){var r=this;this.success=!1,this.getRoot=function(){return r._root},this.getId=function(){return r._id},this.isSuccessful=function(){return r.success},this.setData=function(e){return r.returnData=e},window.r20esDialogId="r20esDialogId"in window?window.r20esDialogId:0,this.centerWorkaround=null!==n&&void 0!==n&&n,this._id="r20es-dialog-"+window.r20esDialogId++,this._root=o.DOM.createElement("dialog",{className:e,style:t,id:this.getId()}),document.body.insertBefore(this.getRoot(),document.body.firstElementChild),window.dialogPolyfill&&window.dialogPolyfill.registerDialog(this.getRoot()),this.close=this.close.bind(this),this.dispose=this.dispose.bind(this)}return e.prototype.internalRender=function(){var e=this;this.getRoot().appendChild(this.render()),window.dialogPolyfill&&window.dialogPolyfill.reposition(this.getRoot()),this.centerWorkaround&&setTimeout(function(){e.recenter()},100)},e.prototype.recenter=function(){},e.prototype.rerender=function(){r.removeAllChildren(this.getRoot()),this.internalRender()},e.prototype.internalShow=function(){r.removeAllChildren(this.getRoot()),this.success=!1,this.internalRender(),this.getRoot().showModal()},e.prototype.getData=function(){var e=this.returnData;return this.returnData=null,e},e.prototype.close=function(e){void 0===e&&(e=!1),this.success="boolean"==typeof e&&e,this.getRoot().open&&this.getRoot().close()},e.prototype.dispose=function(){this.close(),r.findByIdAndRemove(this.getId())},e}();t.DialogBase=i},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(2),a=function(e){function t(t){var n=e.call(this)||this;return n.getValue=function(){return n.hook.config[n.configName]},n.getConfigView=function(){return n.configView},n.hook=t.hook,n.configName=t.configName,n.configView=n.hook.configView&&n.hook.configView[n.configName],n}return o(t,e),t.prototype.setValue=function(e){i.R20Module.getModule(this.hook.filename).setConfigValue(this.configName,e)},t}(r.DOM.ElementBase);t.ConfigEditBase=a},function(e,t,n){"use strict";t.__esModule=!0;var o=n(4),r=function(){function e(){}return e.getInternalData=function(){if(!("tokenContextMenu"in window.r20es)){window.r20es.tokenContextMenu={widgets:{},idTop:0}}return window.r20es.tokenContextMenu},e.addButton=function(t,n,o,r){void 0===r&&(r=void 0);var i=e.getInternalData(),a={id:"r20es-token-ctx-menu-button-"+i.idTop++,text:t,callback:n,options:r};i.widgets[o]=a},e.removeButton=function(t,n){var r=e.getInternalData().widgets;for(var i in r){var a=r[i];if(a.text===t&&a.callback===n)return o.findByIdAndRemove(a.id),delete r[i],!0}return!1},e}();t.TokenContextMenu=r},function(e,t,n){"use strict";t.__esModule=!0,t.TOKEN_CONTEXT_MENU_ORDER_ROLL_BULK_MACRO=0,t.TOKEN_CONTEXT_MENU_ORDER_HIT_DICE=1,t.TOKEN_CONTEXT_MENU_ORDER_CREATE_TOKEN_BY_URL=2,t.TOKEN_CONTEXT_MENU_ORDER_GET_TOKEN_IMAGE_URL=3,t.TOKEN_CONTEXT_MENU_ORDER_RESIZE_CUSTOM=4,t.TOKEN_CONTEXT_MENU_ORDER_RESIZE_FIT=5,t.TOKEN_CONTEXT_MENU_ORDER_NAME_COUNTER=6},function(e,t,n){"use strict";t.__esModule=!0;t.Config={appUrl:"https://app.roll20.net",websiteFeatureUrlTemplate:"https://justas-d.github.io/roll20-enhancement-suite/features#",website:"https://justas-d.github.io/roll20-enhancement-suite/",discordInvite:"https://discord.gg/pKxxvuM",contributeUrl:"https://justas-d.github.io/roll20-enhancement-suite/contribute.html"}},function(e,t,n){"use strict";t.__esModule=!0,t.promiseWait=function(e,t){return new Promise(function(n,o){setTimeout(function(){n(t)},e)})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=t.saveAs=window.saveAs||function(e){if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=function(){return e.URL||e.webkitURL||e},n=e.document.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in n,r=/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),i=e.webkitRequestFileSystem,a=e.requestFileSystem||i||e.mozRequestFileSystem,l=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s=0,c=function(e){setTimeout(function(){"string"==typeof e?t().revokeObjectURL(e):e.remove()},4e4)},d=function(e,t,n){for(var o=(t=[].concat(t)).length;o--;){var r=e["on"+t[o]];if("function"==typeof r)try{r.call(e,n||e)}catch(e){l(e)}}},u=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},p=function l(p,h,m){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),m||(p=u(p));var f,g,M,y=this,b=p.type,N=!1,T=function(){d(y,"writestart progress write writeend".split(" "))},v=function(){if(g&&r&&"undefined"!=typeof FileReader){var n=new FileReader;return n.onloadend=function(){var e=n.result;g.location.href="data:attachment/file"+e.slice(e.search(/[,;]/)),y.readyState=y.DONE,T()},n.readAsDataURL(p),void(y.readyState=y.INIT)}(!N&&f||(f=t().createObjectURL(p)),g)?g.location.href=f:void 0===e.open(f,"_blank")&&r&&(e.location.href=f);y.readyState=y.DONE,T(),c(f)},k=function(e){return function(){if(y.readyState!==y.DONE)return e.apply(this,arguments)}},_={create:!0,exclusive:!1};if(y.readyState=y.INIT,h||(h="download"),o)return f=t().createObjectURL(p),void setTimeout(function(){n.href=f,n.download=h,function(e){var t=new MouseEvent("click");e.dispatchEvent(t)}(n),T(),c(f),y.readyState=y.DONE});e.chrome&&b&&"application/octet-stream"!==b&&(M=p.slice||p.webkitSlice,p=M.call(p,0,p.size,"application/octet-stream"),N=!0),i&&"download"!==h&&(h+=".download"),("application/octet-stream"===b||i)&&(g=e),a?(s+=p.size,a(e.TEMPORARY,s,k(function(e){e.root.getDirectory("saved",_,k(function(e){var t=function(){e.getFile(h,_,k(function(e){e.createWriter(k(function(t){t.onwriteend=function(t){g.location.href=e.toURL(),y.readyState=y.DONE,d(y,"writeend",t),c(e)},t.onerror=function(){var e=t.error;e.code!==e.ABORT_ERR&&v()},"writestart progress write abort".split(" ").forEach(function(e){t["on"+e]=y["on"+e]}),t.write(p),y.abort=function(){t.abort(),y.readyState=y.DONE},y.readyState=y.WRITING}),v)}),v)};e.getFile(h,{create:!1},k(function(e){e.remove(),t()}),k(function(e){e.code===e.NOT_FOUND_ERR?t():v()}))}),v)}),v)):v()},h=p.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=u(e)),navigator.msSaveOrOpenBlob(e,t||"download")}:(h.abort=function(){this.readyState=this.DONE,d(this,"abort")},h.readyState=h.INIT=0,h.WRITING=1,h.DONE=2,h.error=h.onwritestart=h.onprogress=h.onwrite=h.onabort=h.onerror=h.onwriteend=null,function(e,t,n){return new p(e,t,n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||(void 0).content);t.default=o},function(e,t,n){"use strict";t.__esModule=!0;var o=n(1),r=function(){function e(){this.tabs=[],this.tabsById={},this.idTop=0,this.rescanFunc=void 0}return e.prototype.addTab=function(e){this.tabs.push(e),this.tabsById[e.id]=e},e.prototype.removeTab=function(e){delete this.tabsById[e.id];for(var t=this.tabs.length;t-- >0;){this.tabs[t].id===e.id&&this.tabs.splice(t,1)}},e}();t.InternalSheetTabData=r;var i=function(){function e(e,t){this.parent=e,this.characterId=t}return e.prototype.rerender=function(){var e=this;this.root=o.DOM.rerender(this.root,function(){return e.parent.renderFx(e)})},e}();t.SheetTabSheetInstanceData=i;var a=function(){function e(e,t,n,o){this.byIdSheetData={},this._elements=[],this.name=e,this.renderFx=t,this.id=n,this._contentRoot=null,this.onShow=o}return e.prototype.getInstanceData=function(e){return e in this.byIdSheetData||(this.byIdSheetData[e]=new i(this,e)),this.byIdSheetData[e]},e.prototype._addElem=function(e){this._elements.push(e)},e._getInternalData=function(){return"sheetTabData"in window.r20es||(window.r20es.sheetTabData=new r),window.r20es.sheetTabData},e.add=function(t,n,o,r){var i=e._getInternalData(),a=new e(t,n,"r20es-character-sheet-tab-"+i.idTop++,o);return a.predicate=r,i.addTab(a),"function"==typeof i.rescanFunc&&i.rescanFunc(a),a},e.prototype.dispose=function(){this._elements.forEach(function(e){return e.remove()}),this._elements=[],e._getInternalData().removeTab(this)},e}();t.SheetTab=a},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t,n){var o=n(e),r=n(t);return o<r?-1:o>r?1:0}},function(e,t,n){"use strict";t.__esModule=!0;var o=function(){function e(e,t,n){this._isSubscribed=!1,this._name=e,this._callback=t,this._targetGetter=n}return e.subscribe=function(t,n,o){var r=new e(t,n,o);return r.subscribe(),r},e.prototype.subscribe=function(){if(!this._isSubscribed){var e=this._targetGetter();"on"in e?e.on(this._name,this._callback):e.addEventListener(this._name,this._callback),this._isSubscribed=!0}},e.prototype.unsubscribe=function(){if(this._isSubscribed){var e=this._targetGetter();"off"in e?e.off(this._name,this._callback):e.removeEventListener(this._name,this._callback),this._isSubscribed=!1}},e}();t.EventSubscriber=o},function(e,t,n){"use strict";var o;t.__esModule=!0;var r=n(3);t.layerInfo=((o={})[r.R20.CanvasLayer.Map]={bigTxt:"Page Background",txt:"MP",bgColors:[255,255,0],toolName:"choosemap"},o[r.R20.CanvasLayer.PlayerTokens]={bigTxt:"Tokens (Player Visible)",txt:"TK",bgColors:[255,0,0],toolName:"chooseobjects"},o[r.R20.CanvasLayer.GMTokens]={bigTxt:"Game Master Tokens",txt:"GM",bgColors:[0,255,0],toolName:"choosegmlayer"},o[r.R20.CanvasLayer.Lighting]={bigTxt:"Lighting",txt:"LG",bgColors:[0,255,255],toolName:"choosewalls"},o[r.R20.CanvasLayer.B20Foreground]={bigTxt:"Page Foreground",txt:"FG",bgColors:[229,137,25],toolName:"chooseforeground"},o[r.R20.CanvasLayer.B20Weather]={bigTxt:"Weather",txt:"WH",bgColors:[65,24,229],toolName:"chooseweather"},o[r.R20.CanvasLayer.B20Background]={bigTxt:"B20 Background",txt:"BG",bgColors:[208,69,247],toolName:"choosebackground"},o),t.makeLayerButtonSelector=function(e){return"#editinglayer li."+e.toolName}},function(e,t,n){"use strict";t.__esModule=!0;var o=function(){return function(e){var t=this;this.isSome=function(){return!0},this.isNone=function(){return!1},this.unwrap=function(){return t.data},this.data=e}}();t.Some=o;var r=function(){return function(){this.isSome=function(){return!1},this.isNone=function(){return!0},this.unwrap=function(){throw new Error("Tried to unwrap a None value")}}}();t.None=r;var i=function(){return function e(t){var n=this;this.ok=function(){return new r},this.err=function(){return new o(n.error)},this.isOk=function(){return!1},this.isErr=function(){return!0},this.map=function(){return new e(n.error)},this.error=t}}();t.Err=i;var a=function(){return function(e){var t=this;this.ok=function(){return new o(t.data)},this.err=function(){return new r},this.isOk=function(){return!0},this.isErr=function(){return!1},this.map=function(){return new i(t.data)},this.data=e}}();t.Ok=a},function(e,t,n){"use strict";t.__esModule=!0,t.default={TableIdAttribute:"data-r20es-table-id"}},function(e,t,n){"use strict";t.__esModule=!0,t.DIALOG_OPEN_DELAY_KEY="DIALOG_OPEN_DELAY_KEY"},function(e,t,n){"use strict";t.__esModule=!0,t.ADJUSTABLE_OPACITY_PASSIVE_GM_LAYER_CONFIG_KEY="passiveGMLayerOpacity"},function(e,t,n){"use strict";t.__esModule=!0,t.TOKEN_FROM_IMG_BUTTON_NAME="Create Token from URL",t.TOKEN_GET_URL="Copy Token Image URL",t.TOKEN_FROM_ANIMATED_TOKEN_KEY="r20es-is-animated-token"},function(e,t,n){"use strict";t.__esModule=!0,t.default={TABLE_ENTRY_ID_ATTRIBUTE:"r20es-set-entry-url-table-entry-id",TABLE_ID_ATTRIBUTE:"r20es-set-entry-url-table-id"}},function(e,t,n){"use strict";t.__esModule=!0,t.RADIUS_MODE_BURST=0,t.RADIUS_MODE_BLAST=1,t.BOX_MODE_BURST=0,t.BOX_MODE_BLAST=1,t.CONE_MODE_FLAT=0,t.CONE_MODE_ROUNDED=1,t.LINE_MODE_TOTAL_WIDTH=0,t.LINE_MODE_WIDTH_TO_EDGE=1,t.RULER_NORMAL=0,t.RULER_RADIUS=1,t.RULER_CONE=2,t.RULER_BOX=3,t.RULER_LINE=4},function(e,t,n){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var r=function(){function e(){}return e.status_span_base={visibility:"visible",background:"#e44949",color:"white",padding:"4px","border-radius: ":"5px","font-weight":"bold","border-radius":"4px",height:"1.4em","text-align":"center"},e.error_span=o({},e.status_span_base,{background:"#e44949"}),e.success_span=o({},e.status_span_base,{background:"rgb(91, 177, 10)"}),e.progress_span=o({},e.status_span_base,{background:"rgb(212, 186, 55)"}),e}();t.CommonStyle=r},function(e,t,n){"use strict";t.__esModule=!0,t.scaleToFit=function(e,t,n,o){var r=e/t,i=r*o;return i>n?{x:n,y:n/r}:{x:i,y:o}}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(27);t.isChromium=function(){var e=o.default();return"chrome"===e.name||"opera"===e.name},t.doesBrowserNotSupportResponseFiltering=function(){var e=o.default();return console.log(e),!!t.isChromium()||"firefox"===e.name&&e.versionNumber<57}},function(e,t,n){"use strict";n.r(t),function(e){var n=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},o=[["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)$/],["edge",/Edge\/([0-9\._]+)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+)\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["safari",/Version\/([0-9\._]+).*Safari/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/]],r=["Windows Phone","Android","CentOS",{name:"Chrome OS",pattern:"CrOS"},"Debian","Fedora","FreeBSD","Gentoo","Haiku","Kubuntu","Linux Mint","OpenBSD","Red Hat","SuSE","Ubuntu","Xubuntu","Cygwin","Symbian OS","hpwOS","webOS ","webOS","Tablet OS","Tizen","Linux","Mac OS X","Macintosh","Mac","Windows 98;","Windows "],i={"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"Server 2008 R2 / 7","6.0":"Server 2008 / Vista",5.2:"Server 2003 / XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"},a=new RegExp(["(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|","compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|","midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)","\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|","wap|windows ce|xda|xiino"].join(""),"i"),l=new RegExp(["1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|","ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|","avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|","cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|","ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|","g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|","hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|","i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|","kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])","|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|","mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|","n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|","op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|","po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|","raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|","se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|k\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|","so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|","tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|","veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|","w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-"].join(""),"i"),s=function(){function e(e,t,n){this.navigator=t,this.process=n,this.userAgent=e||(this.navigator?t.userAgent||t.vendor:"")}return e.prototype.detect=function(){if(this.process&&!this.userAgent){var e=this.process.version.slice(1).split(".").slice(0,3),t=Array.prototype.slice.call(e,1).join("")||"0";return{name:"node",version:e.join("."),versionNumber:parseFloat(e[0]+"."+t),mobile:!1,os:this.process.platform}}return this.userAgent||this.handleMissingError(),n({},this.checkBrowser(),this.checkMobile(),this.checkOs())},e.prototype.checkBrowser=function(){var e=this;return o.filter(function(t){return t[1].test(e.userAgent)}).map(function(t){var n=t[1].exec(e.userAgent),o=n&&n[1].split(/[._]/).slice(0,3),r=Array.prototype.slice.call(o,1).join("")||"0";return o&&o.length<3&&Array.prototype.push.apply(o,1===o.length?[0,0]:[0]),{name:String(t[0]),version:o.join("."),versionNumber:Number(o[0]+"."+r)}}).shift()},e.prototype.checkMobile=function(){var e=this.userAgent.substr(0,4);return{mobile:a.test(this.userAgent)||l.test(e)}},e.prototype.checkOs=function(){var e=this;return r.map(function(t){var n=t.name||t,o=e.getOsPattern(t);return{name:n,pattern:o,value:RegExp("\\b"+o.replace(/([ -])(?!$)/g,"$1?")+"(?:x?[\\d._]+|[ \\w.]*)","i").exec(e.userAgent)}}).filter(function(e){return e.value}).map(function(e){var t,n=e.value[0]||"";return e.pattern&&e.name&&/^Win/i.test(n)&&!/^Windows Phone /i.test(n)&&(t=i[n.replace(/[^\d.]/g,"")])&&(n="Windows "+t),e.pattern&&e.name&&(n=n.replace(RegExp(e.pattern,"i"),e.name)),n=n.replace(/ ce$/i," CE").replace(/\bhpw/i,"web").replace(/\bMacintosh\b/,"Mac OS").replace(/_PowerPC\b/i," OS").replace(/\b(OS X) [^ \d]+/i,"$1").replace(/\bMac (OS X)\b/,"$1").replace(/\/(\d)/," $1").replace(/_/g,".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i,"").replace(/\bx86\.64\b/gi,"x86_64").replace(/\b(Windows Phone) OS\b/,"$1").replace(/\b(Chrome OS \w+) [\d.]+\b/,"$1").split(" on ")[0].trim(),{os:n=/^(?:webOS|i(?:OS|P))/.test(n)?n:n.charAt(0).toUpperCase()+n.slice(1)}}).shift()},e.prototype.getOsPattern=function(e){var t=e;return("string"==typeof e?e:void 0)||t.pattern||t.name},e.prototype.handleMissingError=function(){throw new Error("Please give user-agent.\n> browser(navigator.userAgent or res.headers['user-agent']).")},e}();function c(e,t){return e(t={exports:{}},t.exports),t.exports}var d=c(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)}),u=c(function(e){var t=e.exports={version:"2.5.7"};"number"==typeof __e&&(__e=t)}),p=(u.version,function(e){return"object"==typeof e?null!==e:"function"==typeof e}),h=function(e){if(!p(e))throw TypeError(e+" is not an object!");return e},m=function(e){try{return!!e()}catch(e){return!0}},f=!m(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),g=d.document,M=p(g)&&p(g.createElement),y=!f&&!m(function(){return 7!=Object.defineProperty(function(e){return M?g.createElement(e):{}}("div"),"a",{get:function(){return 7}}).a}),b=Object.defineProperty,N={f:f?Object.defineProperty:function(e,t,n){if(h(e),t=function(e,t){if(!p(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!p(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!p(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!p(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}(t,!0),h(n),y)try{return b(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},T=f?function(e,t,n){return N.f(e,t,function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}(1,n))}:function(e,t,n){return e[t]=n,e},v={}.hasOwnProperty,k=function(e,t){return v.call(e,t)},_=0,w=Math.random(),V=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++_+w).toString(36))},R=c(function(e){var t=V("src"),n=Function.toString,o=(""+n).split("toString");u.inspectSource=function(e){return n.call(e)},(e.exports=function(e,n,r,i){var a="function"==typeof r;a&&(k(r,"name")||T(r,"name",n)),e[n]!==r&&(a&&(k(r,t)||T(r,t,e[n]?""+e[n]:o.join(String(n)))),e===d?e[n]=r:i?e[n]?e[n]=r:T(e,n,r):(delete e[n],T(e,n,r)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[t]||n.call(this)})}),E=function(e,t,n){if(function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!")}(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}},U=function(e,t,n){var o,r,i,a,l=e&U.F,s=e&U.G,c=e&U.S,p=e&U.P,h=e&U.B,m=s?d:c?d[t]||(d[t]={}):(d[t]||{}).prototype,f=s?u:u[t]||(u[t]={}),g=f.prototype||(f.prototype={});for(o in s&&(n=t),n)i=((r=!l&&m&&void 0!==m[o])?m:n)[o],a=h&&r?E(i,d):p&&"function"==typeof i?E(Function.call,i):i,m&&R(m,o,i,e&U.U),f[o]!=i&&T(f,o,a),p&&g[o]!=i&&(g[o]=i)};d.core=u,U.F=1,U.G=2,U.S=4,U.P=8,U.B=16,U.W=32,U.U=64,U.R=128;var x=U,D={}.toString,S=function(e){return D.call(e).slice(8,-1)},O=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==S(e)?e.split(""):Object(e)},F=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e},Z=Math.ceil,j=Math.floor,W=Math.min,z=function(e){return e>0?W(function(e){return isNaN(e=+e)?0:(e>0?j:Z)(e)}(e),9007199254740991):0},I=Array.isArray||function(e){return"Array"==S(e)},L=c(function(e){var t=d["__core-js_shared__"]||(d["__core-js_shared__"]={});(e.exports=function(e,n){return t[e]||(t[e]=void 0!==n?n:{})})("versions",[]).push({version:u.version,mode:"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})}),C=c(function(e){var t=L("wks"),n=d.Symbol,o="function"==typeof n;(e.exports=function(e){return t[e]||(t[e]=o&&n[e]||(o?n:V)("Symbol."+e))}).store=t})("species"),A=function(e,t){return new(function(e){var t;return I(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!I(t.prototype)||(t=void 0),p(t)&&null===(t=t[C])&&(t=void 0)),void 0===t?Array:t}(e))(t)},Y=function(e,t){var n=1==e,o=2==e,r=3==e,i=4==e,a=6==e,l=5==e||a,s=t||A;return function(t,c,d){for(var u,p,h=function(e){return Object(F(e))}(t),m=O(h),f=E(c,d,3),g=z(m.length),M=0,y=n?s(t,g):o?s(t,0):void 0;g>M;M++)if((l||M in m)&&(p=f(u=m[M],M,h),e))if(n)y[M]=p;else if(p)switch(e){case 3:return!0;case 5:return u;case 6:return M;case 2:y.push(u)}else if(i)return!1;return a?-1:r||i?i:y}},Q=function(e,t){return!!e&&m(function(){t?e.call(null,function(){},1):e.call(null)})},B=Y(2);x(x.P+x.F*!Q([].filter,!0),"Array",{filter:function(e){return B(this,e,arguments[1])}});u.Array.filter;var G=Y(1);x(x.P+x.F*!Q([].map,!0),"Array",{map:function(e){return G(this,e,arguments[1])}});u.Array.map;var J="\t\n\v\f\r \u2028\u2029\ufeff",H="["+J+"]",X=RegExp("^"+H+H+"*"),P=RegExp(H+H+"*$"),K=function(e,t,n){var o={},r=m(function(){return!!J[e]()||"
"!="
"[e]()}),i=o[e]=r?t(q):J[e];n&&(o[n]=i),x(x.P+x.F*r,"String",o)},q=K.trim=function(e,t){return e=String(F(e)),1&t&&(e=e.replace(X,"")),2&t&&(e=e.replace(P,"")),e};K("trim",function(e){return function(){return e(this,3)}});u.String.trim;var $="undefined"!=typeof window?window.navigator:void 0,ee=void 0!==e?e:void 0;t.default=function(e){return new s(e,$,ee).detect()}}.call(this,n(104))},function(e,t,n){"use strict";t.__esModule=!0;var o=function(e,t,n,o){-1===t?console.log("Tried to "+n+" but couldn't find object!",e,o):e.splice(t,1)};t.removeByReference=function(e,t){var n=e.findIndex(function(e){return e==t});o(e,n,"remove by reference",t)},t.removeOnceByPredicate=function(e,t){var n=e.findIndex(t);o(e,n,"remove once by predicate",t)}},function(e,t,n){var o;(function(){var n=this,r=n._,i={},a=Array.prototype,l=Object.prototype,s=Function.prototype,c=a.push,d=a.slice,u=a.concat,p=l.toString,h=l.hasOwnProperty,m=a.forEach,f=a.map,g=a.reduce,M=a.reduceRight,y=a.filter,b=a.every,N=a.some,T=a.indexOf,v=a.lastIndexOf,k=Array.isArray,_=Object.keys,w=s.bind,V=function(e){return e instanceof V?e:this instanceof V?void(this._wrapped=e):new V(e)};e.exports&&(t=e.exports=V),t._=V,V.VERSION="1.6.0";var R=V.each=V.forEach=function(e,t,n){if(null==e)return e;if(m&&e.forEach===m)e.forEach(t,n);else if(e.length===+e.length){for(var o=0,r=e.length;o<r;o++)if(t.call(n,e[o],o,e)===i)return}else{var a=V.keys(e);for(o=0,r=a.length;o<r;o++)if(t.call(n,e[a[o]],a[o],e)===i)return}return e};V.map=V.collect=function(e,t,n){var o=[];return null==e?o:f&&e.map===f?e.map(t,n):(R(e,function(e,r,i){o.push(t.call(n,e,r,i))}),o)};var E="Reduce of empty array with no initial value";V.reduce=V.foldl=V.inject=function(e,t,n,o){var r=arguments.length>2;if(null==e&&(e=[]),g&&e.reduce===g)return o&&(t=V.bind(t,o)),r?e.reduce(t,n):e.reduce(t);if(R(e,function(e,i,a){r?n=t.call(o,n,e,i,a):(n=e,r=!0)}),!r)throw new TypeError(E);return n},V.reduceRight=V.foldr=function(e,t,n,o){var r=arguments.length>2;if(null==e&&(e=[]),M&&e.reduceRight===M)return o&&(t=V.bind(t,o)),r?e.reduceRight(t,n):e.reduceRight(t);var i=e.length;if(i!==+i){var a=V.keys(e);i=a.length}if(R(e,function(l,s,c){s=a?a[--i]:--i,r?n=t.call(o,n,e[s],s,c):(n=e[s],r=!0)}),!r)throw new TypeError(E);return n},V.find=V.detect=function(e,t,n){var o;return U(e,function(e,r,i){if(t.call(n,e,r,i))return o=e,!0}),o},V.filter=V.select=function(e,t,n){var o=[];return null==e?o:y&&e.filter===y?e.filter(t,n):(R(e,function(e,r,i){t.call(n,e,r,i)&&o.push(e)}),o)},V.reject=function(e,t,n){return V.filter(e,function(e,o,r){return!t.call(n,e,o,r)},n)},V.every=V.all=function(e,t,n){t||(t=V.identity);var o=!0;return null==e?o:b&&e.every===b?e.every(t,n):(R(e,function(e,r,a){if(!(o=o&&t.call(n,e,r,a)))return i}),!!o)};var U=V.some=V.any=function(e,t,n){t||(t=V.identity);var o=!1;return null==e?o:N&&e.some===N?e.some(t,n):(R(e,function(e,r,a){if(o||(o=t.call(n,e,r,a)))return i}),!!o)};V.contains=V.include=function(e,t){return null!=e&&(T&&e.indexOf===T?-1!=e.indexOf(t):U(e,function(e){return e===t}))},V.invoke=function(e,t){var n=d.call(arguments,2),o=V.isFunction(t);return V.map(e,function(e){return(o?t:e[t]).apply(e,n)})},V.pluck=function(e,t){return V.map(e,V.property(t))},V.where=function(e,t){return V.filter(e,V.matches(t))},V.findWhere=function(e,t){return V.find(e,V.matches(t))},V.max=function(e,t,n){if(!t&&V.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);var o=-1/0,r=-1/0;return R(e,function(e,i,a){var l=t?t.call(n,e,i,a):e;l>r&&(o=e,r=l)}),o},V.min=function(e,t,n){if(!t&&V.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);var o=1/0,r=1/0;return R(e,function(e,i,a){var l=t?t.call(n,e,i,a):e;l<r&&(o=e,r=l)}),o},V.shuffle=function(e){var t,n=0,o=[];return R(e,function(e){t=V.random(n++),o[n-1]=o[t],o[t]=e}),o},V.sample=function(e,t,n){return null==t||n?(e.length!==+e.length&&(e=V.values(e)),e[V.random(e.length-1)]):V.shuffle(e).slice(0,Math.max(0,t))};var x=function(e){return null==e?V.identity:V.isFunction(e)?e:V.property(e)};V.sortBy=function(e,t,n){return t=x(t),V.pluck(V.map(e,function(e,o,r){return{value:e,index:o,criteria:t.call(n,e,o,r)}}).sort(function(e,t){var n=e.criteria,o=t.criteria;if(n!==o){if(n>o||void 0===n)return 1;if(n<o||void 0===o)return-1}return e.index-t.index}),"value")};var D=function(e){return function(t,n,o){var r={};return n=x(n),R(t,function(i,a){var l=n.call(o,i,a,t);e(r,l,i)}),r}};V.groupBy=D(function(e,t,n){V.has(e,t)?e[t].push(n):e[t]=[n]}),V.indexBy=D(function(e,t,n){e[t]=n}),V.countBy=D(function(e,t){V.has(e,t)?e[t]++:e[t]=1}),V.sortedIndex=function(e,t,n,o){for(var r=(n=x(n)).call(o,t),i=0,a=e.length;i<a;){var l=i+a>>>1;n.call(o,e[l])<r?i=l+1:a=l}return i},V.toArray=function(e){return e?V.isArray(e)?d.call(e):e.length===+e.length?V.map(e,V.identity):V.values(e):[]},V.size=function(e){return null==e?0:e.length===+e.length?e.length:V.keys(e).length},V.first=V.head=V.take=function(e,t,n){if(null!=e)return null==t||n?e[0]:t<0?[]:d.call(e,0,t)},V.initial=function(e,t,n){return d.call(e,0,e.length-(null==t||n?1:t))},V.last=function(e,t,n){if(null!=e)return null==t||n?e[e.length-1]:d.call(e,Math.max(e.length-t,0))},V.rest=V.tail=V.drop=function(e,t,n){return d.call(e,null==t||n?1:t)},V.compact=function(e){return V.filter(e,V.identity)};var S=function(e,t,n){return t&&V.every(e,V.isArray)?u.apply(n,e):(R(e,function(e){V.isArray(e)||V.isArguments(e)?t?c.apply(n,e):S(e,t,n):n.push(e)}),n)};V.flatten=function(e,t){return S(e,t,[])},V.without=function(e){return V.difference(e,d.call(arguments,1))},V.partition=function(e,t){var n=[],o=[];return R(e,function(e){(t(e)?n:o).push(e)}),[n,o]},V.uniq=V.unique=function(e,t,n,o){V.isFunction(t)&&(o=n,n=t,t=!1);var r=n?V.map(e,n,o):e,i=[],a=[];return R(r,function(n,o){(t?o&&a[a.length-1]===n:V.contains(a,n))||(a.push(n),i.push(e[o]))}),i},V.union=function(){return V.uniq(V.flatten(arguments,!0))},V.intersection=function(e){var t=d.call(arguments,1);return V.filter(V.uniq(e),function(e){return V.every(t,function(t){return V.contains(t,e)})})},V.difference=function(e){var t=u.apply(a,d.call(arguments,1));return V.filter(e,function(e){return!V.contains(t,e)})},V.zip=function(){for(var e=V.max(V.pluck(arguments,"length").concat(0)),t=new Array(e),n=0;n<e;n++)t[n]=V.pluck(arguments,""+n);return t},V.object=function(e,t){if(null==e)return{};for(var n={},o=0,r=e.length;o<r;o++)t?n[e[o]]=t[o]:n[e[o][0]]=e[o][1];return n},V.indexOf=function(e,t,n){if(null==e)return-1;var o=0,r=e.length;if(n){if("number"!=typeof n)return e[o=V.sortedIndex(e,t)]===t?o:-1;o=n<0?Math.max(0,r+n):n}if(T&&e.indexOf===T)return e.indexOf(t,n);for(;o<r;o++)if(e[o]===t)return o;return-1},V.lastIndexOf=function(e,t,n){if(null==e)return-1;var o=null!=n;if(v&&e.lastIndexOf===v)return o?e.lastIndexOf(t,n):e.lastIndexOf(t);for(var r=o?n:e.length;r--;)if(e[r]===t)return r;return-1},V.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;for(var o=Math.max(Math.ceil((t-e)/n),0),r=0,i=new Array(o);r<o;)i[r++]=e,e+=n;return i};var O=function(){};V.bind=function(e,t){var n,o;if(w&&e.bind===w)return w.apply(e,d.call(arguments,1));if(!V.isFunction(e))throw new TypeError;return n=d.call(arguments,2),o=function(){if(!(this instanceof o))return e.apply(t,n.concat(d.call(arguments)));O.prototype=e.prototype;var r=new O;O.prototype=null;var i=e.apply(r,n.concat(d.call(arguments)));return Object(i)===i?i:r}},V.partial=function(e){var t=d.call(arguments,1);return function(){for(var n=0,o=t.slice(),r=0,i=o.length;r<i;r++)o[r]===V&&(o[r]=arguments[n++]);for(;n<arguments.length;)o.push(arguments[n++]);return e.apply(this,o)}},V.bindAll=function(e){var t=d.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return R(t,function(t){e[t]=V.bind(e[t],e)}),e},V.memoize=function(e,t){var n={};return t||(t=V.identity),function(){var o=t.apply(this,arguments);return V.has(n,o)?n[o]:n[o]=e.apply(this,arguments)}},V.delay=function(e,t){var n=d.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},V.defer=function(e){return V.delay.apply(V,[e,1].concat(d.call(arguments,1)))},V.throttle=function(e,t,n){var o,r,i,a=null,l=0;n||(n={});var s=function(){l=!1===n.leading?0:V.now(),a=null,i=e.apply(o,r),o=r=null};return function(){var c=V.now();l||!1!==n.leading||(l=c);var d=t-(c-l);return o=this,r=arguments,d<=0?(clearTimeout(a),a=null,l=c,i=e.apply(o,r),o=r=null):a||!1===n.trailing||(a=setTimeout(s,d)),i}},V.debounce=function(e,t,n){var o,r,i,a,l,s=function(){var c=V.now()-a;c<t?o=setTimeout(s,t-c):(o=null,n||(l=e.apply(i,r),i=r=null))};return function(){i=this,r=arguments,a=V.now();var c=n&&!o;return o||(o=setTimeout(s,t)),c&&(l=e.apply(i,r),i=r=null),l}},V.once=function(e){var t,n=!1;return function(){return n?t:(n=!0,t=e.apply(this,arguments),e=null,t)}},V.wrap=function(e,t){return V.partial(t,e)},V.compose=function(){var e=arguments;return function(){for(var t=arguments,n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},V.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},V.keys=function(e){if(!V.isObject(e))return[];if(_)return _(e);var t=[];for(var n in e)V.has(e,n)&&t.push(n);return t},V.values=function(e){for(var t=V.keys(e),n=t.length,o=new Array(n),r=0;r<n;r++)o[r]=e[t[r]];return o},V.pairs=function(e){for(var t=V.keys(e),n=t.length,o=new Array(n),r=0;r<n;r++)o[r]=[t[r],e[t[r]]];return o},V.invert=function(e){for(var t={},n=V.keys(e),o=0,r=n.length;o<r;o++)t[e[n[o]]]=n[o];return t},V.functions=V.methods=function(e){var t=[];for(var n in e)V.isFunction(e[n])&&t.push(n);return t.sort()},V.extend=function(e){return R(d.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e},V.pick=function(e){var t={},n=u.apply(a,d.call(arguments,1));return R(n,function(n){n in e&&(t[n]=e[n])}),t},V.omit=function(e){var t={},n=u.apply(a,d.call(arguments,1));for(var o in e)V.contains(n,o)||(t[o]=e[o]);return t},V.defaults=function(e){return R(d.call(arguments,1),function(t){if(t)for(var n in t)void 0===e[n]&&(e[n]=t[n])}),e},V.clone=function(e){return V.isObject(e)?V.isArray(e)?e.slice():V.extend({},e):e},V.tap=function(e,t){return t(e),e};var F=function(e,t,n,o){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return e===t;e instanceof V&&(e=e._wrapped),t instanceof V&&(t=t._wrapped);var r=p.call(e);if(r!=p.call(t))return!1;switch(r){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if("object"!=typeof e||"object"!=typeof t)return!1;for(var i=n.length;i--;)if(n[i]==e)return o[i]==t;var a=e.constructor,l=t.constructor;if(a!==l&&!(V.isFunction(a)&&a instanceof a&&V.isFunction(l)&&l instanceof l)&&"constructor"in e&&"constructor"in t)return!1;n.push(e),o.push(t);var s=0,c=!0;if("[object Array]"==r){if(c=(s=e.length)==t.length)for(;s--&&(c=F(e[s],t[s],n,o)););}else{for(var d in e)if(V.has(e,d)&&(s++,!(c=V.has(t,d)&&F(e[d],t[d],n,o))))break;if(c){for(d in t)if(V.has(t,d)&&!s--)break;c=!s}}return n.pop(),o.pop(),c};V.isEqual=function(e,t){return F(e,t,[],[])},V.isEmpty=function(e){if(null==e)return!0;if(V.isArray(e)||V.isString(e))return 0===e.length;for(var t in e)if(V.has(e,t))return!1;return!0},V.isElement=function(e){return!(!e||1!==e.nodeType)},V.isArray=k||function(e){return"[object Array]"==p.call(e)},V.isObject=function(e){return e===Object(e)},R(["Arguments","Function","String","Number","Date","RegExp"],function(e){V["is"+e]=function(t){return p.call(t)=="[object "+e+"]"}}),V.isArguments(arguments)||(V.isArguments=function(e){return!(!e||!V.has(e,"callee"))}),V.isFunction=function(e){return"function"==typeof e},V.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},V.isNaN=function(e){return V.isNumber(e)&&e!=+e},V.isBoolean=function(e){return!0===e||!1===e||"[object Boolean]"==p.call(e)},V.isNull=function(e){return null===e},V.isUndefined=function(e){return void 0===e},V.has=function(e,t){return h.call(e,t)},V.noConflict=function(){return n._=r,this},V.identity=function(e){return e},V.constant=function(e){return function(){return e}},V.property=function(e){return function(t){return t[e]}},V.matches=function(e){return function(t){if(t===e)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0}},V.times=function(e,t,n){for(var o=Array(Math.max(0,e)),r=0;r<e;r++)o[r]=t.call(n,r);return o},V.random=function(e,t){return null==t&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))},V.now=Date.now||function(){return(new Date).getTime()};var Z={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};Z.unescape=V.invert(Z.escape);var j={escape:new RegExp("["+V.keys(Z.escape).join("")+"]","g"),unescape:new RegExp("("+V.keys(Z.unescape).join("|")+")","g")};V.each(["escape","unescape"],function(e){V[e]=function(t){return null==t?"":(""+t).replace(j[e],function(t){return Z[e][t]})}}),V.result=function(e,t){if(null!=e){var n=e[t];return V.isFunction(n)?n.call(e):n}},V.mixin=function(e){R(V.functions(e),function(t){var n=V[t]=e[t];V.prototype[t]=function(){var e=[this._wrapped];return c.apply(e,arguments),C.call(this,n.apply(V,e))}})};var W=0;V.uniqueId=function(e){var t=++W+"";return e?e+t:t},V.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var z=/(.)^/,I={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"},L=/\\|'|\r|\n|\t|\u2028|\u2029/g;V.template=function(e,t,n){var o;n=V.defaults({},n,V.templateSettings);var r=new RegExp([(n.escape||z).source,(n.interpolate||z).source,(n.evaluate||z).source].join("|")+"|$","g"),i=0,a="__p+='";e.replace(r,function(t,n,o,r,l){return a+=e.slice(i,l).replace(L,function(e){return"\\"+I[e]}),n&&(a+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'"),o&&(a+="'+\n((__t=("+o+"))==null?'':__t)+\n'"),r&&(a+="';\n"+r+"\n__p+='"),i=l+t.length,t}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{o=new Function(n.variable||"obj","_",a)}catch(e){throw e.source=a,e}if(t)return o(t,V);var l=function(e){return o.call(this,e,V)};return l.source="function("+(n.variable||"obj")+"){\n"+a+"}",l},V.chain=function(e){return V(e).chain()};var C=function(e){return this._chain?V(e).chain():e};V.mixin(V),R(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=a[e];V.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!=e&&"splice"!=e||0!==n.length||delete n[0],C.call(this,n)}}),R(["concat","join","slice"],function(e){var t=a[e];V.prototype[e]=function(){return C.call(this,t.apply(this._wrapped,arguments))}}),V.extend(V.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),void 0===(o=function(){return V}.apply(t,[]))||(e.exports=o)}).call(this)},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},r=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}},i=this;t.__esModule=!0;var a=n(5),l=n(11);t.import_multiple_files=function(e,t){var n=function(){return o(i,void 0,void 0,function(){var i,s,c,d,u,p,h,m,f,g,M,y,b,N,T,v=this;return r(this,function(k){switch(k.label){case 0:for(e.removeEventListener("change",n),e.files[0],i=0,s=[],c=[],d=function(){u.set_text("Importing "+i+"/"+c.length+" (Errors: "+s.length+")")},u=new a.LoadingDialog("Importing"),d(),u.show(),p=function(e,t){s.push("Error processing "+t+":\n\n"+e+".\n\nThat item has not been imported.")},h=function(e){return o(v,void 0,void 0,function(){var n;return r(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,t(e)];case 1:return o.sent(),i+=1,d(),[3,3];case 2:return n=o.sent(),p(n,e.name),[3,3];case 3:return[2]}})})},m=0,f=e.files;m<f.length;m++)g=f[m],M=h(g),c.push(M);return[4,Promise.all(c)];case 1:return k.sent(),y="",s.length>0&&(y="(with "+s.length+" errors)"),u.set_text("Done "+y+"!\nYour browser may freeze while Roll20 catches up with the influx of new items."),[4,l.promiseWait(100)];case 2:for(k.sent(),b=0,N=s;b<N.length;b++)T=N[b],alert(T);return u.dispose(),[2]}})})};e.click(),e.addEventListener("change",n)}},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(2),a=n(12),l=n(130),s=n(4),c=function(e){function t(t,n,o,i,l,c){var d=e.call(this,t)||this;return d.continueExporting=function(e){var t=d.serializeExportData(e),n=new Blob([t.json],{type:"data:application/json;charset=utf-8"});a.saveAs(n,t.filename)},d.onImportClick=function(e){e.stopPropagation();var t=r.DOM.createElement("input",{type:"file",accept:".json"}),n=function(){t.removeEventListener("change",n);var e=t.files[0];s.readFile(e).then(function(e){var t=d.tryDeserialize(e);if(t.isErr())throw new Error(t.err().unwrap());d.buffer=t.ok().unwrap(),d.showPickDialog(d.continueImporting,function(){return d.extra_drawing_above_table_import()})}).catch(alert)};t.click(),t.addEventListener("change",n)},d.onExportClick=function(e){e.stopPropagation();var t=d.getExportData();t.length<=0?alert("No data to be exported."):(d.buffer=t,d.showPickDialog(d.continueExporting,void 0))},d.object_name=l,d.widgetId=n,d.dialogClass=c,d.widgetTitle=o,d.pickDialogTitle=i,d}return o(t,e),t.prototype.showPickDialog=function(e,t){this.pickMacrosDialog.show(this.pickDialogTitle,this.object_name,this.buffer,this.nameGetter,this.descGetter,e,t)},t.prototype.setup=function(){this.pickMacrosDialog=new l.default(this.dialogClass);var e=r.DOM.createElement("div",{id:this.widgetId},r.DOM.createElement("div",null,r.DOM.createElement(r.SidebarCategoryTitle,null,this.widgetTitle),r.DOM.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},r.DOM.createElement("button",{className:"import btn",style:{marginRight:"8px",width:"100%"},onClick:this.onImportClick},"Import"),r.DOM.createElement("button",{className:"btn",style:{width:"100%"},onClick:this.onExportClick},"Export"))),r.DOM.createElement(r.SidebarSeparator,{big:"1px"}));this.injectWidget(e)},t.prototype.dispose=function(){this.pickMacrosDialog&&this.pickMacrosDialog.dispose(),s.findByIdAndRemove(this.widgetId),e.prototype.dispose.call(this)},t}(i.R20Module.OnAppLoadBase);t.IOModuleCommon=c},function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(17);!function(e){e.parseRaw=function(e){var t;try{t=JSON.parse(e)}catch(e){return new r.Err(e)}return new r.Ok(t)},e.lookupStrategy=function(e,t){if(!("schema_version"in e))return new r.Err("schema_version property not found in JSON data.");var n=e.schema_version;return n in t?new r.Ok(t[n]):new r.Err("schema_version "+n+" doesn't have a parse strategy.")}}(o||(o={})),t.default=o},function(e,t,n){"use strict";t.__esModule=!0,t.LIBRE_AUDIO_TRACK_KEY="libreaudio"},function(e,t,n){"use strict";t.__esModule=!0,function(e){e.ADD="ADD",e.UPDATE_FIRST_MATCH="UPDATE_FIRST_MATCH"}(t.ImportStrategy||(t.ImportStrategy={}))},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation(),n.setValue(parseFloat(e.target.value))},n.internalRender=function(){var e=i.DOM.createElement("input",{style:{width:"90%"},onChange:n.onChange,className:"compact",type:"number",value:n.getValue()}),t=n.getConfigView();if(t){var o=t.numberMin,r=t.numberMax;void 0!==o&&(e.min=o),void 0!==r&&(e.max=r)}return e},n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";t.__esModule=!0;var o=n(1);t.default=function(e){var t=e.url,n=e.description;return o.DOM.createElement("div",null,t.endsWith(".webm")?o.DOM.createElement("video",{autoplay:!0,loop:!0,style:{maxWidth:"100%",maxHeight:"100%",objectFit:"cover",display:"block",margin:"auto"},src:t}):o.DOM.createElement("img",{style:{display:"block",margin:"auto"},src:t,alt:t}),o.DOM.createElement("p",{style:{textAlign:"center"}},n))}},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(4),a=n(10),l=n(36),s=n(163),c=function(e){function t(t){var n=t.listAllVersions,o=e.call(this)||this;o.preparedData=[],o.isLoading=!0,o.onClickLine=function(e){e.stopPropagation();var t=e.target.getAttribute("data-url");t&&window.open(t,"_blank")};var r=JSON.parse('{\n "current": "1.28.19",\n "versions": {\n "1.4.0": {\n "info": {\n "title": "Night Mode & Fixes",\n "media": "night_mode.png"\n },\n "changes": [\n {\n "id": "nightMode",\n "content": "Added Night Mode. Enable it in the settings menu."\n },\n {\n "id": "",\n "content": "AlternatePageToolbarMenu: clicking on page text switches you to that page. Use right-click to rename the page."\n },\n {\n "id": "",\n "content": "Fixed laggy compendiums: be more strict about which URLs are the editor."\n },\n {\n "id": "",\n "content": "Fixed Hide Players module being disabled after every load."\n },\n {\n "id": "",\n "content": "Fixed possible bugs caused by changing a setting of a disabled module."\n },\n {\n "id": "",\n "content": "Fixed TokenResize settings media not being shown (thanks @ Nikolay for the report!)."\n },\n {\n "id": "",\n "content": "Possibly fixed a possible TokenEditor crash."\n },\n {\n "id": "",\n "content": "Update contributors"\n }\n ]\n },\n "1.3.4": {\n "info": {\n "title": "I Have 4 Browsers Open: The Update",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "R20ES now runs on Chromium fork browsers and FF 56. They are both on minimal support, meaning stuff will be broken and bug fixes will have lower priority for these platforms."\n },\n {\n "id": "",\n "content": "Updated contributors"\n }\n ]\n },\n "1.3.3": {\n "info": {\n "title": "Minor Tweaks",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "DrawCurrentLayer: Fix improper drawing when switching to the light layer (thanks @Colorblind for the report)."\n },\n {\n "id": "",\n "content": "Changelog: Added history up to 1.3.0"\n },\n {\n "id": "",\n "content": "About: Dropped some names in there."\n }\n ]\n },\n "1.3.2": {\n "info": {\n "title": "Bug squashin\'",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "TokenEditor: add a special hint for when the user is not a GM."\n },\n {\n "id": "",\n "content": "TokenEditor: update bar current/max values when linking bar to an attribute."\n },\n {\n "id": "",\n "content": "TokenEditor: replace attribute dropdown with search box that autocompletes."\n },\n {\n "id": "",\n "content": "TokenEditor: sort attributes lexicographically (thanks @DoomRice for the report)."\n },\n {\n "id": "",\n "content": "TokenLayerDrawing: fix improper overlay positioning on mirrored tokens (thanks @DoomRice for the report)."\n },\n {\n "id": "",\n "content": "New welcome message."\n },\n {\n "id": "",\n "content": "Dialog: fix invalid success value when ESCaping out of a dialog"\n },\n {\n "id": "",\n "content": "Dialog: improved visuals, sizes."\n },\n {\n "id": "",\n "content": "TableIO: add a table repo URL to the paste dialog."\n }\n ]\n },\n "1.3.1": {\n "info": {\n "title": "Token editor bug fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed a typo in the token editor message for not having permissions to view the default token."\n },\n {\n "id": "",\n "content": "Fixed a case where the token editor would not update the default token fully."\n },\n {\n "id": "",\n "content": "Fixed the token editor assuming the player cannot view the default token when the character simply doesn\'t have a default token."\n }\n ]\n },\n "1.3.0": {\n "info": {\n "title": "Token Editor Update",\n "media": "token_editor.png"\n },\n "changes": [\n {\n "id": "characterTokenModifier",\n "content": "Added Token Editor: a new character sheet tab for fast token editing."\n },\n {\n "id": "",\n "content": "Added the Hide Player List module: it hides the player list."\n },\n {\n "id": "",\n "content": "Added an option to use units instead of squares in TokenResize."\n },\n {\n "id": "",\n "content": "Added a checkbox to the TokenResize dialog for moving the current selection."\n },\n {\n "id": "",\n "content": "Fixed TokenResize allowing the resizing of tokens to a size of 0."\n },\n {\n "id": "",\n "content": "Fixed potential memory leak when disabling modules."\n },\n {\n "id": "",\n "content": "Fixed player avatars in the alternative page toolbar menu."\n }\n ]\n },\n "1.4.1": {\n "info": {\n "title": "Night Mode Tweaks",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "NightMode: added an option for loading the OGL 5E night mode. Should improve compatibility with other sheets."\n },\n {\n "id": "",\n "content": "NightMode: added an option for loading the chat message night mode style. Should improve compatibility with character sheets."\n },\n {\n "id": "",\n "content": "Lowered extension size (5MiB -> 350KiB!): settings media is no longer packaged with the extension and is now served from the website."\n }\n ]\n },\n "1.5.0": {\n "info": {\n "title": "Jukebox & Tools & Arrow keys",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added a tools menu. Can be found in the settings tab."\n },\n {\n "id": "",\n "content": "Tools: added bulk roll type setter for the OGL 5e sheet."\n },\n {\n "id": "",\n "content": "Added ArrowKeysMoveCanvas: allows moving the canvas camera with arrow keys when there is no default token selected. Try this out with the ruler tool!"\n },\n {\n "id": "",\n "content": "Added Jukebox playlist importing/exporting."\n },\n {\n "id": "",\n "content": "Updated contributors."\n },\n {\n "id": "",\n "content": "Fixed NightMode not styling dialog footers"\n },\n {\n "id": "",\n "content": "Fixed improver error messages when processing an invalid Character."\n }\n ]\n },\n "1.5.1": {\n "info": {\n "title": "JukeboxIO Optimization",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "JukeboxIO: optimized importing. It\'s pretty fr*ck1n f4st. (thanks @ Daj for the report!)"\n }\n ]\n },\n "1.5.2": {\n "info": {\n "title": "console.log: the update",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added a bunch of debug logging to very sensitive and critical sections of Chrome code."\n },\n {\n "id": "",\n "content": "Possibly™ Fixed™ a Bug™ on Chrome (thanks @ Angor de Redjak for the report & help!)"\n }\n ]\n },\n "1.6.0": {\n "info": {\n "title": "Scale Token Names & Auto Initiative Window",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added Scale Token Names by Size module"\n },\n {\n "id": "",\n "content": "Added Auto Open Initiative Tracker module"\n },\n {\n "id": "",\n "content": "NightMode(5e OGL): fix npc reaction header text color"\n },\n {\n "id": "",\n "content": "NightMode(5e OGL): fix unreadable text on NPC edit sheets, color adv btn"\n },\n {\n "id": "",\n "content": "NightMode: tweak brand colors"\n },\n {\n "id": "",\n "content": "NightMode: add baseStyle config option"\n },\n {\n "id": "",\n "content": "AlternativePageToolbarMenu: fix rename on empty spans, indent properly"\n }\n ]\n },\n "1.7.0": {\n "info": {\n "title": "Animated Backgrounds",\n "media": "animated_bg.webm"\n },\n "changes": [\n {\n "id": "",\n "content": "Added the Animated Backgrounds module."\n },\n {\n "id": "",\n "content": "Added the Remember Text Tool Settings module."\n },\n {\n "id": "",\n "content": "Update contributors"\n },\n {\n "id": "",\n "content": "NightMode: remove color reset on sheet containers"\n },\n {\n "id": "",\n "content": "CharacterTokenModifier: improved styling, added \'set\' button for names"\n },\n {\n "id": "",\n "content": "Fixed DrawCurrentLayer being active when not a GM"\n },\n {\n "id": "",\n "content": "Fixed size inconsistencies in TokenResize"\n }\n ]\n },\n "1.7.1": {\n "info": {\n "title": "Bugfix",\n "media": "animated_bg.webm"\n },\n "changes": [\n {\n "id": "",\n "content": "Text tool settings no longer reflect selected text object properties when the remember text settings module is on. This can be disabled in the settings. (thanks @ Daj for the report!)"\n },\n {\n "id": "",\n "content": "Fixed changelog invalid media URLs in changelogs"\n },\n {\n "id": "",\n "content": "Fixed scrolling in the changelog view."\n }\n ]\n },\n "1.7.2": {\n "info": {\n "title": "Wolf deterrent",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Renamed to VTT Enhancement Suite to avoid LAWSUITS"\n },\n {\n "id": "",\n "content": "Fixed token editor not linking bars & not loading linked bar names"\n }\n ]\n },\n "1.7.3": {\n "info": {\n "title": "Token editor fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed the token editor repositioning tokens & setting random values (thanks RoscoMcqueen and Melty for the report!)"\n }\n ]\n },\n "1.7.4": {\n "info": {\n "title": "More token editor fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed token editor not properly setting name and represents id"\n },\n {\n "id": "",\n "content": "Token editor no longer sets current bar values for default tokens."\n }\n ]\n },\n "1.7.5": {\n "info": {\n "title": "Critical Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed a critical bug that prevented the extension & similar tools from working."\n }\n ]\n },\n "1.7.6": {\n "info": {\n "title": "Pagliacci",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added experimental Opera support"\n }\n ]\n },\n "1.7.7": {\n "info": {\n "title": "Night Mode Deprecation",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "NightMode is being phased out in favor of Red Reign\'s Dark Theme.",\n "urls": {\n "Grab it here": "https://github.com/RedReign/Roll20-Dark-Theme"\n }\n },\n {\n "id": "",\n "content": "Possibly fixed an issue when dragging in an image in the the token editor."\n },\n {\n "id": "",\n "content": "Updated contributors"\n }\n ]\n },\n "1.7.8": {\n "info": {\n "title": "Animated Background Audio",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Backgrounds: Add audio support + settings for audio. (thanks Ryan for pointing it out!)"\n }\n ]\n },\n "1.7.9": {\n "info": {\n "title": "Misc",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Backgrounds: position the button to be on the right of the canvas."\n }\n ]\n },\n "1.8.0": {\n "info": {\n "title": "Adjustable GM Opacity",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added adjustable GM layer opacity module."\n },\n {\n "id": "",\n "content": "Updated contributors"\n }\n ]\n },\n "1.9.0": {\n "info": {\n "title": "Token From Image & friends",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added Token From Image: create tokens from images by right-clicking on the canvas."\n },\n {\n "id": "",\n "content": "Adjust some dialog menu sizes"\n },\n {\n "id": "",\n "content": "Added \'Sort Lexicographically\' to Macro Generator"\n },\n {\n "id": "",\n "content": "Added flip horizontal/vertical, rotation edits to the token editor."\n },\n {\n "id": "",\n "content": "Improved bar editing in the token editor."\n },\n {\n "id": "",\n "content": "Updated contributors"\n }\n ]\n },\n "1.9.1": {\n "info": {\n "title": "Playlist fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed playlist importing not preserving the file structure."\n }\n ]\n },\n "1.9.2": {\n "info": {\n "title": "Minor tweak.",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added secret essay for mozilla addon reviewers."\n },\n {\n "id": "",\n "content": "AdjustableOpacity: disable by default"\n }\n ]\n },\n "1.9.3": {\n "info": {\n "title": "Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Auto Open Initiative Tracker: Added delay between roll & dialog open (should fix issues with some turns being missing, thanks Tielc)"\n },\n {\n "id": "",\n "content": "TokenContextMenuApi: limit the size of the injected element (thanks Giddy)"\n },\n {\n "id": "",\n "content": "Token Editor: Fixed an instance where the bar links would not be unset (thanks Grigdusher)"\n }\n ]\n },\n "1.9.4": {\n "info": {\n "title": "Super minor UI Tweak",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "JukeboxIO: Adjust wording on the UI widget (thanks, Ryan!)"\n }\n ]\n },\n "1.9.5": {\n "info": {\n "title": "Timing change",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Increased time before we panic dump scripts on chromium"\n },\n {\n "id": "",\n "content": "Added debug log dumping"\n }\n ]\n },\n "1.10.0": {\n "info": {\n "title": "Macro Generator Folders",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added foldering to the macro generator. You can now generate a macro that will spawn a list of action buttons in the chat!"\n },\n {\n "id": "",\n "content": "Character sheets: only show certain tabs if the user can edit the character."\n }\n ]\n },\n "1.10.1": {\n "info": {\n "title": "Macro Generator Folder tweak",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Macro Generator: whisper folders to character"\n },\n {\n "id": "",\n "content": "Macro Generator: show remaining/max spell slots in spell folders"\n }\n ]\n },\n "1.11.0": {\n "info": {\n "title": "Disable Player Drawing",\n "media": "disable_drawing.png"\n },\n "changes": [\n {\n "id": "",\n "content": "Added the Disable Player Drawing module which lets you chose which players can draw/write text."\n },\n {\n "id": "",\n "content": "NightMode: remove all styling."\n },\n {\n "id": "",\n "content": "Settings: make Apply & Close prettier."\n },\n {\n "id": "",\n "content": "Updated contributors."\n }\n ]\n },\n "1.12.0": {\n "info": {\n "title": "Hit Dice Macros & Table Entry Avatars by URL",\n "media": "table_entry_by_url.png"\n },\n "changes": [\n {\n "id": "",\n "content": "Added the Set Table Entry Avatar By URL module."\n },\n {\n "id": "",\n "content": "HitDice: Added support for optional custom macros."\n },\n {\n "id": "",\n "content": "NightMode: Added a link to RedReign\'s theme."\n },\n {\n "id": "",\n "content": "Settings: improve the options table visuals."\n },\n {\n "id": "",\n "content": "Settings: fix scroll being reset every time a module is selected."\n },\n {\n "id": "",\n "content": "Updated contributors."\n }\n ]\n },\n "1.12.1": {\n "info": {\n "title": "Hit Dice Macros Tweak",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "HitDice: added an option to turn off inline roll summing for custom macros."\n }\n ]\n },\n "1.12.2": {\n "info": {\n "title": "Update Compatibility",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed various bugs introduced by the latest Roll20 update."\n }\n ]\n },\n "1.12.3": {\n "info": {\n "title": "Update Compatibility II",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "NightMode: repurpose into Force Background"\n },\n {\n "id": "",\n "content": "AdjustableOpacity: fixed it being broken."\n },\n {\n "id": "",\n "content": "AnimatedBackgroundLayer: fix background color issues (thanks, Knilk!)"\n },\n {\n "id": "",\n "content": "TokenLayerDrawing: fixed opacity issues (thanks, Dominic, Brother Sharp & guKing!)"\n },\n {\n "id": "",\n "content": "AnimatedBackgroundLayer: fixed background not autoplaying on chromium (thanks, Neverr!)"\n }\n ]\n },\n "1.12.4": {\n "info": {\n "title": "Update Compatibility III",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "AlternativeRadialMenu: support pause/play button"\n }\n ]\n },\n "1.12.5": {\n "info": {\n "title": "Update Compatibility IV",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "ScaleTokenNamesBySize: fix improper scaling (thanks, SmoothAsFelt!)"\n }\n ]\n },\n "1.12.6": {\n "info": {\n "title": "Bug Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "TokenLayerDrawing: reworked context state management. Should fix rendering issues."\n },\n {\n "id": "",\n "content": "ScaleTokenNamesBySize: fixed improper scaling when having one of the checkbox settings turned off."\n },\n {\n "id": "",\n "content": "TableExport: fixed importing tables entrys with \'!\' in the name."\n }\n ]\n },\n "1.13.0": {\n "info": {\n "title": "Stability Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Chrome: rewrote boostrapping. Should help combat the Uh Oh issues. (thanks Axecleft, keablah, TEU_Snoopy!)"\n },\n {\n "id": "",\n "content": "Update contributors & testers"\n }\n ]\n },\n "1.14.0": {\n "info": {\n "title": "Libre Audio",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added Libre Audio: allows creating jukebox tracks by a URL."\n },\n {\n "id": "",\n "content": "Updated contributors."\n }\n ]\n },\n "1.14.1": {\n "info": {\n "title": "Libre Audio Export Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Jukebox: fixed export/importing libeaudio tracks. (thanks, dunedain!)"\n }\n ]\n },\n "1.14.2": {\n "info": {\n "title": "Libre Audio Playback Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Libre Audio: fixed Roll20 thinking Libre Audio tracks are from Fanburst."\n }\n ]\n },\n "1.14.3": {\n "info": {\n "title": "Bulk Roll Type Setter fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "SheetRollTypeSetter: Fixed an issue where attributes weren\'t being properly set sometimes. (thanks, Maxell!)"\n }\n ]\n },\n "1.14.4": {\n "info": {\n "title": "Libre Audio Widget Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "LibreAudio: fixed the Add By URL widget not appearing most of the time."\n }\n ]\n },\n "1.14.5": {\n "info": {\n "title": "Libre Audio Improvement",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "LibreAudio: reworked the Add Track By URL dialog."\n }\n ]\n },\n "1.14.6": {\n "info": {\n "title": "Bug Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "RememberTextToolSettings: fixed copy text on select being on when it shouldn\'t."\n },\n {\n "id": "",\n "content": "AlternativePageToolbar: shortened height."\n },\n {\n "id": "",\n "content": "LibreAudio: fixed instances where the dialog wouldn\'t show up."\n }\n ]\n },\n "1.14.7": {\n "info": {\n "title": "Get Token Image URL",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added a right click option to get the image URl of one or more tokens."\n },\n {\n "id": "",\n "content": "Token context menu options added by R20ES now appear in a consistent order."\n }\n ]\n },\n "1.14.8": {\n "info": {\n "title": "Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "TokenContextMenu: fixed context menu options not showing up"\n },\n {\n "id": "",\n "content": "MacroGenerator: fixed the dialog not showing up when an attribute name was empty"\n }\n ]\n },\n "1.15.0": {\n "info": {\n "title": "Small quality of life improvements",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added the \'Draw bars at the bottom\' module for tokens"\n },\n {\n "id": "",\n "content": "Character Token Editor: add support for the new bar permissions"\n }\n ]\n },\n "1.15.1": {\n "info": {\n "title": "Token bar & status adjustments",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Renamed the `Draw bars at the bottom` module to `Token Bar & Status Adjustments`"\n },\n {\n "id": "",\n "content": "Token bar & status adjustments: added opacity sliders for status icons on active/idle tokens"\n },\n {\n "id": "",\n "content": "Token bar & status adjustments: added an option to toggle drawing bars at the bottom"\n },\n {\n "id": "",\n "content": "Token bar & status adjustments: added an option to draw status icons outside of the token"\n }\n ]\n },\n "1.15.2": {\n "info": {\n "title": "Latest patch fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Token bar & status adjustments: removed bar position option"\n },\n {\n "id": "",\n "content": "Token bar & status adjustments: rename to Token status display adjustment"\n },\n {\n "id": "",\n "content": "Character Token Editor: added bar location"\n }\n ]\n },\n "1.15.3": {\n "info": {\n "title": "May 2nd update compatibility",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "LibreAudio: fix playback & ui issues introduced by the May 2nd Roll20 update"\n }\n ]\n },\n "1.15.4": {\n "info": {\n "title": "dun goof",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "LibreAudio: fix 1.15.3 not fixing the May 2nd Roll20 update breakage"\n }\n ]\n },\n "1.15.5": {\n "info": {\n "title": "More Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "LibreAudio: fix possible crash during load"\n }\n ]\n },\n "1.15.6": {\n "info": {\n "title": "May 10th Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "TokenLayerDrawing: fixed the module not working after a Roll20 update."\n }\n ]\n },\n "1.15.7": {\n "info": {\n "title": "Please stop covering up my token",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Alternative Radial Menu: add auto width option that spaces the radial menu in such a way to not cover up the selected token."\n }\n ]\n },\n "1.15.8": {\n "info": {\n "title": "Character Token Modifier Bug Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Character Token Modifier: Fixed a bug where the bar location dropdown would not display the proper value (thanks, Mike W, for reporting the issue!)"\n },\n {\n "id": "",\n "content": "Character Token Modifier: Added the Bar Type dropdown"\n }\n ]\n },\n "1.15.9": {\n "info": {\n "title": "Enormously Microscopic Bug Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed a possible issue when rendering dialogs"\n }\n ]\n },\n "1.15.10": {\n "info": {\n "title": "Bug Fixes & Small Improvement",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Background: Fixed the icon not appearing"\n },\n {\n "id": "",\n "content": "Animated Background: Added an valid/invalid URL indicator for video URLs."\n },\n {\n "id": "",\n "content": "Libre Audio: Fix improper disposal of the add track button"\n },\n {\n "id": "",\n "content": "Chrome: fixed the loading screen being shown for 6e+04 milliseconds"\n }\n ]\n },\n "1.15.11": {\n "info": {\n "title": "Fix Another Roll20 Update",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Background: Fixed the icon not appearing"\n }\n ]\n },\n "1.15.12": {\n "info": {\n "title": "Small Tweaks",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Alternative Radial Menu: Respect token rotation"\n },\n {\n "id": "",\n "content": "Animated Background: Add History Dropdown (suggested by Axecleft, thank you!)"\n }\n ]\n },\n "1.15.13": {\n "info": {\n "title": "Animated Background Zoom Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Background Layer: Fix improper scaling due to zoom (thank you, Ackerfe for the report!)"\n }\n ]\n },\n "1.15.14": {\n "info": {\n "title": "Animated Background CTRL+L Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Background Layer: Fix issues with CTRL+L."\n },\n {\n "id": "",\n "content": "Animated Background Layer: Preperation for some fun stuff."\n },\n {\n "id": "",\n "content": "Updated contributors"\n }\n ]\n },\n "1.15.15": {\n "info": {\n "title": "Quick Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Background Layer: Fix a case where the animated backgrounds would potentially not play at startup."\n }\n ]\n },\n "1.15.16": {\n "info": {\n "title": "Tiny Improvements",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Backgrounds: various dialog tweaks"\n },\n {\n "id": "",\n "content": "Libre Audio: various dialog tweaks"\n },\n {\n "id": "",\n "content": "Character Token Modifier: various dialog tweaks"\n }\n ]\n },\n "1.15.17": {\n "info": {\n "title": "November 5th Roll20 Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Backgrounds: Fix broken zooming due to Nov 5th Roll20 update"\n }\n ]\n },\n "1.15.18": {\n "info": {\n "title": "Don\'t reboot it just patch",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Backgrounds: deal with the Roll20 zoom update/rollback."\n }\n ]\n },\n "1.15.19": {\n "info": {\n "title": "Small Tweak",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "MacroIO: Add ability to overwrite first macro with same name (courtesy of gludington)"\n }\n ]\n },\n "1.15.21": {\n "info": {\n "title": "January 21st Roll20 Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animated Backgrounds: Fix broken zooming due to the January 21st Roll20 update."\n }\n ]\n },\n "1.15.22": {\n "info": {\n "title": "LibreAudio Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "LibreAudio: fixed audio playback not working as of 2020-03-31"\n }\n ]\n },\n "1.15.23": {\n "info": {\n "title": "Macro Generator Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Macro Generator: Fix NPC trait and reaction macro descriptions (thanks Rimane for the report!)"\n }\n ]\n },\n "1.15.24": {\n "info": {\n "title": "Token Status Display Adjustments fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Token Status Display Adjustments: Fix it from being broken (thanks Kendros for the report!)"\n }\n ]\n },\n "1.15.25": {\n "info": {\n "title": "Token Status Display Adjustments fix 2",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Token Status Display Adjustments: Fix it not initializing on player sessions (thanks Halvralf and HeadsetRuler for the report!)"\n }\n ]\n },\n "1.15.26": {\n "info": {\n "title": "Chrome Update Checker & Some Tweaks",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add an update checker for Chrome which will post a message in chat when a new update is out."\n },\n {\n "id": "",\n "content": "Uh Oh: Update the problem popup with some new updated troubleshooting directions."\n },\n {\n "id": "",\n "content": "Settings: Fix gray-ish description text color."\n },\n {\n "id": "",\n "content": "About: Tweak formatting"\n }\n ]\n },\n "1.15.27": {\n "info": {\n "title": "Fix Scale Token Names By Size Module",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix Scale Token Names By Size module not scaling nameplates. (thanks, seba1708 & Sabre Runner for the report!)"\n }\n ]\n },\n "1.15.29": {\n "info": {\n "title": "Roll & Apply Hit Dice Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix Roll & Apply Hit Dice module not setting token health."\n }\n ]\n },\n "1.15.30": {\n "info": {\n "title": "Fix Animated Backgrounds",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix improper animated background zooming."\n }\n ]\n },\n "1.15.31": {\n "info": {\n "title": "Settings Media Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed broken media in the settings menu. (thanks Niels_mit_e for the report!)"\n }\n ]\n },\n "1.15.32": {\n "info": {\n "title": "Fix Animation Disable Module",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix animations not being disabled as of 2020-10-20 (thanks pella, Anthony_ and ShaunSullivan for the report!)"\n }\n ]\n },\n "1.15.33": {\n "info": {\n "title": "Macro Generator for Pathfinder 2e",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added a macro generator for Pathfinder 2e sheets. (by Blesmol)"\n }\n ]\n },\n "1.15.34": {\n "info": {\n "title": "Pathfinder 2e Macro Generator improvement",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "PF2 Macro Generator: Add the ability to generate NPC attack macros."\n }\n ]\n },\n "1.15.35": {\n "info": {\n "title": "Alternative Page Toolbar Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed the alternative page toolbar having broken styling."\n }\n ]\n },\n "1.15.36": {\n "info": {\n "title": "2020-12-22 Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed the extension not loading properly as of 2020-12-22."\n }\n ]\n },\n "1.15.37": {\n "info": {\n "title": "Bug Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Duplicate Button: fix the \'Duplicate\' button in the journal context menu not doing anything. Thanks (Niztael, Nostros & osobuho for the report!)"\n }\n ]\n },\n "1.15.38": {\n "info": {\n "title": "Character Sheet Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix various character sheet tabs not appearing and breaking character sheets."\n },\n {\n "id": "",\n "content": "TokenLayerDrawing: fix possible renderer crash when VTTES is disabled."\n }\n ]\n },\n "1.15.39": {\n "info": {\n "title": "Revert Character Sheet Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Revert character sheet tab fix as Roll20 reverted theirs."\n }\n ]\n },\n "1.16": {\n "info": {\n "title": "Quality of Life Stuff + Sheet Tab Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added setting importing and exporting."\n },\n {\n "id": "",\n "content": "Added support for importing multiple characters or tables at the same time."\n },\n {\n "id": "",\n "content": "Fix character sheet tabs not showing up. (until Roll20 breaks it again)"\n },\n {\n "id": "",\n "content": "Adjusted styling in the character token editor."\n },\n {\n "id": "",\n "content": "Various dialog styling fixes."\n },\n {\n "id": "",\n "content": "Cleaned up the character export/overwrite tab."\n }\n ]\n },\n "1.17.0": {\n "info": {\n "title": "Fixes and some new modules.",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add \'Hide Stuck Top-Left Tipsy Popups\' by Pharonix. Disabled by default as this will disable other popups. Use when needed."\n },\n {\n "id": "",\n "content": "Add Set Character Avatar From URL module."\n },\n {\n "id": "",\n "content": "Fix Libre Audio not working."\n },\n {\n "id": "",\n "content": "Fix Remember Text Tool Settings not working."\n },\n {\n "id": "",\n "content": "Fix Animation Disable for page toolbar not working."\n },\n {\n "id": "",\n "content": "Fix Set Table Entry Avatar By Url not working."\n }\n ]\n },\n "1.17.1": {\n "info": {\n "title": "Loading screen fix.",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed the loading screens sometimes taking a big longer to load."\n }\n ]\n },\n "1.18": {\n "info": {\n "title": "UDL in the Character Token Editor",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add \'Updated Dynamic Lighting\' to the character token editor."\n },\n {\n "id": "",\n "content": "Fix disable player drawing toggle button not appearing."\n },\n {\n "id": "",\n "content": "Fix bulk macro dialog stretching on Chrome."\n },\n {\n "id": "",\n "content": "Add an option to roll bulk rolls sequentially (disabled by default)."\n }\n ]\n },\n "1.19": {\n "info": {\n "title": "Handout Exporting",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added handout exporting & overwriting. (voted on by Patrons)"\n },\n {\n "id": "",\n "content": "Replaced the character importer with a handout & character importer."\n },\n {\n "id": "",\n "content": "Fix character sheets sometimes failing to load (thanks to SamuelDancing, DonnieSlash and Bernd for the report!)."\n }\n ]\n },\n "1.19.1": {\n "info": {\n "title": "Small Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Hide handout Export & Overwrite buttons when the module is disabled (thanks to KartoffelKaiser for the report!)."\n }\n ]\n },\n "1.20": {\n "info": {\n "title": "Default Camera Position Module",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added the Default Camera Position module. (voted on by Patrons)"\n }\n ]\n },\n "1.21": {\n "info": {\n "title": "Character Component Import/Export",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add character component (weapon, spell, item etc) importing/exporting (voted on by Patrons). This can be accessed in the export tab on character sheets."\n },\n {\n "id": "",\n "content": "Fix character overwriting for non-GMs (thanks, rhodenbarr, for the report!)"\n }\n ]\n },\n "1.22": {\n "info": {\n "title": "Handout Image From URL",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add the \'Set Handout Image From URL\' module (voted on by Patrons)."\n },\n {\n "id": "",\n "content": "Slight improvements to the \'Set Character Avatar From URL\' module."\n }\n ]\n },\n "1.22.1": {\n "info": {\n "title": "Quickfix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix a bug where Roll20 was failing to load for Firefox users without specific adblockers."\n }\n ]\n },\n "1.23": {\n "info": {\n "title": "Custom Line Widths + Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add the \\"Custom Line Widths\\" module (voted on by Patrons)."\n },\n {\n "id": "",\n "content": "Fix the status icon menu overlapping with token bars (thanks, Que, for the report!)"\n },\n {\n "id": "",\n "content": "Make the \'set character avatar from URL\' button appear for non-gms (thanks, Alastor, for the report!)"\n },\n {\n "id": "",\n "content": "Update the dark mode script URL (thanks, Airaghast, for pointing it out!)"\n },\n {\n "id": "",\n "content": "Fix some typos."\n }\n ]\n },\n "1.24.0": {\n "info": {\n "title": "Extra Rulers & Token Counter",\n "media": "extra_rulers.png"\n },\n "changes": [\n {\n "id": "",\n "content": "Add Extra Rulers module (voted on by Patrons)."\n },\n {\n "id": "",\n "content": "Add Token Counter module (submitted by OLStefan)."\n }\n ]\n },\n "1.24.1": {\n "info": {\n "title": "Tweaks & Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Set Table Entry Avatarby URL: fix some urls not working (thanks, Qwert, for the report!)"\n },\n {\n "id": "",\n "content": "Extra Rulers: default to 1 rad for cones degrees."\n },\n {\n "id": "",\n "content": "Character Token Modifier: Show previous token image url."\n },\n {\n "id": "",\n "content": "Handout Image From URL: Show previous image url."\n },\n {\n "id": "",\n "content": "Set Table Entry Avatarby URL: Show previous image url."\n },\n {\n "id": "",\n "content": "Character Avatar From URL: Show previous image url."\n }\n ]\n },\n "1.25.0": {\n "info": {\n "title": "Bug Fixes & Userscript Prep",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Animation Disable: Fix token and radial menu animation disabling not working."\n },\n {\n "id": "",\n "content": "Fix a loading bug on chrome that made the page toolbar button disappear and the canvas to be invisible."\n }\n ]\n },\n "1.25.2": {\n "info": {\n "title": "Chrome Extension Bug Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix handout text editor dropdowns not showing. (thanks, Batdaf, for the report!)"\n }\n ]\n },\n "1.25.3": {\n "info": {\n "title": "Beyond20 Compatability Bug Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix Beyond20 rolls not being correctly formatted. (thanks, kiloforce, for the report!)"\n }\n ]\n },\n "1.25.4": {\n "info": {\n "title": "Popout Sheet & Chat Archive Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix character sheets not loading on Chrome. (thanks, Batdaf, fillin and Liam, for the report!)"\n },\n {\n "id": "",\n "content": "Fix chat archive not loading on Chrome. (thanks, Keldin145014, for the report!)"\n }\n ]\n },\n "1.25.5": {\n "info": {\n "title": "Bug Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the animation disable module not working."\n },\n {\n "id": "",\n "content": "Fix the reassign default token id module not working."\n },\n {\n "id": "",\n "content": "Fix the duplicate button module not working (thanks, JoshLikesBeer and Scott, for the report!)"\n },\n {\n "id": "",\n "content": "Libre Audio fix."\n },\n {\n "id": "",\n "content": "Fix remember text tool settings module not working."\n },\n {\n "id": "",\n "content": "Fix set table entry avatar from URL module not working (thanks, Jeff Brunner, for the report!)"\n },\n {\n "id": "",\n "content": "Make the OK button on the changelog always appear at the bottom of the dialog."\n }\n ]\n },\n "1.25.6": {\n "info": {\n "title": "5e sheet NPC Bonus Actions",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added support for NPC Bonus Actions to the 5e sheet macro generator."\n }\n ]\n },\n "1.25.7": {\n "info": {\n "title": "Alternate Page Toolbar Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix spacing in the alternate page toolbar (thanks, Oldewyrm, for the report!)"\n }\n ]\n },\n "1.25.7.1": {\n "info": {\n "title": "Userscript Dialog Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix dialogs not working when using the userscript on Firefox (thanks, lucky13, for the report!)"\n }\n ]\n },\n "1.26": {\n "info": {\n "title": "Loading Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed VTTES not loading due to a Roll20 update."\n }\n ]\n },\n "1.26.1": {\n "info": {\n "title": "Duplicate Button Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the character and handout duplicate button not working (thanks, FaustMe, for the report!)"\n }\n ]\n },\n "1.26.2": {\n "info": {\n "title": "Bug Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed a bunch of modules not working due to a Roll20 update."\n }\n ]\n },\n "1.26.3": {\n "info": {\n "title": "Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix some canvas modules not working (thanks, Lycaon1765, for the report!)"\n }\n ]\n },\n "1.26.4": {\n "info": {\n "title": "Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix Extra Rulers from breaking the page rendering."\n },\n {\n "id": "",\n "content": "Fix Token Layer Drawing module not working."\n },\n {\n "id": "",\n "content": "Fix Scale Token Names By Size module not working."\n },\n {\n "id": "",\n "content": "Fix Remember Text Tool Settings module not working."\n },\n {\n "id": "",\n "content": "Fix 1/4th of Animation Disable not working."\n }\n ]\n },\n "1.26.5": {\n "info": {\n "title": "Audio Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix audio tracks not playing (thanks JasonHunter and BigUglyFace for the report!)."\n }\n ]\n },\n "1.26.6": {\n "info": {\n "title": "Happy 2022!",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix extra rulers breaking the canvas rendering."\n },\n {\n "id": "",\n "content": "Fix libre audio not working."\n },\n {\n "id": "",\n "content": "Fix duplicate button not working."\n }\n ]\n },\n "1.26.7": {\n "info": {\n "title": "Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed modules not working"\n },\n {\n "id": "",\n "content": "Fixed the settings button not showing."\n }\n ]\n },\n "1.26.8": {\n "info": {\n "title": "More Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix various modules not working."\n }\n ]\n },\n "1.26.9": {\n "info": {\n "title": "More More Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix various modules not working."\n }\n ]\n },\n "1.26.10": {\n "info": {\n "title": "More^3 Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix various modules not working (thanks, Yorith the Dreamer, for the report!)"\n }\n ]\n },\n "1.26.11": {\n "info": {\n "title": "More^4 Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix various modules not working (thanks, Altia, for the report!)"\n }\n ]\n },\n "1.26.12": {\n "info": {\n "title": "Handout Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix handout dropdown menus not working (thanks, m4rc, for the report!)"\n }\n ]\n },\n "1.26.13": {\n "info": {\n "title": "Audio Fix & Others",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix audio playback not working."\n },\n {\n "id": "",\n "content": "Fix remember text tool settings module."\n },\n {\n "id": "",\n "content": "Fix turn tracker modules."\n }\n ]\n },\n "1.26.14": {\n "info": {\n "title": "More Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix audio playback not working."\n },\n {\n "id": "",\n "content": "Fix turn tracker modules."\n }\n ]\n },\n "1.26.15": {\n "info": {\n "title": "Fixes (thanks, darthbeep, for the report!)",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Make the disable player drawings module fully load pages."\n },\n {\n "id": "",\n "content": "Make the disable player drawings module not be enabled by default for extra performance."\n },\n {\n "id": "",\n "content": "Make the character token modifier load all pages when updating all tokens."\n },\n {\n "id": "",\n "content": "Fix animation disable module."\n },\n {\n "id": "",\n "content": "Fix initiative modules."\n },\n {\n "id": "",\n "content": "Fix remember text tool settings module."\n },\n {\n "id": "",\n "content": "Fix set table entry avatar by URL module."\n },\n {\n "id": "",\n "content": "Show browser and VTTES version on the \'Uh Oh\' popup."\n }\n ]\n },\n "1.26.16": {\n "info": {\n "title": "Fixes & Tweaks",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Add a link to a hosting guide for animated backgrounds in the dialog menu."\n },\n {\n "id": "",\n "content": "Fix set table entry avatar by URL module not working."\n }\n ]\n },\n "1.26.17": {\n "info": {\n "title": "Module Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the duplicate button module."\n },\n {\n "id": "",\n "content": "Fix audio not playing."\n },\n {\n "id": "",\n "content": "Fix the set table entry from URL module."\n },\n {\n "id": "",\n "content": "Thanks LordRoseheart, Gebri and Lyra for the report!"\n }\n ]\n },\n "1.26.18": {\n "info": {\n "title": "More Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the extra rulers module."\n },\n {\n "id": "",\n "content": "Fix libre audio."\n },\n {\n "id": "",\n "content": "Fix the remember text tool settings module."\n },\n {\n "id": "",\n "content": "Fix the duplicate button module."\n },\n {\n "id": "",\n "content": "Fix initiative tracker modules."\n },\n {\n "id": "",\n "content": "Fix the animation disable module."\n },\n {\n "id": "",\n "content": "Fix the animated background layer module."\n },\n {\n "id": "",\n "content": "Thanks, Andele3025, Maddie, Lyra and Oldewyrm for the report!"\n }\n ]\n },\n "1.26.19": {\n "info": {\n "title": "More^2 Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the set table entry avatar by url module."\n },\n {\n "id": "",\n "content": "Fix remember text tool settings module."\n },\n {\n "id": "",\n "content": "Fix libre audio."\n },\n {\n "id": "",\n "content": "Fix extra rulers."\n },\n {\n "id": "",\n "content": "Fix initiative modules."\n },\n {\n "id": "",\n "content": "Fix animation disable module."\n },\n {\n "id": "",\n "content": "Fix the animated background layer module."\n },\n {\n "id": "",\n "content": "Thanks, Oldewyrm, Axecleft and Lyra for the report!"\n }\n ]\n },\n "1.26.20": {\n "info": {\n "title": "Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the duplicate button module."\n },\n {\n "id": "",\n "content": "Thanks, L0st and Lyra, for the report!"\n }\n ]\n },\n "1.26.21": {\n "info": {\n "title": "Fix^2",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix set table entry avatar by url module."\n },\n {\n "id": "",\n "content": "Fix libre audio."\n },\n {\n "id": "",\n "content": "Thanks, Bonesicord, for the report!"\n }\n ]\n },\n "1.26.22": {\n "info": {\n "title": "Fix^3",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix libre audio."\n },\n {\n "id": "",\n "content": "Fix set table entry avatar by url module."\n },\n {\n "id": "",\n "content": "Thanks, serenitygrant and Diego W.M.C, for the report!"\n }\n ]\n },\n "1.26.23": {\n "info": {\n "title": "Fix^4",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the remember text tool settings module."\n },\n {\n "id": "",\n "content": "Fix the libre audio module."\n },\n {\n "id": "",\n "content": "Fix the extra rulers module."\n },\n {\n "id": "",\n "content": "Fix the animated background module."\n },\n {\n "id": "",\n "content": "Thanks, charlie ok, Oldewyrm, Axecleft and Teiroi for the report!"\n }\n ]\n },\n "1.26.24": {\n "info": {\n "title": "Fix^5",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Bunch of module fixes."\n }\n ]\n },\n "1.27.0": {\n "info": {\n "title": "Stability Improvements",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Some internal changes to hopefully improve stability across Roll20 updates."\n }\n ]\n },\n "1.27.1": {\n "info": {\n "title": "Minor Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix animation disable and remember text tool settings modules."\n },\n {\n "id": "",\n "content": "More internal changes for stability."\n }\n ]\n },\n "1.27.2": {\n "info": {\n "title": "Loading Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix VTTES not loading."\n },\n {\n "id": "",\n "content": "Thank you to everyone for reporting the issue!"\n }\n ]\n },\n "1.27.3": {\n "info": {\n "title": "Loading Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix extra rulers breaking the whole extension."\n },\n {\n "id": "",\n "content": "Fix Roll20 crashing if the cdn.userleap domain is blocked."\n }\n ]\n },\n "1.27.4": {\n "info": {\n "title": "More Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Some styling fixes."\n },\n {\n "id": "",\n "content": "Fix token layer drawing (thanks, ElementalSword, for the report!)."\n },\n {\n "id": "",\n "content": "Fix token bar position adjust."\n },\n {\n "id": "",\n "content": "Fix scale token names by size."\n },\n {\n "id": "",\n "content": "Fix change id when duplicating."\n }\n ]\n },\n "1.27.5": {\n "info": {\n "title": "Spring Cleaning",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix weird things happening to character attributes when importing a character (thanks, springwoods and Feistykitten, for the report!) "\n },\n {\n "id": "",\n "content": "Fix character importing requiring a page refresh sometimes for sheets to load on Firefox."\n },\n {\n "id": "",\n "content": "Tweaked the position of the toolbar button when the alternate toolbar menu module is on."\n },\n {\n "id": "",\n "content": "Add spaces to generated macros."\n },\n {\n "id": "",\n "content": "Styling fixes on the changelog popup."\n }\n ]\n },\n "1.27.6": {\n "info": {\n "title": "Small Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the token layer drawing module."\n },\n {\n "id": "",\n "content": "Fix the change id when duplicating module."\n }\n ]\n },\n "1.27.7": {\n "info": {\n "title": "Hit Dice Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the hit dice module from not working until the token\'s character sheet has been opened (thanks, hightouch, for the report!)."\n }\n ]\n },\n "1.27.8": {\n "info": {\n "title": "Stupid Popup Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the stupid popup on the top left of your screen (BIG thank you to Keldin145014 for providing info on it!)"\n },\n {\n "id": "",\n "content": "Remove the \'Hide Tipsy Popup\' module."\n }\n ]\n },\n "1.28": {\n "info": {\n "title": "Character Ability Exporter",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added character ability importing and exporting. (thanks, Keldin145014, for the suggestion!)"\n },\n {\n "id": "",\n "content": "Display actions in the right order when exporting action components on PF2 sheets."\n },\n {\n "id": "",\n "content": "Remove the Sprig workaround."\n }\n ]\n },\n "1.28.1": {\n "info": {\n "title": "Loading Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed an issue that caused non Firefox browsers to barf when loading Roll20."\n },\n {\n "id": "",\n "content": "Fixed the Duplicate Button module causing issues."\n }\n ]\n },\n "1.28.2": {\n "info": {\n "title": "Loading Fix 2.0",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed a similar issue that caused non Firefox browsers to barf when loading Roll20."\n }\n ]\n },\n "1.28.3": {\n "info": {\n "title": "Radial Compact Mode Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the compact radial token menu not displaying attribute colors (thanks, Starblind, for the report!)"\n }\n ]\n },\n "1.28.4": {\n "info": {\n "title": "PDF Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed PDFs not properly loading on Chrome & Userscript."\n }\n ]\n },\n "1.28.5": {\n "info": {\n "title": "Token Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix the token layer drawing module not working."\n },\n {\n "id": "",\n "content": "Fix the custom token resize dialog being too big."\n },\n {\n "id": "",\n "content": "Disabled the scale token name module as updating it would be technically impractical in terms of performance."\n },\n {\n "id": "",\n "content": "Fix dialog text being unreadable in dark mode."\n }\n ]\n },\n "1.28.6": {\n "info": {\n "title": "Animated Backgrounds Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix token bars and names not rendering properly when the animated backgrounds module is enabled (thanks, ♠Hanzo♠ and Yussuma, for the report!)"\n }\n ]\n },\n "1.28.7": {\n "info": {\n "title": "Small Enhancement",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Make the Alternative Page toolbar draw behind popup dialogs."\n }\n ]\n },\n "1.28.8": {\n "info": {\n "title": "Rollable Table Export Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix \'Export\' button not showing up on rollable table dialogs (thanks, UndefinedSnail and Sparc0, for the report!)"\n }\n ]\n },\n "1.28.9": {\n "info": {\n "title": "Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fix animated backgrounds not rendering."\n },\n {\n "id": "",\n "content": "Fix token layer switching module."\n },\n {\n "id": "",\n "content": "Move the page toolbar, camera start position and animated background layer buttons to the left a bit."\n },\n {\n "id": "",\n "content": "Fixed Roll20 sometimes not working if VTTES is disabled."\n }\n ]\n },\n "1.28.10": {\n "info": {\n "title": "Animated Background Opacity Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Implemented an experimental animatied background opacity bug fix."\n }\n ]\n },\n "1.28.11": {\n "info": {\n "title": "Extra Rulers & Token Select fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed the Extra Rulers UI not showing."\n },\n {\n "id": "",\n "content": "Fixed the \'Not selecting!\' UI not showing."\n }\n ]\n },\n "1.28.12": {\n "info": {\n "title": "Extra Rulers & Token Select fixes 2: Electric Boogaloo",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed Extra rulers and \'Not selecting!\' UI from showing due to Roll20 code reverts."\n },\n {\n "id": "",\n "content": "Added a revert failsafe for Extra Rulers and Token Layer Drawing."\n }\n ]\n },\n "1.28.13": {\n "info": {\n "title": "Small Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed animated backgrounds rendering on top of everything else."\n },\n {\n "id": "",\n "content": "Add some notes saying that other players need VTTES installed to hear libre audio and see animated backgrounds."\n }\n ]\n },\n "1.28.14": {\n "info": {\n "title": "Bug Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed extra rulers UI not showing up (thanks, \'i am goofy\', for the report!)"\n },\n {\n "id": "",\n "content": "Fixed the \'Not Selecting!\' UI not showing up."\n },\n {\n "id": "",\n "content": "Fixed the \'Remember Text Tool\' module settings mirroring option not working."\n }\n ]\n },\n "1.28.15": {\n "info": {\n "title": "Arrow Key Movement Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed canvas arrow key movement breaking the token arrow key movement."\n },\n {\n "id": "",\n "content": "Added a \'Reset\' button to the Cone ruler UI."\n }\n ]\n },\n "1.28.16": {\n "info": {\n "title": "Some bug fixes and slight improvements",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Added a message saying that the preview UI is not supported for the time being."\n },\n {\n "id": "",\n "content": "Added an option to the force background color module to force change the backdrop color."\n },\n {\n "id": "",\n "content": "Added an option to the force background color module to only force change the backdrop and canvas colors when they are default values."\n },\n {\n "id": "",\n "content": "Added option to change the light color in the character token editor."\n },\n {\n "id": "",\n "content": "Fixed the force background color module from not setting the background color to the right color when animated backgrounds are on."\n }\n ]\n },\n "1.28.17": {\n "info": {\n "title": "Checkered Door/Window Fix (Chrome & Userscript Only)",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed assets being loaded at an invalid path on Chrome & Userscript (fixes checkered doors and windows)"\n }\n ]\n },\n "1.28.18": {\n "info": {\n "title": "Loading Fix",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed sometimes getting stuck on the loading screen."\n }\n ]\n },\n "1.28.19": {\n "info": {\n "title": "Bug Fixes",\n "media": ""\n },\n "changes": [\n {\n "id": "",\n "content": "Fixed context menus not showing up when right-clicking on empty space (Roll20 bug)."\n },\n {\n "id": "",\n "content": "Fixed the macro generator module font color being unreadable in dark mode."\n },\n {\n "id": "",\n "content": "Rebound Extra Rulers hotkeys that start with q to start with g instead."\n },\n {\n "id": "",\n "content": "Listed available hotkeys on the extra rulers module description."\n }\n ]\n }\n }\n}\n');if(n)for(var i in r.versions)o.prepareChanges(r.versions[i],i);else{var a=r.versions[r.current];o.prepareChanges(a,r.current)}return o.preparedData.sort(function(e,t){return s(t.semverString,e.semverString)}),o}return o(t,e),t.prototype.prepareChanges=function(e,t){this.preparedData.push({data:e,mediaUrl:i.strIsNullOrEmpty(e.info.media)?"":a.Config.website+e.info.media,semverString:t})},t.prototype.internalRender=function(){var e=this;if(this.preparedData.length<=0)return r.DOM.createElement("div",null,this.isLoading?"Loading...":"We have no changes to display :/... What?");return r.DOM.createElement("div",null,this.preparedData.map(function(t){for(var n=[],o=0,s=t.data.changes;o<s.length;o++){var c=s[o],d=[];for(var u in c.urls){var p=c.urls[u];d.push(r.DOM.createElement("div",null,r.DOM.createElement("a",{href:p},u)))}n.push(i.strIsNullOrEmpty(c.id)?r.DOM.createElement("li",null,c.content,d):r.DOM.createElement("li",null,r.DOM.createElement("a",{"data-url":a.Config.websiteFeatureUrlTemplate+c.id,href:"javascript:void(0)",onClick:e.onClickLine},c.content),d))}var h=t.data.info.title?r.DOM.createElement("div",null,r.DOM.createElement("h2",null,t.data.info.title),r.DOM.createElement("h3",null,t.semverString)):r.DOM.createElement("div",null,r.DOM.createElement("h2",null,t.semverString));return r.DOM.createElement("ul",null,h,!i.strIsNullOrEmpty(t.mediaUrl)&&r.DOM.createElement(l.default,{url:t.mediaUrl,description:""}),n,r.DOM.createElement("hr",null))}))},t}(r.DOM.ElementBase);t.default=c},function(e,t,n){"use strict";t.__esModule=!0;t.default="r20es-settings-button"},function(e,t,n){"use strict";var o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},r=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&(n[o[r]]=e[o[r]])}return n};t.__esModule=!0;var i=n(1);t.SettingsSidebarButton=function(e){var t=e.text,n=r(e,["text"]);return i.DOM.createElement("input",o({type:"button",style:{marginBottom:"8px",width:"calc(100% - 21px)"},className:"btn",value:t},n))}},function(e,t,n){"use strict";t.__esModule=!0,t.insertButtonIntoSettings=function(e){var t=document.getElementById("settings-accordion");t.insertBefore(e,t.firstElementChild)}},function(e,t,n){"use strict";t.__esModule=!0;var o=function(e){return"\n"===e||"\r"===e||"\t"===e||" "===e||"\f"===e||"\v"===e},r=function(e){return e>="0"&&e<="9"},i=function(){function e(e){this.readHead=0,this.charStream=e}return e.prototype.tryMatch=function(e,t){for(var n=0;n<e.length;n++){if(t>=this.charStream.length)return null;if(this.charStream[t]!==e[n])return null;t++}return{idx:t}},e.prototype.tryMatchEscapedAscii=function(e){var t=this.tryMatch("<%%",this.readHead);if(!t)return!1;for(var n="",o=t.idx;this.charStream.length>o&&r(this.charStream[o]);)n+=this.charStream[o++];var i=this.tryMatch("%%>",o);if(!i)return!1;var a=parseInt(n);return NaN!==a&&(this.readHead=i.idx,e.arg+=String.fromCharCode(a),!0)},e.prototype.tryMatchEscapedSlashes=function(e){var t=this.tryMatch("[TABLEEXPORT:ESCAPE]",this.readHead);return!!t&&(this.readHead=t.idx,e.arg+="--",!0)},e.prototype.nextToken=function(){for(;!(this.charStream.length<=this.readHead);){var e="!"===this.charStream[this.readHead],t=this.charStream.length>this.readHead+1&&"-"===this.charStream[this.readHead]&&"-"===this.charStream[this.readHead+1];if(e||t)break;this.readHead++}if(this.charStream.length<=this.readHead)return{eof:!0};if("!"===this.charStream[this.readHead]){this.readHead++;for(var n={command:""};!(this.charStream.length<=this.readHead||o(this.charStream[this.readHead]));)n.command+=this.charStream[this.readHead++];return n.command=n.command.trim(),n}if("-"===this.charStream[this.readHead]){this.readHead+=2;for(n={arg:""};!(this.charStream.length<=this.readHead+1||"\n"===this.charStream[this.readHead]||"-"===this.charStream[this.readHead]&&"-"===this.charStream[this.readHead+1]);)this.tryMatchEscapedAscii(n)||this.tryMatchEscapedSlashes(n)||(n.arg+=this.charStream[this.readHead++]);return n.arg=n.arg.trim(),n}throw new Error("Table export lexer matched unknown start of token: "+this.charStream[this.readHead])},e}(),a=function(e,t,n){return e.length<=t?n:e[t].arg},l=function(){function e(e){this.lexer=e,this.tokenBuffer=null}return e.prototype.readArgs=function(e,t){for(var n=[],o=0;o<e;o++){var r=this.lexer.nextToken();if(!("arg"in r))return this.tokenBuffer=r,n;if(n[o]=r,console.log(n[o]),!n[o])throw new Error(t+" expected "+e+", got "+(o+1))}return n},e.prototype.nextStatement=function(){var e=void 0!==this.tokenBuffer&&this.tokenBuffer?this.tokenBuffer:this.lexer.nextToken();this.tokenBuffer=null;var t={};do{if(console.log("starting statement parsing"),console.log(e),e.command){if("import-table"===e.command){if(console.log("Parsing table header"),t.table={},(n=this.readArgs(2,"import-table")).length<=0)throw new Error("Expected to find 1 or 2 arguments to import-table, but received "+n.length+". Lexer is at char position "+this.lexer.readHead);return t.table.name=n[0].arg,t.table.showplayers="show"===a(n,1,"hide"),t}if("import-table-item"==e.command){var n;if(console.log("Parsing table item"),t.item={},(n=this.readArgs(4,"import-table-item")).length<2)throw new Error("Expected to find 2, 3 or 4 arguments to import-table-item, but received "+n.length+".Lexer is at char position "+this.lexer.readHead);return t.item.tableName=n[0].arg,t.item.name=n[1].arg,t.item.weight=a(n,2,1),t.item.avatar=a(n,3,""),t}throw new Error("Unknown TableExport command: "+e.command)}if(e.eof)return t.eof=!0,t;throw new Error("Unexpected token: "+e+". Expected a command token. Lexer is at "+this.lexer.readHead)}while(void 0===e.eof);return{eof:!0}},e}(),s=function(){function e(e){this.parser=new l(new i(e))}return e.prototype.run=function(){var e=null,t={};do{if(!(e=this.parser.nextStatement()))return;if(e.eof)break;if(e.table)t[e.table.name]=e.table;else if(e.item){var n=t[e.item.tableName];if(!n)throw new Error("Table not found: "+e.item.tableName);n.items=n.items||{},delete e.item.tableName,n.items[e.item.name]=e.item}}while(void 0===e.eof);return console.log(t),t},e}();!function(e){e.naiveVerify=function(e){for(var t=0;e.length>t&&o(e[t]);)t++;return"!"===e[t]||(alert("File does not contain valid TableExport data. First character must be !."),!1)},e.parse=function(e){return new s(e).run()}}(t.TableExportLang||(t.TableExportLang={}))},function(e,t,n){"use strict";t.__esModule=!0,n(43).bootstrap()},function(e,t,n){"use strict";var o=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},r=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}},i=this;t.__esModule=!0;var a=n(44),l=n(99),s=n(10),c=n(4),d=n(1),u=n(184),p=n(185),h=n(27),m=n(186);t.bootstrap=function(){window.hasInjectedModules=!1,setTimeout(function(){if(void 0===window.d20||void 0===window.r20es||!window.hasInjectedModules){var e=h.default(),t=d.DOM.createElement("div",{className:"r20es-welcome"},d.DOM.createElement("h2",null,"VTTES - Uh oh!"),d.DOM.createElement("p",null,"Looks like loading is taking a while. There might be a bug somewhere."),d.DOM.createElement("p",null,"Please try:"),d.DOM.createElement("ul",null,d.DOM.createElement("li",null,"Refreshing the page."),d.DOM.createElement("li",null,"Disabling all other extensions."),"firefox"!==e.name&&d.DOM.createElement("li",null,"Using Firefox.")),d.DOM.createElement("p",null,"If this persists, please visit the ",d.DOM.createElement("a",{href:s.Config.discordInvite},"Discord server")," and let us know."),d.DOM.createElement("p",{className:"r20es-code"},"window.d20: "+typeof window.d20+" "+window.d20,d.DOM.createElement("br",null),"window.r20es: "+typeof window.r20es+" "+window.r20es,d.DOM.createElement("br",null),"window.hasInjectedModules: "+typeof window.hasInjectedModules+" "+window.hasInjectedModules,d.DOM.createElement("br",null),"VTTES Version: 1.28.19",d.DOM.createElement("br",null),"Browser: "+e.name+" "+e.versionNumber,d.DOM.createElement("br",null),"Is userscript!",d.DOM.createElement("br",null)),d.DOM.createElement("button",{onClick:function(){return t.remove()}},"OK")),n=document.getElementById("playerzone");n.parentElement.insertBefore(t,n)}},25e3);var e=[],t=[],n=function(e,t){return e=(e=(e=p.apply_mods_to_text(e,t,a.VTTES_MODULE_CONFIGS)).replace("jQuery.ready.promise().done( fn );","if(!window.r20esChrome) window.r20esChrome = {};\n if(!window.r20esChrome.readyCallbacks) window.r20esChrome.readyCallbacks = [];\n window.r20esChrome.readyCallbacks.push(fn);")).replace("},6e4))","},250))")},f=function(e,a){return o(i,void 0,void 0,function(){var o;return r(this,function(r){switch(r.label){case 0:return console.log("fetching",a,e),[4,fetch(a)];case 1:return[4,r.sent().text()];case 2:return o=r.sent(),o=n(o,a),t.push({order:e,text:o,url:a}),[2]}})})},g=Date.now();e.push(f(0,"https://app.roll20.net/v2/js/jquery-1.9.1.js?n")),e.push(f(1,"https://app.roll20.net/v2/js/jquery.migrate.js?n")),e.push(f(2,"https://app.roll20.net/js/featuredetect.js?2n")),e.push(f(3,"https://app.roll20.net/v2/js/patience.js?n")),e.push(f(4,"https://app.roll20.net/js/jquery-ui.1.9.0.custom.min.js?n"+g)),e.push(f(6,"https://app.roll20.net/js/d20/loading.js?n=11&v=11")),e.push(function(e,o,r){return new Promise(function(i){console.log("fetching from userscript",o,r,e);var a=function(){var l=window[o];if("string"==typeof l)return l=n(l,r),t.push({order:e,text:l,url:r}),window[o]=void 0,void i();setTimeout(a,10)};a()})}(7,"USERSCRIPT_VTT_BUNDLE_DATA","https://cdn.roll20.net/production/vtt.bundle.js?n"+g)),e.push(f(8,"https://app.roll20.net/js/tutorial_tips.js?n"));var M="";e.push(new Promise(function(e){var t=0,n=function(){for(var o=0,r=document.querySelectorAll("script[nonce]");o<r.length;o++){var i=r[o],a=i.nonce;if(a&&a.length&&a.length>0)return M=a,console.log("got nonce! it is: '"+M+"'",i),void e()}(t+=1)%100==0&&console.log("nonce retry"),setTimeout(n,10)};n()})),e.push(new Promise(function(e){var t=function(){return o(i,void 0,void 0,function(){var n,o,i,a,l,s;return r(this,function(r){switch(r.label){case 0:for(console.log("retry"),n=document.querySelectorAll("script"),o=null,i=0,a=n;i<a.length;i++)if((l=a[i]).src&&l.src.includes("/editor/startjs/")){o=l.src;break}return o?(s=o.indexOf("?timestamp"),console.log("startjs_url before",o),o=o.slice(0,s)+"?n=1&"+o.slice(s+1),console.log("startjs_url after",o),[4,f(5,o)]):[3,2];case 1:return r.sent(),e(),[3,3];case 2:setTimeout(t,10),r.label=3;case 3:return[2]}})})};t()})),Promise.all(e).then(function(){t.sort(function(e,t){return e.order-t.order}),console.log(e.length+" jobs are done!",e),console.log(t);for(var n=0,o=t;n<o.length;n++){var r=o[n];console.log("dumping "+r.url);var i=document.createElement("script");i.type="text/javascript",i.nonce=M,i.text=r.text,i.async=!1,i.defer=!1,document.body.appendChild(i)}var a=0,l=function(){var e=void 0!==window.$,t=void 0!==window.soundManager,n=void 0!==window.d20,o=!!document.body,r=window.r20es&&window.r20es.have_configs_been_loaded;if(e&&t&&n&&o&&r){console.log("vttes has all depts satisfied, dumping"),function(){var e=function(e,t,n){var o=document.createElement("style");o.id=n,o.innerText=e,t.appendChild(o)};c.findByIdAndRemove("r20es-dialo-gpolyfill-css"),c.findByIdAndRemove("r20es-dialog-style-css"),"function"!=typeof HTMLDialogElement&&(console.log("DialogFormsBootstrapper: injecting dialog-polyfill"),m.dialog_polyfill_script(),e(m.dialog_polyfill_css,document.body,"r20es-dialo-gpolyfill-css"),console.log("DialogFormsBootstrapper: done!")),e("\n .r20es-indent {\n margin-left: 20px;\n }\n\n .r20es-dialog button {\n margin: 4px;\n }\n\n .r20es-dialog>.dialog-header {\n margin: 10px 20px 10px 20px;\n }\n\n .r20es-dialog>.dialog-body {\n margin: 10px 30px 10px 30px;\n overflow: auto;\n }\n \n .r20es-settings-dialog h1 { color: #333; }\n .r20es-settings-dialog h2 { color: #333; }\n .r20es-settings-dialog h3 { color: #333; }\n .r20es-settings-dialog h4 { color: #333; }\n .r20es-settings-dialog h5 { color: #333; }\n .r20es-settings-dialog h6 { color: #333; }\n .r20es-settings-dialog input[type=number] { color: #555; }\n .r20es-settings-dialog input[type=text] { color: #555; }\n .r20es-settings-dialog select { color: #555; }\n .r20es-dialog h1 { color: #333; }\n .r20es-dialog h2 { color: #333; }\n .r20es-dialog h3 { color: #333; }\n .r20es-dialog h4 { color: #333; }\n .r20es-dialog h5 { color: #333; }\n .r20es-dialog h6 { color: #333; }\n .r20es-dialog input[type=number] { color: #555; }\n .r20es-dialog input[type=text] { color: #555; }\n .r20es-dialog select { color: #555; }\n\n .r20es-dialog>.dialog-footer {\n position: sticky;\n background-color: #f5f5f5;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n .r20es-dialog>.dialog-footer>hr {\n margin: 0;\n }\n\n .dialog-footer>.dialog-footer-content {\n padding: 20px;\n box-sizing: border-box;\n }\n\n .dialog-footer>.dialog-footer-content .btn {\n width: auto;\n height: auto;\n }\n\n .r20es-dialog h3 {\n margin-top: 5px;\n margin-bottom: 5px;\n }\n\n .r20es-dialog>hr {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n .r20es-dialog {\n background-color: rgb(253, 253, 253);\n /*height: 100%;*/\n display: grid;\n grid-template-rows: auto auto auto;\n color: #0f0f0f;\n }\n\n html.dark .r20es-dialog th {\n color: #0f0f0f !important;\n }\n\n .r20es-dialog th {\n white-space: nowrap;\n padding: 4px;\n padding-left: 8px;\n }\n\n .r20es-dialog tr {\n background-color: rgb(250, 250, 250);\n }\n\n .r20es-dialog .table-head {\n background-color: rgb(240, 240, 240);\n }\n\n .r20es-dialog tr:nth-child(even) {\n background-color: rgb(240, 240, 240);\n }\n\n .r20es-dialog table caption {\n font-weight: bold;\n font-size: 1.25em;\n }\n\n .r20es-code {\n font-family: monospace;\n font-size: 0.85em;\n padding: 4px;\n padding-left: 8px;\n }\n\n .r20es-welcome h1 { color: #333; }\n .r20es-welcome h2 { color: #333; }\n .r20es-welcome h3 { color: #333; }\n .r20es-welcome h4 { color: #333; }\n .r20es-welcome h5 { color: #333; }\n .r20es-welcome h6 { color: #333; }\n .r20es-welcome {\n background-color: #ffffff;\n color: #333;\n max-width: 30%;\n right: 20%;\n top: 5%;\n position: absolute;\n padding: 10px;\n z-index: 11000;\n border: 1px solid black;\n }\n\n dialog::backdrop {\n /* native */\n background-color: rgba(0, 0, 0, 0.45);\n }\n\n dialog+.backdrop {\n /* polyfill */\n background-color: rgba(0, 0, 0, 0.45);\n }\n\n dialog {\n overflow-y: auto;\n overflow-x: auto;\n max-height: 90%;\n max-width: 60%;\n border: none;\n padding: 0;\n /*height: auto;*/\n }\n\n .r20es-big-dialog {\n /*height: 100%;*/\n }\n\n .r20es-token-img-hover .r20es-hover-block {\n display: none;\n }\n\n .r20es-token-img-hover:hover .r20es-hover-block{\n padding: 4px;\n background-color: rgba(255,255,255, 0.5);\n border: 4px dashed black;\n display: block;\n }\n ",document.body,"r20es-dialog-style-css")}(),y();var i=document.createEvent("Event");i.initEvent("DOMContentLoaded",!0,!0),window.document.dispatchEvent(i);for(var s=0;s<window.r20esChrome.readyCallbacks.length;s++)try{window.r20esChrome.readyCallbacks[s]()}catch(e){console.error(e)}}else(a+=1)%100==0&&console.log("vttes is waiting for depts..."),setTimeout(l,10)};l()}),window.r20es=window.r20es||{},window.r20es.hooks=a.VTTES_MODULE_CONFIGS,window.r20esInstalledModuleTable=window.r20esInstalledModuleTable||{},window.r20esDisposeTable=window.r20esDisposeTable||{},window.r20es.isLoading=!0;var y=function(){if(!window.hasInjectedModules){for(var e=0,t=l.VTTES_MODULES;e<t.length;e++){var n=t[e];try{n()}catch(e){console.error(e)}}window.hasInjectedModules=!0,console.log("modules injected!")}};window.r20es.save_configs=function(){var e={};for(var t in window.r20es.hooks){var n=window.r20es.hooks[t];e[t]=n.config}var o=JSON.stringify(e,null,0);window.localStorage.setItem("vttes_userscript_config",o)},window.r20es.onAppLoad=u.EventEmitter.copyExisting(window.r20es.onAppLoad),window.r20es.onPageChange=u.EventEmitter.copyExisting(window.r20es.onPageChange),window.r20es.isLoading&&window.r20es.onAppLoad.addEventListener(function(){window.r20es.isLoading=!1}),window.r20es.onLoadingOverlayHide=function(){if("r20es"in window){var e=!1;window.r20es.isWindowLoaded||(window.r20es.isWindowLoaded=!0,window.r20es.onAppLoad.fire(),e=!0),window.r20es.onPageChange.fire(e)}else alert("VTTES global state is undefined. VTTES will not function properly.")},window.r20es.keys=window.r20es.keys||{altDown:!1,shiftDown:!1,ctrlDown:!1,metaDown:!1},window.r20es.onDocumentMouseUp=function(e){window.r20es.keys.altDown=e.altKey,window.r20es.keys.shiftDown=e.shiftKey,window.r20es.keys.ctrlDown=e.ctrlKey,window.r20es.keys.metaDown=!e.metaKey&&e.key&&"OS"===e.key?"keydown"===e.type:e.metaKey},document.addEventListener("keyup",window.r20es.onDocumentMouseUp),document.addEventListener("keydown",window.r20es.onDocumentMouseUp);var b=window.localStorage.getItem("vttes_userscript_config"),N={};if(b)try{N=JSON.parse(b)}catch(e){console.error("Failed to parse vttes config data",b,e)}for(var T in window.r20es.hooks){var v=window.r20es.hooks[T],k=N[T]||{};v.config?Object.assign(v.config,k):v.config=k,"enabled"in v.config||(v.config.enabled=!0)}window.r20es.have_configs_been_loaded=!0}},function(e,t,n){"use strict";t.__esModule=!0;var o=n(45),r=n(46),i=n(47),a=n(48),l=n(49),s=n(50),c=n(51),d=n(52),u=n(53),p=n(54),h=n(55),m=n(56),f=n(57),g=n(58),M=n(59),y=n(60),b=n(61),N=n(62),T=n(63),v=n(64),k=n(65),_=n(66),w=n(67),V=n(68),R=n(69),E=n(70),U=n(71),x=n(72),D=n(73),S=n(74),O=n(75),F=n(76),Z=n(77),j=n(78),W=n(79),z=n(80),I=n(81),L=n(82),C=n(83),A=n(84),Y=n(85),Q=n(86),B=n(87),G=n(88),J=n(89),H=(n(90),n(91)),X=n(92),P=n(93),K=n(94),q=n(95),$=n(96),ee=n(97),te=n(98),ne={};t.VTTES_MODULE_CONFIGS=ne;var oe=function(e){return ne[e.id]=e};oe(Y.default),oe(G.default),oe(B.default),oe(A.default),oe(C.default),oe(L.default),oe(I.default),oe(W.default),oe(o.default),oe(j.default),oe(U.default),oe(r.default),oe(i.default),oe(a.default),oe(l.default),oe(s.default),oe(z.default),oe(u.default),oe(c.default),oe(d.default),oe(F.default),oe(p.default),oe(h.default),oe(m.default),oe(f.default),oe(Z.default),oe(g.default),oe(S.default),oe(M.default),oe(y.default),oe(b.default),oe(N.default),oe(T.default),oe(v.default),oe(k.default),oe(O.default),oe(_.default),oe(x.default),oe(w.default),oe(V.default),oe(R.default),oe(D.default),oe(Q.default),oe(J.default),oe(X.default),oe(P.default),oe(K.default),oe(q.default),oe($.default),oe(ee.default),oe(H.default),oe(te.default),oe(E.default)},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"alternativeRadialMenu",name:"Alternative Token Radial Menu",description:"Replaces the default token radial token menu with a more compact and simplistic one.",category:"Canvas",gmOnly:!1,media:{"radial.png":"Reworked radial menu","radial_min.png":"Compact version"},configView:{opacity:{type:"slider",display:"Opacity",sliderMin:0,sliderMax:1},superMinimal:{type:"checkbox",display:"Compact mode"},auto_width:{type:"checkbox",display:"Automatically space the left and right sides to not cover up the token."}},config:{opacity:1,superMinimal:!1,auto_width:!0}}}).call(this,"src/modules/AlternativeRadialMenu")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"animationDisable",name:"Disable Animations",description:"Disables animations: token radial menu opening, page toolbar menu opening/close.",category:"Canvas",gmOnly:!1,media:{"no_radial_anim.webm":"No token radial menu animation"},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"*30),",search_from_index_offset:-300,find:["setTimeout(function(){$(",1,').addClass("open"),',2,'.find(".button div.hasnumber").textfill(20)},',3,"*30),",3,"++"],replace:['\nif(window.r20es && window.r20es.shouldDoCustomAnim && window.r20es.shouldDoCustomAnim("disableRadial")) { \n $(',1,').addClass("open");',2,'.find(".button div.hasnumber").textfill(20);\n} \nelse { \n ',0," \n}"]},{search_from:"*30),",find:["setTimeout(function(){",2,'.find(".button").addClass("animcomplete")},250)'],replace:['\n1;\nif(window.r20es && window.r20es.shouldDoCustomAnim && window.r20es.shouldDoCustomAnim("disableRadial")) { \n ',2,'.find(".button").addClass("animcomplete");\n}\nelse { \n ',0," \n}"]},{search_from:"if(d20.pagetoolbar.noClosing)return;",find:["?(",4,'.animate({top:"-1px"},300).removeClass("closed"),'],replace:["?(",4,'.animate({top:"-1px"},(window.r20es && window.r20es.shouldDoCustomAnim && window.r20es.shouldDoCustomAnim("disablePageToolbar")) ? 1 : 300).removeClass("closed"),']},{search_from:"if(d20.pagetoolbar.noClosing)return;",find:[":(",4,".animate({top:`-${",4,".height()}px`},300,()=>{",4,'.addClass("closed"),$("#page-toolbar .pages").hide(),_.delay(()=>{$("#page-toolbar .pages input:text").trigger("blur")})})'],replace:[":(",4,'.animate({top:"-"+',4,'.height()+"px"},\n(window.r20es && window.r20es.shouldDoCustomAnim && window.r20es.shouldDoCustomAnim("disablePageToolbar")) ? 1 : 300,\nfunction(){',4,'.addClass("closed"),$("#page-toolbar .pages").hide(),_.delay(function(){$("#page-toolbar .pages input").trigger("blur")})})']}]}],configView:{disableRadial:{type:"checkbox",display:"Disable token radial button menu animations"},disablePageToolbar:{type:"checkbox",display:"Disable page toolbar animations"}},config:{disableRadial:!1,disablePageToolbar:!1}}}).call(this,"src/modules/AnimationDisable")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"autoPingNextToken",name:"Ping Visible Token",description:"When advancing initiative, this module will automatically ping the next token only if it is in the player token layer.",category:"Initiative",gmOnly:!0,media:{"ping_token.webm":"Automated pinging"},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"nextTurn(){",find:["splice(0,1);",1,".push(",-1,"[0]);"],replace:[0,"if(window.r20es && window.r20es.pingInitiativeToken) {window.r20es.pingInitiativeToken(",1,"[0]);}"]}]}]}}).call(this,"src/modules/AutoPingNextToken")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"autoSelectNextToken",name:"Select Token",description:"When advancing initiative, this module will automatically select the next token in the initiative order.",category:"Initiative",gmOnly:!0,media:{"select_token.webm":"Automated token selection"},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"nextTurn(){",find:["splice(0,1);",1,".push(",-1,"[0]);"],replace:[0,"if(window.r20es && window.r20es.selectInitiativeToken) {window.r20es.selectInitiativeToken(",1,"[0]);}"]}]}]}}).call(this,"src/modules/AutoSelectNextToken")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"autoSortInitiative",name:"Automatically Sort Initiative",description:"Automatically sorts initiative order when a new token has been added to it by any player. After the list has been sorted, it is reorganized so that the token that was first in the list before the sort is still the first in the list after the sort.",category:"Initiative",gmOnly:!0,media:{"sort_init.webm":"Initiative being sorted automatically."},configView:{sortBy:{display:"Sort-By",type:"dropdown",dropdownValues:{0:"Numerically: Ascending",1:"Numerically: Descending",2:"Alphabetically: A-Z",3:"Alphabetically: Z-A",card:"By Card/Suit"}},respectFirstTokenPosition:{display:"Respect the position of the current token in the order",type:"checkbox"}},config:{sortBy:1,respectFirstTokenPosition:!0}}}).call(this,"src/modules/AutoSortInitiative")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"bulkMacros",name:"Bulk Macros",description:'Adds a "Bulk Macros" option to the token right click menu which lists macros that can be rolled for the whole selection in bulk.',category:"Token",gmOnly:!0,media:{"bulk_macro.webm":"Rolling initiative for 3 tokens at once"},configView:{delayBetweenRolls:{type:"number",display:"The milliseconds that will be waited in between macro rolls for tokens. If you're having issues with API scripts, tweak this value. A good start is 100."},reselectAfter:{type:"checkbox",display:"Reselect tokens after rolling? Disabling this might fix issues with API scripts."},performRollsSequentially:{type:"checkbox",display:"Roll sequentially: Finish doing a roll before performing the next one. Cancelling one roll will cancel the whole batch."}},config:{delayBetweenRolls:0,reselectAfter:!0,performRollsSequentially:!1}}}).call(this,"src/modules/BulkMacro")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"changeRepresentsIdWhenDuplicating",name:'Reassign "Represents" when duplicating',description:'When duplicating a character in the journal and if that character has a default token, this module will reassign the "Represents" value of that default token to the newly duplicated character.',category:"Token",gmOnly:!0,mods:[{includes:"vtt.bundle.js",stencils:[{search_from:'_template:$("#tmpl_charactereditor")',find:["name}`;const ",1,"=",2,".model.collection.create"]},{search_from:'_template:$("#tmpl_charactereditor")',find:["model._blobcache.defaulttoken&&(",3,".defaulttoken=",2,".model._blobcache.defaulttoken"],replace:["model._blobcache.defaulttoken&&(",3,".defaulttoken = (window.r20es && window.r20es.replaceIdOnDupe) ? window.r20es.replaceIdOnDupe(",2,", ",1,") : ",2,".model._blobcache.defaulttoken"]}]}]}}).call(this,"src/modules/ChangeIdWhenDuplicating")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"characterImportExport",name:"Journal Importer/Exporter",description:"Provides character, handout and character component (i.e weapons, spells, items etc) importing and exporting (in the journal and on sheets).",category:"Exporting/Importing",gmOnly:!1,media:{"char_import.png":"Journal widget","sheet_export.png":"Sheet tab"},mods:[{includes:"vtt.bundle.js",find_replace:[{find:"<button class='broadcasthandout btn'>Show to Players</button>",replace:"<button class='vttes_overwrite_handout btn' style='position: absolute; top: 10px; right: 316px'>Overwrite</button><button class='vttes_export_handout btn' style='position: absolute; top: 10px; right: 250px'>Export</button> >>R20ES_MOD_FIND>>"},{find:'$("body").on("click",".broadcasthandout",',replace:'\n $("body").on("click",".vttes_overwrite_handout", (e) => {\n if(window.r20es && window.r20es.overwrite_handout) {\n window.r20es.overwrite_handout(e);\n }\n }), $("body").on("click",".vttes_export_handout", (e) => {\n if(window.r20es && window.r20es.export_handout) {\n window.r20es.export_handout(e);\n }\n }), >>R20ES_MOD_FIND>>'}]}]}}).call(this,"src/modules/CharacterIO")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"counterTokenName",name:"Token Counter",description:"Adds an option to the token right-click menu that will add an increasing counter to the name of all selected tokens. Submitted by OLStefan.",category:"Token",gmOnly:!0}}).call(this,"src/modules/CounterTokenName")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"activeLayerHud",name:"Display Current Layer on Canvas",description:"Displays the current edit layer and whether the select tool is active.",media:{"gm_bg.png":"GM layer identifier","map_bg.png":"Page layer identitifer","tokens_bg.png":"Player token layer identifier"},category:"Canvas",gmOnly:!0,configView:{size:{type:"number",display:"Size"},globalOpacity:{type:"slider",display:"Global opacity",sliderMin:0,sliderMax:1},showNotSelecting:{type:"checkbox",display:'Show "Not selecting!" when the current tool is not the select tool?'},notSelectingOpacity:{type:"slider",display:'"Not selecting" box opacity',sliderMin:0,sliderMax:1},backgroundOpacity:{type:"slider",display:"Background opacity",sliderMin:0,sliderMax:1},textFillOpacity:{type:"slider",display:"Text shadow opacity",sliderMin:0,sliderMax:1},textFillColor:{type:"color",display:"Text shadow color"},textOutlineOpacity:{type:"slider",display:"Text outline opacity",sliderMin:0,sliderMax:1},textOutlineColor:{type:"color",display:"Text outline color"},corner:{type:"dropdown",display:"Position",dropdownValues:{bottomRight:"Bottom Right",bottomLeft:"Bottom Left",topRight:"Top Right",topLeft:"Top Left"}}},config:{size:26,showNotSelecting:!0,notSelectingOpacity:1,globalOpacity:.75,backgroundOpacity:1,textFillOpacity:1,textFillColor:[255,255,255],textOutlineOpacity:1,textOutlineColor:[0,0,0],corner:"bottomRight"},mods:[{includes:"vtt.bundle.js",stencils:[{find:["})}setMode(",1,"){"],replace:[0,"if(window.r20es && window.r20es.setModePrologue) {window.r20es.setModePrologue(",1,");}"]},{find:["function setMode(",2,"){"],replace:[0,"if(window.r20es && window.r20es.setModePrologue) {window.r20es.setModePrologue(",2,");}"]}]}]}}).call(this,"src/modules/DrawCurrentLayer")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"duplicateInJournalContextMenu",name:'"Duplicate" in the Journal Context Menu',description:'Adds a "Duplicate" entry, functioning as a shortcut to duplicate button found in the edit page of sheets, to the context menu of items found in the journal.',category:"Journal",gmOnly:!0,media:{"duplicate.png":"The duplicate button"},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"data-action-type=showtoplayers",find:["const ",-1,"=",1,'.attr("data-itemid")']},{find:['$("#journalitemmenu ul").on(mousedowntype,"li[data-action-type=showtoplayers]"'],replace:['\n $("#journalitemmenu ul").on(mousedowntype, "li[data-action-type=r20esduplicate]", function () {\n if(window.r20es && window.r20es.onJournalDuplicate) window.r20es.onJournalDuplicate(',1,'.attr("data-itemid"))\n }),\n $("#journalitemmenu ul").on(mousedowntype,"li[data-action-type=showtoplayers]"']}]}]}}).call(this,"src/modules/DuplicateButton")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"exposeD20",name:"Expose D20",description:"",category:"Misc.",force:!0,mods:[{includes:"vtt.bundle.js",find_replace:[{find:"var exports=exports||{},",replace:"window.d20 = d20; var exports=exports||{},"}]}]}}).call(this,"src/modules/ExposeD20")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"initiativeShortcuts",name:"Advance Initiative Shortcut",description:"Creates a shortcut for advancing (Ctrl+Right Arrow) in the initiative list. Advanced shortcuts must be enabled for this to work. See https://wiki.roll20.net/Advanced_Shortcuts",category:"Initiative",gmOnly:!0}}).call(this,"src/modules/InitiativeAdvanceShortcut")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"macroGeneratorBase",name:"Character Sheet Ability Macro Generator",description:'Places a "Generate" button in the Attributes & Abilities that will open up the generate ability macros dialog. Only certain character sheets are supported. If you\'d like to add your own sheet, submit a GitHub PR.',category:"Journal",gmOnly:!1}}).call(this,"src/modules/MacroGenerator")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"macroIO",name:"Player Macro Importer/Exporter",description:'Allows exporting and importing of player macros and the macro bar. Controls can be found in the "Collection" sidebar tab.',category:"Exporting/Importing",gmOnly:!1,media:{"macro_io.png":"Collection sidebar widget"}}}).call(this,"src/modules/MacroIO")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"middleClickToTokenLayer",name:"Mouse Click to Switch to Token Layer",description:"This module allows the use of mouse clicking (default mouse3/scroll wheel) on a token. Doing so will switch the current edit layer to the layer of the token.",category:"Canvas",gmOnly:!0,media:{"middle_click.webm":"Middle-clicking on a token in the GM layer with select token option on when the current edit is player tokens ."},configView:{select:{display:"Also select token",type:"checkbox"},switchToGmLayer:{display:"Allow switching to tokens in the GM layer.",type:"checkbox"},switchToTokenLayer:{display:"Allow switching to tokens in the player token layer.",type:"checkbox"},switchToMapLayer:{display:"Allow switching to tokens in the map layer.",type:"checkbox"},switchToLightsLayer:{display:"Allow switching to tokens in the lights layer",type:"checkbox"},switchToForegroundLayer:{display:"Allow switching to tokens in the betteR20 foreground layer",type:"checkbox",onlyWhenHasB20:!0},switchToWeatherLayer:{display:"Allow switching to tokens in the betteR20 weather layer",type:"checkbox",onlyWhenHasB20:!0},switchToBackgroundLayer:{display:"Allow switching to tokens in the betteR20 background layer",type:"checkbox",onlyWhenHasB20:!0},modAlt:{display:"Must hold down the ALT key",type:"checkbox"},modShift:{display:"Must hold down the SHIFT key",type:"checkbox"},modCtrl:{display:"Must hold down the CTRL key",type:"checkbox"},modMeta:{display:"Must hold down the meta key",type:"checkbox"},mouseButtonIndex:{display:"Mouse button index",type:"mouse_button_index"}},config:{select:!1,switchToGmLayer:!0,switchToTokenLayer:!0,switchToMapLayer:!1,switchToLightsLayer:!1,switchToForegroundLayer:!1,switchToWeatherLayer:!1,switchToBackgroundLayer:!1,modAlt:!1,modShift:!1,modCtrl:!1,modMeta:!1,mouseButtonIndex:1}}}).call(this,"src/modules/MiddleClickSelect")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"autoFocusNextToken",name:"Move Camera to Token",description:"When advancing initiative, this module will move your camera to the next token in the initiative order. This camera movement is local, meaning other players will not have their camera moved.",category:"Initiative",gmOnly:!0,media:{"move_cam.webm":"Camera moving between 4 tokens"},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"nextTurn(){",find:["splice(0,1);",1,".push(",-1,"[0]);"],replace:[0,"if(window.r20es && window.r20es.moveCameraTo) {window.r20es.moveCameraTo(",1,"[0]);}"]}]}]}}).call(this,"src/modules/MoveCameraToToken")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"createFinalPageLoadEvent",name:"createFinalPageLoadEvent",description:"",category:"Misc.",gmOnly:!1,force:!0,mods:[{includes:"vtt.bundle.js",find_replace:[{find:'$("#loading-overlay").hide()',replace:'$("#loading-overlay").hide();if(window.r20es && window.r20es.onLoadingOverlayHide) window.r20es.onLoadingOverlayHide(); '}]}]}}).call(this,"src/modules/PageLoadEvent")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"rollAndApplyHitDice",name:"Roll & Apply Hit Dice",description:'Adds a "Hit Dice" option to the canvas token context menu which will roll and apply hit dice for the selected group of tokens.',category:"Token",gmOnly:!0,media:{"hit_dice.webm":"Rolling & Applying hit dice for a single token then a group of 3."},configView:{diceFormulaAttribute:{display:"Hit dice formula attribute",type:"string"},bar:{display:"HP Bar",type:"dropdown",dropdownValues:{bar1:"Bar 1",bar2:"Bar 2",bar3:"Bar 3"}},diceFormulaMacro:{display:"(Optional) Custom Roll.",type:"string"},diceFormulaSumInline:{display:"(Optional) Custom roll: sum inline rolls. If unchecked, the value of the last inline roll will be used.",type:"checkbox"}},config:{diceFormulaAttribute:"npc_hpformula",bar:"bar3",diceFormulaMacro:"",diceFormulaSumInline:!0}}}).call(this,"src/modules/RollAndApplyHitDice")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"pluginSettings",name:"pluginSettings",description:"",category:"Misc.",gmOnly:!1,force:!0}}).call(this,"src/modules/Settings")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"sheetTabApi",name:"sheetTabApi",description:"",category:"Misc.",gmOnly:!1,force:!0}}).call(this,"src/modules/SheetTabApi")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(18),r=n(0);t.default={filename:r.default(e),id:"importExportTable",name:"Table Importer/Exporter",description:'Provides rollable table importing and exporting. Supports TableExport format tables. Controls can be found in the "Collection" sidebar tab.',category:"Exporting/Importing",gmOnly:!0,media:{"table_io.png":"Collection sidebar widget."},mods:[{includes:"vtt.bundle.js",find_replace:[{find:'this.$el.on("click",".deleterollabletable"',replace:'this.el.setAttribute("'+o.default.TableIdAttribute+'", this.model.get("id")),this.$el.on("click",".deleterollabletable"'}]}]}}).call(this,"src/modules/TableIO")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"tokenContextMenuApiModule",name:"tokenContextMenuApiModule",description:"",category:"Misc.",gmOnly:!1,force:!0}}).call(this,"src/modules/TokenContextMenuApi")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"tokenLayerDrawing",name:"Draw Token Layer on Tokens",description:"Draws an indicator at the bottom left of each token that indicates which layer it is on.",category:"Canvas",gmOnly:!0,media:{"token_mp.png":"A token in the map layer","token_tk.png":"A token in the player token layer","token_gm.png":"A token in the GM layer"},mods:[{includes:"vtt.bundle.js",stencils:[{find:["this._drawStatusIcons(",1,"),",1,".restore(),"],replace:["this._drawStatusIcons(",1,"),",1,".restore(),(window.r20es && window.r20es.tokenDrawBg && window.r20es.tokenDrawBg(",1,", this)),"]}]}],configView:{globalAlpha:{display:"Global opacity",type:"slider",sliderMin:0,sliderMax:1},backgroundOpacity:{display:"Background opacity",type:"slider",sliderMin:0,sliderMax:1},rotateAlongWithToken:{display:"Rotate overlay along with token",type:"checkbox"},textStrokeWidth:{display:"Text outline width",type:"number",numberMin:0},textStrokeOpacity:{display:"Text stroke opacity",type:"slider",sliderMin:0,sliderMax:1},textStrokeColor:{display:"Text stroke color",type:"color"},textFillOpacity:{display:"Text fill opacity",type:"slider",sliderMin:0,sliderMax:1},textFontSize:{display:"Font size",type:"number",numberMin:0},textFillColor:{display:"Text fill color",type:"color"},drawOnGmLayer:{display:"Draw on tokens in the GM layer.",type:"checkbox"},drawOnTokenLayer:{display:"Draw on tokens in the player token layer.",type:"checkbox"},drawOnMapLayer:{display:"Draw on tokens in the map layer.",type:"checkbox"},drawOnLightsLayer:{display:"Draw on tokens in the lights layer",type:"checkbox"},drawOnForegroundLayer:{display:"Draw on tokens in the betteR20 foreground layer",type:"checkbox",onlyWhenHasB20:!0},drawOnWeatherLayer:{display:"Draw on tokens in the betteR20 weather layer",type:"checkbox",onlyWhenHasB20:!0},drawOnBackgroundLayer:{display:"Draw on tokens in the betteR20 background layer",type:"checkbox",onlyWhenHasB20:!0}},config:{globalAlpha:1,backgroundOpacity:.5,textStrokeWidth:2,textStrokeOpacity:1,textStrokeColor:[0,0,0],textFillOpacity:1,textFillColor:[255,255,255],textFontSize:18,rotateAlongWithToken:!1,drawOnGmLayer:!0,drawOnTokenLayer:!0,drawOnMapLayer:!0,drawOnLightsLayer:!0,drawOnWeatherLayer:!0,drawOnForegroundLayer:!0,drawOnBackgroundLayer:!0}}}).call(this,"src/modules/TokenLayerDrawing")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"transparentPaperDivs",name:"Transparent Canvas UI Dialogs",description:"Provides a way to set the opacity of floating UI dialogs.",category:"Canvas",gmOnly:!1,media:{"transparent_dialog.png":"A transparent edit token dialog."},configView:{opacity:{display:"Opacity",type:"slider",sliderMin:0,sliderMax:1}},config:{opacity:1}}}).call(this,"src/modules/TransparentPaper")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),name:"Welcome",id:"welcomeScreen",description:"The welcome popup message.",force:!0,forceShowConfig:!0,gmOnly:!1,category:"Misc.",configView:{showWelcomePopup:{display:"Show welcome message.",type:"checkbox"},showStartupGuide:{display:"Show startup guide",type:"checkbox"},showChangelog:{display:"Show changelog",type:"checkbox"}},config:{hasShownDiscordPoll:!1,showWelcomePopup:!0,showStartupGuide:!0,showChangelog:!0,previousVersion:"",has_shown_ui_preview_incompatibility_message:!1}}}).call(this,"src/modules/Welcome")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"alternativePageToolbarMenu",name:"Alternative Page Toolbar Menu",description:"Replaces the default page toolbar menu with a more concise one. Right clicking the name of the page will enable you to edit it. Vivaldi users: double right-click to edit name.",category:"Canvas",gmOnly:!1,media:{"page_toolbar.png":"Alternative page toolbar menu on the right side."},configView:{opacity:{type:"slider",display:"Opacity",sliderMin:0,sliderMax:1},location:{type:"dropdown",display:"Location",dropdownValues:{right:"Right",left:"Left"}}},config:{opacity:1,location:"right"}}}).call(this,"src/modules/AlternatePageToolbarMenu")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"tokenResize",name:"Token Resize",description:"Allows you to quickly resize map tokens to fit the canvas size or to fit a specific grid size.",category:"Token",gmOnly:!1,media:{"token_resize2.webm":"Two map tokens being resized to fit the canvas."},configView:{placeTopLeft:{type:"checkbox",display:"Position tokens in the top-left corner after resizing"},useUnits:{type:"checkbox",display:"Use map units (feet, meters, km, etc) instead of squares."}},config:{placeTopLeft:!0,useUnits:!1,lastSquareWidth:70,lastSquareHeight:70,lastNumSquaresX:25,lastNumSquaresY:25}}}).call(this,"src/modules/TokenResize")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"hidePlayerList",name:"Hide Player List",description:"Hides the player list.",category:"Canvas",gmOnly:!1,config:{enabled:!1}}}).call(this,"src/modules/HidePlayerList")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"characterTokenModifier",name:"Character Token Editor",description:"Adds a tab to character sheets that provides a quick way to create and modify character tokens.",category:"Token",gmOnly:!1,media:{"token_editor.png":"The editor being used to view a Adult Brass Dragon token."}}}).call(this,"src/modules/CharacterTokenModifier")},function(e,t,n){"use strict";t.__esModule=!0,t.default={id:"seenadOverride",name:"seenadOverride",description:"",category:"Misc.",gmOnly:!1,force:!0,mods:[{includes:"/editor/startjs",find_replace:[{find:'$(document).on("ready", function() { d20ext.showGoogleAd(); });',replace:"d20ext.seenad = true; d20ext.showingAds = false; d20ext.adComplete = true; /* replaced */ "}]}]}},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"nightMode",name:"Force Background Color",description:"Force a certain background. The night mode is deprecated in favor of RedReign's Dark Theme.",category:"Canvas",gmOnly:!1,urls:{"You can find it here":"https://openuserjs.org/scripts/Pharonix/Roll20_Dark/source"},configView:{backgroundColor:{display:"Canvas Background Color",type:"color"},backdrop_color:{display:"Backdrop Color",type:"color"},only_force_if_default:{display:"Only force Canvas and Backdrop colors if the page has it set to default",type:"checkbox"}},config:{backgroundColor:[13,14,15],backdrop_color:[10,11,12],only_force_if_default:!0,enabled:!1}}}).call(this,"src/modules/NightMode")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"jukeboxIO",name:"Jukebox Importer/Exporter",description:'Allows exporting and importing of jukebox playlists. Controls can be found in the "Jukebox" sidebar tab.',category:"Exporting/Importing",gmOnly:!0}}).call(this,"src/modules/JukeboxIO")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"arrowKeysCameraControls",name:"Arrow Key Camera Controls",description:"Allows the camera to be moved by pressing the arrow keys as long as a token is not selected",category:"Canvas",gmOnly:!1}}).call(this,"src/modules/ArrowKeysMoveCanvas")},function(e,t,n){"use strict";(function(e){var o,r;t.__esModule=!0;var i=n(19),a=n(0);t.default={filename:a.default(e),id:"autoOpenInitiativeTracker",name:"Open Turn Tracker On Initiative",description:"Automatically opens the turn tracker when somebody rolls initiative.",category:"Initiative",gmOnly:!0,configView:(o={},o[i.DIALOG_OPEN_DELAY_KEY]={display:"Delay between opening the initiative dialog in milliseconds (low values may cause issues)",type:"number"},o),config:(r={},r[i.DIALOG_OPEN_DELAY_KEY]=500,r)}}).call(this,"src/modules/AutoOpenInitiativeTracker")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"toolsMenu",name:"toolsMenu",description:"",category:"Misc.",gmOnly:!1,force:!0}}).call(this,"src/modules/ToolsMenu")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"animatedBackground",name:"Animated Background",description:"Displays an animated background if the GM has one set up for the page. Setup can be found in the top-right corner, look for a orange film button. Players need to have VTTES installed to see animated backgrounds.",category:"Canvas",gmOnly:!1,media:{"animated_bg.webm":"Setup & usage"},config:{muteAudio:!1,audioVolume:.1,video_history:[]},configView:{muteAudio:{display:"Mute Audio?",type:"checkbox"},audioVolume:{display:"Audio Volume",type:"slider",sliderMin:0,sliderMax:1}},mods:[{includes:"vtt.bundle.js",stencils:[{find:["d20.engine.setZoom=(",2,","]},{find:["updateCanvasZoom:()=>d20.engine.canvasZoom=",1,".canvasZoom"],replace:["updateCanvasZoom:()=> {\n if(window.r20es && window.r20es.onZoomChange) {\n window.r20es.onZoomChange(",2,");\n }\n d20.engine.canvasZoom = ",1,".canvasZoom;\n }"]},{search_from:"requestAnimationFrame(d20.engine.renderLoop)",search_from_index_offset:-4e3,find:["currentPageScene)==null||",3,".updateCanvasTexture()"],replace:["currentPageScene) == null || (window.r20es.manual_composite != null ? window.r20es.manual_composite() : ",3,".updateCanvasTexture())"]}]}]}}).call(this,"src/modules/AnimatedBackgroundLayer")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"rememberTextToolSettings",name:"Remember Text Tool Settings",description:"Remembers the last used settings for the text tool.",category:"Canvas",gmOnly:!1,config:{copyTextSettingsOnSelect:!1,color:"rgb(0,0,0)",size:16,font:"Arial"},configView:{copyTextSettingsOnSelect:{display:"Mirror selected text settings?",type:"checkbox"},color:{display:"Current Text Color",type:"string"},size:{display:"Current Text Size",type:"number"},font:{display:"Current Text Font",type:"string"}},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"d20.engine.editText=function",find:['.get("fontStyle");',1,"const"],replace:['.get("fontStyle"); \nif((window.r20es && window.r20es.copyTextSettingsOnSelect) || !window.r20es) { \n',1,"\n}\nconst "]},{search_from:'"fontSize",parseInt',search_from_index_offset:-1e3,find:['$("body").on("shape_selected","#editor",(',3,",",4,")=>{",4,'.type=="text"'],replace:['$("body").on("shape_selected","#editor",(',3,",",4,")=>{if((window.r20es && window.r20es.copyTextSettingsOnSelect) || !window.r20es)",4,'.type=="text"']}]}]}}).call(this,"src/modules/RememberTextToolSettings")},function(e,t,n){"use strict";(function(e){var o,r;t.__esModule=!0;var i=n(20),a=n(0);t.default={filename:a.default(e),id:"adjustableOpacity",name:"Adjustable GM Layer opacity",description:"Allows adjusting the opacity of the GM layer.",category:"Canvas",gmOnly:!0,configView:(o={},o[i.ADJUSTABLE_OPACITY_PASSIVE_GM_LAYER_CONFIG_KEY]={type:"slider",display:"GM Layer opacity",sliderMin:0,sliderMax:1},o),config:(r={enabled:!1},r[i.ADJUSTABLE_OPACITY_PASSIVE_GM_LAYER_CONFIG_KEY]=1,r)}}).call(this,"src/modules/AdjustableOpacity")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(21),r=n(0);t.default={filename:r.default(e),id:"tokenFromUrl",name:"Create Token From URL",description:'Allows creating tokens on the canvas by right-clicking the canvas and pressing "'+o.TOKEN_FROM_IMG_BUTTON_NAME+'"',gmOnly:!0,category:"Libre"}}).call(this,"src/modules/TokenFromImg")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"disablePlayerDrawing",name:"Disable Player Drawing",description:"Disables the drawing/text tools for certain players. Only the GM needs to have the extension installed for this to work. WARNING: This will load all pages in your game and may cause performance issues or loading slowdowns.",category:"Canvas",gmOnly:!0,media:{"disable_drawing.png":"Disable/Enable drawing permission button"},config:{enabled:!1}}}).call(this,"src/modules/DisablePlayerDrawings")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(22),r=n(0);t.default={filename:r.default(e),id:"setTableEntryAvatarByUrl",name:"Set Rollable Table Avatar By Url",description:"Allows setting the images/avatars of rollable table entries by an image url.",category:"Misc.",gmOnly:!1,media:{"table_entry_by_url.png":"Use this button in the table entry dialog."},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"tmpl_tableitemeditor",find:["()=>{",1,'.$el.is(":visible")&&',1,'.render()}),this.$el.on("click",".deleteitem"'],replace:["()=>{",1,'.$el.is(":visible")&&',1,'.render()}),this.el.setAttribute("'+o.default.TABLE_ID_ATTRIBUTE+'",',1,'.model.collection.rollabletable.id),this.el.setAttribute("'+o.default.TABLE_ENTRY_ID_ATTRIBUTE+'",',1,'.model.id),this.$el.on("click",".deleteitem"']}]}]}}).call(this,"src/modules/SetTableEntryAvatarByUrl")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"libreAudio",name:"Libre Audio",description:"Allows creation and playback of tracks via their URL. Removes the 16 listener cap on My Audio Tracks. Refreshing the page is recommended after disabling/enabling this module in order to avoid issues. Players need to have VTTES installed to hear tracks added via Libre Audio.",category:"Libre",gmOnly:!1,media:{"libre_audio.png":"Add by URL button"},mods:[{includes:"vtt.bundle.js",stencils:[{search_from:"Unable to play music...Flash blocked",find:["if(",2,'.get("playing")&&',2,'.get("softstop")==!1)']},{search_from:"dismiss_myaudiocap",find:["`/audio_library/play/${campaign_id}/${",1,'.split("-")[0]}`'],replace:["((window.r20es && window.r20es.canPlaySound && window.r20es.canPlaySound(",2,")) ? ",1," : ",0,")"]},{find:['"My Audio"){if(d20.Campaign.players.filter(',3,"=>",3,'.get("online")).length>15'],replace:['"My Audio"){if(false']}]}]}}).call(this,"src/modules/LibreAudio")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"tokenBarPositionAdjust",name:"Token Status Display Adjustments",description:"Allows adjusting how status icons are displayed on tokens.",category:"Token",gmOnly:!1,media:{"adjusted_token_status.png":"Idle & opaque status icons displayed outside of the token."},mods:[{includes:"vtt.bundle.js",stencils:[{find:["},this._icon_defaults);this._positionAndScaleStatusIcons(",1,",",2,".length),",3,".save(),"],replace:["},this._icon_defaults);\nif(window.r20es && window.r20es.statusDraw) { \n if(!window.r20es.statusDraw(",3,", this, ",2,", ",1,")) { \n return;\n } \n} \nelse { \n this._positionAndScaleStatusIcons(",1,",",2,".length);\n ",3,".save();\n}"]}]}],configView:{idle_status_icon_opacity:{display:"Idle status icon alpha (when the token is not selected)",type:"slider",sliderMin:0,sliderMax:1},active_status_icon_opacity:{display:"Selected status icon alpha",type:"slider",sliderMin:0,sliderMax:1},position_status_icons_outside_the_token:{display:"Place the status icons outside of the token.",type:"checkbox"}},config:{idle_status_icon_opacity:1,active_status_icon_opacity:1,position_status_icons_outside_the_token:!1}}}).call(this,"src/modules/TokenBarPositionAdjust")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"perfImprovements",name:"Performance Improvements",description:"Attempts to improve performance.",category:"Misc.",gmOnly:!1,config:{disable_frame_recorder:!0},configView:{disable_frame_recorder:{display:"Disable Renderer Profiler (if present)",type:"checkbox"}}}}).call(this,"src/modules/PerformanceImprovements")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),name:"Chrome Update Checker",id:"chromeUpdateChecker",description:"Automatically checks for new updates (Chrome only).",category:"Misc.",gmOnly:!1}}).call(this,"src/modules/ChromeUpdateChecker")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"webpackFixes",name:"Webpack Fixes",description:"",category:"Misc.",force:!0,mods:[{includes:"vtt.bundle.js",stencils:[{search_from:'throw new Error("Automatic publicPath is not supported in this browser");',search_from_index_offset:-20,find:["if(!",1,')throw new Error("Automatic publicPath is not supported in this browser");'],replace:[1,' = "https://cdn.roll20.net/production/";']}]}]}}).call(this,"src/modules/WebpackFixes")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"characterAvatarfromUrl",name:"Set Character Avatar from URL",description:"Allows you to set the character avatar image via a URL.",category:"Misc.",gmOnly:!1,media:{"set_avatar_from_url.png":"Set avatar image from URL button."}}}).call(this,"src/modules/CharacterAvatarFromURL")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"cameraStartPosition",name:"Default Camera Starting Position",description:"Allows GMs to set the default camera start position to a custom location on the map so that players will see that area first. Players MUST have the extension installed for this to work for them.",category:"Canvas",gmOnly:!1,media:{"default_camera_ui.png":"Setup UI."},config:{send_local_event_messages:!0,move_if_gm:!0},configView:{send_local_event_messages:{display:"Send local system messages for when you toggle/use the default camera",type:"checkbox"},move_if_gm:{display:"Set the default camera on map load even if you're the GM.",type:"checkbox"}}}}).call(this,"src/modules/CameraStartPosition")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"handoutImageFromUrl",name:"Set Handout Image from URL",description:"Allows you to set the handout image via a URL.",category:"Misc.",gmOnly:!1,media:{"set_handout_image_from_url.png":"Set handout image from URL button."}}}).call(this,"src/modules/HandoutImageFromURL")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"customPathWidth",name:"Custom Line Widths",description:"Allows you to set a custom line width for drawing.",category:"Canvas",gmOnly:!1}}).call(this,"src/modules/CustomPathWidth")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(23),r=n(0);t.default={filename:r.default(e),id:"extraRulers",name:"Extra Rulers",description:"Adds radius, box, thick line and cone ruler options. Other players need to have VTTES installed to see them. Available hotkeys: g q -> normal ruler; g r -> radius ruler; g c -> cone ruler; g e -> box ruler; g w -> line ruler.",category:"Canvas",gmOnly:!1,media:{"extra_rulers.png":"Two of the extra rulers."},config:{radius_mode:o.RADIUS_MODE_BURST,box_mode:o.BOX_MODE_BURST,cone_mode:o.CONE_MODE_FLAT,cone_degrees:57.29577951307855,line_mode:o.LINE_MODE_TOTAL_WIDTH,line_width:5,ruler_mode:o.RULER_NORMAL},mods:[{includes:"vtt.bundle.js",stencils:[{find:["})}setMode(",1,"){"],replace:[0,"if(window.r20es && window.r20es.extra_ruler_set_mode) {window.r20es.extra_ruler_set_mode(",1,");}"]},{find:["function setMode(",7,"){"],replace:[0,"if(window.r20es && window.r20es.extra_ruler_set_mode) {window.r20es.extra_ruler_set_mode(",7,");}"]},{search_from:"[-10.16,-24.53]",search_from_index_offset:-700,find:[";var ",-1,"=function(",2,",",3,","]},{find:["y:[0,1]};"],replace:[0,"if(window.r20es && window.r20es.render_extra_rulers) { window.r20es.render_extra_rulers(",2,",",3,"); }"]},{search_from:"d20.engine.drawMeasurements=function",find:[",x:",4,".x-d20.engine.currentCanvasOffset[0],"],replace:[0,"\nvttes_radius_mode: ",4,".vttes_radius_mode,\nvttes_box_mode: ",4,".vttes_box_mode,\nvttes_cone_mode: ",4,".vttes_cone_mode,\nvttes_cone_degrees: ",4,".vttes_cone_degrees,\nvttes_line_mode: ",4,".vttes_line_mode,\nvttes_line_width: ",4,".vttes_line_width,\nvttes_ruler_mode: ",4,".vttes_ruler_mode,"]},{search_from:"[-10.16,-24.53]",search_from_index_offset:-1700,find:["color:",5,".color,flags:",5,".flags,"],replace:[0,"\nvttes_radius_mode: ",5,".vttes_radius_mode,\nvttes_box_mode: ",5,".vttes_box_mode,\nvttes_cone_mode: ",5,".vttes_cone_mode,\nvttes_cone_degrees: ",5,".vttes_cone_degrees,\nvttes_line_mode: ",5,".vttes_line_mode,\nvttes_line_width: ",5,".vttes_line_width,\nvttes_ruler_mode: ",5,".vttes_ruler_mode,"]},{find:["d20.engine.announceMeasure=function(",6,"){"],replace:[0,"\nif(window.r20es && window.r20es.extra_ruler_set_mode) {\n ",6,".vttes_radius_mode = window.r20es.extra_ruler.radius_mode;\n ",6,".vttes_box_mode = window.r20es.extra_ruler.box_mode;\n ",6,".vttes_cone_mode = window.r20es.extra_ruler.cone_mode;\n ",6,".vttes_cone_degrees = window.r20es.extra_ruler.cone_degrees;\n ",6,".vttes_line_mode = window.r20es.extra_ruler.line_mode;\n ",6,".vttes_line_width = window.r20es.extra_ruler.line_width;\n ",6,".vttes_ruler_mode = window.r20es.extra_ruler.ruler_mode;\n}"]}]}]}}).call(this,"src/modules/ExtraRulers")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),id:"fixPatienceJs",name:"fixPatienceJs",description:"",category:"Misc.",force:!0,mods:[{includes:"patience.js",find_replace:[{find:"document.querySelectorAll('head')[0]",replace:"document.body"},{find:"</style>",replace:""},{find:'<style id="patience__styles" type="text/css" media="screen">',replace:""},{find:"patinetHeader.innerHTML += patientStyles;",replace:"{\n const el = document.createElement(\"style\");\n el.id = 'patience__styles';\n el.type = 'text/css';\n el.media = 'screen';\n el.innerText = patientStyles;\n patinetHeader.appendChild(el);\n }"}]}]}}).call(this,"src/modules/FixPatienceJs")},function(e,t,n){"use strict";(function(e){t.__esModule=!0;var o=n(0);t.default={filename:o.default(e),name:"Userscript Update Checker",id:"Userscript Update Checker",description:"Automatically checks for new updates (Userscript only).",category:"Misc.",gmOnly:!1}}).call(this,"src/modules/UserscriptUpdateChecker")},function(e,t,n){"use strict";t.__esModule=!0;var o=n(100),r=n(101),i=n(102),a=n(103),l=n(105),s=n(106),c=n(107),d=n(108),u=n(109),p=n(110),h=n(111),m=n(113),f=n(114),g=n(115),M=n(116),y=n(118),b=(n(119),n(120)),N=n(121),T=n(122),v=n(123),k=n(124),_=n(125),w=n(126),V=n(127),R=n(128),E=n(129),U=n(132),x=n(134),D=n(142),S=n(144),O=n(145),F=n(146),Z=n(147),j=n(148),W=n(149),z=n(150),I=n(151),L=n(164),C=n(165),A=n(167),Y=n(168),Q=n(169),B=n(170),G=n(171),J=n(174),H=n(179),X=n(180),P=n(183),K=[];t.VTTES_MODULES=K;var q=function(e){return K.push(e)};q(o.default),q(r.default),q(i.default),q(a.default),q(l.default),q(s.default),q(c.default),q(d.default),q(u.default),q(p.default),q(h.default),q(m.default),q(f.default),q(g.default),q(M.default),q(y.default),q(P.default),q(b.default),q(N.default),q(T.default),q(v.default),q(k.default),q(_.default),q(w.default),q(V.default),q(R.default),q(E.default),q(U.default),q(x.default),q(D.default),q(S.default),q(O.default),q(F.default),q(Z.default),q(j.default),q(W.default),q(z.default),q(J.default),q(I.default),q(L.default),q(C.default),q(A.default),q(Y.default),q(Q.default),q(B.default),q(G.default),q(H.default),q(X.default)},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(20),a=n(3),l=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.exposeOpacity=function(e){a.R20.setGMLayerOpacity(e)},n.prototype.onSettingChange=function(e,t,o){e===i.ADJUSTABLE_OPACITY_PASSIVE_GM_LAYER_CONFIG_KEY&&(n.exposeOpacity(o),a.R20.renderAll())},n.prototype.setup=function(){var e=this.getHook().config;n.exposeOpacity(e[i.ADJUSTABLE_OPACITY_PASSIVE_GM_LAYER_CONFIG_KEY]),a.R20.renderAll()},n.prototype.dispose=function(){t.prototype.dispose.call(this),delete window.r20es[i.ADJUSTABLE_OPACITY_PASSIVE_GM_LAYER_CONFIG_KEY],a.R20.renderAll()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/AdjustableOpacity")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(4),a=function(t){function n(){var n=t.call(this,e)||this;return n.overrideHandler=function(e){3===e.which&&(e.stopPropagation(),e.preventDefault(),n.originalTextEditHandler.call(e.target))},n.noContextMenu=function(e){return!1},n}return o(n,t),n.prototype.addStyleAsElement=function(e,t){var n=i.createCSSElement(t,e);document.body.appendChild(n)},n.prototype.onSettingChange=function(e,t,n){this.removeStyle(),this.addStyle()},n.prototype.addStyle=function(){var e=this.getHook().config,t="\n#page-toolbar {\n "+("right"===e.location?"right: 440px":"left: 128px")+";\n opacity: "+e.opacity+";\n}\n";"left"===e.location&&(t+='\n #page-toolbar .handle {\n "left: -30px; right: unset !important;"\n }\n '),this.addStyleAsElement(n.constantSheetId,"\n\n#page-toolbar .page-create-new-after {\n display: none;\n}\n\n#page-toolbar .pages .availablepage .page-duplication {\n display: none;\n top: unset;\n left: unset;\n width: unset;\n margin-top: unset;\n right: 0;\n padding: 10px;\n z-index: 10000;\n}\n\n#page-toolbar .pages .availablepage .page-duplication .page-duplication__body .form-group .checkbox {\n width: unset;\n}\n\n#page-toolbar .pages .availablepage .page-actions {\n position: unset;\n top: unset;\n right: unset;\n background-color: unset;\n width: unset;\n border-radius: unset;\n border: unset;\n flex-direction: unset;\n justify-content: unset;\n box-shadow: unset;\n padding-right: 8px;\n}\n\n#page-toolbar .pages .availablepage span.page-title {\n position: unset;\n bottom: unset;\n width: unset;\n text-align: unset;\n display: unset;\n font-size: unset;\n max-width: unset;\n}\n\n#page-toolbar {\n right: unset;\n left: unset;\n max-width: 486px;\n\n max-height: 80%;\n width: 100%;\n height: 100%;\n\n background-color: #222;\n\n border-radius: unset;\n\n z-index: 10500;\n}\n\n#page-toolbar .pages .availablepage span input {\n top: 5px;\n height: 16px;\n width: 90%;\n}\n\n#page-toolbar .activepage {\n background-color: rgb(47, 135, 209) !important;\n}\n\n#page-toolbar .pages .availablepage img.pagethumb {\n width: 32px;\n height: 32px;\n order: 0;\n margin-top: 0;\n cursor: pointer;\n\n box-shadow: unset;\n max-width: unset;\n max-height: unset;\n background-color: unset;\n}\n\n#page-toolbar .pages .availablepage .duplicate {\n display: inline;\n position: relative;\n order: 1;\n margin-left: 8px;\n right: unset;\n top: unset;\n cursor: pointer;\n}\n\n#page-toolbar .pages .availablepage .settings {\n position: relative;\n display: inline;\n order: 2;\n margin-left: 8px;\n cursor: pointer;\n\n top: unset;\n left: unset;\n font-size: 20px;\n background-color: unset;\n padding: 0;\n border-radius: 0\n\n}\n\n#page-toolbar .playerspecificbookmark {\n position: relative;\n order: 4;\n left: 0 !important;\n top: 0 !important;\n}\n\n#page-toolbar .playerbookmark.dropping {\n left: 0;\n border: none;\n border: 3px solid yellow;\n}\n\n#page-toolbar .playerbookmark {\n position: relative;\n display: inline;\n order: 5;\n left: 0;\n cursor: pointer;\n width: 75px;\n margin-left: 8px;\n height: 30px;\n box-sizing: border-box;\n}\n\n#page-toolbar .playerbookmark img {\n transform: rotate(90deg) translateY(-15px) translateX(-25px);\n}\n\n#page-toolbar .pages .availablepage {\n width: 100%;\n height: 32px;\n display: flex;\n align-items: center;\n\n text-align: unset;\n margin-right: unset;\n margin-top: unset;\n position: unset;\n cursor: unset;\n vertical-align: unset;\n}\n\n#page-toolbar .pages .availablepage:nth-child(even) {\n background-color: #333;\n}\n\n#page-toolbar .pages .availablepage span {\n position: relative;\n display: inline;\n max-width: unset;\n width: auto;\n flex: 10;\n order: 0;\n margin-left: 8px;\n font-size: 1.1em;\n white-space: pre;\n\n text-align: unset;\n bottom: unset;\n cursor: pointer;\n\n min-width: 20px;\n min-height: 20px;\n}\n\ndiv#page-toolbar:not(.closed) > div.handle.showtip {\n top: -3px;\n bottom: unset !important;\n}\n\n#page-toolbar .activepage img.pagethumb {\n border: none;\n}\n\n#page-toolbar .availablepage:hover {\n background-color: rgba(47, 135, 209, 0.2) !important;\n}\n\n#page-toolbar .pages div.availablepage:hover img.pagethumb {\n filter: contrast(120%);\n box-shadow: unset;\n}\n\n#page-toolbar .ui-sortable {\n display: flex !important;\n flex-direction: column;\n height: auto;\n overflow-y: auto;\n overflow-x: hidden;\n\n padding-bottom: 32px;\n}\n\n#page-toolbar .container {\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n padding: 0;\n margin: 0;\n\n white-space: unset;\n\n}\n"),this.addStyleAsElement(n.variableSheetId,t),console.log("adding style")},n.prototype.removeStyle=function(){i.findByIdAndRemove(n.constantSheetId),i.findByIdAndRemove(n.variableSheetId)},n.prototype.updateToolbarTop=function(){var e=document.querySelector("#page-toolbar");e.classList.contains("closed")?e.style.top="-"+e.clientHeight+"px":e.style.top="0"},n.prototype.setup=function(){var e=this,t=$("body").data("events").click;if(t){for(var o=0,r=t;o<r.length;o++){var i=r[o];if(i.selector===n.textChangeSelector){this.originalTextEditHandler=i.handler;break}}this.originalTextEditHandler||console.error("Failed to find page name text change click event")}else console.error("Failed to find 'click' event in the body element.");this.originalTextEditHandler&&($("body").off("click",n.textChangeSelector,this.originalTextEditHandler),$("body").on("mousedown",n.textChangeSelector,this.overrideHandler),$("body").on("contextmenu",n.textChangeSelector,this.noContextMenu),console.log("isntalled new text edit handler"),console.log(this.originalTextEditHandler)),this.addStyle(),this.updateToolbarTop(),setTimeout(function(){e.updateToolbarTop()},1e3)},n.prototype.forEachEvent=function(e,t){for(var n in e)for(var o=0,r=e[n];o<r.length;o++){t(n,r[o].handler)}},n.prototype.dispose=function(){this.removeStyle(),this.updateToolbarTop(),$("body").off("mousedown",n.textChangeSelector,this.overrideHandler),$("body").on("click",n.textChangeSelector,this.originalTextEditHandler),$("body").off("contextmenu",n.textChangeSelector,this.noContextMenu)},n.constantSheetId="r20es-alternative-page-toolbar-menu-constant-sheet",n.variableSheetId="r20es-alternative-page-toolbar-menu-variable-sheet",n.textChangeSelector="#page-toolbar .pages .availablepage span",n}(r.R20Module.OnAppLoadBase);t.default=function(){(new a).install()}}).call(this,"src/modules/AlternatePageToolbarMenu")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(4),a=n(3),l=function(t){function n(){var n=t.call(this,e)||this;return n.sheetId="r20es-alternative-radial-menu-sheet",n.ui_on_mutate=function(e){for(var t=0,o=e;t<o.length;t++){o[t].addedNodes.forEach(function(e){if("radial-menu"===e.id){var t=a.R20.getSelectedTokens();if(1==t.length){var o=n.getHook().config,r=t[0],i=a.R20.getCanvasZoom()/2,l=Math.cos(r.angle*Math.PI/180),s=Math.abs(l*r.width);s=s<=1e-5?r.height:s,Math.abs(Math.floor(r.angle)%360)>=1e-5&&(s+=240*i),console.log(s,r.angle,r.width);for(var c=s*i,d=0,u=e.children;d<u.length;d++){var p=u[d];if(p.classList.contains("button-1")||p.classList.contains("button-2")||p.classList.contains("button-6")){var h=-c-30-5;o.superMinimal&&(h+=30),p.classList.contains("button-6")?p.style.transform="translateX("+h+"px) translateY(-105px)":p.style.transform="translateX("+h+"px) translateY(-14px)"}else if(p.classList.contains("button-3")||p.classList.contains("button-4")||p.classList.contains("button-5")){var m=c+30+5+10;p.style.transform="translateX("+m+"px) translateY(-75px)"}}}}})}},n.try_install_auto_width=function(){n.getHook().config.auto_width&&(n.mutation_observer=new MutationObserver(n.ui_on_mutate),n.mutation_observer.observe(document.getElementById("editor-wrapper"),{childList:!0,subtree:!0}))},n.try_uninstall_auto_width=function(){n.mutation_observer.disconnect()},n}return o(n,t),n.prototype.addStyle=function(){var e=this.getHook().config;console.log(e);var t="\n\n#radial-menu .button {\n position: static;\n height: auto;\n width: 60px;\n border-radius: 0px;\n border: none;\n}\n\n#radial-menu .button.open {\n opacity: "+e.opacity+";\n}\n\n#radial-menu .button-1, \n#radial-menu .button-2,\n#radial-menu .button-6 {\n transform: translateX(-65px) translateY(-14px);\n z-index: 5;\n}\n\n#radial-menu .button-6 {\n transform: translateX(-65px) translateY(-105px);\n}\n\n#radial-menu .button-3, \n#radial-menu .button-4,\n#radial-menu .button-5 {\n transform: translateX(75px) translateY(-75px);\n}\n\n#radial-menu .button div.inner {\n margin: 0px;\n border-radius: 0px;\n}\n\n#radial-menu .markermenu.open {\n border-radius: 0;\n top: 62px;\n padding-left: 0;\n left: -80px;\n width: 375px;\n height: auto;\n}\n\n";e.superMinimal&&(t+="\n\n#radial-menu .markermenu.open {\n left: -55px;\n width: 260px;\n}\n\n#radial-menu .button div.inner {\n background: rgba(0,0,0,0);\n}\n\n#radial-menu .button {\n width: 30px;\n}\n\n#radial-menu .button-1, \n#radial-menu .button-2 {\n transform: translateX(-35px) translateY(-14px);\n}\n\n#radial-menu .button-6 {\n transform: translateX(-35px) translateY(-105px);\n}\n\n#radial-menu .button div.inner.hasnumber span {\n text-shadow: 0px 0px 3px rgba(0,0,0,1);\n text-shadow: 1px 1px 0px rgba(0,0,0,1);\n}\n\n#radial-menu .markermenu .markercolor {\n width: 20px;\n height: 20px;\n}\n\n#radial-menu .markermenu .markercolor,\n#radial-menu .markermenu .markericon {\n margin: 0;\n border: 2px solid white;\n}\n\n#radial-menu .markermenu .markercolor.active,\n#radial-menu .markermenu .markericon.active {\n border: 2px solid black;\n}\n\n#radial-menu .button[data-action-type] div.inner {\n background: unset;\n}\n\n");var n=i.createCSSElement(t,this.sheetId);document.body.appendChild(n)},n.prototype.removeStyle=function(){i.findByIdAndRemove(this.sheetId)},n.prototype.onSettingChange=function(e,t,n){this.removeStyle(),this.addStyle(),this.try_uninstall_auto_width(),this.try_install_auto_width()},n.prototype.setup=function(){this.try_install_auto_width(),this.addStyle()},n.prototype.dispose=function(){this.try_uninstall_auto_width(),this.removeStyle()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/AlternativeRadialMenu")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var i=n(2),a=n(3),l=n(1),s=n(24),c=n(15),d=n(25),u=n(26),p=n(6),h=n(5),m=n(28),f=n(4),g=function(e){var t=e.attributes[N.propVideoEnabled];return"boolean"==typeof t&&t},M=function(e,t){var n;e.save(((n={})[N.propVideoEnabled]=t,n))},y=function(e){var t=e.attributes[N.propVideoSource];return"string"!=typeof t?"":t},b=function(e,t){var n;return e.save(((n={})[N.propVideoSource]=t,n))},N=function(t){function n(){var o=t.call(this,e)||this;return o.is_playing_video=!1,o.events=[],o.render_loop=function(e){if(o.is_playing_video){var t=70*o.current_page.attributes.width,n=70*o.current_page.attributes.height,r=d.scaleToFit(o.video.videoWidth,o.video.videoHeight,t,n);o.ctx.drawImage(o.video,-a.R20.getCanvasOffsetX(),-a.R20.getCanvasOffsetY(),r.x,r.y);var i=Math.ceil(a.R20.getCanvasWidth()/a.R20.getCanvasZoom()),l=a.R20.getCanvasHeight()/a.R20.getCanvasZoom();o.ctx.fillStyle=a.R20.getBackgroundStyle(),o.ctx.fillRect(0,r.y-a.R20.getCanvasOffsetY(),i,l),o.ctx.fillRect(r.x-a.R20.getCanvasOffsetX(),0,i,l),requestAnimationFrame(o.render_loop)}},o.manual_composite=function(){try{var e=window.d20.engine.final_canvas;o.manual_composite_canvas_ctx.fillStyle="rgba(0,0,0,0)",o.manual_composite_canvas_ctx.globalCompositeOperation="copy";var t=a.R20.getCanvasZoom();o.manual_composite_canvas_ctx.fillRect(0,0,Math.ceil(a.R20.getCanvasWidth()/t),Math.ceil(a.R20.getCanvasHeight()/t)),o.manual_composite_canvas_ctx.drawImage(e,0,0,o.manual_composite_canvas.width,o.manual_composite_canvas.height)}catch(e){console.error("composite ex"),console.error(e)}},o.beginVideo=function(){console.log("[AnimBackgrounds] beginVideo while current_runner"),o.is_playing_video=!0,o.canvas.style.display="block";var e=function(){try{var e=y(o.current_page);o.video.setAttribute("vttes-src",e),o.video.src=e,o.video.play(),console.log(o.video),console.log("[AnimBackgrounds] current_runner.start succeeded!"),o.roll20_composite_canvas.style.display="none",o.roll20_composite_canvas.id="babylonCanvas2",o.manual_composite_canvas.style.display="block",o.manual_composite_canvas.id="babylonCanvas"}catch(e){console.error(e)}};if(e(),u.isChromium())for(var t=["mousedown","scroll","keydown"],n=function(){e();for(var o=0,r=t;o<r.length;o++){var i=r[o];document.body.removeEventListener(i,n)}},r=0,i=t;r<i.length;r++){var l=i[r];document.body.addEventListener(l,n)}o.onResizeCanvas(a.R20.getCanvasWidth(),a.R20.getCanvasHeight()),o.onSetZoom(a.R20.getCanvasZoom()),requestAnimationFrame(o.render_loop),a.R20.renderAll(),window.r20es.manual_composite=o.manual_composite},o.can_play=function(){return y(o.current_page).length>0&&g(o.current_page)},o.onPropChange=function(){console.log("[AnimBackgrounds] onPropChange while current_runner"),o.endVideo(),o.can_play()&&o.beginVideo()},o.initPage=function(){o.endVideo();var e=a.R20.getCurrentPage(),t=function(){return e};o.events=[c.EventSubscriber.subscribe("change:"+n.propVideoSource,o.onPropChange,t),c.EventSubscriber.subscribe("change:"+n.propVideoEnabled,o.onPropChange,t),c.EventSubscriber.subscribe("change:height",o.onPropChange,t),c.EventSubscriber.subscribe("change:width",o.onPropChange,t)],o.current_page=e,a.R20.renderAll(),o.can_play()&&o.beginVideo()},o.onResizeCanvas=function(e,t){o.is_playing_video&&(console.log("[AnimBackgrounds] onResizeCanvas while is_playing_video"),o.canvas.width=e,o.canvas.height=t,o.manual_composite_canvas.width=e,o.manual_composite_canvas.height=t,o.onSetZoom(a.R20.getCanvasZoom()))},o.overrideSetCanvasSize=function(e,t){o.original_resize_function(e,t),o.onResizeCanvas(e,t)},o.onSetZoom=function(e){o.is_playing_video&&(console.log("[AnimBackgrounds] onSetZoom while is_playing_video"),o.ctx.restore(),o.ctx.save(),o.ctx.scale(e,e))},o.ui_show_configurationsetup_dialog=function(){o.setup_dialog.show(o,o.current_page)},o.trampoline_draw_background=function(e,t){if(o.is_playing_video){var n=e.fillStyle,r=e.globalCompositeOperation;e.fillStyle="rgba(0,0,0,0)",e.globalCompositeOperation="copy";var i=a.R20.getCanvasZoom();e.fillRect(0,0,Math.ceil(a.R20.getCanvasWidth()/i),Math.ceil(a.R20.getCanvasHeight()/i)),e.fillStyle=n,e.globalCompositeOperation=r}else o.original_canvas_overlay_draw_background(e,t)},o}return o(n,t),n.prototype.endVideo=function(){console.log("[AnimBackgrounds] endVideo while current_runner"),window.r20es.manual_composite=void 0;var e=this.is_playing_video;this.is_playing_video=!1,this.canvas.style.display="none",this.roll20_composite_canvas.style.display="block",this.roll20_composite_canvas.id="babylonCanvas",this.manual_composite_canvas.style.display="none",this.manual_composite_canvas.id="babylonCanvas2",this.video.pause(),this.video.src="",e&&a.R20.renderAll()},n.prototype.set_volume=function(e){if(this.video)try{this.video.volume=e}catch(e){this.video.volume=.1}},n.prototype.onSettingChange=function(e,t,n){"muteAudio"===e&&this.video&&(this.video.muted=n),"audioVolume"===e&&this.video&&this.set_volume(n)},n.prototype.setup=function(){if(console.log("video before =================================="),this.canvas=l.DOM.createElement("canvas",null),this.canvas.style.position="absolute",this.ctx=this.canvas.getContext("2d"),this.ctx.save(),this.video=l.DOM.createElement("video",null),this.roll20_composite_canvas=document.querySelector("#babylonCanvas"),this.roll20_composite_canvas||console.error("[AnimatedBackgrounds] could not find rendering canvas!"),this.manual_composite_canvas=l.DOM.createElement("canvas",null,'id="babylonCanvas2" data-engine="Babylon.js v5.35.1" touch-action="none" style="touch-action: none; display: none; cursor: inherit;"'),this.manual_composite_canvas.style.display="none",this.manual_composite_canvas_ctx=this.manual_composite_canvas.getContext("2d"),this.original_resize_function=window.d20.engine.setCanvasSize,window.d20.engine.setCanvasSize=this.overrideSetCanvasSize,window.r20es.onZoomChange=this.onSetZoom,window.r20es.onResizeCanvas=this.onResizeCanvas,this.original_canvas_overlay_draw_background=window.d20.canvas_overlay.drawBackground,window.d20.canvas_overlay.drawBackground=this.trampoline_draw_background,this.initPage(),window.r20es.onPageChange.on(this.initPage),a.R20.isGM()){this.show_settings_element=l.DOM.createElement("div",{title:"Animated Background Setup (VTTES)",style:{cursor:"pointer",position:"absolute",top:"0",right:"436px",maxWidth:"32px",maxHeight:"32px",zIndex:"10000",backgroundColor:"#e18e42",padding:"0px 0px 1px",borderRadius:"3px;"},onClick:this.ui_show_configurationsetup_dialog},l.DOM.createElement("img",{src:"https://github.com/encharm/Font-Awesome-SVG-PNG/raw/master/black/png/32/film.png",maxWidth:"28",maxHeight:"28",alt:"ANIM"})),document.body.appendChild(this.show_settings_element),console.log(this.show_settings_element)}this.setup_dialog=new v;var e=this.getHook().config;this.video.loop=!0,this.video.autoplay=!0,this.video.muted=e.muteAudio,this.set_volume(e.audioVolume);var t=this.roll20_composite_canvas;t&&(t.parentNode.insertBefore(this.canvas,t),this.canvas.width=t.width,this.canvas.height=t.height,t.parentNode.insertBefore(this.manual_composite_canvas,t),this.manual_composite_canvas.width=t.width,this.manual_composite_canvas.height=t.height)},n.prototype.dispose=function(){t.prototype.dispose.call(this),console.log("[AnimBackgrounds] cleanupPage"),this.endVideo();for(var e=0,n=this.events;e<n.length;e++){n[e].unsubscribe()}this.video=null,this.ctx=null,this.canvas.remove(),this.canvas=null,this.roll20_composite_canvas=null,this.manual_composite_canvas.remove(),this.manual_composite_canvas_ctx=null,window.d20.engine.setCanvasSize=this.original_resize_function,window.r20es.onZoomChange=null,window.r20es.onResizeCanvas=null,window.d20.canvas_overlay.drawBackground=this.original_canvas_overlay_draw_background,this.original_canvas_overlay_draw_background=null,this.show_settings_element.remove(),this.show_settings_element=null,this.setup_dialog.dispose(),window.r20es.onPageChange.off(this.initPage)},n.propVideoSource="r20es_video_src",n.propVideoEnabled="r20es_video_enabled",n}(i.R20Module.OnAppLoadBase),T=function(e,t,n){var o=document.createElement("video");o.crossorigin="anonymous",o.volume=0;var r=function(){o.pause(),o.removeEventListener("error",i),o.removeEventListener("canplay",a),o.src=""},i=function(e){r(),console.log("check_if_url_is_video_stream error:",e),n()},a=function(e){r(),t()};o.addEventListener("error",i),o.addEventListener("canplay",a),o.src=e,console.log(e),o.play()},v=function(e){function t(){var t=e.call(this)||this;return t.onChangeEnabled=function(e){M(t.page,e.target.checked)},t.ui_is_invalid_media_url=!1,t.onBlurUrl=function(e){e.stopPropagation(),t.ui_on_update_url_input(e.target.value)},t.ui_on_update_url_input=function(e){b(t.page,e),t.ui_verify_media_url(e,!0)},t.module_get_history=function(){return t.parent_module.getHook().config.video_history},t.module_save_history=function(e){return t.parent_module.setConfigValue("video_history",e)},t.ui_verify_media_url=function(e,n){T(e,function(){if(n){var o=t.module_get_history();m.removeByReference(o,e),o.unshift(e),t.module_save_history(o)}t.ui_is_invalid_media_url=!1,t.rerender()},function(){t.ui_is_invalid_media_url=!0,t.rerender()})},t.ui_toggle_history=function(){t.show_history=!t.show_history,t.rerender()},t.show_history=!1,t.ui_history_url_attrib="url",t.ui_history_retrieve_url=function(e){return e.target.getAttribute(t.ui_history_url_attrib)},t.ui_history_remove=function(e){var n=t.ui_history_retrieve_url(e),o=t.module_get_history();m.removeByReference(o,n),t.module_save_history(o),t.rerender()},t.ui_history_select=function(e){var n=t.ui_history_retrieve_url(e);t.ui_on_update_url_input(n)},t}return o(t,e),t.prototype.show=function(e,t){this.parent_module=e,this.page=t,this.internalShow(),this.ui_verify_media_url(y(t),!1)},t.prototype.render=function(){var e=this,t=this.module_get_history(),n=[],o=g(this.page),i=y(this.page);if(this.show_history){for(var a=function(t,n){return t.setAttribute(e.ui_history_url_attrib,n)},c=0,d=t;c<d.length;c++){var u=d[c],p={width:"auto",marginRight:"8px"},m=l.DOM.createElement("input",{style:p,className:"btn",type:"button",value:"X",onClick:this.ui_history_remove}),M=l.DOM.createElement("input",{style:p,className:"btn",type:"button",value:"Use",onClick:this.ui_history_select}),b=l.DOM.createElement("span",{title:u},f.nearly_format_file_url(u));a(m,u),a(M,u),n.push(l.DOM.createElement("div",null,m,M,b))}0==t.length&&n.push(l.DOM.createElement("div",null,"Nothing here!"))}var N=l.DOM.createElement("span",null);return this.ui_is_invalid_media_url?(l.DOM.apply_style(N,r({float:"right"},s.CommonStyle.error_span)),N.innerText="Invalid: Not a direct video stream"):(l.DOM.apply_style(N,r({float:"right"},s.CommonStyle.success_span)),N.innerText="URL is valid!"),l.DOM.createElement(h.Dialog,null,l.DOM.createElement(h.DialogHeader,null,l.DOM.createElement("h2",null,"Animated Background Setup")),l.DOM.createElement(h.DialogBody,null,l.DOM.createElement("div",null,l.DOM.createElement("i",null,"Disclaimer: Players must have VTTES installed to be able to see the animated background.")),l.DOM.createElement("br",null),l.DOM.createElement("div",null,l.DOM.createElement("a",{href:"javascript:void(0) // workaround for underpopup dialog from roll20 regarding leaving the site",onClick:function(){window.open("https://gist.github.com/justas-d/b4bc420993844d989c10e05226787e70","_blank")}},"Places to host the backgrounds")),l.DOM.createElement("br",null),l.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"auto auto",rowGap:"4px"}},l.DOM.createElement("b",null,"Enabled?"),l.DOM.createElement("div",null,l.DOM.createElement("input",{type:"checkbox",onChange:this.onChangeEnabled,checked:o})),l.DOM.createElement("span",null,l.DOM.createElement("b",null,"Media URL "),l.DOM.createElement("i",null,"(must be a direct stream)")),l.DOM.createElement("div",null,l.DOM.createElement("input",{style:{paddingLeft:"8px"},type:"text",onBlur:this.onBlurUrl,value:i}))),l.DOM.createElement("div",null,N),l.DOM.createElement("br",null),l.DOM.createElement("button",{style:"btn",onClick:this.ui_toggle_history},this.show_history?"Hide History":"Show History"),l.DOM.createElement("br",null),l.DOM.createElement("div",{style:{maxHeight:"500px",overflowY:"auto"}},n)),l.DOM.createElement(h.DialogFooter,null,l.DOM.createElement(h.DialogFooterContent,null,l.DOM.createElement("button",{style:{boxSizing:"border-box",width:"100%"},className:"btn",onClick:this.close},"OK"))))},t}(p.DialogBase);t.default=function(){(new N).install()}}).call(this,"src/modules/AnimatedBackgroundLayer")},function(e,t){var n,o,r=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{o="function"==typeof clearTimeout?clearTimeout:a}catch(e){o=a}}();var s,c=[],d=!1,u=-1;function p(){d&&s&&(d=!1,s.length?c=s.concat(c):u=-1,c.length&&h())}function h(){if(!d){var e=l(p);d=!0;for(var t=c.length;t;){for(s=c,c=[];++u<t;)s&&s[u].run();u=-1,t=c.length}s=null,d=!1,function(e){if(o===clearTimeout)return clearTimeout(e);if((o===a||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{o(e)}catch(t){try{return o.call(null,e)}catch(t){return o.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function f(){}r.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new m(e,t)),1!==c.length||d||l(h)},m.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=f,r.addListener=f,r.once=f,r.off=f,r.removeListener=f,r.removeAllListeners=f,r.emit=f,r.prependListener=f,r.prependOnceListener=f,r.listeners=function(e){return[]},r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(4),a=function(){function e(){this.sheetId="r20es-anim-no-token-radial"}return e.prototype.install=function(){var e=i.createCSSElement("\n#radial-menu .button {\n -webkit-transition: none;\n -moz-transition: none;\n -o-transition: none;\n -ms-transition:none;\n transition:none;\n}\n\n#radial-menu .markermenu {\n -webkit-transition: none;\n -moz-transition: none;\n -o-transition: none;\n -ms-transition:none;\n transition:none;\n}\n\n#radial-menu .button.open {\n -webkit-transition-timing-function: none;\n -webkit-transition-timing-function: none;\n -moz-transition-timing-function: none;\n -ms-transition-timing-function: none;\n -o-transition-timing-function: none;\n transition-timing-function: none;\n}",this.sheetId);document.body.appendChild(e)},e.prototype.uninstall=function(){i.findByIdAndRemove(this.sheetId)},e}(),l=function(){function e(){}return e.prototype.install=function(){},e.prototype.uninstall=function(){},e}(),s=function(t){function n(){var n=t.call(this,e)||this;return n.installedAnims=[],n.animModTable={},n.animModTable.disableRadial=new a,n.animModTable.disablePageToolbar=new l,n}return o(n,t),n.prototype.getAnimModData=function(e){if(!(e in this.animModTable))return console.error("Could not find anim mod data for key "+e),null;var t=this.animModTable[e];return console.log(t),t},n.prototype.shouldDoCustomAnim=function(e){var t=function(e){return"object"!=typeof e};if(t(window.r20es))return!1;if(t(window.r20es.hooks))return!1;if(t(window.r20es.hooks.animationDisable))return!1;if(t(window.r20es.hooks.animationDisable.config))return!1;var n=window.r20es.hooks.animationDisable.config[e];return"boolean"==typeof n&&n},n.prototype.installAnimMod=function(e){var t=this.getAnimModData(e);t&&(console.log("installing anim mod "+e),t.install(),this.installedAnims.push(e))},n.prototype.uninstallAnimMod=function(e){var t=this.getAnimModData(e);if(t){console.log("removing anim mod "+e+" "+t),t.uninstall();var n=this.installedAnims.indexOf(e);n>=0&&this.installedAnims.splice(n,1)}},n.prototype.onSettingChange=function(e,t,n){t!==n&&(n?this.installAnimMod(e):this.uninstallAnimMod(e))},n.prototype.setup=function(){window.r20es.shouldDoCustomAnim=this.shouldDoCustomAnim;var e=this.getHook().config;for(var t in this.animModTable)e[t]&&this.installAnimMod(t)},n.prototype.dispose=function(){window.r20es.shouldDoCustomAnim=null,t.prototype.dispose.call(this);for(var e=0,n=this.installedAnims;e<n.length;e++){var o=n[e];this.uninstallAnimMod(o)}},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/AnimationDisable")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){var n=t.call(this,e)||this;return n.was_bound=!1,n}return o(n,t),n.prototype.setup=function(){var e=this,t=function(e,t){if(!(i.R20.getSelectedTokens().length>0)){var n=$("#editor-wrapper")[0];n.scrollTop+=t,n.scrollLeft+=e}},n=window.Mousetrap.bind("",null);this.old_right=n._directMap["right:undefined"],this.old_left=n._directMap["left:undefined"],this.old_up=n._directMap["up:undefined"],this.old_down=n._directMap["down:undefined"],window.Mousetrap.bind("right",function(n,o){t(50,0),null!=e.old_right&&e.old_right(n,o)}),window.Mousetrap.bind("left",function(n,o){t(-50,0),null!=e.old_left&&e.old_left(n,o)}),window.Mousetrap.bind("up",function(n,o){t(0,-50),null!=e.old_up&&e.old_up(n,o)}),window.Mousetrap.bind("down",function(n,o){t(0,50),null!=e.old_down&&e.old_down(n,o)}),this.was_bound=!0},n.prototype.dispose=function(){t.prototype.dispose.call(this),this.was_bound&&(this.was_bound=!1,window.Mousetrap.unbind("right"),window.Mousetrap.unbind("left"),window.Mousetrap.unbind("up"),window.Mousetrap.unbind("down"),null!=this.old_right&&window.Mousetrap.bind("right",this.old_right),null!=this.old_left&&window.Mousetrap.bind("left",this.old_left),null!=this.old_up&&window.Mousetrap.bind("up",this.old_up),null!=this.old_down&&window.Mousetrap.bind("down",this.old_down),this.old_right=null,this.old_left=null,this.old_up=null,this.old_down=null)},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new a).install()}}).call(this,"src/modules/ArrowKeysMoveCanvas")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(19),l=function(t){function n(){var n=t.call(this,e)||this;return n.onTurnOrderChanged=function(e){var t=n.getHook().config[a.DIALOG_OPEN_DELAY_KEY];setTimeout(function(){i.R20.getInitiativeWindow().model.save({initiativepage:!0})},t)},n._sub=i.R20.onInitiativeChange(n.onTurnOrderChanged),n}return o(n,t),n.prototype.setup=function(){i.R20.isGM()&&this._sub.subscribe()},n.prototype.dispose=function(){t.prototype.dispose.call(this),this._sub.unsubscribe()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/AutoOpenInitiativeTracker")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.ping=function(e){if(e.id){var t=i.R20.getCurrentPageTokenByUUID(e.id);if(t){var n=i.R20.try_get_canvas_object_model(t);n&&"objects"===n.get("layer")&&i.R20.ping(t.left,t.top,null,null,i.R20.CanvasLayer.PlayerTokens)}}},n.prototype.setup=function(){i.R20.isGM()&&(window.r20es.pingInitiativeToken=n.ping)},n.prototype.dispose=function(){window.r20es.pingInitiativeToken=null},n}(r.R20Module.SimpleBase);t.default=function(){(new a).install()}}).call(this,"src/modules/AutoPingNextToken")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.select=function(e){if(e.id){var t=i.R20.getCurrentPageTokenByUUID(e.id);t&&i.R20.selectToken(t)}},n.prototype.setup=function(){i.R20.isGM()&&(window.r20es.selectInitiativeToken=n.select)},n.prototype.dispose=function(){window.r20es.selectInitiativeToken=null},n}(r.R20Module.SimpleBase);t.default=function(){(new a).install()}}).call(this,"src/modules/AutoSelectNextToken")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(29),l=function(t){function n(){var o=t.call(this,e)||this;return o.localInitiativeData=[],o.onTurnOrderChanged=function(e){return o.debouncedDoSorting()},o.doSorting=function(){var e=i.R20.getInitiativeData(),t=n.getNew(o.localInitiativeData,e);if(o.setLocalInitiative(e),!(t.length<=0||e.length<=0)){var r=o.getHook().config;try{if(o.localInitiativeData.length<=0||!r.respectFirstTokenPosition){console.log("NEW INITIATIVE");var l=o.getHook().config.sortBy;i.R20.orderInitiativeBy(l)}else{console.log("APPENDING NEW TOKENS");var s=e[0];l=o.getHook().config.sortBy;i.R20.orderInitiativeBy(l),e=i.R20.getInitiativeData();for(var c=null,d=0;d<e.length;d++)if(a.isEqual(e[d],s)){c=d;break}if(null===c)return console.error("Could not find firstTokenNewIdx"),void console.error(e);var u=[];for(d=c;d<e.length;d++)u.push(e[d]);for(d=0;d<c;d++)u.push(e[d]);o.setLocalInitiative(u),i.R20.setInitiativeData(u)}}catch(e){console.error(e),o.setLocalInitiative(i.R20.getInitiativeData())}}},o.debouncedDoSorting=a.debounce(o.doSorting,1e3),o._sub=i.R20.onInitiativeChange(o.onTurnOrderChanged),o}return o(n,t),n.getNew=function(e,t){for(var n=[],o=0,r=t;o<r.length;o++){for(var i=r[o],a=!1,l=0,s=e;l<s.length;l++){var c=s[l];if(c.id===i.id&&c.pr===i.pr){a=!0;break}}a||n.push(i)}return n},n.prototype.setLocalInitiative=function(e){this.localInitiativeData=JSON.parse(JSON.stringify(e))},n.prototype.setup=function(){i.R20.isGM()&&(this._sub.subscribe(),this.setLocalInitiative(i.R20.getInitiativeData()))},n.prototype.dispose=function(){t.prototype.dispose.call(this),this._sub.unsubscribe()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/AutoSortInitiative")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(2),l=n(3),s=n(11),c=n(8),d=n(112),u=n(9),p=function(t){function n(){var n=t.call(this,e)||this;return n.onDialogClose=function(e){return r(n,void 0,void 0,function(){var e,t,n,o,a,c,d,u,p,h,m,f,g=this;return i(this,function(M){switch(M.label){case 0:if(!(e=this.selectDialog.getData()))return[2];if(t=l.R20.getSelectedTokens(),n=this.getHook().config,o=n.delayBetweenRolls,a=n.reselectAfter,c=n.performRollsSequentially,l.R20.unselectTokens(),d=function(t){return r(g,void 0,void 0,function(){return i(this,function(n){switch(n.label){case 0:return l.R20.selectToken(t),c?[4,l.R20.say_async(e)]:[3,2];case 1:return n.sent(),[3,3];case 2:l.R20.say(e),n.label=3;case 3:return[2]}})})},u=function(){if(l.R20.hideTokenRadialMenu(),l.R20.hideTokenContextMenu(),a)for(var e=0,n=t;e<n.length;e++){var o=n[e];l.R20.addTokenToSelection(o)}},0!==o)return[3,5];p=0,h=t,M.label=1;case 1:return p<h.length?(m=h[p],[4,d(m)]):[3,4];case 2:M.sent(),M.label=3;case 3:return p++,[3,1];case 4:return u(),[3,10];case 5:f=0,M.label=6;case 6:return f<t.length?[4,s.promiseWait(o)]:[3,10];case 7:return M.sent(),[4,d(t[f])];case 8:M.sent(),f+1===t.length&&u(),M.label=9;case 9:return f++,[3,6];case 10:return[2]}})})},n.bulkMacroButtonClicked=function(e){var t={},o=function(e,n){n in t||(t[n]={});t[n][e.get("id")]={name:e.get("name"),action:e.get("action")}},r=l.R20.getCurrentPlayer(),i=l.R20.getSelectedTokens();console.log(i);for(var a=0,s=r.macros.models;a<s.length;a++){o(s[a],"Player Macros")}var c=i.reduce(function(e,t){var n=l.R20.try_get_canvas_object_model(t);if(!n)return e.uniq++,e;var o=n.character?n.character.get("id"):n.get("id");return o in e.map||(e.uniq++,e.map[o]=!0,n.character&&e.arr.push(n.character)),e},{map:{},arr:[],uniq:0});if(1===c.uniq&&c.arr.length>0)for(var d=0,u=c.arr[0].abilities.models;d<u.length;d++){o(u[d],"Token Macros")}console.log(t),n.selectDialog.show(t)},n}return o(n,t),n.prototype.setup=function(){l.R20.isGM()&&(this.selectDialog=new d.default,this.selectDialog.getRoot().addEventListener("close",this.onDialogClose),c.TokenContextMenu.addButton("Roll Bulk Macro",this.bulkMacroButtonClicked,u.TOKEN_CONTEXT_MENU_ORDER_ROLL_BULK_MACRO,{mustHaveSelection:!0}))},n.prototype.dispose=function(){this.selectDialog&&this.selectDialog.dispose(),t.prototype.dispose.call(this),c.TokenContextMenu.removeButton("Roll Bulk Macro",this.bulkMacroButtonClicked)},n}(a.R20Module.OnAppLoadBase);t.default=function(){(new p).install()}}).call(this,"src/modules/BulkMacro")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(6),a=n(5),l=function(e){function t(){var t=e.call(this,void 0,{maxWidth:"20%"})||this;return t.buttonClick=function(e){e.stopPropagation(),t.setData(e.target.getAttribute("data-r20es-macro-action")),t.close()},t}return o(t,e),t.prototype.reset=function(){this.macros=void 0},t.prototype.show=function(t){this.macros=t,e.prototype.internalShow.call(this)},t.prototype.render=function(){console.log(this.macros);var e=[];for(var t in this.macros){var n=this.macros[t],o=[];for(var i in n){var l=n[i];o.push(r.DOM.createElement("button",{className:"r20btn btn","data-r20es-macro-action":l.action,onClick:this.buttonClick},l.name))}e.push(r.DOM.createElement("div",null,r.DOM.createElement("h3",null,t),r.DOM.createElement("div",{className:"r20es-indent"},o)))}return r.DOM.createElement(a.Dialog,null,r.DOM.createElement(a.DialogHeader,null,r.DOM.createElement("h2",null,"Macro selection")),r.DOM.createElement(a.DialogBody,null,e),r.DOM.createElement(a.DialogFooter,null,r.DOM.createElement(a.DialogFooterContent,null,r.DOM.createElement("input",{style:{boxSizing:"border-box",width:"100%"},className:"r20btn btn",type:"button",onClick:this.close,value:"Close"}))))},t}(i.DialogBase);t.default=l},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(1),l=function(e){return"boolean"==typeof e.attributes.vttes_default_camera_enabled&&("number"==typeof e.attributes.vttes_default_camera_zoom&&("number"==typeof e.attributes.vttes_default_camera_x&&"number"==typeof e.attributes.vttes_default_camera_y))},s=function(e){return!!l(e)&&e.attributes.vttes_default_camera_enabled},c="https://raw.githubusercontent.com/Rush/Font-Awesome-SVG-PNG/master/black/png/32/map-marker.png",d="https://raw.githubusercontent.com/Rush/Font-Awesome-SVG-PNG/master/black/png/32/close.png",u=function(t){function n(){var n=t.call(this,e)||this;return n.try_jump_to_default_camera=function(){var e=i.R20.getCurrentPage();if(i.R20.isGM()&&!n.getHook().config.move_if_gm)return;s(e)&&n.force_jump_to_default_camera()},n.force_jump_to_default_camera=function(){var e=i.R20.getCurrentPage(),t=e.attributes.vttes_default_camera_x,o=e.attributes.vttes_default_camera_y,r=e.attributes.vttes_default_camera_zoom,a=t-.5*i.R20.getCanvasWidth(),l=o-.5*i.R20.getCanvasHeight();(i.R20.set_zoom(r),setTimeout(function(){i.R20.set_camera_x(a),i.R20.set_camera_y(l)},100),i.R20.isGM())&&(n.getHook().config.send_local_event_messages&&i.R20.saySystem("GM: Jumping to default camera start location..."))},n.on_page_change=function(e){e?setTimeout(n.try_jump_to_default_camera,1e3):n.try_jump_to_default_camera(),n.hide_menu()},n.hide_menu=function(){n.menu_widget&&(n.menu_widget.remove(),n.menu_widget=null),n.toggle_menu_widget_img&&(n.toggle_menu_widget_img.src=c)},n.toggle=function(){var e=i.R20.getCurrentPage();n.getHook().config.send_local_event_messages&&(e.attributes.vttes_default_camera_enabled?i.R20.saySystem("GM: Disabled default camera"):i.R20.saySystem("GM: Enabled default camera")),e.save({vttes_default_camera_enabled:!e.attributes.vttes_default_camera_enabled}),n.show_menu()},n.set_from_current_camera=function(){var e=i.R20.get_camera_x(),t=i.R20.get_camera_y(),o=i.R20.getCanvasZoom(),r=e+.5*i.R20.getCanvasWidth(),a=t+.5*i.R20.getCanvasHeight();n.getHook().config.send_local_event_messages&&i.R20.saySystem("GM: Set default camera position: "+r+" "+a+" "+o),i.R20.getCurrentPage().save({vttes_default_camera_enabled:!0,vttes_default_camera_x:r,vttes_default_camera_y:a,vttes_default_camera_zoom:o}),n.show_menu()},n.preview_starting_camera=function(){n.force_jump_to_default_camera()},n.show_menu=function(){n.menu_widget&&(n.menu_widget.remove(),n.menu_widget=null),n.toggle_menu_widget_img.src=d;var e=null,t=i.R20.getCurrentPage(),o=a.DOM.createElement("button",{className:"btn",onclick:n.set_from_current_camera},"Set From Current Camera");if(l(t)){var r=a.DOM.createElement("button",{className:"btn",onclick:n.toggle});s(t)?(r.innerText="Enabled",r.className="btn btn-success"):(r.innerText="Disabled",r.className="btn btn-danger"),e=a.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridGap:"4px"}},r,o,a.DOM.createElement("button",{className:"btn",onclick:n.preview_starting_camera},"Preview Default Camera"))}else e=a.DOM.createElement("div",null,o);n.menu_widget=a.DOM.createElement("div",{style:{position:"absolute",top:"0px",right:"464px",zIndex:11,backgroundColor:"white",borderBottom:"1px solid gray",padding:"10px",borderLeft:"1px solid gray",borderRight:"1px solid gray",maxWidth:"450px",color:"#333"}},a.DOM.createElement("h3",{style:{color:"#333"}},"Default Camera Position (VTTES)"),a.DOM.createElement("p",null,"This controls the location of the default camera."),a.DOM.createElement("p",null,"When this is enabled, when players enter a page, their camera location and zoom level will be set to the one configured here."),a.DOM.createElement("b",null,"Players must have the extension installed for this to work."),a.DOM.createElement("div",{style:{marginBottom:"16px"}}),e),document.body.appendChild(n.menu_widget)},n}return o(n,t),n.prototype.setup=function(){var e=this;if(window.r20es.onPageChange.on(this.on_page_change),i.R20.isGM()){this.toggle_menu_widget_img=a.DOM.createElement("img",{src:c,maxWidth:"28",maxHeight:"28",alt:"CAM"}),this.toggle_menu_widget=a.DOM.createElement("div",{title:"Default Camera Position (VTTES)",style:{cursor:"pointer",position:"absolute",top:"0",right:"468px",maxWidth:"32px",maxHeight:"32px",zIndex:"10000",backgroundColor:"lightgreen",padding:"0px 0px 1px",borderRadius:"3px"},onclick:function(){e.menu_widget?e.hide_menu():e.show_menu()}},this.toggle_menu_widget_img),document.body.appendChild(this.toggle_menu_widget)}},n.prototype.dispose=function(){this.toggle_menu_widget&&this.toggle_menu_widget.remove(),this.menu_widget&&this.menu_widget.remove(),window.r20es.onPageChange.off(this.on_page_change),t.prototype.dispose.call(this)},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new u).install()}}).call(this,"src/modules/CameraStartPosition")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(4),a=n(3),l=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.doReplace=function(e,t){return i.replaceAll(e.model._blobcache.defaulttoken,e.model.get("id"),t.get("id"))},n.prototype.setup=function(){a.R20.isGM()&&(window.r20es.replaceIdOnDupe=n.doReplace)},n.prototype.dispose=function(){window.r20es.replaceIdOnDupe=null},n}(r.R20Module.SimpleBase);t.default=function(){(new l).install()}}).call(this,"src/modules/ChangeIdWhenDuplicating")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(3),l="vttes-character-image-from-url",s=function(t){function n(){var n=t.call(this,e)||this;return n.set_image_from_url=function(e){e.stopPropagation();var t=e.target.getAttribute("data-characterid"),n=a.R20.getCharacter(t);if(n){var o=window.prompt("Set character avatar from URL:",n.attributes.avatar);null!=o&&(o?n.save({avatar:o}):alert("Invalid URL."))}else alert("Could not find character associated with sheet! (Id is: "+t+")")},n.observer_callback=function(e){for(var t=0,o=e;t<o.length;t++)for(var r=0,a=o[t].addedNodes;r<a.length;r++){var s=a[r];if(s.firstElementChild&&s.firstElementChild.classList.contains("charactereditor")){console.log(s);var c=s.getAttribute("data-characterid"),d=s.querySelector(".avatar");if(d){var u=i.DOM.createElement("button",{className:"btn "+l,onClick:n.set_image_from_url,"data-characterid":c,style:{marginTop:"8px"}},"VTTES: Set avatar image from URL");d.parentNode.insertBefore(u,d.nextElementSibling)}else console.error("Could not find avatar_el")}}},n}return o(n,t),n.prototype.setup=function(){this.observer=new MutationObserver(this.observer_callback),this.observer.observe(document.body,{childList:!0,subtree:!0})},n.prototype.dispose=function(){t.prototype.dispose.call(this),this.observer&&this.observer.disconnect(),document.querySelectorAll("."+l).forEach(function(e){return e.remove()})},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/CharacterAvatarFromURL")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},a=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var l=n(2),s=n(3),c=n(1),d=n(12),u=n(4),p=n(13),h=n(5),m=n(30),f=n(4),g=n(11),M=n(6),y=n(5),b=n(117),N=n(14),T=function(e){function t(){var t=e.call(this,void 0,{minWidth:"30%"})||this;return t.types=[],t.num_checked=0,t.update_import_button_state=function(){t.num_checked<=0?t.import_button.disabled=!0:t.import_button.disabled=!1},t.on_check=function(e){e.target.checked?t.num_checked+=1:t.num_checked-=1,t.update_import_button_state()},t.on_click_import=function(e){for(var n=[],o=0,r=t.getRoot().querySelectorAll("input.vttes-component");o<r.length;o++){var i=r[o];if(i.checked)for(var a=i.getAttribute("repeating_id"),l=0,c=t.types;l<c.length;l++)for(var d=0,u=c[l].components;d<u.length;d++){(g=u[d]).repeating_id===a&&n.push(g)}}for(var p=[],h=0,m=n;h<m.length;h++)for(var g=m[h],M=s.R20.generate_repeating_uuid(),y=0,b=g.attributes;y<b.length;y++){var N=b[y],T={name:f.replaceAll(N.name||"",g.repeating_id,M),current:N.current,max:N.max};"string"==typeof T.current&&(T.current=f.replaceAll(N.current||"",g.old_character_id,t.pc.attributes.id)),"string"==typeof T.max&&(T.max=f.replaceAll(N.max||"",g.old_character_id,t.pc.attributes.id));var v=t.pc.attribs.create(T,{silent:!0});p.push({old_repeating_id:g.repeating_id,new_repeating_id:M,attribute:v})}for(var k=0;k<p.length;++k)for(var _=k+1;_<p.length;++_){var w=p[k],V=p[_],R=function(e,t){"string"==typeof e.attribute.attributes.current&&e.attribute.attributes.current.includes(t.old_repeating_id)&&e.attribute.save({current:f.replaceAll(e.attribute.attributes.current||"",t.old_repeating_id,t.new_repeating_id)})};R(w,V),R(V,w)}t.close()},t.on_select_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked||(r.checked=!0,t.num_checked+=1)}t.update_import_button_state()},t.on_unselect_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked&&(r.checked=!1,t.num_checked-=1)}t.update_import_button_state()},t.on_select_all_checkboxes=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked||(r.checked=!0,t.num_checked+=1)}t.update_import_button_state()},t.on_unselect_all_checkboxes=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){o[n].checked=!1}t.num_checked=0,t.update_import_button_state()},t}return o(t,e),t.prototype.show=function(t,n){this.types=[],this.pc=t,this.num_checked=0,this.types=[];for(var o,r=function(e){(o=i.types.find(function(t){return t.name===e.type}))||(o={name:e.type,components:[]},i.types.push(o)),o.components.push(e)},i=this,a=0,l=n.components;a<l.length;a++){r(l[a])}this.types.sort(function(e,t){return N.default(e,t,function(e){return e.name})}),e.prototype.internalShow.call(this)},t.prototype.render=function(){for(var e=[],t=0,n=this.types;t<n.length;t++){for(var o=n[t],r=[],i=0,a=o.components;i<a.length;i++){var l=a[i],s=c.DOM.createElement("input",{className:"vttes-component",type:"checkbox",checked:!0,onChange:this.on_check,style:{marginRight:"4px"}});this.num_checked+=1,s.setAttribute("repeating_id",l.repeating_id);var d=c.DOM.createElement("div",null,s,l.name);r.push(d)}e.push(c.DOM.createElement("div",{style:{minWidth:"180px"}},c.DOM.createElement("hr",null),c.DOM.createElement("h3",{style:{display:"grid",gridTemplateColumns:"1.5fr 1fr 1fr",gridGap:"5px",alignItems:"center"}},o.name,c.DOM.createElement("button",{className:"btn",onClick:this.on_select_all},"Select All"),c.DOM.createElement("button",{className:"btn",onClick:this.on_unselect_all},"Unselect All")),c.DOM.createElement("div",null,r)))}return this.import_button=c.DOM.createElement("input",{className:"r20btn btn btn-success",type:"button",onClick:this.on_click_import,value:"Import Selected",disabled:!0}),this.num_checked>0&&(this.import_button.disabled=!1),c.DOM.createElement(y.Dialog,null,c.DOM.createElement(y.DialogHeader,null,c.DOM.createElement("h2",null,"Component Import")),c.DOM.createElement(y.DialogBody,null,c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr"}},c.DOM.createElement("button",{className:"btn",onClick:this.on_select_all_checkboxes},"Select All"),c.DOM.createElement("button",{className:"btn",onClick:this.on_unselect_all_checkboxes},"Unselect All")),e),c.DOM.createElement(y.DialogFooter,null,c.DOM.createElement(y.DialogFooterContent,null,c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridGap:"16px"}},c.DOM.createElement("input",{className:"r20btn btn",type:"button",onClick:this.close,value:"Close"}),this.import_button))))},t}(M.DialogBase),v=function(e){function t(){var t=e.call(this,void 0,{minWidth:"30%"})||this;return t.types=[],t.export_individual_files=!1,t.num_checked=0,t.update_export_button_state=function(){t.num_checked<=0?t.export_button.disabled=!0:t.export_button.disabled=!1},t.on_check=function(e){e.target.checked?t.num_checked+=1:t.num_checked-=1,t.update_export_button_state()},t.on_click_export=function(e){for(var n=[],o=0,r=t.getRoot().querySelectorAll("input.vttes-component");o<r.length;o++){var i=r[o];if(i.checked){var a=i.getAttribute("type_key"),l=i.getAttribute("repeating_id"),s=i.getAttribute("name"),c=t.types.find(function(e){return e.key===a});if(c){var u=c.components.find(function(e){return e.repeating_id===l});if(u){for(var p=[],h=0,m=u.properties;h<m.length;h++){var g=m[h];p.push(g.attribute)}n.push({name:s,type:t.get_type_name(a),repeating_id:l,old_character_id:t.pc.attributes.id,attributes:p})}else console.error("Could not find component with repeating id '"+l+"'. Type array is",t.types,"component array is",u)}else console.error("Could not find type with key '"+a+"'. Type array is",t.types)}}if(t.export_individual_files){for(var M={},y=0,N=n;y<N.length;y++){var T=N[y],v=t.pc.attributes.name+" "+T.type+" "+T.name+" "+T.repeating_id+".vttes_component_bundle";v=f.replaceAll(v,"/",""),v=f.replaceAll(v,"\\","");var k={schema_version:1,type:"vttes_component_bundle",components:[T]},_=JSON.stringify(k,null,2),w=b.strToU8(_);M[v]=w}var V=b.zipSync(M),R=new Blob([V],{type:"application/octet-stream"}),E="Components from "+t.pc.attributes.name+".zip";d.saveAs(R,E)}else{k={schema_version:1,type:"vttes_component_bundle",components:n};var U="Components from "+t.pc.attributes.name+".vttes_component_bundle",x=JSON.stringify(k,null,2),D=new Blob([x],{type:"data:application/javascript;charset=utf-8"});d.saveAs(D,U)}t.close()},t.on_select_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked||(r.checked=!0,t.num_checked+=1)}t.update_export_button_state()},t.on_unselect_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked&&(r.checked=!1,t.num_checked-=1)}t.update_export_button_state()},t.on_select_all_checkboxes=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked||(r.checked=!0,t.num_checked+=1)}t.update_export_button_state()},t.get_type_name=function(e){return"attack"===e?"Attack":"inventory"===e?"Item":"proficiencies"===e?"Proficiency":"spell-1"===e?"Spell (lv 1)":"spell-2"===e?"Spell (lv 2)":"spell-3"===e?"Spell (lv 3)":"spell-4"===e?"Spell (lv 4)":"spell-5"===e?"Spell (lv 5)":"spell-6"===e?"Spell (lv 6)":"spell-7"===e?"Spell (lv 7)":"spell-8"===e?"Spell (lv 8)":"spell-9"===e?"Spell (lv 9)":"spell-cantrip"===e?"Cantrip":"tool"===e?"Tool":"traits"===e?"Trait":"npctrait"===e?"NPC Trait":"npcaction"===e?"NPC Action":"npcaction-l"===e?"NPC Legendary Action":e},t}return o(t,e),t.prototype.show=function(t){this.pc=t,this.num_checked=0,e.prototype.internalShow.call(this)},t.prototype.render=function(){var e=this;this.types=[];for(var t,n,o,r,i,a=function(e){if((h=e.attributes.name.split("_")).length<4)return"continue";if("repeating"!==h[0])return"continue";var a=h[1];t=h[2],n=h.slice(3,h.length),o=n.join("_"),(r=l.types.find(function(e){return e.key===a}))||(r={key:a,components:[]},l.types.push(r)),(i=r.components.find(function(e){return e.repeating_id===t}))||(i={repeating_id:t,name:"",properties:[]},r.components.push(i)),i.properties.push({name:o,attribute:e.attributes})},l=this,s=0,d=this.pc.attribs.models;s<d.length;s++){a(d[s])}var u=null,p=this.pc.attribs.models.find(function(e){return"_reporder_repeating_actions"===e.attributes.name});if(p){u={};for(var h=p.attributes.current.split(","),m=0;m<h.length;m++){var f=h[m];u[f]=m}}for(var g=0,M=this.types;g<M.length;g++){for(var b,T=M[g],v=function(e){var t=function(t){for(var n=0,o=e.properties;n<o.length;n++){var r=o[n];if(r.name===t)return r.attribute.current}return t};if(b=e.repeating_id,"attack"===T.key)b=t("atkname");else if("inventory"===T.key)b=t("itemname");else if("proficiencies"===T.key)b=t("name");else if("spell-1"===T.key)b=t("spellname");else if("spell-2"===T.key)b=t("spellname");else if("spell-3"===T.key)b=t("spellname");else if("spell-4"===T.key)b=t("spellname");else if("spell-5"===T.key)b=t("spellname");else if("spell-6"===T.key)b=t("spellname");else if("spell-7"===T.key)b=t("spellname");else if("spell-8"===T.key)b=t("spellname");else if("spell-9"===T.key)b=t("spellname");else if("spell-cantrip"===T.key)b=t("spellname");else if("tool"===T.key)b=t("toolname");else if("traits"===T.key)b=t("name");else if("npctrait"===T.key)b=t("name");else if("npcaction"===T.key)b=t("name");else if("npcaction-l"===T.key)b=t("name");else for(var n=0,o=e.properties;n<o.length;n++){var r=o[n];if(r.name.includes("name")){b=r.attribute.current;break}}e.name=b},k=0,_=T.components;k<_.length;k++){v(_[k])}u?T.components.sort(function(e,t){var n=u[e.repeating_id],o=u[t.repeating_id];return"number"==typeof n&&"number"==typeof o?n-o:N.default(e,t,function(e){return e.repeating_id})}):T.components.sort(function(e,t){return N.default(e,t,function(e){return e.name})})}this.types.sort(function(e,t){return N.default(e,t,function(e){return e.key})});for(var w=[],V=0,R=this.types;V<R.length;V++){for(var E=R[V],U=[],x=this.get_type_name(E.key),D=0,S=E.components;D<S.length;D++){var O=S[D],F=c.DOM.createElement("input",{className:"vttes-component",type:"checkbox",onChange:this.on_check,style:{marginRight:"4px"}});F.setAttribute("type_key",E.key),F.setAttribute("repeating_id",O.repeating_id),F.setAttribute("name",O.name);var Z=c.DOM.createElement("div",null,F,O.name);U.push(Z)}var j=c.DOM.createElement("div",{style:{minWidth:"180px"}},c.DOM.createElement("hr",null),c.DOM.createElement("h3",{style:{display:"grid",gridTemplateColumns:"1.5fr 1fr 1fr",gridGap:"5px",alignItems:"center"}},x,c.DOM.createElement("button",{className:"btn",onClick:this.on_select_all},"Select All"),c.DOM.createElement("button",{className:"btn",onClick:this.on_unselect_all},"Unselect All")),c.DOM.createElement("div",null,U));w.push(j)}this.export_button=c.DOM.createElement("input",{disabled:!0,className:"r20btn btn btn-success",type:"button",onClick:this.on_click_export,value:"Export Selected"});var W=c.DOM.createElement("input",{checked:this.export_individual_files,type:"checkbox",style:{marginRight:"4px"},onChange:function(t){e.export_individual_files=t.target.checked}});return c.DOM.createElement(y.Dialog,null,c.DOM.createElement(y.DialogHeader,null,c.DOM.createElement("h2",null,"Component Export")),c.DOM.createElement(y.DialogBody,null,c.DOM.createElement("div",{style:{display:"grid"}},c.DOM.createElement("button",{className:"btn",onClick:this.on_select_all_checkboxes},"Select All")),w),c.DOM.createElement(y.DialogFooter,null,c.DOM.createElement(y.DialogFooterContent,null,c.DOM.createElement("div",{style:{display:"grid"}},c.DOM.createElement("div",{style:{marginBottom:"10px"}},W,c.DOM.createElement("span",{style:{cursor:"pointer"},onclick:function(){return W.click()}},"Export to individual files, zipped.")),c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridGap:"16px"}},c.DOM.createElement("input",{className:"r20btn btn",type:"button",onClick:this.close,value:"Close"}),this.export_button)))))},t}(M.DialogBase),k=function(e){function t(){var t=e.call(this,void 0,{minWidth:"30%"})||this;return t.num_checked=0,t.update_import_button_state=function(){t.num_checked<=0?t.import_button.disabled=!0:t.import_button.disabled=!1},t.on_check=function(e){e.target.checked?t.num_checked+=1:t.num_checked-=1,t.update_import_button_state()},t.on_click_import=function(e){for(var n=0,o=t.getRoot().querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];if(!r.checked){for(var i=r.getAttribute("id"),a=!1,l=0;l<t.data.abilities.length;l++){if(t.data.abilities[l].id==i){a=!0,t.data.abilities.splice(l,1);break}}a||console.error("Could not find ability with id '"+i+"'.")}}for(var c=0,d=t.data.abilities;c<d.length;c++){var u=d[c];t.pc.abilities.create({id:s.R20.generateUUID(),name:u.name,description:u.description,istokenaction:u.istokenaction,action:u.action,order:u.order})}t.close(),s.R20.rerender_character_sheet(t.pc)},t.on_select_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked||(r.checked=!0,t.num_checked+=1)}t.update_import_button_state()},t.on_unselect_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked&&(r.checked=!1,t.num_checked-=1)}t.update_import_button_state()},t}return o(t,e),t.prototype.show=function(t,n){this.pc=t,this.num_checked=0,this.data=n,e.prototype.internalShow.call(this)},t.prototype.render=function(){for(var e=[],t=0,n=this.data.abilities;t<n.length;t++){var o=n[t],r=c.DOM.createElement("input",{className:"vttes-component",type:"checkbox",onChange:this.on_check,style:{marginRight:"4px"},checked:!0});this.num_checked+=1,r.setAttribute("id",o.id);var i=c.DOM.createElement("div",null,r,o.name);e.push(i)}return this.import_button=c.DOM.createElement("input",{className:"r20btn btn btn-success",type:"button",onClick:this.on_click_import,value:"Import Selected",disabled:!0}),this.num_checked>0&&(this.import_button.disabled=!1),c.DOM.createElement(y.Dialog,null,c.DOM.createElement(y.DialogHeader,null,c.DOM.createElement("h2",null,"Ability Import")),c.DOM.createElement(y.DialogBody,null,c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr"}},c.DOM.createElement("button",{className:"btn",onClick:this.on_select_all},"Select All"),c.DOM.createElement("button",{className:"btn",onClick:this.on_unselect_all},"Unselect All")),e),c.DOM.createElement(y.DialogFooter,null,c.DOM.createElement(y.DialogFooterContent,null,c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridGap:"16px"}},c.DOM.createElement("input",{className:"r20btn btn",type:"button",onClick:this.close,value:"Close"}),this.import_button))))},t}(M.DialogBase),_=function(e){function t(){var t=e.call(this,void 0,{minWidth:"30%"})||this;return t.export_individual_files=!1,t.num_checked=0,t.update_export_button_state=function(){t.num_checked<=0?t.export_button.disabled=!0:t.export_button.disabled=!1},t.on_check=function(e){e.target.checked?t.num_checked+=1:t.num_checked-=1,t.update_export_button_state()},t.on_click_export=function(e){for(var n=0,o=t.getRoot().querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];if(!r.checked){for(var i=r.getAttribute("id"),a=!1,l=0;l<t.abilities.length;l++){if(t.abilities[l].id==i){a=!0,t.abilities.splice(l,1);break}}a||console.error("Could not find ability with id '"+i+"'.")}}if(console.log(t.abilities),t.export_individual_files){for(var s={},c=0,u=t.abilities;c<u.length;c++){var p=u[c],h=t.pc.attributes.name+" "+p.name+" "+p.id+".vttes_character_ability_bundle";h=f.replaceAll(h,"/",""),h=f.replaceAll(h,"\\","");var m={schema_version:1,type:"vttes_character_ability_bundle",abilities:[p]},g=JSON.stringify(m,null,2),M=b.strToU8(g);s[h]=M}var y=b.zipSync(s),N=new Blob([y],{type:"application/octet-stream"}),T="Abilities from "+t.pc.attributes.name+".zip";d.saveAs(N,T)}else{m={schema_version:1,type:"vttes_character_ability_bundle",abilities:t.abilities};var v="Abilities from "+t.pc.attributes.name+".vttes_character_ability_bundle",k=JSON.stringify(m,null,2),_=new Blob([k],{type:"data:application/javascript;charset=utf-8"});d.saveAs(_,v)}t.close()},t.on_select_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked||(r.checked=!0,t.num_checked+=1)}t.update_export_button_state()},t.on_unselect_all=function(e){for(var n=0,o=e.target.parentElement.parentElement.querySelectorAll("input.vttes-component");n<o.length;n++){var r=o[n];r.checked&&(r.checked=!1,t.num_checked-=1)}t.update_export_button_state()},t}return o(t,e),t.prototype.show=function(t){this.pc=t,this.num_checked=0,this.abilities=[];for(var n=0,o=this.pc.abilities.models;n<o.length;n++){var r=o[n];this.abilities.push({action:r.attributes.action,description:r.attributes.description,id:r.id,istokenaction:r.attributes.istokenaction,name:r.attributes.name,order:r.attributes.order})}e.prototype.internalShow.call(this)},t.prototype.render=function(){for(var e=this,t=[],n=0,o=this.abilities;n<o.length;n++){var r=o[n],i=c.DOM.createElement("input",{className:"vttes-component",type:"checkbox",onChange:this.on_check,style:{marginRight:"4px"}});i.setAttribute("id",r.id);var a=c.DOM.createElement("div",null,i,r.name);t.push(a)}this.export_button=c.DOM.createElement("input",{disabled:!0,className:"r20btn btn btn-success",type:"button",onClick:this.on_click_export,value:"Export Selected"});var l=c.DOM.createElement("input",{checked:this.export_individual_files,type:"checkbox",style:{marginRight:"4px"},onChange:function(t){e.export_individual_files=t.target.checked}});return c.DOM.createElement(y.Dialog,null,c.DOM.createElement(y.DialogHeader,null,c.DOM.createElement("h2",null,"Ability Export")),c.DOM.createElement(y.DialogBody,null,c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridGap:"5px",alignItems:"center"}},c.DOM.createElement("button",{className:"btn",onClick:this.on_select_all},"Select All"),c.DOM.createElement("button",{className:"btn",onClick:this.on_unselect_all},"Unselect All")),t),c.DOM.createElement(y.DialogFooter,null,c.DOM.createElement(y.DialogFooterContent,null,c.DOM.createElement("div",{style:{display:"grid"}},c.DOM.createElement("div",{style:{marginBottom:"10px"}},l,c.DOM.createElement("span",{style:{cursor:"pointer"},onclick:function(){return l.click()}},"Export to individual files, zipped.")),c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gridGap:"16px"}},c.DOM.createElement("input",{className:"r20btn btn",type:"button",onClick:this.close,value:"Close"}),this.export_button)))))},t}(M.DialogBase),w=function(){var e={name:"",avatar:"",attrorder:"",abilorder:"",mancerdata:"",mancerget:"",mancerstep:""};return s.R20.isGM()&&(e.archived=!1,e.tags="",e.controlledby="",e.inplayerjournals="",e.defaulttoken="",e.bio="",e.gmnotes=""),e},V="r20es-handout-button-enabled-sheet",R=function(){var e={bio:null};return s.R20.isGM()&&(e.defaulttoken=null,e.gmnotes=null),e},E=function(e,t){return new Promise(function(n,o){var r=function(e){return!(e in t)};if(r("name"))return o("name not found");if(r("avatar"))return o("avatar not found");if(r("bio"))return o("bio not found");if(r("attribs"))return o("attribs not found");for(var i=0,a=t.attribs;i<a.length;i++){var l=a[i];if(!("name"in l))return o("Attribute index 0 doesn't have name");if(!("current"in l))return o("Attribute index 0 doesn't have current");if(!("max"in l))return o("Attribute index 0 doesn't have max")}s.R20.wipeObjectStorage(e.abilities),s.R20.wipeObjectStorage(e.attribs);var c=w();c.name=t.name,c.avatar=t.avatar;var d=R();d.bio=t.bio,e.updateBlobs(d),e.save(c,{success:function(e){n()}});for(var u=0,p=t.attribs;u<p.length;u++){var h=p[u];e.attribs.create(h,{silent:!0})}})},U=function(e,t){return new Promise(function(n,o){if(function(e){return!(e in t)}("name"))return o("name not found");for(var i=0,a=0,l=t.attribs;a<l.length;a++){if(!("name"in(u=l[a])))return o("Attribute index "+i+" doesn't have name");if(!("current"in u))return o("Attribute index "+i+" doesn't have current");if(!("max"in u))return o("Attribute index "+i+" doesn't have max");if(!("id"in u))return o("Attribute index "+i+" doesn't have id");i++}i=0;for(var c=0,d=t.abilities;c<d.length;c++){var u;if(!("name"in(u=d[c])))return o("Ability index "+i+" doesn't have name");if(!("description"in u))return o("Ability index "+i+" doesn't have description");if(!("istokenaction"in u))return o("Ability index "+i+" doesn't have istokenaction");if(!("action"in u))return o("Ability index "+i+" doesn't have action");if(!("order"in u))return o("Ability index "+i+" doesn't have order");i++}if(s.R20.wipeObjectStorage(e.abilities),s.R20.wipeObjectStorage(e.attribs),t.oldId){var p=JSON.stringify(t);p=f.replaceAll(p,t.oldId,e.attributes.id),t=JSON.parse(p)}var h=t.defaulttoken&&t.defaulttoken.length>0;t.oldId&&h&&(t.defaulttoken=f.replaceAll(t.defaulttoken,t.oldId,e.attributes.id));var m=r({},w());m.name=t.name,m.avatar=t.avatar,s.R20.isGM()&&(m.tags=t.tags,m.controlledby=t.controlledby,m.inplayerjournals=t.inplayerjournals);var g=R();t.bio&&(g.bio=t.bio),s.R20.isGM()&&t.gmnotes&&(g.gmnotes=t.gmnotes),s.R20.isGM()&&(h?(g.defaulttoken=t.defaulttoken,m.defaulttoken=(new Date).getTime()):(g.defaulttoken=null,m.defaulttoken="")),e.updateBlobs(g),e.save(m,{success:function(e){n()}});for(var M=0,y=t.attribs;M<y.length;M++){var b=y[M];e.attribs.create(b,{silent:!0})}for(var N=0,T=t.abilities;N<T.length;N++){var v=T[N];e.abilities.create(v,{silent:!0})}})},x=function(e,t){return new Promise(function(n,o){var r={archived:t.archived||!1,avatar:t.avatar||"",controlledby:t.controlledby||"",inplayerjournals:t.inplayerjournals||"",name:t.name||"",tags:t.tags||"[]"},i={notes:t.notes||""};s.R20.isGM()&&t.gmnotes&&(i.gmnotes=t.gmnotes||""),e.updateBlobs(i),e.save(r,{success:function(e){n()}})})},D=function(t){function n(){var o=t.call(this,e)||this;return o.sheetTab=null,o.on_journal_file_change=function(e){var t=$(e.target.parentNode).find("button")[0];console.log(t),t.disabled=!(e.target.files.length>0)},o.try_convert_file_handle_to_json=function(e){return i(o,void 0,void 0,function(){var t,n;return a(this,function(o){switch(o.label){case 0:return[4,u.readFile(e)];case 1:t=o.sent(),n=null;try{n=JSON.parse(t)}catch(e){throw console.log(e),"File is not a valid JSON file."}if(!n)throw"Data is null";return[2,n]}})})},o.on_import_click=function(e){e.stopPropagation();var t=c.DOM.createElement("input",{type:"file",accept:".json",multiple:!0});m.import_multiple_files(t,function(e){return i(o,void 0,void 0,function(){var t,n,o,r,i,l,c,d;return a(this,function(a){switch(a.label){case 0:return[4,this.try_convert_file_handle_to_json(e)];case 1:if(t=a.sent(),1!=(n=t.schema_version))return[3,6];i=s.R20.createCharacter(),a.label=2;case 2:return a.trys.push([2,4,,5]),[4,E(i,t)];case 3:return a.sent(),[3,5];case 4:throw o=a.sent(),i.destroy(),o;case 5:return[3,24];case 6:if(2!=n)return[3,11];i=s.R20.createCharacter(),a.label=7;case 7:return a.trys.push([7,9,,10]),[4,U(i,t)];case 8:return a.sent(),[3,10];case 9:throw r=a.sent(),i.destroy(),r;case 10:return[3,24];case 11:if(3!=n)return[3,23];if("character"!=t.type)return[3,16];i=s.R20.createCharacter(),a.label=12;case 12:return a.trys.push([12,14,,15]),[4,U(i,t.character)];case 13:return a.sent(),[3,15];case 14:throw l=a.sent(),i.destroy(),l;case 15:return[3,22];case 16:if("handout"!=t.type)return[3,21];c=s.R20.create_handout(),a.label=17;case 17:return a.trys.push([17,19,,20]),[4,x(c,t.handout)];case 18:return a.sent(),[3,20];case 19:throw d=a.sent(),c.destroy(),d;case 20:return[3,22];case 21:throw"Unknown type: "+t.type;case 22:return[3,24];case 23:throw"Unknown schema version: "+t.schema_version;case 24:return[2]}})})})},o.add_journal_widget=function(){if(window.is_gm){var e=document.getElementById("journal").getElementsByClassName("content")[0],t=c.DOM.createElement("div",{id:n.journalWidgetId},c.DOM.createElement(c.SidebarSeparator,null),c.DOM.createElement("div",null,c.DOM.createElement(c.SidebarCategoryTitle,null,"VTTES Importer"),c.DOM.createElement("button",{className:"btn",style:{display:"block",float:"left",width:"90%",marginBottom:"10px"},onClick:o.on_import_click},"Import Characters & Handouts")),c.DOM.createElement(c.SidebarSeparator,{big:"1px"}));e.appendChild(t)}},o.getPc=function(e){if(!e)return null;if(!e.hasAttribute("data-characterid"))return null;var t=e.getAttribute("data-characterid");if(!t)return null;var n=s.R20.getCharacter(t);return n||null},o.on_import_abilities_click=function(e){return i(o,void 0,void 0,function(){var t,n,o,r=this;return a(this,function(l){return e.stopPropagation(),(t=this.getPc(e.target))?(n=c.DOM.createElement("input",{type:"file",accept:".vttes_character_ability_bundle"}),o=function(){return i(r,void 0,void 0,function(){var e,r,i;return a(this,function(a){switch(a.label){case 0:n.removeEventListener("change",o),e=n.files[0],a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.try_convert_file_handle_to_json(e)];case 2:if(1!=(r=a.sent()).schema_version)throw"Unsupported version: "+r.schema_version;if("vttes_character_ability_bundle"!=r.type)throw"Unsupported data type: "+r.type;return this.import_ability_dialog.show(t,r),[3,4];case 3:return i=a.sent(),alert(i),console.log(i),[3,4];case 4:return[2]}})})},n.click(),n.addEventListener("change",o),[2]):[2]})})},o.on_export_abilities_click=function(e){e.stopPropagation();var t=o.getPc(e.target);t&&o.export_ability_dialog.show(t)},o.on_import_components_click=function(e){return i(o,void 0,void 0,function(){var t,n,o,r=this;return a(this,function(l){return e.stopPropagation(),(t=this.getPc(e.target))?(n=c.DOM.createElement("input",{type:"file",accept:".vttes_component_bundle"}),o=function(){return i(r,void 0,void 0,function(){var e,r,i;return a(this,function(a){switch(a.label){case 0:n.removeEventListener("change",o),e=n.files[0],a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.try_convert_file_handle_to_json(e)];case 2:if(1!=(r=a.sent()).schema_version)throw"Unsupported version: "+r.schema_version;if("vttes_component_bundle"!=r.type)throw"Unsupported data type: "+r.type;return this.import_component_dialog.show(t,r),[3,4];case 3:return i=a.sent(),alert(i),console.log(i),[3,4];case 4:return[2]}})})},n.click(),n.addEventListener("change",o),[2]):[2]})})},o.on_export_components_click=function(e){e.stopPropagation();var t=o.getPc(e.target);t&&o.export_component_dialog.show(t)},o.on_export_click=function(e){return i(o,void 0,void 0,function(){var t,n,o,r,i,l,s,c,u,p,h,m,f;return a(this,function(a){switch(a.label){case 0:return e.stopPropagation(),(t=this.getPc(e.target))?(n=new Promise(function(e){return t._getLatestBlob("defaulttoken",function(){e(!1)})}),o=g.promiseWait(3e3,!0),[4,Promise.race([n,o])]):[2];case 1:for(a.sent(),r={schema_version:3,type:"character",character:{oldId:t.attributes.id||"",name:t.attributes.name||"",avatar:t.attributes.avatar||"",bio:t._blobcache.bio||"",gmnotes:t._blobcache.gmnotes||"",defaulttoken:t._blobcache.defaulttoken||"",tags:t.attributes.tags||"",controlledby:t.attributes.controlledby||"",inplayerjournals:t.attributes.inplayerjournals||"",attribs:[],abilities:[]}},i=0,l=t.attribs.models;i<l.length;i++)s=l[i],r.character.attribs.push({name:s.attributes.name,current:s.attributes.current,max:s.attributes.max,id:s.attributes.id});for(c=0,u=t.abilities.models;c<u.length;c++)p=u[c],r.character.abilities.push({name:p.attributes.name,description:p.attributes.description,istokenaction:p.attributes.istokenaction,action:p.attributes.action,order:p.attributes.order});return h=r.character.name+".json",m=JSON.stringify(r,null,4),f=new Blob([m],{type:"data:application/javascript;charset=utf-8"}),d.saveAs(f,h),[2]}})})},o.on_overwrite_character_click=function(e){e.stopPropagation();var t=c.DOM.createElement("input",{type:"file",accept:".json"}),n=function(){return i(o,void 0,void 0,function(){var o,r,i,l,c;return a(this,function(a){switch(a.label){case 0:if(t.removeEventListener("change",n),o=t.files[0],!(r=this.getPc(e.target)))return alert("Could not find character that corresponds to sheet. Tell a programmer."),[2];if(!window.confirm("Are you sure you want to overwrite "+r.get("name")))return[2];(i=new h.LoadingDialog("Overwriting")).show(),a.label=1;case 1:return a.trys.push([1,12,,13]),[4,this.try_convert_file_handle_to_json(o)];case 2:return 1!=(l=a.sent()).schema_version?[3,4]:[4,E(r,l)];case 3:return a.sent(),[3,11];case 4:return 2!=l.schema_version?[3,6]:[4,U(r,l)];case 5:return a.sent(),[3,11];case 6:return 3!=l.schema_version?[3,10]:"character"!=l.type?[3,8]:[4,U(r,l.character)];case 7:return a.sent(),[3,9];case 8:throw"handout"==l.type?"Cannot overwrite a character with a handout file.":"Unsupported type : "+l.type;case 9:return[3,11];case 10:throw"Unsupported version: "+l.schema_version;case 11:return[3,13];case 12:return c=a.sent(),alert(c),console.log(c),[3,13];case 13:return i.dispose(),s.R20.rerender_character_sheet(r),[2]}})})};t.click(),t.addEventListener("change",n)},o.render_character_tab_widget=function(e){var t=s.R20.getCharacter(e.characterId);if(!t)return c.DOM.createElement("p",null,"Couldn't find the character associated with this dialog box! Tell a programmer.");var n=s.R20.canEditCharacter(t);return c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",columnGap:"16px",rowGap:"32px"}},c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{width:"100%",display:"inline-block"}},c.DOM.createElement("h3",null,"Export"),c.DOM.createElement("p",null,"Export this character as a VTTES character JSON file.")),c.DOM.createElement("input",{type:"button",onClick:o.on_export_click,className:"button",style:{width:"auto"},"data-characterid":e.characterId,value:"Export"})),c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{width:"100%",display:"inline-block"}},c.DOM.createElement("h3",null,"Overwrite"),c.DOM.createElement("p",null,"Overwrite this character with the character stored in the selected VTTES character JSON file.")),c.DOM.createElement("input",{type:"button",onClick:o.on_overwrite_character_click,className:"button",style:{width:"auto"},"data-characterid":e.characterId,value:n?"Overwrite":"You do not have permission to edit this character",disabled:!n})),c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{width:"100%",display:"inline-block"}},c.DOM.createElement("h3",null,"Export Components"),c.DOM.createElement("p",null,"Export individual items, weapons, spells, traits etc of a character/NPC."),c.DOM.createElement("p",null,c.DOM.createElement("i",null,"Note that only the D&D 5e OGL sheet is supported at the time. However, other sheets should work (albeit they won't be user-friendly)."))),c.DOM.createElement("input",{type:"button",className:"button",onClick:o.on_export_components_click,style:{width:"auto"},"data-characterid":e.characterId,value:"Export Components"})),c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{width:"100%",display:"inline-block"}},c.DOM.createElement("h3",null,"Import Components"),c.DOM.createElement("p",null,"Import components that were previously exported using the export components feature.")),c.DOM.createElement("input",{type:"button",className:"button",style:{width:"auto"},onClick:o.on_import_components_click,"data-characterid":e.characterId,value:n?"Import Components":"You do not have permission to edit this character",disabled:!n})),c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{width:"100%",display:"inline-block"}},c.DOM.createElement("h3",null,"Export Abilities"),c.DOM.createElement("p",null,"Export character abilities individually or as a bundle.")),c.DOM.createElement("input",{type:"button",className:"button",onClick:o.on_export_abilities_click,style:{width:"auto"},"data-characterid":e.characterId,value:"Export Abilities"})),c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{width:"100%",display:"inline-block"}},c.DOM.createElement("h3",null,"Import Abilities"),c.DOM.createElement("p",null,"Export character abilities individually or as a bundle.")),c.DOM.createElement("input",{type:"button",className:"button",style:{width:"auto"},onClick:o.on_import_abilities_click,"data-characterid":e.characterId,value:n?"Import Abilities":"You do not have permission to edit this character",disabled:!n})))},o.setup=function(){o.export_component_dialog=new v,o.import_component_dialog=new T,o.export_ability_dialog=new _,o.import_ability_dialog=new k,o.sheetTab=p.SheetTab.add("Export & Overwrite",o.render_character_tab_widget),o.add_journal_widget(),window.r20es.overwrite_handout=function(e){return i(o,void 0,void 0,function(){var t,n,o,r,l=this;return a(this,function(d){return e.stopPropagation(),t=$(e.target).parents(".ui-dialog-titlebar").siblings(".dialog").attr("data-handoutid"),(n=s.R20.getHandout(t))?(o=c.DOM.createElement("input",{type:"file",accept:".json"}),r=function(){return i(l,void 0,void 0,function(){var e,t,i,l;return a(this,function(a){switch(a.label){case 0:if(o.removeEventListener("change",r),e=o.files[0],!window.confirm("Are you sure you want to overwrite "+n.get("name")))return[2];(t=new h.LoadingDialog("Overwriting")).show(),a.label=1;case 1:return a.trys.push([1,9,,10]),[4,this.try_convert_file_handle_to_json(e)];case 2:if(i=a.sent(),console.log(n),3!=i.schema_version)return[3,7];if("character"!=i.type)return[3,3];throw"Cannot overwrite a handout with a character file.";case 3:return"handout"!=i.type?[3,5]:[4,x(n,i.handout)];case 4:return a.sent(),[3,6];case 5:throw"Unsupported type : "+i.type;case 6:return[3,8];case 7:throw"Unsupported version: "+i.schema_version;case 8:return[3,10];case 9:return l=a.sent(),alert(l),console.log(l),[3,10];case 10:return t.dispose(),[2]}})})},o.click(),o.addEventListener("change",r),[2]):(alert("Failed to find handout associated with dialog!"),[2])})})},window.r20es.export_handout=function(e){return i(o,void 0,void 0,function(){var t,n,o,r,i,l,c,u;return a(this,function(a){switch(a.label){case 0:return t=$(e.target).parents(".ui-dialog-titlebar").siblings(".dialog").attr("data-handoutid"),(n=s.R20.getHandout(t))?(r=[(o=function(e){return new Promise(function(t){return n._getLatestBlob(e,function(){return t()})})})("notes")],s.R20.isGM()&&r.push(o("gmnotes")),[4,Promise.race([g.promiseWait(3e3),Promise.all(r)])]):(alert("Failed to find handout associated with dialog!"),[2]);case 1:return a.sent(),i={schema_version:3,type:"handout",handout:{archived:n.attributes.archived||!1,avatar:n.attributes.avatar||"",controlledby:n.attributes.controlledby||"",inplayerjournals:n.attributes.inplayerjournals||"",name:n.attributes.name||"",tags:n.attributes.tags||"[]",gmnotes:"",notes:n._blobcache.notes||""}},s.R20.isGM()&&(i.handout.gmnotes=n._blobcache.gmnotes||""),l=i.handout.name+".json",c=JSON.stringify(i,null,4),u=new Blob([c],{type:"data:application/javascript;charset=utf-8"}),d.saveAs(u,l),[2]}})})};var e=u.createCSSElement("\n.vttes_overwrite_handout {\n visibility: visible !important;\n}\n\n.vttes_export_handout {\n visibility: visible !important;\n}\n\n",V);document.body.appendChild(e)},o.dispose=function(){t.prototype.dispose.call(o),o.export_component_dialog.dispose(),o.import_component_dialog.dispose(),o.export_ability_dialog.dispose(),o.import_ability_dialog.dispose(),o.sheetTab&&o.sheetTab.dispose(),u.findByIdAndRemove(n.journalWidgetId),window.r20es.export_handout=null,u.findByIdAndRemove(V)},o}return o(n,t),n.journalWidgetId="r20es-character-io-journal-widget",n.overwriteButtonClass="r20es-sheet-overwrite-button",n}(l.R20Module.OnAppLoadBase);t.default=function(){(new D).install()}}).call(this,"src/modules/CharacterIO")},function(e,t,n){"use strict";n.r(t),n.d(t,"FlateErrorCode",function(){return S}),n.d(t,"Deflate",function(){return ke}),n.d(t,"AsyncDeflate",function(){return _e}),n.d(t,"deflate",function(){return we}),n.d(t,"deflateSync",function(){return Ve}),n.d(t,"Inflate",function(){return Re}),n.d(t,"AsyncInflate",function(){return Ee}),n.d(t,"inflate",function(){return Ue}),n.d(t,"inflateSync",function(){return xe}),n.d(t,"Gzip",function(){return De}),n.d(t,"AsyncGzip",function(){return Se}),n.d(t,"gzip",function(){return Oe}),n.d(t,"gzipSync",function(){return Fe}),n.d(t,"Gunzip",function(){return Ze}),n.d(t,"AsyncGunzip",function(){return je}),n.d(t,"gunzip",function(){return We}),n.d(t,"gunzipSync",function(){return ze}),n.d(t,"Zlib",function(){return Ie}),n.d(t,"AsyncZlib",function(){return Le}),n.d(t,"zlib",function(){return Ce}),n.d(t,"zlibSync",function(){return Ae}),n.d(t,"Unzlib",function(){return Ye}),n.d(t,"AsyncUnzlib",function(){return Qe}),n.d(t,"unzlib",function(){return Be}),n.d(t,"unzlibSync",function(){return Ge}),n.d(t,"compress",function(){return Oe}),n.d(t,"AsyncCompress",function(){return Se}),n.d(t,"compressSync",function(){return Fe}),n.d(t,"Compress",function(){return De}),n.d(t,"Decompress",function(){return Je}),n.d(t,"AsyncDecompress",function(){return He}),n.d(t,"decompress",function(){return Xe}),n.d(t,"decompressSync",function(){return Pe}),n.d(t,"DecodeUTF8",function(){return nt}),n.d(t,"EncodeUTF8",function(){return ot}),n.d(t,"strToU8",function(){return rt}),n.d(t,"strFromU8",function(){return it}),n.d(t,"ZipPassThrough",function(){return ht}),n.d(t,"ZipDeflate",function(){return mt}),n.d(t,"AsyncZipDeflate",function(){return ft}),n.d(t,"Zip",function(){return gt}),n.d(t,"zip",function(){return Mt}),n.d(t,"zipSync",function(){return yt}),n.d(t,"UnzipPassThrough",function(){return bt}),n.d(t,"UnzipInflate",function(){return Nt}),n.d(t,"AsyncUnzipInflate",function(){return Tt}),n.d(t,"Unzip",function(){return vt}),n.d(t,"unzip",function(){return _t}),n.d(t,"unzipSync",function(){return wt});var o={},r=Uint8Array,i=Uint16Array,a=Uint32Array,l=new r([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),s=new r([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),c=new r([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=function(e,t){for(var n=new i(31),o=0;o<31;++o)n[o]=t+=1<<e[o-1];var r=new a(n[30]);for(o=1;o<30;++o)for(var l=n[o];l<n[o+1];++l)r[l]=l-n[o]<<5|o;return[n,r]},u=d(l,2),p=u[0],h=u[1];p[28]=258,h[258]=28;for(var m=d(s,0),f=m[0],g=m[1],M=new i(32768),y=0;y<32768;++y){var b=(43690&y)>>>1|(21845&y)<<1;b=(61680&(b=(52428&b)>>>2|(13107&b)<<2))>>>4|(3855&b)<<4,M[y]=((65280&b)>>>8|(255&b)<<8)>>>1}var N=function(e,t,n){for(var o=e.length,r=0,a=new i(t);r<o;++r)++a[e[r]-1];var l,s=new i(t);for(r=0;r<t;++r)s[r]=s[r-1]+a[r-1]<<1;if(n){l=new i(1<<t);var c=15-t;for(r=0;r<o;++r)if(e[r])for(var d=r<<4|e[r],u=t-e[r],p=s[e[r]-1]++<<u,h=p|(1<<u)-1;p<=h;++p)l[M[p]>>>c]=d}else for(l=new i(o),r=0;r<o;++r)e[r]&&(l[r]=M[s[e[r]-1]++]>>>15-e[r]);return l},T=new r(288);for(y=0;y<144;++y)T[y]=8;for(y=144;y<256;++y)T[y]=9;for(y=256;y<280;++y)T[y]=7;for(y=280;y<288;++y)T[y]=8;var v=new r(32);for(y=0;y<32;++y)v[y]=5;var k=N(T,9,0),_=N(T,9,1),w=N(v,5,0),V=N(v,5,1),R=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},E=function(e,t,n){var o=t/8|0;return(e[o]|e[o+1]<<8)>>(7&t)&n},U=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(7&t)},x=function(e){return(e+7)/8|0},D=function(e,t,n){(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);var o=new(e instanceof i?i:e instanceof a?a:r)(n-t);return o.set(e.subarray(t,n)),o},S={UnexpectedEOF:0,InvalidBlockType:1,InvalidLengthLiteral:2,InvalidDistance:3,StreamFinished:4,NoStreamHandler:5,InvalidHeader:6,NoCallback:7,InvalidUTF8:8,ExtraFieldTooLong:9,InvalidDate:10,FilenameTooLong:11,StreamFinishing:12,InvalidZipData:13,UnknownCompressionMethod:14},O=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],F=function(e,t,n){var o=new Error(t||O[e]);if(o.code=e,Error.captureStackTrace&&Error.captureStackTrace(o,F),!n)throw o;return o},Z=function(e,t,n){var o=e.length;if(!o||n&&n.f&&!n.l)return t||new r(0);var i=!t||n,a=!n||n.i;n||(n={}),t||(t=new r(3*o));var d=function(e){var n=t.length;if(e>n){var o=new r(Math.max(2*n,e));o.set(t),t=o}},u=n.f||0,h=n.p||0,m=n.b||0,g=n.l,M=n.d,y=n.m,b=n.n,T=8*o;do{if(!g){u=E(e,h,1);var v=E(e,h+1,3);if(h+=3,!v){var k=e[(A=x(h)+4)-4]|e[A-3]<<8,w=A+k;if(w>o){a&&F(0);break}i&&d(m+k),t.set(e.subarray(A,w),m),n.b=m+=k,n.p=h=8*w,n.f=u;continue}if(1==v)g=_,M=V,y=9,b=5;else if(2==v){var S=E(e,h,31)+257,O=E(e,h+10,15)+4,Z=S+E(e,h+5,31)+1;h+=14;for(var j=new r(Z),W=new r(19),z=0;z<O;++z)W[c[z]]=E(e,h+3*z,7);h+=3*O;var I=R(W),L=(1<<I)-1,C=N(W,I,1);for(z=0;z<Z;){var A,Y=C[E(e,h,L)];if(h+=15&Y,(A=Y>>>4)<16)j[z++]=A;else{var Q=0,B=0;for(16==A?(B=3+E(e,h,3),h+=2,Q=j[z-1]):17==A?(B=3+E(e,h,7),h+=3):18==A&&(B=11+E(e,h,127),h+=7);B--;)j[z++]=Q}}var G=j.subarray(0,S),J=j.subarray(S);y=R(G),b=R(J),g=N(G,y,1),M=N(J,b,1)}else F(1);if(h>T){a&&F(0);break}}i&&d(m+131072);for(var H=(1<<y)-1,X=(1<<b)-1,P=h;;P=h){var K=(Q=g[U(e,h)&H])>>>4;if((h+=15&Q)>T){a&&F(0);break}if(Q||F(2),K<256)t[m++]=K;else{if(256==K){P=h,g=null;break}var q=K-254;if(K>264){var $=l[z=K-257];q=E(e,h,(1<<$)-1)+p[z],h+=$}var ee=M[U(e,h)&X],te=ee>>>4;ee||F(3),h+=15ⅇJ=f[te];if(te>3){$=s[te];J+=U(e,h)&(1<<$)-1,h+=$}if(h>T){a&&F(0);break}i&&d(m+131072);for(var ne=m+q;m<ne;m+=4)t[m]=t[m-J],t[m+1]=t[m+1-J],t[m+2]=t[m+2-J],t[m+3]=t[m+3-J];m=ne}}n.l=g,n.p=P,n.b=m,n.f=u,g&&(u=1,n.m=y,n.d=M,n.n=b)}while(!u);return m==t.length?t:D(t,0,m)},j=function(e,t,n){n<<=7&t;var o=t/8|0;e[o]|=n,e[o+1]|=n>>>8},W=function(e,t,n){n<<=7&t;var o=t/8|0;e[o]|=n,e[o+1]|=n>>>8,e[o+2]|=n>>>16},z=function(e,t){for(var n=[],o=0;o<e.length;++o)e[o]&&n.push({s:o,f:e[o]});var a=n.length,l=n.slice();if(!a)return[B,0];if(1==a){var s=new r(n[0].s+1);return s[n[0].s]=1,[s,1]}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var c=n[0],d=n[1],u=0,p=1,h=2;for(n[0]={s:-1,f:c.f+d.f,l:c,r:d};p!=a-1;)c=n[n[u].f<n[h].f?u++:h++],d=n[u!=p&&n[u].f<n[h].f?u++:h++],n[p++]={s:-1,f:c.f+d.f,l:c,r:d};var m=l[0].s;for(o=1;o<a;++o)l[o].s>m&&(m=l[o].s);var f=new i(m+1),g=I(n[p-1],f,0);if(g>t){o=0;var M=0,y=g-t,b=1<<y;for(l.sort(function(e,t){return f[t.s]-f[e.s]||e.f-t.f});o<a;++o){var N=l[o].s;if(!(f[N]>t))break;M+=b-(1<<g-f[N]),f[N]=t}for(M>>>=y;M>0;){var T=l[o].s;f[T]<t?M-=1<<t-f[T]++-1:++o}for(;o>=0&&M;--o){var v=l[o].s;f[v]==t&&(--f[v],++M)}g=t}return[new r(f),g]},I=function(e,t,n){return-1==e.s?Math.max(I(e.l,t,n+1),I(e.r,t,n+1)):t[e.s]=n},L=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new i(++t),o=0,r=e[0],a=1,l=function(e){n[o++]=e},s=1;s<=t;++s)if(e[s]==r&&s!=t)++a;else{if(!r&&a>2){for(;a>138;a-=138)l(32754);a>2&&(l(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(l(r),--a;a>6;a-=6)l(8304);a>2&&(l(a-3<<5|8208),a=0)}for(;a--;)l(r);a=1,r=e[s]}return[n.subarray(0,o),t]},C=function(e,t){for(var n=0,o=0;o<t.length;++o)n+=e[o]*t[o];return n},A=function(e,t,n){var o=n.length,r=x(t+2);e[r]=255&o,e[r+1]=o>>>8,e[r+2]=255^e[r],e[r+3]=255^e[r+1];for(var i=0;i<o;++i)e[r+i+4]=n[i];return 8*(r+4+o)},Y=function(e,t,n,o,r,a,d,u,p,h,m){j(t,m++,n),++r[256];for(var f=z(r,15),g=f[0],M=f[1],y=z(a,15),b=y[0],_=y[1],V=L(g),R=V[0],E=V[1],U=L(b),x=U[0],D=U[1],S=new i(19),O=0;O<R.length;++O)S[31&R[O]]++;for(O=0;O<x.length;++O)S[31&x[O]]++;for(var F=z(S,7),Z=F[0],I=F[1],Y=19;Y>4&&!Z[c[Y-1]];--Y);var Q,B,G,J,H=h+5<<3,X=C(r,T)+C(a,v)+d,P=C(r,g)+C(a,b)+d+14+3*Y+C(S,Z)+(2*S[16]+3*S[17]+7*S[18]);if(H<=X&&H<=P)return A(t,m,e.subarray(p,p+h));if(j(t,m,1+(P<X)),m+=2,P<X){Q=N(g,M,0),B=g,G=N(b,_,0),J=b;var K=N(Z,I,0);j(t,m,E-257),j(t,m+5,D-1),j(t,m+10,Y-4),m+=14;for(O=0;O<Y;++O)j(t,m+3*O,Z[c[O]]);m+=3*Y;for(var q=[R,x],$=0;$<2;++$){var ee=q[$];for(O=0;O<ee.length;++O){var te=31&ee[O];j(t,m,K[te]),m+=Z[te],te>15&&(j(t,m,ee[O]>>>5&127),m+=ee[O]>>>12)}}}else Q=k,B=T,G=w,J=v;for(O=0;O<u;++O)if(o[O]>255){te=o[O]>>>18&31;W(t,m,Q[te+257]),m+=B[te+257],te>7&&(j(t,m,o[O]>>>23&31),m+=l[te]);var ne=31&o[O];W(t,m,G[ne]),m+=J[ne],ne>3&&(W(t,m,o[O]>>>5&8191),m+=s[ne])}else W(t,m,Q[o[O]]),m+=B[o[O]];return W(t,m,Q[256]),m+B[256]},Q=new a([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),B=new r(0),G=function(e,t,n,o,c,d){var u=e.length,p=new r(o+u+5*(1+Math.ceil(u/7e3))+c),m=p.subarray(o,p.length-c),f=0;if(!t||u<8)for(var M=0;M<=u;M+=65535){var y=M+65535;y<u?f=A(m,f,e.subarray(M,y)):(m[M]=d,f=A(m,f,e.subarray(M,u)))}else{for(var b=Q[t-1],N=b>>>13,T=8191&b,v=(1<<n)-1,k=new i(32768),_=new i(v+1),w=Math.ceil(n/3),V=2*w,R=function(t){return(e[t]^e[t+1]<<w^e[t+2]<<V)&v},E=new a(25e3),U=new i(288),S=new i(32),O=0,F=0,Z=(M=0,0),j=0,W=0;M<u;++M){var z=R(M),I=32767&M,L=_[z];if(k[I]=L,_[z]=I,j<=M){var C=u-M;if((O>7e3||Z>24576)&&C>423){f=Y(e,m,0,E,U,S,F,Z,W,M-W,f),Z=O=F=0,W=M;for(var G=0;G<286;++G)U[G]=0;for(G=0;G<30;++G)S[G]=0}var J=2,H=0,X=T,P=I-L&32767;if(C>2&&z==R(M-P))for(var K=Math.min(N,C)-1,q=Math.min(32767,M),$=Math.min(258,C);P<=q&&--X&&I!=L;){if(e[M+J]==e[M+J-P]){for(var ee=0;ee<$&&e[M+ee]==e[M+ee-P];++ee);if(ee>J){if(J=ee,H=P,ee>K)break;var te=Math.min(P,ee-2),ne=0;for(G=0;G<te;++G){var oe=M-P+G+32768&32767,re=oe-k[oe]+32768&32767;re>ne&&(ne=re,L=oe)}}}P+=(I=L)-(L=k[I])+32768&32767}if(H){E[Z++]=268435456|h[J]<<18|g[H];var ie=31&h[J],ae=31&g[H];F+=l[ie]+s[ae],++U[257+ie],++S[ae],j=M+J,++O}else E[Z++]=e[M],++U[e[M]]}}f=Y(e,m,d,E,U,S,F,Z,W,M-W,f),!d&&7&f&&(f=A(m,f+1,B))}return D(p,0,o+x(f)+c)},J=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,o=9;--o;)n=(1&n&&-306674912)^n>>>1;e[t]=n}return e}(),H=function(){var e=-1;return{p:function(t){for(var n=e,o=0;o<t.length;++o)n=J[255&n^t[o]]^n>>>8;e=n},d:function(){return~e}}},X=function(){var e=1,t=0;return{p:function(n){for(var o=e,r=t,i=0|n.length,a=0;a!=i;){for(var l=Math.min(a+2655,i);a<l;++a)r+=o+=n[a];o=(65535&o)+15*(o>>16),r=(65535&r)+15*(r>>16)}e=o,t=r},d:function(){return(255&(e%=65521))<<24|e>>>8<<16|(255&(t%=65521))<<8|t>>>8}}},P=function(e,t,n,o,r){return G(e,null==t.level?6:t.level,null==t.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):12+t.mem,n,o,!r)},K=function(e,t){var n={};for(var o in e)n[o]=e[o];for(var o in t)n[o]=t[o];return n},q=function(e,t,n){for(var o=e(),r=e.toString(),i=r.slice(r.indexOf("[")+1,r.lastIndexOf("]")).replace(/ /g,"").split(","),a=0;a<o.length;++a){var l=o[a],s=i[a];if("function"==typeof l){t+=";"+s+"=";var c=l.toString();if(l.prototype)if(-1!=c.indexOf("[native code]")){var d=c.indexOf(" ",8)+1;t+=c.slice(d,c.indexOf("(",d))}else for(var u in t+=c,l.prototype)t+=";"+s+".prototype."+u+"="+l.prototype[u].toString();else t+=c}else n[s]=l}return[t,n]},$=[],ee=function(e,t,n,l){var s;if(!$[n]){for(var c="",d={},u=e.length-1,p=0;p<u;++p)c=(s=q(e[p],c,d))[0],d=s[1];$[n]=q(e[u],c,d)}var h=K({},$[n][1]);return function(e,t,n,r,i){var a=new Worker(o[t]||(o[t]=URL.createObjectURL(new Blob([e+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return a.onmessage=function(e){var t=e.data,n=t.$e$;if(n){var o=new Error(n[0]);o.code=n[1],o.stack=n[2],i(o,null)}else i(null,t)},a.postMessage(n,r),a}($[n][0]+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+t.toString()+"}",n,h,function(e){var t=[];for(var n in e)(e[n]instanceof r||e[n]instanceof i||e[n]instanceof a)&&t.push((e[n]=new e[n].constructor(e[n])).buffer);return t}(h),l)},te=function(){return[r,i,a,l,s,c,p,f,_,V,M,O,N,R,E,U,x,D,F,Z,xe,le,se]},ne=function(){return[r,i,a,l,s,c,h,g,k,T,w,v,M,Q,B,N,j,W,z,I,L,C,A,Y,x,D,G,P,Ve,le]},oe=function(){return[ge,be,fe,H,J]},re=function(){return[Me,ye]},ie=function(){return[Ne,fe,X]},ae=function(){return[Te]},le=function(e){return postMessage(e,[e.buffer])},se=function(e){return e&&e.size&&new r(e.size)},ce=function(e,t,n,o,r,i){var a=ee(n,o,r,function(e,t){a.terminate(),i(e,t)});return a.postMessage([e,t],t.consume?[e.buffer]:[]),function(){a.terminate()}},de=function(e){return e.ondata=function(e,t){return postMessage([e,t],[e.buffer])},function(t){return e.push(t.data[0],t.data[1])}},ue=function(e,t,n,o,r){var i,a=ee(e,o,r,function(e,n){e?(a.terminate(),t.ondata.call(t,e)):(n[1]&&a.terminate(),t.ondata.call(t,e,n[0],n[1]))});a.postMessage(n),t.push=function(e,n){t.ondata||F(5),i&&t.ondata(F(4,0,1),null,!!n),a.postMessage([e,i=n],[e.buffer])},t.terminate=function(){a.terminate()}},pe=function(e,t){return e[t]|e[t+1]<<8},he=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},me=function(e,t){return he(e,t)+4294967296*he(e,t+4)},fe=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},ge=function(e,t){var n=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:9==t.level?2:0,e[9]=3,0!=t.mtime&&fe(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),n){e[3]=8;for(var o=0;o<=n.length;++o)e[o+10]=n.charCodeAt(o)}},Me=function(e){31==e[0]&&139==e[1]&&8==e[2]||F(6,"invalid gzip data");var t=e[3],n=10;4&t&&(n+=e[10]|2+(e[11]<<8));for(var o=(t>>3&1)+(t>>4&1);o>0;o-=!e[n++]);return n+(2&t)},ye=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},be=function(e){return 10+(e.filename&&e.filename.length+1||0)},Ne=function(e,t){var n=t.level,o=0==n?0:n<6?1:9==n?3:2;e[0]=120,e[1]=o<<6|(o?32-2*o:1)},Te=function(e){(8!=(15&e[0])||e[0]>>>4>7||(e[0]<<8|e[1])%31)&&F(6,"invalid zlib data"),32&e[1]&&F(6,"invalid zlib data: preset dictionaries not supported")};function ve(e,t){return t||"function"!=typeof e||(t=e,e={}),this.ondata=t,e}var ke=function(){function e(e,t){t||"function"!=typeof e||(t=e,e={}),this.ondata=t,this.o=e||{}}return e.prototype.p=function(e,t){this.ondata(P(e,this.o,0,0,!t),t)},e.prototype.push=function(e,t){this.ondata||F(5),this.d&&F(4),this.d=t,this.p(e,t||!1)},e}(),_e=function(){return function(e,t){ue([ne,function(){return[de,ke]}],this,ve.call(this,e,t),function(e){var t=new ke(e.data);onmessage=de(t)},6)}}();function we(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),ce(e,t,[ne],function(e){return le(Ve(e.data[0],e.data[1]))},0,n)}function Ve(e,t){return P(e,t||{},0,0)}var Re=function(){function e(e){this.s={},this.p=new r(0),this.ondata=e}return e.prototype.e=function(e){this.ondata||F(5),this.d&&F(4);var t=this.p.length,n=new r(t+e.length);n.set(this.p),n.set(e,t),this.p=n},e.prototype.c=function(e){this.d=this.s.i=e||!1;var t=this.s.b,n=Z(this.p,this.o,this.s);this.ondata(D(n,t,this.s.b),this.d),this.o=D(n,this.s.b-32768),this.s.b=this.o.length,this.p=D(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),Ee=function(){return function(e){this.ondata=e,ue([te,function(){return[de,Re]}],this,0,function(){var e=new Re;onmessage=de(e)},7)}}();function Ue(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),ce(e,t,[te],function(e){return le(xe(e.data[0],se(e.data[1])))},1,n)}function xe(e,t){return Z(e,t)}var De=function(){function e(e,t){this.c=H(),this.l=0,this.v=1,ke.call(this,e,t)}return e.prototype.push=function(e,t){ke.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e),this.l+=e.length;var n=P(e,this.o,this.v&&be(this.o),t&&8,!t);this.v&&(ge(n,this.o),this.v=0),t&&(fe(n,n.length-8,this.c.d()),fe(n,n.length-4,this.l)),this.ondata(n,t)},e}(),Se=function(){return function(e,t){ue([ne,oe,function(){return[de,ke,De]}],this,ve.call(this,e,t),function(e){var t=new De(e.data);onmessage=de(t)},8)}}();function Oe(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),ce(e,t,[ne,oe,function(){return[Fe]}],function(e){return le(Fe(e.data[0],e.data[1]))},2,n)}function Fe(e,t){t||(t={});var n=H(),o=e.length;n.p(e);var r=P(e,t,be(t),8),i=r.length;return ge(r,t),fe(r,i-8,n.d()),fe(r,i-4,o),r}var Ze=function(){function e(e){this.v=1,Re.call(this,e)}return e.prototype.push=function(e,t){if(Re.prototype.e.call(this,e),this.v){var n=this.p.length>3?Me(this.p):4;if(n>=this.p.length&&!t)return;this.p=this.p.subarray(n),this.v=0}t&&(this.p.length<8&&F(6,"invalid gzip data"),this.p=this.p.subarray(0,-8)),Re.prototype.c.call(this,t)},e}(),je=function(){return function(e){this.ondata=e,ue([te,re,function(){return[de,Re,Ze]}],this,0,function(){var e=new Ze;onmessage=de(e)},9)}}();function We(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),ce(e,t,[te,re,function(){return[ze]}],function(e){return le(ze(e.data[0]))},3,n)}function ze(e,t){return Z(e.subarray(Me(e),-8),t||new r(ye(e)))}var Ie=function(){function e(e,t){this.c=X(),this.v=1,ke.call(this,e,t)}return e.prototype.push=function(e,t){ke.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e);var n=P(e,this.o,this.v&&2,t&&4,!t);this.v&&(Ne(n,this.o),this.v=0),t&&fe(n,n.length-4,this.c.d()),this.ondata(n,t)},e}(),Le=function(){return function(e,t){ue([ne,ie,function(){return[de,ke,Ie]}],this,ve.call(this,e,t),function(e){var t=new Ie(e.data);onmessage=de(t)},10)}}();function Ce(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),ce(e,t,[ne,ie,function(){return[Ae]}],function(e){return le(Ae(e.data[0],e.data[1]))},4,n)}function Ae(e,t){t||(t={});var n=X();n.p(e);var o=P(e,t,2,4);return Ne(o,t),fe(o,o.length-4,n.d()),o}var Ye=function(){function e(e){this.v=1,Re.call(this,e)}return e.prototype.push=function(e,t){if(Re.prototype.e.call(this,e),this.v){if(this.p.length<2&&!t)return;this.p=this.p.subarray(2),this.v=0}t&&(this.p.length<4&&F(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Re.prototype.c.call(this,t)},e}(),Qe=function(){return function(e){this.ondata=e,ue([te,ae,function(){return[de,Re,Ye]}],this,0,function(){var e=new Ye;onmessage=de(e)},11)}}();function Be(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),ce(e,t,[te,ae,function(){return[Ge]}],function(e){return le(Ge(e.data[0],se(e.data[1])))},5,n)}function Ge(e,t){return Z((Te(e),e.subarray(2,-4)),t)}var Je=function(){function e(e){this.G=Ze,this.I=Re,this.Z=Ye,this.ondata=e}return e.prototype.push=function(e,t){if(this.ondata||F(5),this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var n=new r(this.p.length+e.length);n.set(this.p),n.set(e,this.p.length)}else this.p=e;if(this.p.length>2){var o=this,i=function(){o.ondata.apply(o,arguments)};this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(i):8!=(15&this.p[0])||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(i):new this.Z(i),this.s.push(this.p,t),this.p=null}}},e}(),He=function(){function e(e){this.G=je,this.I=Ee,this.Z=Qe,this.ondata=e}return e.prototype.push=function(e,t){Je.prototype.push.call(this,e,t)},e}();function Xe(e,t,n){return n||(n=t,t={}),"function"!=typeof n&&F(7),31==e[0]&&139==e[1]&&8==e[2]?We(e,t,n):8!=(15&e[0])||e[0]>>4>7||(e[0]<<8|e[1])%31?Ue(e,t,n):Be(e,t,n)}function Pe(e,t){return 31==e[0]&&139==e[1]&&8==e[2]?ze(e,t):8!=(15&e[0])||e[0]>>4>7||(e[0]<<8|e[1])%31?xe(e,t):Ge(e,t)}var Ke=function(e,t,n,o){for(var i in e){var a=e[i],l=t+i;a instanceof r?n[l]=[a,o]:Array.isArray(a)?n[l]=[a[0],K(o,a[1])]:Ke(a,l+"/",n,o)}},qe="undefined"!=typeof TextEncoder&&new TextEncoder,$e="undefined"!=typeof TextDecoder&&new TextDecoder,et=0;try{$e.decode(B,{stream:!0}),et=1}catch(e){}var tt=function(e){for(var t="",n=0;;){var o=e[n++],r=(o>127)+(o>223)+(o>239);if(n+r>e.length)return[t,D(e,n-1)];r?3==r?(o=((15&o)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,t+=String.fromCharCode(55296|o>>10,56320|1023&o)):t+=1&r?String.fromCharCode((31&o)<<6|63&e[n++]):String.fromCharCode((15&o)<<12|(63&e[n++])<<6|63&e[n++]):t+=String.fromCharCode(o)}},nt=function(){function e(e){this.ondata=e,et?this.t=new TextDecoder:this.p=B}return e.prototype.push=function(e,t){if(this.ondata||F(5),t=!!t,this.t)return this.ondata(this.t.decode(e,{stream:!0}),t),void(t&&(this.t.decode().length&&F(8),this.t=null));this.p||F(4);var n=new r(this.p.length+e.length);n.set(this.p),n.set(e,this.p.length);var o=tt(n),i=o[0],a=o[1];t?(a.length&&F(8),this.p=null):this.p=a,this.ondata(i,t)},e}(),ot=function(){function e(e){this.ondata=e}return e.prototype.push=function(e,t){this.ondata||F(5),this.d&&F(4),this.ondata(rt(e),this.d=t||!1)},e}();function rt(e,t){if(t){for(var n=new r(e.length),o=0;o<e.length;++o)n[o]=e.charCodeAt(o);return n}if(qe)return qe.encode(e);var i=e.length,a=new r(e.length+(e.length>>1)),l=0,s=function(e){a[l++]=e};for(o=0;o<i;++o){if(l+5>a.length){var c=new r(l+8+(i-o<<1));c.set(a),a=c}var d=e.charCodeAt(o);d<128||t?s(d):d<2048?(s(192|d>>6),s(128|63&d)):d>55295&&d<57344?(s(240|(d=65536+(1047552&d)|1023&e.charCodeAt(++o))>>18),s(128|d>>12&63),s(128|d>>6&63),s(128|63&d)):(s(224|d>>12),s(128|d>>6&63),s(128|63&d))}return D(a,0,l)}function it(e,t){if(t){for(var n="",o=0;o<e.length;o+=16384)n+=String.fromCharCode.apply(null,e.subarray(o,o+16384));return n}if($e)return $e.decode(e);var r=tt(e),i=r[0];return r[1].length&&F(8),i}var at=function(e){return 1==e?3:e<6?2:9==e?1:0},lt=function(e,t){return t+30+pe(e,t+26)+pe(e,t+28)},st=function(e,t,n){var o=pe(e,t+28),r=it(e.subarray(t+46,t+46+o),!(2048&pe(e,t+8))),i=t+46+o,a=he(e,t+20),l=n&&4294967295==a?ct(e,i):[a,he(e,t+24),he(e,t+42)],s=l[0],c=l[1],d=l[2];return[pe(e,t+10),s,c,r,i+pe(e,t+30)+pe(e,t+32),d]},ct=function(e,t){for(;1!=pe(e,t);t+=4+pe(e,t+2));return[me(e,t+12),me(e,t+4),me(e,t+20)]},dt=function(e){var t=0;if(e)for(var n in e){var o=e[n].length;o>65535&&F(9),t+=o+4}return t},ut=function(e,t,n,o,r,i,a,l){var s=o.length,c=n.extra,d=l&&l.length,u=dt(c);fe(e,t,null!=a?33639248:67324752),t+=4,null!=a&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(null==i&&8),e[t++]=r&&8,e[t++]=255&n.compression,e[t++]=n.compression>>8;var p=new Date(null==n.mtime?Date.now():n.mtime),h=p.getFullYear()-1980;if((h<0||h>119)&&F(10),fe(e,t,h<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>>1),t+=4,null!=i&&(fe(e,t,n.crc),fe(e,t+4,i),fe(e,t+8,n.size)),fe(e,t+12,s),fe(e,t+14,u),t+=16,null!=a&&(fe(e,t,d),fe(e,t+6,n.attrs),fe(e,t+10,a),t+=14),e.set(o,t),t+=s,u)for(var m in c){var f=c[m],g=f.length;fe(e,t,+m),fe(e,t+2,g),e.set(f,t+4),t+=4+g}return d&&(e.set(l,t),t+=d),t},pt=function(e,t,n,o,r){fe(e,t,101010256),fe(e,t+8,n),fe(e,t+10,n),fe(e,t+12,o),fe(e,t+16,r)},ht=function(){function e(e){this.filename=e,this.c=H(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){this.ondata||F(5),this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}(),mt=function(){function e(e,t){var n=this;t||(t={}),ht.call(this,e),this.d=new ke(t,function(e,t){n.ondata(null,e,t)}),this.compression=8,this.flag=at(t.level)}return e.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},e.prototype.push=function(e,t){ht.prototype.push.call(this,e,t)},e}(),ft=function(){function e(e,t){var n=this;t||(t={}),ht.call(this,e),this.d=new _e(t,function(e,t,o){n.ondata(e,t,o)}),this.compression=8,this.flag=at(t.level),this.terminate=this.d.terminate}return e.prototype.process=function(e,t){this.d.push(e,t)},e.prototype.push=function(e,t){ht.prototype.push.call(this,e,t)},e}(),gt=function(){function e(e){this.ondata=e,this.u=[],this.d=1}return e.prototype.add=function(e){var t=this;if(this.ondata||F(5),2&this.d)this.ondata(F(4+8*(1&this.d),0,1),null,!1);else{var n=rt(e.filename),o=n.length,i=e.comment,a=i&&rt(i),l=o!=e.filename.length||a&&i.length!=a.length,s=o+dt(e.extra)+30;o>65535&&this.ondata(F(11,0,1),null,!1);var c=new r(s);ut(c,0,e,n,l);var d=[c],u=function(){for(var e=0,n=d;e<n.length;e++){var o=n[e];t.ondata(null,o,!1)}d=[]},p=this.d;this.d=0;var h=this.u.length,m=K(e,{f:n,u:l,o:a,t:function(){e.terminate&&e.terminate()},r:function(){if(u(),p){var e=t.u[h+1];e?e.r():t.d=1}p=1}}),f=0;e.ondata=function(n,o,i){if(n)t.ondata(n,o,i),t.terminate();else if(f+=o.length,d.push(o),i){var a=new r(16);fe(a,0,134695760),fe(a,4,e.crc),fe(a,8,f),fe(a,12,e.size),d.push(a),m.c=f,m.b=s+f+16,m.crc=e.crc,m.size=e.size,p&&m.r(),p=1}else p&&u()},this.u.push(m)}},e.prototype.end=function(){var e=this;2&this.d?this.ondata(F(4+8*(1&this.d),0,1),null,!0):(this.d?this.e():this.u.push({r:function(){1&e.d&&(e.u.splice(-1,1),e.e())},t:function(){}}),this.d=3)},e.prototype.e=function(){for(var e=0,t=0,n=0,o=0,i=this.u;o<i.length;o++){n+=46+(c=i[o]).f.length+dt(c.extra)+(c.o?c.o.length:0)}for(var a=new r(n+22),l=0,s=this.u;l<s.length;l++){var c=s[l];ut(a,e,c,c.f,c.u,c.c,t,c.o),e+=46+c.f.length+dt(c.extra)+(c.o?c.o.length:0),t+=c.b}pt(a,e,this.u.length,n,t),this.ondata(null,a,!0),this.d=2},e.prototype.terminate=function(){for(var e=0,t=this.u;e<t.length;e++){t[e].t()}this.d=2},e}();function Mt(e,t,n){n||(n=t,t={}),"function"!=typeof n&&F(7);var o={};Ke(e,"",o,t);var i=Object.keys(o),a=i.length,l=0,s=0,c=a,d=new Array(a),u=[],p=function(){for(var e=0;e<u.length;++e)u[e]()},h=function(e,t){kt(function(){n(e,t)})};kt(function(){h=n});var m=function(){var e=new r(s+22),t=l,n=s-l;s=0;for(var o=0;o<c;++o){var i=d[o];try{var a=i.c.length;ut(e,s,i,i.f,i.u,a);var u=30+i.f.length+dt(i.extra),p=s+u;e.set(i.c,p),ut(e,l,i,i.f,i.u,a,s,i.m),l+=16+u+(i.m?i.m.length:0),s=p+a}catch(e){return h(e,null)}}pt(e,l,d.length,n,t),h(null,e)};a||m();for(var f=function(e){var t=i[e],n=o[t],r=n[0],c=n[1],f=H(),g=r.length;f.p(r);var M=rt(t),y=M.length,b=c.comment,N=b&&rt(b),T=N&&N.length,v=dt(c.extra),k=0==c.level?0:8,_=function(n,o){if(n)p(),h(n,null);else{var r=o.length;d[e]=K(c,{size:g,crc:f.d(),c:o,f:M,m:N,u:y!=t.length||N&&b.length!=T,compression:k}),l+=30+y+v+r,s+=76+2*(y+v)+(T||0)+r,--a||m()}};if(y>65535&&_(F(11,0,1),null),k)if(g<16e4)try{_(null,Ve(r,c))}catch(e){_(e,null)}else u.push(we(r,c,_));else _(null,r)},g=0;g<c;++g)f(g);return p}function yt(e,t){t||(t={});var n={},o=[];Ke(e,"",n,t);var i=0,a=0;for(var l in n){var s=n[l],c=s[0],d=s[1],u=0==d.level?0:8,p=(_=rt(l)).length,h=d.comment,m=h&&rt(h),f=m&&m.length,g=dt(d.extra);p>65535&&F(11);var M=u?Ve(c,d):c,y=M.length,b=H();b.p(c),o.push(K(d,{size:c.length,crc:b.d(),c:M,f:_,m:m,u:p!=l.length||m&&h.length!=f,o:i,compression:u})),i+=30+p+g+y,a+=76+2*(p+g)+(f||0)+y}for(var N=new r(a+22),T=i,v=a-i,k=0;k<o.length;++k){var _=o[k];ut(N,_.o,_,_.f,_.u,_.c.length);var w=30+_.f.length+dt(_.extra);N.set(_.c,_.o+w),ut(N,i,_,_.f,_.u,_.c.length,_.o,_.m),i+=16+w+(_.m?_.m.length:0)}return pt(N,i,o.length,v,T),N}var bt=function(){function e(){}return e.prototype.push=function(e,t){this.ondata(null,e,t)},e.compression=0,e}(),Nt=function(){function e(){var e=this;this.i=new Re(function(t,n){e.ondata(null,t,n)})}return e.prototype.push=function(e,t){try{this.i.push(e,t)}catch(e){this.ondata(e,null,t)}},e.compression=8,e}(),Tt=function(){function e(e,t){var n=this;t<32e4?this.i=new Re(function(e,t){n.ondata(null,e,t)}):(this.i=new Ee(function(e,t,o){n.ondata(e,t,o)}),this.terminate=this.i.terminate)}return e.prototype.push=function(e,t){this.i.terminate&&(e=D(e,0)),this.i.push(e,t)},e.compression=8,e}(),vt=function(){function e(e){this.onfile=e,this.k=[],this.o={0:bt},this.p=B}return e.prototype.push=function(e,t){var n=this;if(this.onfile||F(5),this.p||F(4),this.c>0){var o=Math.min(this.c,e.length),i=e.subarray(0,o);if(this.c-=o,this.d?this.d.push(i,!this.c):this.k[0].push(i),(e=e.subarray(o)).length)return this.push(e,t)}else{var a=0,l=0,s=void 0,c=void 0;this.p.length?e.length?((c=new r(this.p.length+e.length)).set(this.p),c.set(e,this.p.length)):c=this.p:c=e;for(var d=c.length,u=this.c,p=u&&this.d,h=function(){var e,t=he(c,l);if(67324752==t){a=1,s=l,m.d=null,m.c=0;var o=pe(c,l+6),r=pe(c,l+8),i=2048&o,p=8&o,h=pe(c,l+26),f=pe(c,l+28);if(d>l+30+h+f){var g=[];m.k.unshift(g),a=2;var M,y=he(c,l+18),b=he(c,l+22),N=it(c.subarray(l+30,l+=30+h),!i);4294967295==y?(e=p?[-2]:ct(c,l),y=e[0],b=e[1]):p&&(y=-1),l+=f,m.c=y;var T={name:N,compression:r,start:function(){if(T.ondata||F(5),y){var e=n.o[r];e||T.ondata(F(14,"unknown compression type "+r,1),null,!1),(M=y<0?new e(N):new e(N,y,b)).ondata=function(e,t,n){T.ondata(e,t,n)};for(var t=0,o=g;t<o.length;t++){var i=o[t];M.push(i,!1)}n.k[0]==g&&n.c?n.d=M:M.push(B,!0)}else T.ondata(null,B,!0)},terminate:function(){M&&M.terminate&&M.terminate()}};y>=0&&(T.size=y,T.originalSize=b),m.onfile(T)}return"break"}if(u){if(134695760==t)return s=l+=12+(-2==u&&8),a=3,m.c=0,"break";if(33639248==t)return s=l-=4,a=3,m.c=0,"break"}},m=this;l<d-4;++l){if("break"===h())break}if(this.p=B,u<0){var f=a?c.subarray(0,s-12-(-2==u&&8)-(134695760==he(c,s-16)&&4)):c.subarray(0,l);p?p.push(f,!!a):this.k[+(2==a)].push(f)}if(2&a)return this.push(c.subarray(l),t);this.p=c.subarray(l)}t&&(this.c&&F(13),this.p=null)},e.prototype.register=function(e){this.o[e.compression]=e},e}(),kt="function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout?setTimeout:function(e){e()};function _t(e,t,n){n||(n=t,t={}),"function"!=typeof n&&F(7);var o=[],i=function(){for(var e=0;e<o.length;++e)o[e]()},a={},l=function(e,t){kt(function(){n(e,t)})};kt(function(){l=n});for(var s=e.length-22;101010256!=he(e,s);--s)if(!s||e.length-s>65558)return l(F(13,0,1),null),i;var c=pe(e,s+8);if(c){var d=c,u=he(e,s+16),p=4294967295==u;if(p){if(s=he(e,s-12),101075792!=he(e,s))return l(F(13,0,1),null),i;d=c=he(e,s+32),u=he(e,s+48)}for(var h=t&&t.filter,m=function(t){var n=st(e,u,p),s=n[0],d=n[1],m=n[2],f=n[3],g=n[4],M=n[5],y=lt(e,M);u=g;var b=function(e,t){e?(i(),l(e,null)):(t&&(a[f]=t),--c||l(null,a))};if(!h||h({name:f,size:d,originalSize:m,compression:s}))if(s)if(8==s){var N=e.subarray(y,y+d);if(d<32e4)try{b(null,xe(N,new r(m)))}catch(e){b(e,null)}else o.push(Ue(N,{size:m},b))}else b(F(14,"unknown compression type "+s,1),null);else b(null,D(e,y,y+d));else b(null,null)},f=0;f<d;++f)m()}else l(null,{});return i}function wt(e,t){for(var n={},o=e.length-22;101010256!=he(e,o);--o)(!o||e.length-o>65558)&&F(13);var i=pe(e,o+8);if(!i)return{};var a=he(e,o+16),l=4294967295==a;l&&(o=he(e,o-12),101075792!=he(e,o)&&F(13),i=he(e,o+32),a=he(e,o+48));for(var s=t&&t.filter,c=0;c<i;++c){var d=st(e,a,l),u=d[0],p=d[1],h=d[2],m=d[3],f=d[4],g=d[5],M=lt(e,g);a=f,s&&!s({name:m,size:p,originalSize:h,compression:u})||(u?8==u?n[m]=xe(e.subarray(M,M+p),new r(h)):F(14,"unknown compression type "+u):n[m]=D(e,M,M+p))}return n}},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},a=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}},l=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&(n[o[r]]=e[o[r]])}return n};t.__esModule=!0;var s=n(2),c=n(1),d=n(13),u=n(3),p=n(4),h=function(e){var t=e.defaultVal,n=void 0===t?void 0:t,o=e.propName,i=e.token,a=e.label,l=e.wrapperStyle,s=void 0===l?{}:l;return c.DOM.createElement("span",{style:r({display:"inline-flex",alignItems:"center"},s)},c.DOM.createElement(N,{defaultVal:n,style:{marginRight:"4px"},propName:o,type:"checkbox",token:i}),c.DOM.createElement("span",null,a))},m=function(e){var t=e.tokenAttribs,n=e.name,o=e.index,r="aura"+o+"_radius",i="aura"+o+"_color",a="aura"+o+"_square";return c.DOM.createElement("div",{className:"inlineinputs",style:{display:"flex",alignItems:"center",marginTop:"5px"}},c.DOM.createElement("b",{style:{marginRight:"8px"}},n),c.DOM.createElement(N,{style:{width:"48px"},propName:r,type:"text",token:t}),c.DOM.createElement("span",{style:{marginRight:"16px"}},"ft."),c.DOM.createElement("span",{style:{marginRight:"16px"}},c.DOM.createElement(T,{propName:i,token:t})),c.DOM.createElement(h,{label:"Square",propName:a,token:t}))},f=function(e){for(var t=e.name,n=e.color,o=e.character,r=e.tokenAttribs,i=e.index,a=e.onChange,l=o,s="bar"+i+"_value",d="bar"+i+"_max",u="bar"+i+"_link",p="You can only edit the current and max values when the bar is not linked.",h=c.DOM.createElement(N,{style:{width:"64px",margin:"0 4px"},title:p,propName:s,type:"text",token:r}),m=c.DOM.createElement(N,{style:{width:"64px",margin:"0 4px"},title:p,propName:d,type:"text",token:r}),f=[c.DOM.createElement("option",{value:""},"None")],g=0,M=l.attribs.models;g<M.length;g++){var y=M[g],b=c.DOM.createElement("option",{value:y.id},y.attributes.name);f.add(b)}var T=c.DOM.createElement(N,{propName:u,Component:"select",token:r,defaultVal:"",onChange:function(e){v(e.target.value)}},f),v=function(e){console.log("Update",t,e);var n=l.attribs.get(e);if(!e||!n)return T.value="",h.disabled=!1,void(m.disabled=!1);h.disabled=!0,m.disabled=!0,T.value=e,h.value=n.attributes.current,m.value=n.attributes.max,a({target:h}),a({target:m})},k=r[u];return v(k),c.DOM.createElement("div",{className:"inlineinputs"},c.DOM.createElement("b",{style:{width:"max-content"}},t),c.DOM.createElement("span",{className:"bar_color_indicator",style:{marginLeft:"4px",display:"inline-block",width:"15px",height:"15px",borderRadius:"10px",backgroundColor:n}}),T,h,"/",m)},g=function(e){var t=e.name,n=e.tokenAttribs,o=e.propName,r=e.add_permissions,i=e.index,a="showplayers_"+o,l="playersedit_"+o,s=null;if(r){var d="bar"+(void 0===i?0:i)+"_num_permission";(s=c.DOM.createElement(N,{style:{margin:"0",marginLeft:"8px"},Component:"select",propName:d,token:n,defaultVal:"editors"},c.DOM.createElement("option",{value:"hidden"},"Hidden"),c.DOM.createElement("option",{value:"editors"},"Visible to Editors"),c.DOM.createElement("option",{value:"everyone"},"Visible to Everyone"))).value=n[d]||"editors"}return c.DOM.createElement("div",{className:"inlineinputs",style:{height:"48px",display:"flex",alignItems:"center"}},c.DOM.createElement("b",{style:{display:"inline-block",width:"60px"}},t),c.DOM.createElement(h,{label:"See",defaultVal:!1,propName:a,token:n,wrapperStyle:{marginRight:"16px"}}),c.DOM.createElement(h,{label:"Edit",defaultVal:!0,propName:l,token:n}),s)},M=function(e,t){e.setAttribute(b,t)},y="data-token-value-override",b="data-token-prop-name",N=function(e){var t=e.Component,n=void 0===t?"input":t,o=e.type,i=void 0===o?void 0:o,a=e.token,s=e.propName,d=e.defaultVal,u=l(e,["Component","type","token","propName","defaultVal"]),p=a,h=c.DOM.createElement(n,r({},u));i&&(h.type=i),M(h,s);var m=null,f=null;if("select"===n||"number"===i||"color"===i||"text"===i?(m="value",f=""):"checkbox"===i?(m="checked",f=!1):console.error("Unknown input type "+i),m){var g=p[s],y=null;if(y=void 0===g?void 0===d?f:d:g,"number"===i&&("dim_light_opacity"==s||(y=parseInt(y,10)||0)),"vttes_dimming_start"==s&&a.night_vision_effect&&a.night_vision_effect.startsWith("Dimming")){var b=a.night_vision_effect.split("_"),N=0;"number"==typeof a.night_vision_distance&&(N=parseFloat(b[1]),isNaN(N)||(N=Math.floor(a.night_vision_distance*N),a.vttes_dimming_start=N))}"dim_light_opacity"==s&&(y=parseFloat(y),isNaN(y)&&(y=0),isFinite(y)||(y=0)),h[m]=y}return h},T=function(e){var t=e.propName,n=e.token,o=c.DOM.createElement(N,{propName:t,type:"color",token:n}),r=c.DOM.createElement("button",{onClick:function(e){e.stopPropagation(),o.value=e.target.value},value:"transparent",className:"btn"},"Clear");return M(r,t),c.DOM.createElement("span",{style:{display:"inline-grid",gridTemplateColumns:"4fr 1fr"}},o,r)},v=function(e){var t=e.attribs,n=[c.DOM.createElement("option",{value:"null"},"None"),c.DOM.createElement("option",{value:"Nocturnal"},"Nocturnal"),c.DOM.createElement("option",{value:"Dimming"},"Dimming"),c.DOM.createElement("option",{value:"Sharpen"},"Sharpen")],o=c.DOM.createElement(N,{style:{margin:"0",marginRight:"4px",marginBottom:"4px",marginTop:"4px"},Component:"select",propName:"night_vision_effect",token:t,defaultVal:"null"},n);if(t.night_vision_effect)for(var r=0,i=n;r<i.length;r++){var a=i[r];if(t.night_vision_effect.startsWith(a.value)){o.value=a.value;break}}var l=function(e){var t=e.label,n=e.defaultVal,o=void 0===n?void 0:n,r=e.propName,i=e.attribs;return c.DOM.createElement("span",{style:{marginTop:"16px",display:"inline-flex",alignItems:"center"}},c.DOM.createElement(N,{defaultVal:o,style:{marginRight:"4px"},propName:r,type:"checkbox",token:i}),c.DOM.createElement("h4",null,t))};return c.DOM.createElement("div",{className:"span6"},c.DOM.createElement("h3",{style:{marginBottom:"12px"}},"Updated Dynamic Lighting"),c.DOM.createElement(h,{label:"Has Bright Light Vision",defaultVal:!1,propName:"has_bright_light_vision",token:t,wrapperStyle:{marginRight:"16px"}}),c.DOM.createElement(h,{label:"Has Low Light Vision",defaultVal:!1,propName:"has_low_light_vision",token:t,wrapperStyle:{marginRight:"16px"}}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"light_sensitivity_multiplier",type:"number",token:t}),"Light Sensitivity Percentage (0 to 100)"),c.DOM.createElement(l,{label:"Night Vision",defaultVal:!1,propName:"has_night_vision",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"night_vision_distance",type:"number",token:t}),"Distance (in ft.)"),c.DOM.createElement("div",null,o,"Effect"),c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"vttes_dimming_start",type:"number",token:t}),"Dimming Start (with dimming effect)",c.DOM.createElement("div",null,c.DOM.createElement("span",{style:{display:"inline-flex",alignItems:"center"}},c.DOM.createElement(T,{propName:"night_vision_tint",token:t,style:{marginRight:"4px"}}),c.DOM.createElement("span",null,"Tint"))),c.DOM.createElement(l,{label:"Limit Field of Vision",defaultVal:!1,propName:"has_limit_field_of_vision",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"limit_field_of_vision_total",type:"number",token:t}),c.DOM.createElement("span",{style:{marginRight:"8px"}},"Total"),c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"limit_field_of_vision_center",type:"number",token:t}),"Center"),c.DOM.createElement(l,{label:"Limit Field of Vision (for Night Vision)",defaultVal:!1,propName:"has_limit_field_of_night_vision",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"limit_field_of_night_vision_total",type:"number",token:t}),c.DOM.createElement("span",{style:{marginRight:"8px"}},"Total"),c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"limit_field_of_night_vision_center",type:"number",token:t}),"Center"),c.DOM.createElement(l,{label:"Emit Bright Light",defaultVal:!1,propName:"emits_bright_light",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"bright_light_distance",type:"number",token:t}),"Distance (in ft.)"),c.DOM.createElement(l,{label:"Emit Low Light",defaultVal:!1,propName:"emits_low_light",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"light_ui",type:"number",token:t}),c.DOM.createElement("span",{style:{marginRight:"8px"}},"Distance"),c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"dim_light_opacity",type:"number",token:t}),"Brightness (0 to 1)"),c.DOM.createElement(l,{label:"Directional Bright Light",defaultVal:!1,propName:"has_directional_bright_light",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"directional_bright_light_total",type:"number",token:t}),c.DOM.createElement("span",{style:{marginRight:"8px"}},"Total"),c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"directional_bright_light_center",type:"number",token:t}),"Center"),c.DOM.createElement(l,{label:"Directional Dim Light",defaultVal:!1,propName:"has_directional_dim_light",attribs:t}),c.DOM.createElement("div",null,c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"directional_dim_light_total",type:"number",token:t}),c.DOM.createElement("span",{style:{marginRight:"8px"}},"Total"),c.DOM.createElement(N,{style:{marginRight:"4px",width:"48px"},propName:"directional_dim_light_center",type:"number",token:t}),"Center"),c.DOM.createElement("h4",{style:{marginTop:"16px"}},"Light Color"),c.DOM.createElement(T,{style:{marginBottom:"8px"},propName:"lightColor",token:t}))},k=function(e){var t=e.tokenAttribs;return c.DOM.createElement("div",{style:{marginTop:"16px"},className:"span6"},c.DOM.createElement("h3",{style:{marginBottom:"12px"}},"Legacy Dynamic Lighting"),c.DOM.createElement("h4",null,"Light Emitter"),c.DOM.createElement("div",{className:"inlineinputs",style:"margin-bottom: 16px;"},c.DOM.createElement(N,{style:{width:"48px"},propName:"light_radius",type:"text",token:t}),"ft.",c.DOM.createElement(N,{style:{width:"48px"},propName:"light_dimradius",type:"text",token:t}),"ft.",c.DOM.createElement(N,{style:{width:"48px"},propName:"light_angle",type:"text",token:t}),c.DOM.createElement("span",{style:"font-size: 2.0em;"},"°"),c.DOM.createElement("div",{style:"color: #888; padding-left: 5px; margin-bottom: 8px"},"Light Radius / (optional) Start of Dim / Angle"),c.DOM.createElement("div",{style:"margin-left: 7px;"},c.DOM.createElement(N,{propName:"light_otherplayers",type:"checkbox",style:{marginRight:"8px"},token:t}),"Is emitting light?")),c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"auto auto"}},c.DOM.createElement("div",null,c.DOM.createElement("h4",null,"Light Observer"),c.DOM.createElement("div",{className:"inlineinputs",style:"margin-bottom: 16px;"},c.DOM.createElement(N,{style:{width:"48px"},propName:"light_losangle",type:"text",placeholder:"360",token:t}),c.DOM.createElement("span",{style:"font-size: 2.0em;"},"°"),c.DOM.createElement(N,{propName:"light_multiplier",type:"number",placeholder:"1.0",token:t,style:{width:"48px",display:"inline-block",margin:"0px 5px"}}),c.DOM.createElement("div",{style:"color: #888; padding-left: 5px; margin-bottom: 8px"},"Angle / Multiplier"),c.DOM.createElement("div",{style:"margin-left: 7px;"},c.DOM.createElement(N,{propName:"light_hassight",type:"checkbox",style:{marginRight:"8px"},token:t}),"Can see?"))),c.DOM.createElement("div",null,c.DOM.createElement("h4",null,"Advanced Fog of War"),c.DOM.createElement("div",{className:"inlineinputs",style:"margin-top: 5px; margin-bottom: 16px;"},c.DOM.createElement(N,{style:{width:"48px"},propName:"adv_fow_view_distance",type:"text",token:t}),c.DOM.createElement("div",{style:"color: #888; padding-left: 5px;"},"View Distance")))))},_=function(){return function(){this.token=null,this.char=null}}(),w="/images/character.png",V=function(t){function n(){var n=t.call(this,e)||this;return n.sheetTab=null,n.onShowTab=function(e){var t=n.getUserData(e);t.token&&t.char||(t.char=u.R20.getCharacter(e.characterId),console.log(t),t.char&&u.R20.getBlob(t.char,"defaulttoken").then(function(e){if(p.strIsNullOrEmpty(e)){var n={imgsrc:t.char.attributes.avatar||w,height:70,width:70,name:t.char.attributes.name,represents:t.char.id};t.token=n}else for(var o in t.token=JSON.parse(e),delete t.token.z_index,delete t.token.type,delete t.token.top,delete t.token.left,delete t.token.statusmarkers,delete t.token.statusdead,delete t.token.sides,delete t.token.pageid,delete t.token.locked,delete t.token.layer,delete t.token.lastmove,delete t.token.isdrawing,delete t.token.groupwidth,delete t.token.gmnotes,delete t.token.currentSide,delete t.token.cardid,delete t.token.adv_fow_view_distance,delete t.token.anim_autoplay,delete t.token.anim_loop,delete t.token.anim_paused_at,t.token)void 0!==t.token[o]&&null!==t.token[o]||delete t.token[o]}).finally(function(){e.rerender()}))},n.renderWidget=function(e){var t=u.R20.getCampaign().attributes,o=n.getUserData(e);if(!o.char)return c.DOM.createElement("div",null,"Could not find character. You might not have permissions to do so.");if(!o.token)return c.DOM.createElement("div",null,"Failed to get default token. You might not have permissions to do so.");var l={marginTop:"16px",marginLeft:"16px"},s=function(e){e.stopPropagation&&e.stopPropagation();var t=e.target,n=t.getAttribute(b);if(n){var r=t.value;switch(t.type){case"checkbox":r=t.checked;break;case"number":"dim_light_opacity"==n||(r=parseInt(t.value,10))}var i=t.getAttribute(y);i&&(r=i),"null"==r&&(r=null),console.log("Change: "+n+" -> "+r,r),o.token[n]=r;var a=function(){if(o.token.night_vision_effect&&o.token.night_vision_effect.startsWith("Dimming")){var e=0;"number"==typeof o.token.night_vision_distance&&0!=o.token.night_vision_distance&&"number"==typeof o.token.vttes_dimming_start&&(e=o.token.vttes_dimming_start/o.token.night_vision_distance),o.token.night_vision_effect="Dimming_"+e,console.log("Recalced night_vision_effect: ",o.token.night_vision_effect)}};if("night_vision_effect"==n?(console.log("try_recalc_dimming_effect: night_vision_effect"),a()):"night_vision_distance"==n?(console.log("try_recalc_dimming_effect: night_vision_distance"),a()):"vttes_dimming_start"==n&&(console.log("try_recalc_dimming_effect: vttes_dimming_start"),a()),"bright_light_distance"==n||"light_ui"==n){var l=function(e){var t=o.token[e];return"number"!=typeof t?0:isFinite(t)?isNaN(t)?0:t:0},s=l("bright_light_distance"),c=l("light_ui");o.token.low_light_distance=s+c}}},d=function(t){t.stopPropagation(),confirm("You will lose any unsaved changes. Proceed?")&&(o.char=null,o.token=null,n.onShowTab(e))},p=function(){_();var e=r({},o.token);e.bar1_link&&delete e.bar1_value,e.bar2_link&&delete e.bar2_value,e.bar3_link&&delete e.bar3_value;var t=JSON.stringify(e);o.char.updateBlobs({defaulttoken:t}),o.char.save({defaulttoken:(new Date).getTime()}),V()},M=c.DOM.createElement("span",{style:{marginLeft:"auto",marginRight:"auto"}}),_=function(){M.innerText="Saving..."},V=function(){M.innerText="Done!"},R=c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{borderBottom:"1px solid lightgray",display:"grid",gridTemplateColumns:"1fr 1fr 1fr"}},c.DOM.createElement("div",null,c.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr"}},c.DOM.createElement("div",{onDrop:function(t){var n=void 0,r=null;try{var i=t.dataTransfer.getData("text/html");n=/src="?([^"\s]+)"?\s*/.exec(i)[1]}catch(e){r=e}null!==n&&void 0!==n||(n=t.url),n?(o.token.imgsrc=n,e.rerender()):alert("Drag & Drop image failed: "+r)},className:"r20es-token-img-hover",style:{display:"flex",flexDirection:"column",margin:"16px",position:"relative",marginLeft:"0"}},c.DOM.createElement("img",{style:{alignSelf:"center",width:"100%",maxWidth:"180px"},src:o.token.imgsrc,alt:"token image"}),c.DOM.createElement("div",{style:{marginTop:"4px",display:"grid",gridTemplateColumns:"1fr 1fr"}},c.DOM.createElement("button",{onClick:function(t){t.stopPropagation(),confirm("Remove avatar image?")&&(o.token.imgsrc=w,e.rerender())},className:"btn",style:{marginBottom:"8px",marginRight:"8px"}},"Remove Image"),c.DOM.createElement("button",{style:{marginBottom:"8px"},onClick:function(t){t.stopPropagation();var n=prompt("Image URL.",o.token.imgsrc);n&&(o.token.imgsrc=n,e.rerender())},className:"btn"},"Set from URL"))),c.DOM.createElement("div",{style:{marginRight:"16px"}},c.DOM.createElement("div",null,"Nameplate"),c.DOM.createElement("div",{style:{display:"flex"}},c.DOM.createElement(N,{propName:"name",type:"text",style:{width:"210px"},token:o.token}),c.DOM.createElement("button",{onClick:function(e){_(),o.char.save({name:o.token.name});var t=o.char.attribs.find(function(e){return"npc_name"===e.attributes.name});t&&t.save({current:o.token.name}),V()},className:"btn",title:"Updates the name of the character on the sheet with the name in the input box."},"Set")),c.DOM.createElement("div",null,c.DOM.createElement(N,{propName:"showname",type:"checkbox",style:{marginTop:"8px",marginRight:"4px"},token:o.token}),c.DOM.createElement("span",null,"Show nameplate?")),c.DOM.createElement("div",null,"Tint Color"),c.DOM.createElement(T,{style:{marginBottom:"8px"},propName:"tint_color",token:o.token}),c.DOM.createElement("div",{style:{marginBottom:"4px"}},c.DOM.createElement("span",{style:{display:"inline-block",marginRight:"4px"}},"Width (px)"),c.DOM.createElement(N,{propName:"width",style:{width:"48px",marginRight:"12px"},type:"number",token:o.token}),c.DOM.createElement("span",{style:{display:"inline-block",marginRight:"4px"}},"Height (px)"),c.DOM.createElement(N,{propName:"height",style:{width:"48px"},type:"number",token:o.token})),c.DOM.createElement("div",{style:{marginBottom:"4px"}},c.DOM.createElement("span",{style:{display:"inline-block",marginRight:"4px"}},"Rotation (degrees)"),c.DOM.createElement(N,{style:{width:"48px"},propName:"rotation",type:"number",token:o.token})),c.DOM.createElement("div",null,c.DOM.createElement(h,{label:"Flip Horizontal",defaultVal:!1,propName:"fliph",token:o.token,wrapperStyle:{marginRight:"16px"}}),c.DOM.createElement(h,{label:"Flip Vertical",defaultVal:!1,propName:"flipv",token:o.token})))),c.DOM.createElement(v,{attribs:o.token})),c.DOM.createElement("div",{style:{borderLeft:"1px solid lightgray"}},c.DOM.createElement("div",{style:l},c.DOM.createElement(f,{name:"Bar 1",color:t.bar1_color,tokenAttribs:o.token,character:o.char,onChange:s,index:1}),c.DOM.createElement(f,{name:"Bar 2",color:t.bar2_color,tokenAttribs:o.token,character:o.char,onChange:s,index:2}),c.DOM.createElement(f,{name:"Bar 3",color:t.bar3_color,tokenAttribs:o.token,character:o.char,onChange:s,index:3})),c.DOM.createElement("div",{style:l},c.DOM.createElement(m,{name:"Aura 1",tokenAttribs:o.token,index:1}),c.DOM.createElement(m,{name:"Aura 2",tokenAttribs:o.token,index:2})),c.DOM.createElement("div",{style:Object.assign({},l,{marginBottom:"16px"})},c.DOM.createElement("h3",null,"Player Permissions"),c.DOM.createElement(g,{name:"Name",propName:"name",tokenAttribs:o.token,add_permissions:!1}),c.DOM.createElement(g,{name:"Bar 1",propName:"bar1",tokenAttribs:o.token,add_permissions:!0,index:1}),c.DOM.createElement(g,{name:"Bar 2",propName:"bar2",tokenAttribs:o.token,add_permissions:!0,index:2}),c.DOM.createElement(g,{name:"Bar 3",propName:"bar3",tokenAttribs:o.token,add_permissions:!0,index:3}),c.DOM.createElement(g,{name:"Aura 1",propName:"aura1",tokenAttribs:o.token,add_permissions:!1}),c.DOM.createElement(g,{name:"Aura 2",propName:"aura2",tokenAttribs:o.token,add_permissions:!1}),c.DOM.createElement("div",null,c.DOM.createElement("b",null,"Bar Location"),function(){var e=c.DOM.createElement(N,{style:{margin:"0",marginLeft:"8px"},Component:"select",propName:"bar_location",token:o.token,defaultVal:"above"},c.DOM.createElement("option",{value:"above"},"Above"),c.DOM.createElement("option",{value:"overlap_top"},"Top Overlapping"),c.DOM.createElement("option",{value:"overlap_bottom"},"Bottom Overlapping"),c.DOM.createElement("option",{value:"below"},"Below"));return setTimeout(function(){e.value=o.token.bar_location||"above"},500),e}()),c.DOM.createElement("div",null,c.DOM.createElement("b",null,"Bar Type"),function(){var e=c.DOM.createElement(N,{style:{margin:"0",marginLeft:"8px"},Component:"select",propName:"compact_bar",token:o.token,defaultVal:"standard"},c.DOM.createElement("option",{value:"standard"},"Standard"),c.DOM.createElement("option",{value:"compact"},"Compact"));return setTimeout(function(){e.value=o.token.compact_bar||"standard"},500),e}()),c.DOM.createElement(k,{tokenAttribs:o.token})))),c.DOM.createElement("div",{style:{marginTop:"16px",marginBottom:"16px",display:"grid",gridTemplateColumns:"1fr 1fr 1fr"}},c.DOM.createElement("span",{style:"float: left"},u.R20.isGM()?c.DOM.createElement("button",{onClick:d,className:"btn"},"Refresh"):c.DOM.createElement("span",null,"Players do not have permissions to read default character tokens.")),M,c.DOM.createElement("span",{style:"float: right"},c.DOM.createElement("button",{onClick:function(e){return i(n,void 0,void 0,function(){var t,n,r,i,l,s,c;return a(this,function(a){switch(a.label){case 0:if(e.stopPropagation(),!confirm("Are you sure you want to do this? This will update ALL tokens in this campaign that represent this character.If you have changed the avatar, a refresh maybe be required to see the changes."))return[2];_(),t=u.R20.getAllPages(),n=0,r=t,a.label=1;case 1:return n<r.length?((i=r[n]).fullyLoadPage(),i.thegraphics?[4,i.thegraphics.init_promise]:(console.error("Page thegraphics are undefined!",i),[3,3])):[3,4];case 2:for(a.sent(),l=0,s=i.thegraphics.models;l<s.length;l++)(c=s[l]).character&&c.character.id===o.char.id&&c.save(o.token);a.label=3;case 3:return n++,[3,1];case 4:return V(),[2]}})})},style:"margin-right: 8px",className:"btn"},"Update all tokens"),u.R20.isGM()?c.DOM.createElement("button",{onClick:p,className:"btn"},"Update default token"):c.DOM.createElement("span",null,"Players do not have permission to update the default token but they can update already placed tokens. Try updating all tokens."))));return $(R).find("input, select, button").on("change",s).on("click",s),R},n.setup=function(){n.sheetTab=d.SheetTab.add("Token Editor",n.renderWidget,n.onShowTab,u.R20.canEditCharacter),n.css_element=p.createCSSElement("\n\n .r20es-token-img-hover {\n visibility: hidden;\n }\n\n .r20es-token-img-hover:hover {\n visibility: visible;\n }\n\n ","vttes_token_editor_css")},n.dispose=function(){n.css_element&&n.css_element.remove(),t.prototype.dispose.call(n),n.sheetTab&&n.sheetTab.dispose()},n}return o(n,t),n.prototype.getUserData=function(e){return e.userData||(e.userData=new _),e.userData},n}(s.R20Module.OnAppLoadBase);t.default=function(){(new V).install()}}).call(this,"src/modules/CharacterTokenModifier")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(2),l=n(3),s=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.prototype.setup=function(){var e=this;setTimeout(function(){return r(e,void 0,void 0,function(){var e;return i(this,function(t){switch(t.label){case 0:return t.trys.push([0,3,,4]),[4,fetch("https://justas-d.github.io/roll20-enhancement-suite/latest_chrome_version")];case 1:return[4,t.sent().text()];case 2:return"1.28.19"!=t.sent().trim()&&l.R20.saySystem('\n<h2 style="color: whitesmoke">Update Available!</h2>\n<span>VTTES has an update available. Grab it \n <a style="color: orange;" href="https://justas-d.github.io/roll20-enhancement-suite/chrome.html">here</a>.\n</span>\n<br/>\n'),[3,4];case 3:return e=t.sent(),console.error("VTTES: failed to check for new version",e),[3,4];case 4:return[2]}})})},4e3)},n.prototype.dispose=function(){t.prototype.dispose.call(this)},n}(a.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/ChromeUpdateChecker")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(8),l=n(9),s=function(t){function n(){var n=t.call(this,e)||this;return n.onClickMenuItem=function(){var e=i.R20.getSelectedTokens();i.R20.unselectTokens();for(var t={},n=0,o=e;n<o.length;n++){var r=o[n],a=i.R20.try_get_canvas_object_model(r);if(!a)return;var l=a.character&&a.character.attributes.name;if(l||(l=a.attributes.name),t[l]||(t[l]=0),l){var s={name:l+" "+ ++t[l]};a.save(s)}}},n}return o(n,t),n.prototype.setup=function(){i.R20.isGM()&&a.TokenContextMenu.addButton("Add Counter",this.onClickMenuItem,l.TOKEN_CONTEXT_MENU_ORDER_NAME_COUNTER,{mustHaveSelection:!0})},n.prototype.dispose=function(){a.TokenContextMenu.removeButton("Add Counter",this.onClickMenuItem)},n}(r.R20Module.SimpleBase);t.default=function(){(new s).install()}}).call(this,"src/modules/CounterTokenName")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(3),l=function(t){function n(){var n=t.call(this,e)||this;return n.on_size_el_change=function(e){var t=e.target;n.opt.value=t.value,n.opt.innerText="Custom ("+t.value+")";var o=parseInt(t.value,10);a.R20.set_drawing_brush_size(o);for(var r=0,i=a.R20.getSelectedTokens();r<i.length;r++){var l=i[r];"path"==l.type&&(l.set("strokeWidth",o),window.d20.engine.canvas.fire("object:modified",{target:l}))}},n.either_show_or_hide_custom_size_input=function(e){e.selectedOptions[0].innerText.startsWith("Custom")?n.size_el.style.removeProperty("display"):n.size_el.style.display="none"},n.on_change_select=function(e){var t=e.target;n.either_show_or_hide_custom_size_input(t)},n.try_get_select_element=function(){var e=document.querySelector("#path_width");return e||(console.error("Could not find the path_width element"),null)},n.on_shape_selected=function(e,t){var o=n.try_get_select_element();o&&n.either_show_or_hide_custom_size_input(o)},n}return o(n,t),n.prototype.setup=function(){var e=this.try_get_select_element();if(e){this.opt=i.DOM.createElement("option",{value:"20"},"Custom (20)"),e.insertBefore(this.opt,e.firstChild),e.addEventListener("change",this.on_change_select);var t=e.parentElement.parentElement;this.size_el=i.DOM.createElement("li",{style:{display:"none"}},i.DOM.createElement("span",{style:{fontSize:"0.65em",marginRight:"4px"}},"Size:"),i.DOM.createElement("input",{value:"20",onchange:this.on_size_el_change,type:"number"})),t.appendChild(this.size_el),$("body").on("shape_selected","#editor",this.on_shape_selected)}},n.prototype.dispose=function(){this.opt&&this.opt.remove(),this.size_el&&this.size_el.remove();var e=this.try_get_select_element();e&&e.removeEventListener("change",this.on_change_select),$("body").off("shape_selected","#editor",this.on_shape_selected),t.prototype.dispose.call(this)},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/CustomPathWidth")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(3),l=function(t){function n(){var n=t.call(this,e)||this;return n._shouldIgnoreEvents=!1,n._muteButtonClass="r20es-mute-drawing-button",n._muteButtonDisablePicClass="r20es-mute-drawing-button-disable",n._playerCardQuery="#playerzone .player",n._storageKey="r20es_player_ids_by_who_can_draw",n.handleObjectPlacement=function(e,t){if(!n._shouldIgnoreEvents){var o=e.val(),r=a.R20.getPageById(o.page_id);if(r){var i=t(r).get(e.key);i?n.canPlaceObjects(i.attributes.controlledby)||i.destroy():n.reportThatWeDontHaveTheInnerPageObject()}else n.reportThatWeDontHaveThePageObject()}},n.canPlaceObjects=function(e){var t=n.getStorage();return"boolean"!=typeof t[e]||t[e]},n.onTextAdded=function(e){n.handleObjectPlacement(e,function(e){return e.thetexts})},n.onDrawingAdded=function(e){n.handleObjectPlacement(e,function(e){return e.thepaths})},n.unhookPage=function(e){e.thepaths.backboneFirebase.reference.off("child_added",n.onDrawingAdded),e.thetexts.backboneFirebase.reference.off("child_added",n.onTextAdded)},n.reportThatWeDontHaveTheInnerPageObject=function(){console.error("[DisablePlayerDrawings] find inner page object after receiving firebase event!")},n.reportThatWeDontHaveThePageObject=function(){console.error("[DisablePlayerDrawings] onPageAdded failed to find wrapped page object after receiving firebase event!")},n.onPageAdded=function(e){var t=a.R20.getPageById(e.key);t?(t.fullyLoadPage(),setTimeout(function(){t.thepaths.backboneFirebase.reference.on("child_added",n.onDrawingAdded),t.thetexts.backboneFirebase.reference.on("child_added",n.onTextAdded)},1e3)):n.reportThatWeDontHaveThePageObject()},n.onPageRemoved=function(e){var t=a.R20.getPageById(e.key);t?n.unhookPage(t):n.reportThatWeDontHaveThePageObject()},n.uiIsPlayerSquare=function(e){if(!e.classList)return!1;if(!e.id)return!1;var t=e;return t.classList.contains("player")&&t.id.startsWith("player_")&&!t.id.includes(a.R20.getCurrentPlayer().id)},n.getPlayerSquareById=function(e){for(var t=0,o=$(n._playerCardQuery);t<o.length;t++){var r=o[t];if(n.uiIsPlayerSquare(r))if(n.uiGetPlayerIdFromRoot(r)===e)return r}},n.getStorage=function(){return window.Campaign.attributes[n._storageKey]||{}},n.saveStorage=function(e){var t;window.Campaign.save(((t={})[n._storageKey]=e,t))},n.toggleMute=function(e){var t=n.getStorage();"boolean"!=typeof t[e]?t[e]=!1:t[e]=!t[e];var o=t[e];n.saveStorage(t),console.log(t);var r=n.getPlayerSquareById(e);if(r){var i=n.uiGetMuteButton(r);$(i).find("."+n._muteButtonDisablePicClass)[0].style.visibility=o?"hidden":"visible"}else n.uiReportMissingPlayerSquare(e)},n.uiOnMuteButtonClick=function(e){var t=e.target,o=$(t).closest(n._playerCardQuery)[0];o?n.toggleMute(n.uiGetPlayerIdFromRoot(o)):n.uiReportMissingButtonRoot(t)},n.uiReportMissingPlayerSquare=function(e){console.error("[DisablePlayerDrawing] failed to find root player square div for id: ",e)},n.uiReportMissingButtonRoot=function(e){console.error("[DisablePlayerDrawing] failed to find root player square div after clicking mute button: ",e)},n.uiGetMuteButton=function(e){return $(e).find("."+n._muteButtonClass)[0]},n.uiGetPlayerIdFromRoot=function(e){return e.id.replace("player_","")},n.uiAddMuteButton=function(e){if(console.log("add mute button to",e),!n.uiGetMuteButton(e)){var t=i.DOM.createElement("div",{className:n._muteButtonClass,style:{position:"absolute",width:"30px",height:"30px",top:"0px",backgroundColor:"rgba(255, 255, 255, 0.5)",left:"0px",justifyContent:"center",alignItems:"center",display:"flex",cursor:"pointer"}},i.DOM.createElement("span",{className:"pictos",style:{position:"absolute",fontSize:"18px"}},"p"),i.DOM.createElement("span",{className:"pictos "+n._muteButtonDisablePicClass,style:{position:"absolute",fontSize:"22px",visibility:n.canPlaceObjects(n.uiGetPlayerIdFromRoot(e))?"hidden":"visible"}},"d"));t.addEventListener("click",n.uiOnMuteButtonClick),e.appendChild(t)}},n.uiRemoveMuteButton=function(e){var t=n.uiGetMuteButton(e);t&&t.remove()},n.observerCallback=function(e){for(var t=0,o=e;t<o.length;t++){var r=o[t];"avatarContainer"===r.target.id&&r.addedNodes.forEach(function(e){n.uiIsPlayerSquare(e)&&n.uiAddMuteButton(e)})}},n.uiForEachPlayerSquare=function(e){document.querySelectorAll(n._playerCardQuery).forEach(function(t){n.uiIsPlayerSquare(t)&&e(t)})},n.setup=function(){a.R20.isGM()&&(n._shouldIgnoreEvents=!0,window.Campaign.pages.backboneFirebase.reference.on("child_added",n.onPageAdded),window.Campaign.pages.backboneFirebase.reference.on("child_removed",n.onPageRemoved),setTimeout(function(){n._shouldIgnoreEvents=!1},1e3),n._observer=new MutationObserver(n.observerCallback),n._observer.observe(document.body,{childList:!0,subtree:!0}),n.uiForEachPlayerSquare(n.uiAddMuteButton))},n.dispose=function(){if(t.prototype.dispose.call(n),a.R20.isGM()){n._observer.disconnect();for(var e=0,o=a.R20.getAllPages();e<o.length;e++){var r=o[e];n.unhookPage(r)}window.Campaign.pages.backboneFirebase.reference.off("child_added",n.onPageAdded),window.Campaign.pages.backboneFirebase.reference.off("child_removed",n.onPageRemoved),n.uiForEachPlayerSquare(n.uiRemoveMuteButton)}},n}return o(n,t),n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/DisablePlayerDrawings")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(4),l=n(16),s=n(1),c=function(t){function n(){var o=t.call(this,e)||this;return o.getButton=function(e){return $(l.makeLayerButtonSelector(e))},o.onToolChange=function(e){console.log("tool changed!");var t=e.target;for(var n in l.layerInfo){var r=l.layerInfo[n];if(t.classList.contains(r.toolName)){o.render(l.layerInfo[n]);break}}},o.updateModeIndicator=function(e){var t=document.getElementById(n.selectId);t&&(t.style.display="select"===e?"none":"block")},o.render=function(e){var t=document.getElementById(n.layerId),r=$(t).find("p")[0];t.style.backgroundColor="rgba("+e.bgColors[0]+", "+e.bgColors[1]+", "+e.bgColors[2]+", "+o.getHook().config.backgroundOpacity+")",r.innerHTML=e.bigTxt},o}return o(n,t),n.prototype.createWidget=function(){console.log("Creating widget");var e=document.getElementById("playerzone");if(console.log(e),e){var t=this.getHook().config,o=t.size/9.375+"px",r={height:t.size+"px",padding:o+" "+o+" "+t.size/3.75+"px "+o},c={fontFamily:"Helvetica",fontSize:t.size+"px",lineHeight:"1em",color:"rgba("+t.textFillColor[0]+", "+t.textFillColor[1]+", "+t.textFillColor[2]+", "+t.textFillOpacity+")",textShadow:"2px 2px 0px rgba("+t.textOutlineColor[0]+", "+t.textOutlineColor[1]+", "+t.textOutlineColor[2]+", "+t.textOutlineOpacity+")"},d={opacity:t.globalOpacity,marginBottom:"15px",marginRight:"15px",position:"absolute"};switch(t.corner){case"bottomRight":d.bottom="0",d.right="0";break;case"bottomLeft":d.bottom="0",d.left="0";break;case"topRight":d.top="0",d.right="0";break;case"topLeft":d.top="0",d.left="0";break;default:console.error("Unknown DCL module corner: "+t.corner)}var u=s.DOM.createElement("div",{id:n.rootId,style:d},t.showNotSelecting&&s.DOM.createElement("div",{id:n.selectId,style:a.copy(r,{background:"rgba(255,0,0,"+t.notSelectingOpacity+")"})},s.DOM.createElement("p",{style:c},"Not selecting!")),s.DOM.createElement("div",{id:n.layerId,style:r},s.DOM.createElement("p",{style:c})));e.appendChild(u),this.render(l.layerInfo[i.R20.getCurrentLayer()]),this.updateModeIndicator(i.R20.getCurrentToolName())}},n.prototype.removeWidget=function(){a.findByIdAndRemove(n.rootId)},n.prototype.onSettingChange=function(e,t,n){this.removeWidget(),this.createWidget()},n.prototype.turnOffListener=function(e){e.off("click",this.onToolChange)},n.prototype.setup=function(){var e=this;if(i.R20.isGM()){this.createWidget();var t=function(t){e.turnOffListener(t),t.on("click",e.onToolChange)};for(var n in l.layerInfo){var o=l.layerInfo[n],r=this.getButton(o);t(r)}window.r20es.setModePrologue=this.updateModeIndicator,this.getButton(l.layerInfo[i.R20.CanvasLayer.B20Foreground]).length<=0&&setTimeout(function(){t(e.getButton(l.layerInfo[i.R20.CanvasLayer.B20Foreground])),t(e.getButton(l.layerInfo[i.R20.CanvasLayer.B20Weather])),t(e.getButton(l.layerInfo[i.R20.CanvasLayer.Lighting]))},1e4)}},n.prototype.dispose=function(){for(var e in t.prototype.dispose.call(this),l.layerInfo){var n=l.layerInfo[e];this.turnOffListener(this.getButton(n))}window.r20es.setModePrologue=null,this.removeWidget()},n.selectId="r20es-select",n.layerId="r20es-layer",n.rootId="r20es-drawCurrentLayer-root",n}(r.R20Module.OnAppLoadBase);t.default=function(){(new c).install()}}).call(this,"src/modules/DrawCurrentLayer")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(3),l=n(4),s=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.doDuplicate=function(e){var t=a.R20.getHandout(e),n=a.R20.getCharacter(e);if(n){var o=Promise.all([a.R20.getBlob(n,"notes"),a.R20.getBlob(n,"gmnotes"),a.R20.getBlob(n,"defaulttoken")]);n.editview.el.firstElementChild||n.editview.render(),o.then(function(){$(n.editview.el).find(".duplicate").trigger("click")})}else if(t){t.editview.el.firstElementChild||t.editview.render();var r=t.toJSON();delete r.id;var i={},l=t.collection.create(r);Promise.all([a.R20.getBlob(t,"notes").then(function(e){return i.notes=e}),a.R20.getBlob(t,"gmnotes").then(function(e){return i.gmnotes=e})]).then(function(){l.updateBlobs(i)})}},n.prototype.setup=function(){if(a.R20.isGM()){var e=document.getElementById("journalitemmenu");e&&e.firstElementChild.appendChild(i.DOM.createElement("li",{"data-action-type":"r20esduplicate",id:n.optionId},"Duplicate")),window.r20es.onJournalDuplicate=n.doDuplicate}},n.prototype.dispose=function(){window.r20es.onJournalDuplicate=null,l.findByIdAndRemove(n.optionId)},n.optionId="window.r20es-duplicate-journal",n}(r.R20Module.SimpleBase);t.default=function(){(new s).install()}}).call(this,"src/modules/DuplicateButton")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(1),l=n(23),s=function(t){function n(){var n=t.call(this,e)||this;return n.render_rulers=function(e,t){try{if(t.vttes_ruler_mode==l.RULER_RADIUS)if(t.vttes_radius_mode==l.RADIUS_MODE_BLAST){var n=t.to_x-t.x,o=t.to_y-t.y,r=Math.sqrt(n*n+o*o);e.beginPath(),e.arc(t.x+.5*n,t.y+.5*o,.5*r,0,6.28),e.stroke()}else{n=t.to_x-t.x,o=t.to_y-t.y,r=Math.sqrt(n*n+o*o);e.beginPath(),e.arc(t.x,t.y,r,0,6.28),e.stroke()}else if(t.vttes_ruler_mode==l.RULER_CONE)if(t.vttes_cone_mode==l.CONE_MODE_ROUNDED){var i=t.vttes_cone_degrees*(Math.PI/180),a=(n=t.to_x-t.x,o=t.to_y-t.y,r=Math.sqrt(n*n+o*o),Math.atan2(o,n));if(r>1e-6){var s=n/r,c=o/r,d=Math.cos(.5*i),u=Math.sin(.5*i),p=(s*d-c*u)*r+t.x,h=(s*u+c*d)*r+t.y,m=Math.cos(.5*-i),f=Math.sin(.5*-i),g=(s*m-c*f)*r+t.x,M=(s*f+c*m)*r+t.y;e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(p,h),e.moveTo(t.x,t.y),e.lineTo(g,M),e.stroke(),e.arc(t.x,t.y,r,a-.5*i,a+.5*i),e.stroke()}}else{n=t.to_x-t.x;var y=.5*-(o=t.to_y-t.y),b=.5*n;e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(t.x+y+n,t.y+b+o),e.lineTo(t.x-y+n,t.y-b+o),e.closePath(),e.stroke()}else if(t.vttes_ruler_mode==l.RULER_BOX)if(t.vttes_box_mode==l.BOX_MODE_BLAST){e.beginPath();n=t.to_x-t.x,y=.5*-(o=t.to_y-t.y),b=.5*n;e.moveTo(t.x-y,t.y-b),e.lineTo(t.x+y,t.y+b),e.lineTo(t.x+y+n,t.y+b+o),e.lineTo(t.x-y+n,t.y-b+o),e.closePath(),e.stroke()}else{e.beginPath();n=t.to_x-t.x,y=-(o=t.to_y-t.y),b=n;e.moveTo(t.x-y-n,t.y-b-o),e.lineTo(t.x-y+n,t.y-b+o),e.lineTo(t.x+y+n,t.y+b+o),e.lineTo(t.x+y-n,t.y+b-o),e.closePath(),e.stroke()}else if(t.vttes_ruler_mode==l.RULER_LINE){var N=t.vttes_line_width;t.vttes_line_mode==l.LINE_MODE_WIDTH_TO_EDGE||(N*=.5),N=N/window.d20.Campaign.activePage().get("scale_number")*70;n=t.to_x-t.x,o=t.to_y-t.y;if((r=Math.sqrt(n*n+o*o))>1e-6){var T=-o/r*N,v=n/r*N;e.beginPath(),e.moveTo(t.x+T,t.y+v),e.lineTo(t.x-T,t.y-v),e.lineTo(t.x+n-T,t.y+o-v),e.lineTo(t.x+n+T,t.y+o+v),e.closePath(),e.stroke()}}}catch(e){console.error("render_rulers had an error:",e)}},n.redraw_ruler_config_display=function(){var e=!1,t=!1,o=!1,r=!1;window.r20es.extra_ruler.ruler_mode==l.RULER_RADIUS?e=!0:window.r20es.extra_ruler.ruler_mode==l.RULER_CONE?o=!0:window.r20es.extra_ruler.ruler_mode==l.RULER_BOX?t=!0:window.r20es.extra_ruler.ruler_mode==l.RULER_LINE&&(r=!0),n.radius_el.style.display=e?"inline":"none",n.box_el.style.display=t?"inline":"none",n.cone_el.style.display=o?"inline":"none",n.line_el.style.display=r?"inline":"none"},n.set_new_ruler_mode=function(e){n.setConfigValue("ruler_mode",e),window.r20es.extra_ruler.ruler_mode=e,n.redraw_ruler_config_display()},n.hotkey_ruler_normal=function(){return i.R20.enter_measure_mode(),n.select_el.selectedIndex=l.RULER_NORMAL,n.set_new_ruler_mode(l.RULER_NORMAL),!1},n.hotkey_ruler_radius=function(){return i.R20.enter_measure_mode(),n.select_el.selectedIndex=l.RULER_RADIUS,n.set_new_ruler_mode(l.RULER_RADIUS),!1},n.hotkey_ruler_cone=function(){return i.R20.enter_measure_mode(),n.select_el.selectedIndex=l.RULER_CONE,n.set_new_ruler_mode(l.RULER_CONE),!1},n.hotkey_ruler_box=function(){return i.R20.enter_measure_mode(),n.select_el.selectedIndex=l.RULER_BOX,n.set_new_ruler_mode(l.RULER_BOX),!1},n.hotkey_ruler_line=function(){return i.R20.enter_measure_mode(),n.select_el.selectedIndex=l.RULER_LINE,n.set_new_ruler_mode(l.RULER_LINE),!1},n.setup=function(){setTimeout(function(){if("d20plus"in window){var e=window.d20plus.version;do{if("string"!=typeof e)break;for(var t=e.split("."),o=0,r=0,a=0;a<t.length;a++)t[a]=parseInt(t[a],10);if(!(t.length>=1&&"number"==typeof t[0]))break;if(o=t[0],!(t.length>=2&&"number"==typeof t[1]))break;if(r=t[1],o>1)break;if(r>24)break;i.R20.saySystem("Extra Rulers are disabled until betteR20 is updated to at least 1.25.0!"),n.dispose_quick()}while(0)}},5e3),window.r20es.extra_ruler={},window.r20es.extra_ruler_set_mode=function(e){n.ruler_ui_el.style.display="measure"===e?"block":"none"};var e=n.getHook().config;window.r20es.extra_ruler.radius_mode=e.radius_mode,window.r20es.extra_ruler.box_mode=e.box_mode,window.r20es.extra_ruler.cone_mode=e.cone_mode,window.r20es.extra_ruler.cone_degrees=e.cone_degrees,window.r20es.extra_ruler.line_mode=e.line_mode,window.r20es.extra_ruler.line_width=e.line_width,window.r20es.extra_ruler.ruler_mode=e.ruler_mode,window.r20es.render_extra_rulers=n.render_rulers;n.radius_el=a.DOM.createElement("div",{style:{marginLeft:"8px",display:"none"}},a.DOM.createElement("select",{selectedIndex:window.r20es.extra_ruler.radius_mode,style:{width:"80px",margin:"0"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.setConfigValue("radius_mode",o),window.r20es.extra_ruler.radius_mode=o}},a.DOM.createElement("option",{value:l.RADIUS_MODE_BURST},"Burst"),a.DOM.createElement("option",{value:l.RADIUS_MODE_BLAST},"Blast")));n.box_el=a.DOM.createElement("div",{style:{marginLeft:"8px",display:"none"}},a.DOM.createElement("select",{selectedIndex:window.r20es.extra_ruler.box_mode,style:{width:"80px",margin:"0"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.setConfigValue("box_mode",o),window.r20es.extra_ruler.box_mode=o}},a.DOM.createElement("option",{value:l.BOX_MODE_BURST},"Burst"),a.DOM.createElement("option",{value:l.BOX_MODE_BLAST},"Blast")));var t=a.DOM.createElement("input",{value:window.r20es.extra_ruler.cone_degrees,type:"number",style:{width:"64px",margin:"0"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.setConfigValue("cone_degrees",o),window.r20es.extra_ruler.cone_degrees=o}});n.cone_el=a.DOM.createElement("div",{style:{marginLeft:"8px",display:"none"}},t,a.DOM.createElement("span",{style:{marginLeft:"2px"}},"degrees"),a.DOM.createElement("select",{selectedIndex:window.r20es.extra_ruler.cone_mode,style:{width:"100px",margin:"0",marginLeft:"8px"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.setConfigValue("cone_mode",o),window.r20es.extra_ruler.cone_mode=o}},a.DOM.createElement("option",{value:l.CONE_MODE_FLAT},"Flat"),a.DOM.createElement("option",{value:l.CONE_MODE_ROUNDED},"Rounded")),a.DOM.createElement("button",{className:"btn",style:{paddingBottom:"0px",paddingTop:"0px",transform:"translateY(-2px)"},onClick:function(){var e=57.29577951307855;n.setConfigValue("cone_degrees",e),window.r20es.extra_ruler.cone_degrees=e,t.value=e}},"Reset Degrees"));n.line_el=a.DOM.createElement("div",{style:{marginLeft:"8px",display:"none"}},a.DOM.createElement("select",{selectedIndex:window.r20es.extra_ruler.line_mode,style:{width:"120px",margin:"0"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.setConfigValue("line_mode",o),window.r20es.extra_ruler.line_mode=o}},a.DOM.createElement("option",{value:l.LINE_MODE_TOTAL_WIDTH},"Total Width"),a.DOM.createElement("option",{value:l.LINE_MODE_WIDTH_TO_EDGE},"Width to Edge")),a.DOM.createElement("input",{value:window.r20es.extra_ruler.line_width,type:"number",style:{width:"64px",margin:"0",marginLeft:"8px"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.setConfigValue("line_width",o),window.r20es.extra_ruler.line_width=o}}),a.DOM.createElement("span",{style:{marginLeft:"2px",marginRight:"8px"}},"units"));n.select_el=a.DOM.createElement("select",{selectedIndex:window.r20es.extra_ruler.ruler_mode,style:{width:"80px",margin:"0"},onchange:function(e){var t=e.target,o=parseInt(t.value,10);n.set_new_ruler_mode(o)}},a.DOM.createElement("option",{value:l.RULER_NORMAL},"Ruler"),a.DOM.createElement("option",{value:l.RULER_RADIUS},"Radius"),a.DOM.createElement("option",{value:l.RULER_CONE},"Cone"),a.DOM.createElement("option",{value:l.RULER_BOX},"Box"),a.DOM.createElement("option",{value:l.RULER_LINE},"Line")),n.ruler_ui_el=a.DOM.createElement("div",{style:{height:"auto",position:"absolute",left:"60px",top:"20px",backgroundColor:"#FFF",border:"1px solid #666",boxShadow:"1px 1px 3px #666",zIndex:"10502",display:"none"}},n.select_el,n.radius_el,n.box_el,n.cone_el,n.line_el),document.body.appendChild(n.ruler_ui_el),n.redraw_ruler_config_display(),window.Mousetrap.bind("g q",n.hotkey_ruler_normal),window.Mousetrap.bind("g r",n.hotkey_ruler_radius),window.Mousetrap.bind("g c",n.hotkey_ruler_cone),window.Mousetrap.bind("g e",n.hotkey_ruler_box),window.Mousetrap.bind("g w",n.hotkey_ruler_line)},n.dispose_quick=function(){window.Mousetrap.unbind("g q",n.hotkey_ruler_normal),window.Mousetrap.unbind("g r",n.hotkey_ruler_radius),window.Mousetrap.unbind("g c",n.hotkey_ruler_cone),window.Mousetrap.unbind("g e",n.hotkey_ruler_box),window.Mousetrap.unbind("g w",n.hotkey_ruler_line),window.r20es.render_extra_rulers=null,window.r20es.extra_ruler_set_mode=null,n.ruler_ui_el&&(n.ruler_ui_el.remove(),n.ruler_ui_el=null)},n.dispose=function(){n.dispose_quick(),t.prototype.dispose.call(n)},n}return o(n,t),n}(r.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/ExtraRulers")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(3),l="vttes-handout-image-from-url",s=function(t){function n(){var n=t.call(this,e)||this;return n.set_image_from_url=function(e){e.stopPropagation();var t=e.target.getAttribute("data-handoutid"),n=a.R20.getHandout(t);if(n){var o=window.prompt("Set character avatar from URL:",n.attributes.avatar);null!=o&&(o?n.save({avatar:o}):alert("Invalid URL."))}else alert("Could not find handout! (Id is: "+t+")")},n.try_inject=function(e){if(!e.querySelector("."+l)){var t=e.getAttribute("data-handoutid"),o=e.querySelector(".avatar").parentElement.parentElement;if(o){var r=i.DOM.createElement("button",{className:"btn "+l,onClick:n.set_image_from_url,"data-handoutid":t},"VTTES: Set image from URL");o.appendChild(r)}else console.error("Could not find parent of avatar_el")}},n.observer_callback=function(e){for(var t=0,o=e;t<o.length;t++)for(var r=0,i=o[t].addedNodes;r<i.length;r++){var a=i[r];a.firstElementChild&&(a.classList&&a.classList.contains("handouteditor")?n.try_inject(a.parentElement):a.firstElementChild&&a.firstElementChild.classList&&a.firstElementChild.classList.contains("handouteditor")&&n.try_inject(a))}},n}return o(n,t),n.prototype.setup=function(){this.observer=new MutationObserver(this.observer_callback),this.observer.observe(document.body,{childList:!0,subtree:!0})},n.prototype.dispose=function(){t.prototype.dispose.call(this),this.observer&&this.observer.disconnect(),document.querySelectorAll("."+l).forEach(function(e){return e.remove()})},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/HandoutImageFromURL")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(4),a=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.prototype.setup=function(){var e=i.createCSSElement("\n#playerzone .player {\n display: none !important;\n visibility: hidden !important;\n}\n",n.styleId);document.body.appendChild(e)},n.prototype.dispose=function(){i.findByIdAndRemove(n.styleId)},n.styleId="r20es-hide-player-list-style",n}(r.R20Module.SimpleBase);t.default=function(){(new a).install()}}).call(this,"src/modules/HidePlayerList")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){var n=t.call(this,e)||this;return n.wasBound=!1,n}return o(n,t),n.prototype.setup=function(){if(i.R20.isGM()){var e=function(){return i.R20.advanceInitiative()};window.Mousetrap.bind("ctrl+right",e),window.Mousetrap.bind("meta+right",e),this.wasBound=!0}},n.prototype.dispose=function(){t.prototype.dispose.call(this),this.wasBound&&(this.wasBound=!1,window.Mousetrap.unbind("ctrl+right"),window.Mousetrap.unbind("meta+right"))},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new a).install()}}).call(this,"src/modules/InitiativeAdvanceShortcut")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(3),i=n(31),a=n(131),l=function(t){function n(){return t.call(this,e,"r20es-jukebox-io-widget","Import/Export Playlists","Track","Select Playlists",null)||this}return o(n,t),n.prototype.continueImporting=function(e){a.JukeboxIO.applyData(e)},n.prototype.nameGetter=function(e){return e.name},n.prototype.descGetter=function(e){return e.songs.map(function(e){return e.title}).join(" ; ")},n.prototype.extra_drawing_above_table_import=function(){return null},n.prototype.getExportData=function(){return a.JukeboxIO.makeApplyablePlaylists(r.R20.getJukeboxPlaylists())},n.prototype.injectWidget=function(e){var t=$("#sortrootjukeboxalpha");t[0].parentNode.insertBefore(e,t[0])},n.prototype.serializeExportData=function(e){return{filename:"playlists.json",json:a.JukeboxIO.serialize(e)}},n.prototype.tryDeserialize=function(e){return a.JukeboxIO.deserialize(e)},n}(i.IOModuleCommon);t.default=function(){(new l).install()}}).call(this,"src/modules/JukeboxIO")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(5),a=n(1),l=function(e){function t(t){var n=e.call(this,t)||this;return n.submit=function(e){e.stopPropagation();var t={};$(n.getRoot()).find("input").each(function(e,n){t[e]=!n.checked}),n.close(!0);var o=[];n.data.forEach(function(e,n){t[n]||o.push(e)}),o.length<=0?alert("Selection is empty."):n.continueCallback(o)},n.onToggleAll=function(e){e.stopPropagation(),$(n.getRoot()).find("input").each(function(e,t){t.checked=!t.checked})},n}return o(t,e),t.prototype.show=function(t,n,o,r,i,a,l){this.extra_drawing_above_table=l,this.object_name=n,this.title=t,this.data=o,this.nameGetter=r,this.descGetter=i,this.continueCallback=a,e.prototype.internalShow.call(this)},t.prototype.render=function(){var e=null;this.extra_drawing_above_table&&(e=this.extra_drawing_above_table());for(var t=[],n=0,o=this.data;n<o.length;n++){var r=o[n];t.push(a.DOM.createElement("tr",null,a.DOM.createElement("th",{scope:"row"},a.DOM.createElement(i.CheckboxWithText,{checkboxText:this.nameGetter(r),checked:!0})),a.DOM.createElement("td",{className:"r20es-code"},this.descGetter(r))))}return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,null,a.DOM.createElement("h2",null,this.title)),a.DOM.createElement(i.DialogBody,null,e,a.DOM.createElement("button",{className:"btn",onClick:this.onToggleAll},"Toggle All"),a.DOM.createElement("table",{className:"r20es-indent"},a.DOM.createElement("thead",null,a.DOM.createElement("tr",{className:"table-head"},a.DOM.createElement("th",{scope:"col"},"Name"),a.DOM.createElement("th",{scope:"col"},this.object_name))),a.DOM.createElement("tbody",null,t))),a.DOM.createElement(i.DialogFooter,null,a.DOM.createElement(i.DialogFooterContent,null,a.DOM.createElement("button",{className:"btn",onClick:this.close},"Close"),a.DOM.createElement("button",{className:"btn",style:{float:"right"},onClick:this.submit},"OK"))))},t}(r.DialogBase);t.default=l},function(e,t,n){"use strict";t.__esModule=!0;var o=n(17),r=n(3),i=n(32),a=n(33),l=function(){return function(){this.parse=function(e){if(function(t){return!(t in e)}("playlists"))return new o.Err("playlists not found");for(var t=0,n=0,r=e.playlists;n<r.length;n++){var i=r[n];if(!("name"in i))return new o.Err("playlist index "+t+" doesn't have name");if(!("songs"in i))return new o.Err("playlist index "+t+" doesn't have songs");for(var a=0,l=0,s=i.songs;l<s.length;l++){var c=s[l];if(!("loop"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have loop");if(!("playing"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have playing");if(!("softstop"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have softstop");if(!("tags"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have tags");if(!("title"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have title");if(!("track_id"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have track_id");if(!("volume"in c))return new o.Err("song index "+a+" in playlist idx "+t+" doesn't have volume");a++}t++}var d=e;return new o.Ok(d.playlists)}}}();!function(e){var t={1:new l};e.deserialize=function(e){var n=i.default.parseRaw(e);if(n.isErr())return n.map();var o=n.ok().unwrap(),r=i.default.lookupStrategy(o,t);return r.isErr()?r.map():r.ok().unwrap().parse(o)},e.applyData=function(e){var t,n=e.map(function(e){var t=e.songs.map(function(e){return r.R20.createSong(e).id});return r.R20.makePlaylistStructure(e.name,e.mode,t)});r.R20.getCampaign();try{t=(t=r.R20.getJukeboxFileStructure()).concat(n)}catch(e){console.log("Failed to parse jukeboxfolder:",e),t=n}console.log(t),r.R20.setJukeboxFileStructure(t)},e.makeApplyablePlaylists=function(e){return e.map(function(e){return{name:e.name,mode:e.mode,songs:e.songs.map(function(e){var t={loop:e.attributes.loop,playing:e.attributes.playing,softstop:e.attributes.softstop,source:e.attributes.source,tags:e.attributes.tags,title:e.attributes.title,track_id:e.attributes.track_id,volume:e.attributes.volume};return e.attributes[a.LIBRE_AUDIO_TRACK_KEY]&&(t[a.LIBRE_AUDIO_TRACK_KEY]=!0),t})}})},e.serialize=function(e){var t={schema_version:1,playlists:e};return JSON.stringify(t,null,4)}}(t.JukeboxIO||(t.JukeboxIO={}))},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(33),a=n(3),l=n(1),s=n(4),c=n(133),d=function(t){function n(){var n=t.call(this,e)||this;return n._addTrackWidgetId="r20es-libre-audio-add-track-widget",n.uiInsertAddTrackWidget=function(){var e=document.getElementById("addjukebox");if(e){var t=l.DOM.createElement("button",{id:n._addTrackWidgetId,className:"btn",onClick:n.uiOnClickAddTrack},"VTTES: Add Track");e.parentNode.insertBefore(t,e)}else console.error("[LibreAudio] uiInsertAddTrackWidget failed to find widget before_root (id: addjukebox)")},n.tryUpgradeTrackToNewestLibreAudioTrackVersion=function(e){e.attributes[i.LIBRE_AUDIO_TRACK_KEY]&&"Fanburst"===e.attributes.source&&e.save({source:"My Audio"})},n.databaseOnAddJukeboxTrack=function(e){var t=e.val();setTimeout(function(){var e=a.R20.getSongById(t.id);e?n.tryUpgradeTrackToNewestLibreAudioTrackVersion(e):console.error("[LibreAudio] databaseOnAddJukeboxTrack couldn't find track by id "+t.id+"!",t)},1e3)},n.uiRemoveAddTrackWidget=function(){s.findByIdAndRemove(n._addTrackWidgetId)},n.uiOnClickAddTrack=function(){n.add_url_dialog.show()},n.canPlaySound=function(e){return console.log("querying",e),!!e.attributes[i.LIBRE_AUDIO_TRACK_KEY]},n.ui_on_add_url_dialog_close=function(e){var t,o=n.add_url_dialog.getData();if(o)for(var r=0,l=o;r<l.length;r++){var s=l[r],c=a.R20.createSong(((t={loop:!1,playing:!1,softstop:!1,source:"My Audio"})[i.LIBRE_AUDIO_TRACK_KEY]=!0,t.title=s.title,t.track_id=s.url,t.volume=s.volume,t));a.R20.addTrackToPlaylist(c.id,s.playlist)}},n.earlySetup=function(){window.r20es.canPlaySound=n.canPlaySound},n.setup=function(){window.Jukebox.playlist.backboneFirebase.reference.on("child_added",n.databaseOnAddJukeboxTrack),n.add_url_dialog=new c.default,n.add_url_dialog.getRoot().addEventListener("close",n.ui_on_add_url_dialog_close),n.uiInsertAddTrackWidget()},n.dispose=function(){n.add_url_dialog&&n.add_url_dialog.dispose(),window.r20es.canPlaySound=void 0,window.Jukebox.playlist.backboneFirebase.reference.off("child_added",n.databaseOnAddJukeboxTrack),n.uiRemoveAddTrackWidget()},n}return o(n,t),n}(r.R20Module.OnAppLoadBase);t.default=function(){(new d).install()}}).call(this,"src/modules/LibreAudio")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};t.__esModule=!0;var i=n(1),a=n(6),l=n(5),s=n(3),c=n(4),d=n(24),u=function(e,t,n,o){var r=document.createElement("audio");r.crossorigin="anonymous",r.volume=0;var i=function(){r.pause(),r.removeEventListener("error",a),r.removeEventListener("canplay",l),r.src=""},a=function(e){i(),console.error(e),o(t)},l=function(e){i(),n(t)};r.addEventListener("error",a),r.addEventListener("canplay",l),r.src=e,r.play()},p=function(e){function t(){var t=e.call(this,void 0)||this;return t.id_watermark=0,t.ui_id_property="data-request-id",t.current_playlist=null,t.playlist_id_new_playlist="__r20es_new",t.ui_set_submit_enabled_status=function(e){t.ui_button_create&&(t.ui_button_create.disabled=!e,e?(t.ui_button_create.classList.remove("disabled"),t.ui_button_create.style.opacity="1"):(t.ui_button_create.classList.add("disabled"),t.ui_button_create.style.opacity="0.5"))},t.ui_get_corresponding_track_id_by_event=function(e){var n=e.target,o=n.getAttribute(t.ui_id_property);return console.log(n,t.ui_id_property),void 0===o?(console.error("[LibreAudio] ui_get_corresponding_track_id_by_event couldn't get id for",n),null):o},t.ui_on_update_title_input=function(e){var n=t.ui_get_corresponding_track_id_by_event(e);t.internal_request_data[n].can_auto_resolve_title=!1,t.requests[n].title=e.target.value,console.log(t.requests)},t.ui_disable_ok_button_if_there_is_an_invalid_url_or_enable_it_if_there_are_none=function(){var e=0;for(var n in t.internal_request_data){if(++e,!t.internal_request_data[n].is_valid&&t.ui_button_create)return void t.ui_set_submit_enabled_status(!1)}0===e?t.ui_set_submit_enabled_status(!1):t.ui_set_submit_enabled_status(!0)},t.misc_on_audio_stream_checker_ok=function(e){t.internal_request_data[e].is_valid=!0;var n=t.ui_request_elements[e];n.status.innerText="OK",i.DOM.apply_style(n.status,d.CommonStyle.success_span),t.ui_disable_ok_button_if_there_is_an_invalid_url_or_enable_it_if_there_are_none()},t.misc_on_audio_stream_checker_err=function(e){t.internal_request_data[e].is_valid=!1;var n=t.ui_request_elements[e];n.status.innerText="Invalid URL",i.DOM.apply_style(n.status,d.CommonStyle.error_span),t.ui_disable_ok_button_if_there_is_an_invalid_url_or_enable_it_if_there_are_none()},t.ui_on_update_url_input=function(e){var n=t.ui_get_corresponding_track_id_by_event(e),o=t.requests[n],r=t.ui_request_elements[n],a=e.target.value;if(t.internal_request_data[n].can_auto_resolve_title){var l=c.nearly_format_file_url(a);r.title.value=l,o.title=l}o.url=a,r.status.innerText="Checking...",i.DOM.apply_style(r.status,d.CommonStyle.progress_span),u(a,n,t.misc_on_audio_stream_checker_ok,t.misc_on_audio_stream_checker_err)},t.ui_set_volume_status=function(e,t){e.innerText=t+"%"},t.ui_on_update_volume_input=function(e){var n=t.ui_get_corresponding_track_id_by_event(e),o=e.target.value;t.requests[n].volume=o;var r=t.ui_request_elements[n];t.ui_set_volume_status(r.current_volume,o),console.log(t.requests)},t.ui_on_remove_track=function(e){var n=t.ui_get_corresponding_track_id_by_event(e);delete t.requests[n],delete t.ui_request_elements[n],delete t.internal_request_data[n],t.ui_disable_ok_button_if_there_is_an_invalid_url_or_enable_it_if_there_are_none(),t.rerender()},t.add_track_for_user_input=function(){var e,n=t.id_watermark++,o={url:"",title:"",volume:100,playlist:t.current_playlist};t.requests[n]=o,t.internal_request_data[n]={can_auto_resolve_title:!0,is_valid:!1};var a=((e={})[t.ui_id_property]=n,e),l={marginRight:"8px"},s={remove:i.DOM.createElement("input",r({},a,{style:r({},l,{width:"16px"}),type:"button",value:"x",onClick:t.ui_on_remove_track})),url:i.DOM.createElement("input",r({style:l},a,{type:"text",value:o.url,onChange:t.ui_on_update_url_input})),title:i.DOM.createElement("input",r({style:l},a,{type:"text",value:o.title,onChange:t.ui_on_update_title_input})),volume:i.DOM.createElement("input",r({style:{width:"80%"}},a,{type:"range",min:"0",max:"100",value:o.volume,onChange:t.ui_on_update_volume_input})),current_volume:i.DOM.createElement("span",{style:r({},l,{width:"32px"})}),status:i.DOM.createElement("span",{style:l})};i.DOM.apply_style(s.remove,d.CommonStyle.error_span),t.ui_request_elements[n]=s,t.ui_set_volume_status(s.current_volume,o.volume)},t.ui_submit_click=function(e){if(e.stopPropagation(),t.current_playlist===t.playlist_id_new_playlist){var n=s.R20.createPlaylist(t.ui_new_playlist_name_input.value);for(var o in t.requests)t.requests[o].playlist=n}var r=[];for(var o in t.requests)r.push(t.requests[o]);t.setData(r),t.close()},t.ui_add_track=function(e){e.stopPropagation(),t.add_track_for_user_input(),t.ui_disable_ok_button_if_there_is_an_invalid_url_or_enable_it_if_there_are_none(),t.rerender()},t.ui_on_change_playlist=function(e){e.stopPropagation();var n=e.target.value;if(t.current_playlist=n,n===t.playlist_id_new_playlist)t.rerender();else for(var o in t.ui_new_playlist_name_input.remove(),t.requests){t.requests[o].playlist=n}},t}return o(t,e),t.prototype.show=function(){this.requests={},this.ui_request_elements={},this.internal_request_data={},this.current_playlist="",this.add_track_for_user_input(),this.ui_button_create=i.DOM.createElement("input",{className:"btn-success",type:"button",onClick:this.ui_submit_click,value:"Create"}),this.ui_new_playlist_name_input=i.DOM.createElement("input",{style:{marginLeft:"8px"},type:"text",value:"Playlist Name"}),this.ui_set_submit_enabled_status(!0),e.prototype.internalShow.call(this)},t.prototype.render=function(){for(var e={marginRight:"8px"},t=[i.DOM.createElement("option",{value:""},"-- None --"),i.DOM.createElement("option",{value:this.playlist_id_new_playlist},"-- New--")],n=0,o=s.R20.getJukeboxPlaylists();n<o.length;n++){var r=o[n],a=i.DOM.createElement("option",{value:r.id},r.name);t.push(a)}var c=i.DOM.createElement("select",{value:this.current_playlist,onChange:this.ui_on_change_playlist},t);return i.DOM.createElement(l.Dialog,null,i.DOM.createElement(l.DialogHeader,null,i.DOM.createElement("h2",null,"Add Tracks")),i.DOM.createElement(l.DialogBody,null,i.DOM.createElement("div",null,i.DOM.createElement("span",{style:e},"To Playlist:"),c,this.current_playlist===this.playlist_id_new_playlist&&this.ui_new_playlist_name_input),i.DOM.createElement("div",{style:{width:"100%",display:"grid",gridTemplateColumns:"auto 1fr 1fr auto auto auto"}},i.DOM.createElement("span",{style:e}),i.DOM.createElement("span",{style:e},"URL"),i.DOM.createElement("span",{style:e},"Title"),i.DOM.createElement("span",{style:e},"Volume"),i.DOM.createElement("span",{style:e}),i.DOM.createElement("span",{style:e},"Status"),this.ui_request_elements)),i.DOM.createElement(l.DialogFooter,null,i.DOM.createElement(l.DialogFooterContent,null,i.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr"}},i.DOM.createElement("input",{style:e,type:"button",className:"btn-danger",onClick:this.close,value:"Cancel"}),i.DOM.createElement("input",{style:e,type:"button",className:"btn-info",value:"Add Another Track",onClick:this.ui_add_track}),this.ui_button_create))))},t}(a.DialogBase);t.default=p},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(3),l=n(5),s=n(13),c=n(4),d=n(135),u=n(136),p=n(137),h=n(138),m=n(139),f=n(14),g=n(140),M=n(141),y=n(6),b=n(5),N=n(26),T=function(e){function t(t){var n=e.call(this,"r20es-big-dialog")||this;return n.show=n.internalShow,n.submit=function(e,t){n.parent.categoryFilter=t.reduce(function(e,t){return e[t.value]=t.checked,e},{}),n.close(!0),e.stopPropagation()},n.onTokenActionChecked=function(e){n.parent.setIsTokenAction=e.target.checked,e.stopPropagation()},n.onSelectChange=function(e){n.parent.activeGenerator=n.parent.generators[e.target.value],n.rerender(),N.isChromium()&&n.recenter(),e.stopPropagation()},n.onToggleAll=function(e){$(n.getRoot()).find("input").each(function(e,t){t.ignoreToggleAll||(t.checked=!t.checked)}),e.stopPropagation()},n.onChangeFolderStatus=function(e){n.parent.folderingMethod=e.target.value},n.parent=t,n}return o(t,e),t.prototype.generateCheckboxes=function(){for(var e=[],t=[],n=0;n<this.parent.activeGenerator.macroFactories.length;n++){var o=this.parent.activeGenerator.macroFactories[n],r=i.DOM.createElement("div",null,i.DOM.createElement("input",{style:{verticalAlign:"middle",marginRight:"4px"},type:"checkbox",value:n,checked:!0}),i.DOM.createElement("span",{style:{verticalAlign:"middle"}},o.name),o.createFolderEntries&&i.DOM.createElement("span",{style:{float:"right",paddingRight:"16px",color:"#757575"}},"Folderable"));e.push(r),t.push(r.firstElementChild)}return{elems:e,checkboxes:t}},t.prototype.render=function(){var e=this,t=this.parent.activeGenerator?this.generateCheckboxes():{},n=t.elems,o=t.checkboxes,r=[];for(var a in g.FolderingMethod){var l=g.FolderingMethod[a];r.push(i.DOM.createElement("option",{value:l},l))}var s=[];for(var a in this.parent.generators){var c=this.parent.generators[a];s.push(i.DOM.createElement("option",{value:c.id},c.name))}return i.DOM.createElement(b.Dialog,null,i.DOM.createElement(b.DialogHeader,null,i.DOM.createElement("h2",null,"Sheet, category selection.")),i.DOM.createElement(b.DialogBody,null,i.DOM.createElement("select",{value:this.parent.activeGenerator?this.parent.activeGenerator.id:"",onChange:this.onSelectChange},i.DOM.createElement("option",{value:""},"Select a sheet"),s),n&&i.DOM.createElement("div",{style:{paddingLeft:"12px",paddingBottom:"12px"}},i.DOM.createElement("button",{className:"btn",onClick:this.onToggleAll},"Toggle All"),n,i.DOM.createElement("hr",null),i.DOM.createElement("select",{value:this.parent.folderingMethod,onChange:this.onChangeFolderStatus},r),i.DOM.createElement(b.CheckboxWithText,{ignoreToggleAll:!0,checked:this.parent.setIsTokenAction,onChange:this.onTokenActionChecked,checkboxText:"Show as Token Action"}),i.DOM.createElement(b.CheckboxWithText,{ignoreToggleAll:!0,checked:this.parent.sortLex,onChange:function(t){return e.parent.sortLex=t.target.checked},checkboxText:"Sort lexicographically"}))),i.DOM.createElement(b.DialogFooter,null,i.DOM.createElement(b.DialogFooterContent,null,i.DOM.createElement("button",{className:"btn",onClick:this.close},"Close"),i.DOM.createElement("button",{className:"btn",style:{float:"right"},disabled:!("elems"in t),onClick:function(t){return e.submit(t,o)}},"OK"))))},t}(y.DialogBase),v=function(t){function n(){var n=t.call(this,e)||this;n.generators={},n.setIsTokenAction=!0,n.sortLex=!0,n.folderingMethod=g.FolderingMethod.NoFolder,n.categoryFilter={},n.byNameMacroTable={},n.macroBuffer=[],n.modifiedMacros=[],n.addedMacros=[],n.onPickerDialogClose=function(e){if(e.stopPropagation(),n.pickerDialog.isSuccessful()&&n.activePc){var t=[],o=function(e){return void 0===e&&(e=""),"/w @{character_name} @{wtype} &{template:default}{{name=@{character_name} "+e+"}} "},r=function(e){return e.categoryNameModifier?e.categoryNameModifier(e.name):e.name},i=o(),a=0;for(var l in n.activeGenerator.macroFactories)if(n.categoryFilter[l]){var s=n.activeGenerator.macroFactories[l],d=n.folderingMethod===g.FolderingMethod.SmallFolders,u=n.folderingMethod===g.FolderingMethod.UberFolder;if((d||u)&&s.createFolderEntries){var p=s.createFolderEntries(n.activePc);if(p.length<=0)continue;switch(n.folderingMethod){case g.FolderingMethod.NoFolder:break;case g.FolderingMethod.SmallFolders:for(var h=o(r(s)),m=0,y=p;m<y.length;m++){h+="{{"+y[m]+"}} "}t.push({name:s.name,macro:h});break;case g.FolderingMethod.UberFolder:a+=p.length;h="";for(var b=0,N=p;b<N.length;b++){h+=N[b]}i+="{{• "+r(s)+"="+h+"}} ";break;default:M.exhaustTypeSafe(n.folderingMethod)}}else{var T=s.create(n.activePc);t=t.concat(T)}}a>0&&t.push({name:"Uber-Folder",macro:i});for(var v=0,k=t;v<k.length;v++){(V=k[v]).name=c.replaceAll(V.name," ","-")}n.sortLex&&t.sort(function(e,t){return f.default(e,t,function(e){return e.name})});for(var _=0,w=t;_<w.length;_++){var V;(V=w[_]).name in n.byNameMacroTable||(n.byNameMacroTable[V.name]=[]),n.byNameMacroTable[V.name].push(V)}var R=!1;for(var E in n.byNameMacroTable)if(n.byNameMacroTable[E].length>1){R=!0;break}R?n.dupeDialog.show(n.byNameMacroTable,function(e){return e.macro}):(n.macroBuffer=t,n.showVerify())}},n.onVerifyDialogClose=function(e){e.stopPropagation(),n.verifyDialog.isSuccessful()&&n.generateMacros()},n.onButtonClick=function(e){e.stopPropagation(),console.log(e.target);var t=e.target.getAttribute("data-characterid");if(t){var o=a.R20.getCharacter(t);o?(n.activePc=o,n.activeGenerator=null,n.categoryFilter={},n.byNameMacroTable={},n.macroBuffer=[],n.modifiedMacros=[],n.addedMacros=[],n.pickerDialog.show()):console.error('Failed to get character for macro generation: getCharacter("'+t+'") failed.')}else console.error("Failed to find character id for macro generation")},n.renderSheet=function(e){return i.DOM.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center"}},i.DOM.createElement("input",{type:"button",style:{width:"50%",height:"30px"},className:"button",onClick:n.onButtonClick,"data-characterid":e.characterId,value:"Open Generate Macros Dialog"}))},n.onDupeDialogClose=function(e){if(e.stopPropagation(),n.dupeDialog.isSuccessful()){var t=n.dupeDialog.getData();for(var o in n.byNameMacroTable){var r=n.byNameMacroTable[o],i=t[o];n.macroBuffer.push(r[i])}n.showVerify()}};var o=function(e){return n.generators[e.id]=e};return o(d.default),o(u.default),n}return o(n,t),n.prototype.showVerify=function(){var e=this,t=this.activePc.abilities.models.reduce(function(e,t){return e[t.get("name")]=t,e},{});this.macroBuffer.forEach(function(n){if(n.name in t){var o=t[n.name].get("action");if(o===n.macro)return;e.modifiedMacros.push({name:n.name,macro:n.macro,oldMacro:o})}else e.addedMacros.push(n)}),this.modifiedMacros.length<=0&&this.addedMacros.length<=0?this.noMacrosDialog.show():this.verifyDialog.show(this.modifiedMacros,this.addedMacros)},n.prototype.generateMacros=function(){var e=this,t=this.activePc;if(t){var n=new l.LoadingDialog("Generating");n.show(),setTimeout(function(){try{for(var o=function(n){var o=t.abilities.find(function(e){return e.get("name")===n.name});if(!o)return console.error("Tried to modify existing ability but could not find it."),console.table({Query:n.name,Macro:n.macro,"Char Name":t.get("name"),"Char UUID":t.get("id")}),e.addedMacros.push(n),"continue";o.save({action:n.macro,istokenaction:e.setIsTokenAction})},r=0,i=e.modifiedMacros;r<i.length;r++){o(c=i[r])}for(var l=0,s=e.addedMacros;l<s.length;l++){var c=s[l];t.abilities.create({name:c.name,action:c.macro,istokenaction:e.setIsTokenAction})}a.R20.rerender_character_sheet(t)}catch(e){console.error(e),a.R20.rerender_character_sheet(t)}n.dispose()},100)}},n.prototype.setup=function(){this.pickerDialog=new T(this),this.pickerDialog.getRoot().addEventListener("close",this.onPickerDialogClose),this.verifyDialog=new h.default,this.verifyDialog.getRoot().addEventListener("close",this.onVerifyDialogClose),this.dupeDialog=new p.default,this.dupeDialog.getRoot().addEventListener("close",this.onDupeDialogClose),this.noMacrosDialog=new m.default,this.sheetTab=s.SheetTab.add("Macro Generator",this.renderSheet,null,a.R20.canEditCharacter)},n.prototype.dispose=function(){this.sheetTab&&this.sheetTab.dispose(),this.pickerDialog&&this.pickerDialog.dispose(),this.verifyDialog&&this.verifyDialog.dispose(),this.dupeDialog&&this.dupeDialog.dispose(),this.noMacrosDialog&&this.noMacrosDialog.dispose()},n}(r.R20Module.SimpleBase);t.default=function(){(new v).install()}}).call(this,"src/modules/MacroGenerator")},function(e,t,n){"use strict";t.__esModule=!0;for(var o=n(14),r={"NPC Actions":{group:"repeating_npcaction",name:"name",macro:function(e){return"selected|repeating_npcaction_$"+e+"_npc_action"},canMakeFolder:!0},"NPC Bonus Actions":{group:"repeating_npcbonusaction",name:"name",macro:function(e){return"selected|repeating_npcbonusaction_$"+e+"_npc_action"},canMakeFolder:!0},"NPC Legendary Actions":{group:"repeating_npcaction-l",name:"name",macro:function(e){return"selected|repeating_npcaction-l_$"+e+"_npc_action"},canMakeFolder:!0},"NPC Traits":{group:"repeating_npctrait",name:"name",macro:function(e){return"@{selected|wtype}&{template:npcaction} {{name=@{selected|npc_name}}} {{rname=@{selected|repeating_npctrait_$"+e+"_name}}} {{description=@{selected|repeating_npctrait_$"+e+"_description}}}"},canMakeFolder:!1},"NPC Reactions":{group:"repeating_npcreaction",name:"name",macro:function(e){return"@{selected|wtype}&{template:npcaction} {{name=@{selected|npc_name}}} {{rname=@{selected|repeating_npcreaction_$"+e+"_name}}} {{description=@{selected|repeating_npcreaction_$"+e+"_description}}}"},nameMod:function(e){return"Reaction:"+e},canMakeFolder:!1},"Player Attacks":{group:"repeating_attack",name:"atkname",macro:function(e){return"selected|repeating_attack_$"+e+"_attack"},canMakeFolder:!0},"Player Tools":{group:"repeating_tool",name:"toolname",macro:function(e){return"selected|repeating_tool_$"+e+"_tool"},canMakeFolder:!0},"Player Traits":{group:"repeating_traits",name:"name",macro:function(e){return"@{selected|wtype}&{template:traits} @{selected|charname_output} {{name=@{selected|repeating_traits_$"+e+"_name}}} {{source=@{selected|repeating_traits_$"+e+"_source}: @{selected|repeating_traits_$"+e+"_source_type}}} {{description=@{selected|repeating_traits_$"+e+"_description}}}"},canMakeFolder:!1},"Spellbook Cantrips":{group:"repeating_spell-cantrip",name:"spellname",macro:function(e){return"selected|repeating_spell-cantrip_$"+e+"_spell"},canMakeFolder:!0}},i=function(e){r["Spellbook Level "+e]={group:"repeating_spell-"+e,name:"spellname",macro:function(t){return"selected|repeating_spell-"+e+"_$"+t+"_spell"},canMakeFolder:!0,categoryMod:function(t){return t+" (@{Selected|lvl"+e+"_slots_expended}/@{Selected|lvl"+e+"_slots_total})"}}},a=1;a<=9;a++)i(a);var l=function(e,t,n,o){var r=t+"_"+n+"_"+o,i=e.attribs.models.find(function(e){return e.get("name")===r});return i?i.attributes.current:(console.error("[Bulk macro generator for 5e OGL R20] Could not find name for repeating section."),void console.table({Query:r,"Group name":t,"Name Attribute Name":o,"Character name":e.get("name"),"Character UUID":e.get("id")}))},s=function(e,t,n,o,r){for(var i=function(e,t){var n={};return e.attribs.models.forEach(function(e){var o=e.get("name");if(o.startsWith(t+"_")){var r=o.split("_");if(!(r.length<2)){var i=r[2];n[i]=!0}}}),e.repeatingKeyOrder(Object.keys(n),t)}(e,t),a=[],s=0;s<i.length;s++){var c=i[s],d=l(e,t,c,n);"function"==typeof r&&(d=r(d)),a.push({name:d||"",macro:o(s)})}return a},c=[],d=function(e){var t=r[e],n=void 0;t.canMakeFolder&&(n=function(e){var n=s(e,t.group,t.name,t.macro,t.nameMod);n.sort(function(e,t){return o.default(e,t,function(e){return e.name})});for(var r=[],i=0,a=n;i<a.length;i++){var l=a[i];r.push("["+l.name+"](~"+l.macro+") ")}return r});var i=t.canMakeFolder?function(e){return"%{"+t.macro(e)+"}"}:t.macro;c.push({name:e,create:function(e){return s(e,t.group,t.name,i,t.nameMod)},createFolderEntries:n,categoryNameModifier:t.categoryMod})};for(var u in r)d(u);var p="D&D 5e OGL by Roll20",h={id:p,name:p,macroFactories:c};t.default=h},function(e,t,n){"use strict";t.__esModule=!0;var o=n(14),r={"NPC Melee Attacks":{group:"repeating_melee-strikes",name:"weapon",macro:function(e){return"selected|repeating_melee-strikes_$"+e+"_ATTACK-DAMAGE-NPC"},hasMultiAttacks:!0},"NPC Ranged Attacks":{group:"repeating_ranged-strikes",name:"weapon",macro:function(e){return"selected|repeating_ranged-strikes_$"+e+"_ATTACK-DAMAGE-NPC"},hasMultiAttacks:!0},"Player Melee Attacks":{group:"repeating_melee-strikes",name:"weapon",macro:function(e){return"selected|repeating_melee-strikes_$"+e+"_ATTACK-DAMAGE"},hasMultiAttacks:!0},"Player Ranged Attacks":{group:"repeating_ranged-strikes",name:"weapon",macro:function(e){return"selected|repeating_ranged-strikes_$"+e+"_ATTACK-DAMAGE"},hasMultiAttacks:!0},"Innate Spells":{group:"repeating_spellinnate",name:"name",macro:function(e){return"selected|repeating_spellinnate_$"+e+"_spellroll"},hasMultiAttacks:!1},"Focus Spells":{group:"repeating_spellfocus",name:"name",macro:function(e){return"selected|repeating_spellfocus_$"+e+"_spellroll"},hasMultiAttacks:!1},"Cantrip Spells":{group:"repeating_cantrip",name:"name",macro:function(e){return"selected|repeating_cantrip_$"+e+"_spellroll"},hasMultiAttacks:!1},"Normal Spells":{group:"repeating_normalspells",name:"name",macro:function(e){return"selected|repeating_normalspells_$"+e+"_spellroll"},hasMultiAttacks:!1}},i=function(e,t,n,o,r,i){for(var a=function(e,t){var n={};return e.attribs.models.forEach(function(e){var o=e.get("name");if(o.startsWith(t+"_")){var r=o.split("_");if(!(r.length<2)){var i=r[2];n[i]=!0}}}),e.repeatingKeyOrder(Object.keys(n),t)}(e,t),l=[],s=function(s){var c=a[s],d=function(e,t,n,o){var r=t+"_"+n+"_"+o,i=e.attribs.models.find(function(e){return e.get("name")===r});return i?i.attributes.current:(console.error("[Bulk macro generator for Pathfinder 2e R20] Could not find name for repeating section."),void console.table({Query:r,"Group name":t,"Name Attribute Name":o,"Character name":e.get("name"),"Character UUID":e.get("id")}))}(e,t,c,n)||"",u=function(e){var t=o(s);return 1!=e&&(t=""+t+e),i||(t="%{"+t+"}"),t};l.push({name:d,macro:u(1)}),r&&l.push({name:d+"#2",macro:u(2)},{name:d+"#3",macro:u(3)})},c=0;c<a.length;c++)s(c);return l},a=[],l=function(e){var t=r[e];a.push({name:e,create:function(e){return i(e,t.group,t.name,t.macro,t.hasMultiAttacks,!1)},createFolderEntries:function(e){var n=i(e,t.group,t.name,t.macro,t.hasMultiAttacks,!0);n.sort(function(e,t){return o.default(e,t,function(e){return e.name})});for(var r=[],a="",l=0,s=n;l<s.length;l++){var c=s[l];if(r.length>0&&(c.name===a+"#2"||c.name===a+"#3")){var d=c.name.slice(-2);r[r.length-1]=r[r.length-1]+" ["+d+"](~"+c.macro+")"}else r.push("["+c.name+"](~"+c.macro+")"),a=c.name}return r}})};for(var s in r)l(s);var c="Pathfinder 2e by Roll20",d={id:c,name:c,macroFactories:a};t.default=d},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(5),a=n(1),l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.selectedButtons={},t.submit=function(e){e.stopPropagation(),t.setData(t.selectedButtons),t.close(!0)},t.checkboxLogic=function(e){var n=e.getAttribute("data-key"),o=parseInt(e.getAttribute("data-index"));t.selectedButtons[n]=o,t.rerender()},t.checkboxCheck=function(e){return t.checkboxLogic(e.target)},t.onTextClick=function(e){var n=$(e.target).find("input")[0];n&&t.checkboxLogic(n)},t.genDiffs=function(){var e=[],n=function(n){var o=t.dataSet[n];if(o.length<=1)return"continue";var r=[];o.forEach(function(e,o){var i=t.selectedButtons[n]===o,l=a.DOM.createElement("div",{style:{paddingTop:"0px",paddingBottom:"0px"},onClick:t.onTextClick,className:"r20es-code"},a.DOM.createElement("input",{className:"btn",style:{verticalAlign:"middle",marginRight:"4px"},"data-key":n,"data-index":o,onChange:t.checkboxCheck,type:"radio",checked:i}),t.descRetriever(e));r.push(l)}),e.push(a.DOM.createElement("div",null,a.DOM.createElement("h4",null,n),r,a.DOM.createElement("hr",null)))};for(var o in t.dataSet)n(o);return e},t}return o(t,e),t.prototype.show=function(t,n){for(var o in this.dataSet=t,this.selectedButtons={},this.descRetriever=n,this.dataSet)this.selectedButtons[o]=0;e.prototype.internalShow.call(this)},t.prototype.render=function(){return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,null,a.DOM.createElement("h2",null,"Duplicates")),a.DOM.createElement(i.DialogBody,null,a.DOM.createElement("p",null,"Abilities with duplicate names were generated."),a.DOM.createElement("p",null,"Choose which duplicate ability should be kept."),this.genDiffs()),a.DOM.createElement(i.DialogFooter,null,a.DOM.createElement(i.DialogFooterContent,null,a.DOM.createElement("button",{style:{boxSizing:"border-box",width:"100%"},className:"btn",onClick:this.submit},"Done"))))},t}(r.DialogBase);t.default=l},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(5),a=n(1),l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.submit=function(e){e.stopPropagation(),$(t.getRoot()).find("input").each(function(e,n){if(!n.checked){var o=n.getAttribute("data-name"),r=n.hasAttribute("data-modify"),i=r?t.modifiedMacros:t.addedMacros,a=i.findIndex(function(e){return e.name===o});-1!==a?i.splice(a,1):console.error("Tried to remove macro with name "+o+" but could not find it's index in the pool. isModify: "+r)}}),t.close(!0)},t.onToggleAll=function(e){e.stopPropagation(),$(t.getRoot()).find("input").each(function(e,t){t.checked=!t.checked}),e.stopPropagation()},t}return o(t,e),t.prototype.show=function(t,n){this.addedMacros=n,this.modifiedMacros=t,e.prototype.internalShow.call(this)},t.prototype.mkTable=function(e,t,n){return a.DOM.createElement("div",null,a.DOM.createElement("h3",null,e),a.DOM.createElement("table",{className:"r20es-indent"},a.DOM.createElement("thead",null,a.DOM.createElement("tr",{className:"table-head"},t)),a.DOM.createElement("tbody",null,n)))},t.prototype.generateAdded=function(){return this.mkTable("Macros To Be Added",[a.DOM.createElement("th",{scope:"col"},"Name"),a.DOM.createElement("th",{scope:"col"},"Action")],this.addedMacros.map(function(e){return a.DOM.createElement("tr",null,a.DOM.createElement("th",{scope:"row"},a.DOM.createElement(i.CheckboxWithText,{"data-name":e.name,value:e.macro,checkboxText:e.name,checked:!0})),a.DOM.createElement("td",{className:"r20es-code"},e.macro))}))},t.prototype.generateModified=function(){return this.mkTable("Macros To Be Changed",[a.DOM.createElement("th",{scope:"col"},"Name"),a.DOM.createElement("th",{scope:"col"},"Old Action"),a.DOM.createElement("th",{scope:"col"},"New Action")],this.modifiedMacros.map(function(e){return a.DOM.createElement("tr",null,a.DOM.createElement("th",{scope:"row"},a.DOM.createElement(i.CheckboxWithText,{"data-modify":!0,"data-name":e.name,value:e.macro,checkboxText:e.name,checked:!0})),a.DOM.createElement("td",{className:"r20es-code"},e.oldMacro),a.DOM.createElement("td",{className:"r20es-code"},e.macro))}))},t.prototype.render=function(){return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,null,a.DOM.createElement("h2",null,"Review Changes")),a.DOM.createElement(i.DialogBody,null,a.DOM.createElement("button",{className:"btn",onClick:this.onToggleAll},"Toggle All"),this.addedMacros.length>0&&this.generateAdded(),this.modifiedMacros.length>0&&this.generateModified()),a.DOM.createElement(i.DialogFooter,null,a.DOM.createElement(i.DialogFooterContent,null,a.DOM.createElement("button",{className:"btn",onClick:this.close},"Close"),a.DOM.createElement("button",{className:"btn",style:{float:"right"},onClick:this.submit},"OK"))))},t}(r.DialogBase);t.default=l},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(1),a=n(5),l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.show=t.internalShow,t}return o(t,e),t.prototype.render=function(){return i.DOM.createElement(a.Dialog,null,i.DOM.createElement(a.DialogHeader,null,i.DOM.createElement("h2",null,"Notice")),i.DOM.createElement(a.DialogBody,null,i.DOM.createElement("p",null,"We found nothing to make a macro for.")),i.DOM.createElement(a.DialogFooter,null,i.DOM.createElement(a.DialogFooterContent,null,i.DOM.createElement("button",{style:{boxSizing:"border-box",width:"100%"},className:"btn",onClick:this.close},"OK"))))},t}(r.DialogBase);t.default=l},function(e,t,n){"use strict";t.__esModule=!0,function(e){e.NoFolder="No foldering",e.SmallFolders="Small folders",e.UberFolder="Uber folder"}(t.FolderingMethod||(t.FolderingMethod={}))},function(e,t,n){"use strict";t.__esModule=!0,t.exhaustTypeSafe=function(e){throw new Error("BAD: TYPESAFE CASE EXHAUST. tell a programmer")}},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(3),i=n(143),a=n(31),l=n(34),s=n(1),c=function(t){function n(){var n=t.call(this,e,"r20es-macro-io-widget","Import/Export Macro","Select Macros","Macro","r20es-big-dialog")||this;return n.import_strategy=l.ImportStrategy.ADD,n.continueImporting=function(e){i.MacroIO.applyToPlayer(r.R20.getCurrentPlayer(),e,n.import_strategy),r.R20.rerenderJournalMacros(),r.R20.rerenderMacroBar()},n.updateStrategy=function(e){e.stopPropagation(),n.import_strategy=e.target.value},n}return o(n,t),n.prototype.nameGetter=function(e){return e.attributes.name},n.prototype.descGetter=function(e){return e.attributes.action},n.prototype.extra_drawing_above_table_import=function(){return s.DOM.createElement("span",null,"On duplicate name in import:",s.DOM.createElement("select",{value:this.import_strategy,onChange:this.updateStrategy},s.DOM.createElement("option",{value:l.ImportStrategy.ADD},"Add the duplicate"),s.DOM.createElement("option",{value:l.ImportStrategy.UPDATE_FIRST_MATCH},"Update first existing macro with matching name")))},n.prototype.getExportData=function(){var e=r.R20.getCurrentPlayer();return i.MacroIO.prepareMacroList(e)},n.prototype.injectWidget=function(e){var t=$("#deckstables"),n=t[0].firstElementChild,o=t.find("#adddeck")[0];n.insertBefore(e,o)},n.prototype.serializeExportData=function(e){return{filename:r.R20.getCurrentPlayer().attributes.displayname+"_macros.json",json:i.MacroIO.serialize(e)}},n.prototype.tryDeserialize=function(e){return i.MacroIO.deserialize(e)},n}(a.IOModuleCommon);t.default=function(){(new c).install()}}).call(this,"src/modules/MacroIO")},function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(17),i=n(3),a=n(32),l=n(34),s=function(){return function(){this.parse=function(e){if(!("macros"in e))return new r.Err("macros list not found in data");for(var t=0;t<e.macros.length;t++){var n=e.macros[t];if(!n)return new r.Err("macro "+t+"is an invalid value: "+n);if(!("attributes"in n))return new r.Err("attributes not found in macro "+t);if(n.macrobar){if(!("name"in n.macrobar))return new r.Err("name not found in macro.macrobar "+t);if(!("color"in n.macrobar))return new r.Err("color not found in macro.macrobar "+t)}if(!("action"in n.attributes))return new r.Err("action not found in macro.attributes "+t);if(!("istokenaction"in n.attributes))return new r.Err("istokenaction not found in macro.attributes "+t);if(!("name"in n.attributes))return new r.Err("name not found in macro.attributes "+t);if(!("visibleto"in n.attributes))return new r.Err("visibleto not found in macro.attributes "+t)}return new r.Ok(e.macros)}}}(),c=function(){return function(){this.parse=function(e){if(!e)return new r.Err("player is "+e);if(!("macrobar"in e))return new r.Err("macrobar not found in data");if(!("playerId"in e))return new r.Err("playerId not found in data");if(!("macros"in e))return new r.Err("macros list not found in data");for(var t=0;t<e.macros.length;t++){if(!(s=e.macros[t]))return new r.Err("macro "+t+"is an invalid value: "+s);if(!("id"in s))return new r.Err("id not found in macro "+t);if(!("action"in s))return new r.Err("action not found in macro "+t);if(!("istokenaction"in s))return new r.Err("istokenaction not found in macro "+t);if(!("name"in s))return new r.Err("name not found in macro "+t);if(!("visibleto"in s))return new r.Err("visibleto not found in macro "+t)}for(var n=e,o=d(n.macrobar),i=[],a=0,l=n.macros;a<l.length;a++){var s=l[a],c=u(s,o);i.push(c)}return new r.Ok(i)}}}(),d=function(e){return e.split(",").map(function(e){return e.split("|")})},u=function(e,t){var n=t.findIndex(function(t){return t.length>=2&&t[1]===e.id}),o={attributes:{action:e.action,istokenaction:e.istokenaction,name:e.name,visibleto:e.visibleto}};if(-1!==n){var r=t[n];o.macrobar={color:r.length>=3?r[2]:null,name:r.length>=4?r[3]:null}}return o};!function(e){e.wipeMacros=function(e){i.R20.wipeObjectStorage(e.macros),e.save({macrobar:""})};var t={1:new c,2:new s};e.prepareMacroList=function(e){var t=d(e.attributes.macrobar);return e.macros.models.map(function(e){return u(e.attributes,t)})},e.serialize=function(e){var t={schema_version:2,macros:e};return JSON.stringify(t,null,4)},e.deserialize=function(e){var n=a.default.parseRaw(e);if(n.isErr())return n.map();var o=n.ok().unwrap(),r=a.default.lookupStrategy(o,t);return r.isErr()?r.map():r.ok().unwrap().parse(o)};var n=function(e,t,n){var o=e.id+"|"+t,r=null!==n.macrobar.color,i=null!==n.macrobar.name;return(r||i)&&(r&&i?o+="|"+n.macrobar.color+"|"+n.macrobar.name:r?i||(o+="|"+n.macrobar.color):i&&(o+="|#|"+n.macrobar.name)),o};e.applyToPlayer=function(e,t,o){console.log(o);for(var r=e.macros,i=e.attributes.macrobar.split(","),a=function(t){var a=!1;if(l.ImportStrategy.UPDATE_FIRST_MATCH===o){var s=t.attributes.name,c=r.find(function(e){return s===e.attributes.name});if(c){Object.assign(c.attributes,t.attributes),c.save();var d=i.findIndex(function(e){return e.includes(c.id)});-1===d?t.macrobar&&i.push(n(e,c.id,t)):t.macrobar?i[d]=n(e,c.id,t):i.splice(d,1),a=!0}}if(!1===a){var u=e.macros.create(t.attributes);t.macrobar&&i.push(n(e,u.id,t))}},s=0,c=t;s<c.length;s++){a(c[s])}e.save({macrobar:i.join(",")})}}(o||(o={})),t.MacroIO=o},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(16),l=function(t){function n(){var n=t.call(this,e)||this;return n.on_click=function(e){var t,o=i.R20.getCurrentPageTokens(),r=n.getHook().config;if(e.button===r.mouseButtonIndex&&(!r.modAlt||window.r20es.keys.altDown)&&(!r.modShift||window.r20es.keys.shiftDown)&&(!r.modCtrl||window.r20es.keys.ctrlDown)&&(!r.modMeta||window.r20es.keys.metaDown))for(var l=((t={})[i.R20.CanvasLayer.GMTokens]=r.switchToGmLayer,t[i.R20.CanvasLayer.PlayerTokens]=r.switchToTokenLayer,t[i.R20.CanvasLayer.Map]=r.switchToMapLayer,t[i.R20.CanvasLayer.Lighting]=r.switchToLightsLayer,t[i.R20.CanvasLayer.B20Foreground]=r.switchToForegroundLayer,t[i.R20.CanvasLayer.B20Weather]=r.switchToWeatherLayer,t[i.R20.CanvasLayer.B20Background]=r.switchToBackgroundLayer,t),s=o.length;s-- >0;){var c=o[s],d=i.R20.try_get_canvas_object_model(c);if(d&&(i.R20.doesTokenContainMouse(e,c)&&d)){var u=d.get("layer");if(!l[u])continue;if(i.R20.getCurrentLayer()!==u){var p=a.layerInfo[u];$(a.makeLayerButtonSelector(p)).trigger("click")}r.select&&i.R20.selectToken(c);break}}},n}return o(n,t),n.prototype.setup=function(){i.R20.isGM()&&document.addEventListener("pointerup",this.on_click)},n.prototype.dispose=function(){t.prototype.dispose.call(this),document.removeEventListener("pointerup",this.on_click)},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/MiddleClickSelect")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.doMove=function(e){e&&i.R20.moveCameraToTokenByUUID(e.id)},n.prototype.setup=function(){i.R20.isGM()&&(window.r20es.moveCameraTo=n.doMove)},n.prototype.dispose=function(){window.r20es.moveCameraTo=null},n}(r.R20Module.SimpleBase);t.default=function(){(new a).install()}}).call(this,"src/modules/MoveCameraToToken")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){var n=t.call(this,e)||this;return n.onPageChanged=function(){n.updatePageBackground()},n}return o(n,t),n.prototype.updatePageBackground=function(){var e=this.getHook().config,t=i.R20.getCurrentPage(),n=!0;t.attributes.useAutoWrapper||"transparent"!==t.attributes.wrapperColor&&(n=!1);var o=!0;"#ffffff"!==t.attributes.background_color&&(o=!1);var r=!0,a=!0;if(e.only_force_if_default&&(a=!1,r=!1,n&&(a=!0),o&&(r=!0)),r){var l="rgb("+(s=e.backgroundColor)[0]+", "+s[1]+", "+s[2]+")";i.R20.setBackgroundStyle(l),i.R20.renderAll()}if(a){var s;l="rgb("+(s=e.backdrop_color)[0]+", "+s[1]+", "+s[2]+")";$("#editor-wrapper").css("background",l),$("body").css("background",l)}},n.prototype.resetPageBackground=function(){var e=i.R20.getCurrentPage();i.R20.setBackgroundStyle(e.attributes.background_color),e.view.updateWrapperColor()},n.prototype.onSettingChange=function(e,t,n){this.updatePageBackground()},n.prototype.setup=function(){var e=this;$(document).on("d20:pagechanged",this.onPageChanged),setTimeout(function(){e.updatePageBackground()},500)},n.prototype.dispose=function(){t.prototype.dispose.call(this),$(document).off("d20:pagechanged",this.onPageChanged),this.resetPageBackground(),i.R20.renderAll()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new a).install()}}).call(this,"src/modules/NightMode")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=function(t){function n(){var n=t.call(this,e)||this;return n.toggle_frame_recorder=function(e){try{window.d20.engine.frame_recorder&&(window.d20.engine.frame_recorder.clear(),e?window.d20.engine.frame_recorder.startup():window.d20.engine.frame_recorder.shutdown())}catch(e){console.error(e)}},n.onSettingChange=function(e,t,o){"disable_frame_recorder"===e&&n.toggle_frame_recorder(!o)},n}return o(n,t),n.prototype.setup=function(){var e=this.getHook().config;this.toggle_frame_recorder(!e.disable_frame_recorder)},n.prototype.dispose=function(){this.toggle_frame_recorder(!0)},n}(n(2).R20Module.OnAppLoadBase);t.default=function(){(new r).install()}}).call(this,"src/modules/PerformanceImprovements")},function(e,t,n){"use strict";(function(e){var o,r=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var i=n(2),a=n(15),l=function(t){function n(){var o=t.call(this,e)||this;o._copyTextSettingsKey="copyTextSettingsOnSelect",o.setCopyTextSettingsOnSelectState=function(e){window.r20es[o._copyTextSettingsKey]=e},o.onChangeProp=function(e){var t=e.target;if(t.id){var r=n.idToConfig[t.id];if(r){var i=t.value;o.setConfigValue(r,i)}}},o.onSettingChange=function(e,t,n){e===o._copyTextSettingsKey&&o.setCopyTextSettingsOnSelectState(n)};var r=function(e){return $("#"+e)};return o._events=[new a.EventSubscriber("change",o.onChangeProp,function(){return r(n.colorSelectId)}),new a.EventSubscriber("change",o.onChangeProp,function(){return r(n.sizeSelectId)}),new a.EventSubscriber("change",o.onChangeProp,function(){return r(n.fontSelectId)})],o.setCopyTextSettingsOnSelectState(!0),o}return r(n,t),n.prototype.setFontSettingValueFromConfig=function(e){var t=this.getHook().config[n.idToConfig[e]],o=$("#"+e);return o.val(t),o},n.prototype.setup=function(){for(var e=0,t=this._events;e<t.length;e++){t[e].subscribe()}this.setFontSettingValueFromConfig(n.colorSelectId).trigger("change-silent"),this.setFontSettingValueFromConfig(n.sizeSelectId),this.setFontSettingValueFromConfig(n.fontSelectId),this.setCopyTextSettingsOnSelectState(this.getHook().config[this._copyTextSettingsKey])},n.prototype.dispose=function(){for(var e=0,t=this._events;e<t.length;e++){t[e].unsubscribe()}this.setCopyTextSettingsOnSelectState(!0)},n.colorSelectId="font-color",n.sizeSelectId="font-size",n.fontSelectId="font-family",n.idToConfig=((o={})[n.colorSelectId]="color",o[n.sizeSelectId]="size",o[n.fontSelectId]="font",o),n}(i.R20Module.OnAppLoadBase);t.default=function(){(new l).install()}}).call(this,"src/modules/RememberTextToolSettings")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(2),l=n(3),s=n(8),c=n(9),d=function(t){function n(){var o=t.call(this,e)||this;return o.reportNoCharacter=function(){n.fancySay("Token doesn't have a character.")},o.setHealth=function(e,t){var n=o.getHook().config,r=n.bar+"_value",i=n.bar+"_max",a={};a[r]=t,a[i]=t;var s=l.R20.try_get_canvas_object_model(e);s&&s.save(a)},o.onClickMenuItem=function(e){return r(o,void 0,void 0,function(){var e,t,o,r,a,s,c,d,u,p,h,m,f,g,M,y=this;return i(this,function(b){switch(b.label){case 0:if(e=l.R20.getSelectedTokens(),t=this.getHook().config,l.R20.unselectTokens(),o=0,t.diceFormulaMacro)return[3,5];r=function(r){var s,c,d,u,p,h,m;return i(this,function(i){switch(i.label){case 0:return(s=a.tryGetCharacter(r))?[4,l.R20.ensure_character_attributes_are_loaded(s)]:(a.reportNoCharacter(),[2,"continue"]);case 1:for(i.sent(),c=s.attribs,d=null,u=0,p=c.models;u<p.length;u++)if(h=p[u],!d&&h.attributes.name===t.diceFormulaAttribute){d=h.attributes.current;break}return d?(m=l.R20.try_get_canvas_object_model(r))?(n.fancySay(m.character.get("name")+": [["+d+"]]",function(t,n){if(n.inlinerolls&&!(n.inlinerolls.length<=0)){var i=n.inlinerolls[0].results.total;if(y.setHealth(r,i),++o>=e.length)for(var a=0,s=e;a<s.length;a++){var c=s[a];l.R20.addTokenToSelection(c)}}}),[2]):[2,"continue"]:(n.fancySay("Could not find attribute "+t.diceFormulaAttribute),[2,"continue"])}})},a=this,s=0,c=e,b.label=1;case 1:return s<c.length?(d=c[s],[5,r(d)]):[3,4];case 2:b.sent(),b.label=3;case 3:return s++,[3,1];case 4:return[3,6];case 5:for(u=t.diceFormulaSumInline,p=t.diceFormulaMacro,h=function(e){if(l.R20.selectToken(e),!m.tryGetCharacter(e))return m.reportNoCharacter(),"continue";var t=l.R20.generateUUID();l.R20.say(p,t,function(t,n){var o=0;if(n.inlinerolls&&!(n.inlinerolls.length<=0)){if(u)for(var r=0,i=n.inlinerolls;r<i.length;r++){var a=i[r];a&&a.results&&a.results.total&&(o+=a.results.total)}else o=n.inlinerolls[n.inlinerolls.length-1].results.total;y.setHealth(e,o)}})},m=this,f=0,g=e;f<g.length;f++)M=g[f],h(M);l.R20.hideTokenRadialMenu(),l.R20.hideTokenContextMenu(),b.label=6;case 6:return[2]}})})},o}return o(n,t),n.fancySay=function(e,t){l.R20.sayToSelf("&{template:default} {{name=VTTES Hit Dice}} {{"+e+"}}",t)},n.prototype.tryGetCharacter=function(e){var t=l.R20.try_get_canvas_object_model(e);if(t&&t.character)return t.character},n.prototype.setup=function(){l.R20.isGM()&&s.TokenContextMenu.addButton("Hit Dice",this.onClickMenuItem,c.TOKEN_CONTEXT_MENU_ORDER_HIT_DICE,{mustHaveSelection:!0})},n.prototype.dispose=function(){s.TokenContextMenu.removeButton("Hit Dice",this.onClickMenuItem)},n}(a.R20Module.SimpleBase);t.default=function(){(new d).install()}}).call(this,"src/modules/RollAndApplyHitDice")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(22),l=n(3),s=function(t){function n(){var n=t.call(this,e)||this;return n._buttonClass="r20es-set-table-entry-avatar-by-url-button",n._elementWithIdQuery="div["+a.default.TABLE_ENTRY_ID_ATTRIBUTE+"]",n.uiOnClickSetByUrl=function(e){var t=$(e.target).closest(n._elementWithIdQuery)[0];if(!t)return console.error("[SetTableEntryAvatarByUrl] failed to find element with id on set by url event with target",e.target),void alert("Failed to find the table! Tell a programmer.");var o=t.getAttribute(a.default.TABLE_ENTRY_ID_ATTRIBUTE),r=t.getAttribute(a.default.TABLE_ID_ATTRIBUTE),i=l.R20.getRollableTable(r);if(i){var s=i.tableitems.get(o);if(s){var c=prompt("Image URL",s.attributes.avatar);c&&s.save({avatar:c})}else alert("Failed to find entry (id: "+o+") in table (id: "+o+"). Tell a programmer.")}else alert("Failed to find a table with id "+i+"! Tell a programmer.")},n.uiIsRootElement=function(e){return e.getAttribute&&e.getAttribute(a.default.TABLE_ENTRY_ID_ATTRIBUTE)&&0===$(e).find(""+n._buttonClass).length},n.uiAddButtonToRoot=function(e){var t=$(e).find(".avatar")[0];if(t){var o=i.DOM.createElement("button",{className:n._buttonClass,style:{marginBottom:"8px"}},"Set Avatar By URL");o.addEventListener("click",n.uiOnClickSetByUrl),t.parentElement.insertBefore(o,t)}else console.error("[SetTableEntryAvatarByUrl] failed to find above element of root",e)},n.observerCallback=function(e){for(var t=0,o=e;t<o.length;t++){o[t].addedNodes.forEach(function(e){n.uiIsRootElement(e)&&n.uiAddButtonToRoot(e)})}},n.setup=function(){for(var e=0,t=document.querySelectorAll(n._elementWithIdQuery);e<t.length;e++){var o=t[e];n.uiAddButtonToRoot(o)}n._observer=new MutationObserver(n.observerCallback),n._observer.observe(document.body,{childList:!0,subtree:!0})},n.dispose=function(){n._observer.disconnect();for(var e=0,t=document.body.querySelectorAll("."+n._buttonClass);e<t.length;e++){t[e].remove()}},n}return o(n,t),n}(r.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/SetTableEntryAvatarByUrl")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(4),l=n(152),s=n(38),c=n(39),d=n(40),u=function(t){function n(){var n=t.call(this,e)||this;return n.dialog=null,n.onButtonClick=function(e){e.stopPropagation(),n.dialog.show()},n}return o(n,t),n.prototype.setup=function(){this.dialog=new l.default(this.getAllHooks());var e=a.createCSSElement('\n.r20es-settings-dialog {\n max-height: 90%;\n max-width: 70%;\n height: 100%;\n width: 100%;\n}\n\n.vttes_overwrite_handout {\n visibility: hidden;\n}\n\n.vttes_export_handout {\n visibility: hidden;\n}\n\n.r20es-settings-flex-wrapper {\n height: 100%;\n width: 100%;\n\n display: flex;\n flex-direction: column;\n}\n\n.r20es-settings-dialog .dialog-body {\n flex-grow: 1;\n display: flex;\n flex-direction: row;\n}\n\n.r20es-settings-dialog .more-settings ul > li {\n display: block;\n margin: 4px 0px 4px 0px\n}\n\n.r20es-settings-dialog input,\n.r20es-settings-dialog .text {\n vertical-align: middle;\n}\n\n.r20es-settings-dialog input[type="checkbox"] {\n margin-right: 4px;\n}\n\n.r20es-settings-dialog .more-settings ul > li > select {\n height: auto;\n}\n\n.r20es-settings-dialog .more-settings .compact {\n padding: 0;\n margin: 0;\n}\n\n.r20es-settings-dialog .more-settings > hr {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n.r20es-settings-dialog .more-settings > .description {\n margin-bottom: 30px;\n}\n\n.r20es-clickable-text {\n width: 100%;\n}\n\n.r20es-clickable-text.selected {\n background-color: rgb(220,220,220);\n}\n\n.r20es-clickable-text.disabled span {\n color: rgb(200,200,200);\n}\n\n.r20es-clickable-text:hover {\n background-color: rgb(245,245,245);\n}\n\n.dialog-body > .left {\n white-space: nowrap;\n overflow: auto;\n width: 75%;\n height: 100%;\n}\n\n.dialog-body > .right {\n flex-grow: 2;\n overflow: auto;\n width: 100%;\n height: 100%;\n}\n\n.r20es-settings-dialog .noconfig {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.r20es-settings-dialog .noconfig p {\n font-size: 1.2em;\n font-weight: bold;\n}\n\n.r20es-autocomplete {\n position: relative;\n}\n\n.r20es-autocomplete .r20es-autocomplete-entries {\n positon: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 20px;\n background-color: red;\n}\n',"r20es-settings-css");document.head.appendChild(e);var t=i.DOM.createElement(c.SettingsSidebarButton,{text:"VTTES Settings",id:s.default,onClick:this.onButtonClick});d.insertButtonIntoSettings(t)},n.prototype.dispose=function(){t.prototype.dispose.call(this),a.findByIdAndRemove(s.default),a.findByIdAndRemove("r20es-settings-css"),this.dialog&&this.dialog.dispose()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new u).install()}}).call(this,"src/modules/Settings")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(6),l=n(153),s=n(5),c=n(1),d=n(29),u=n(4),p=n(154),h=n(155),m=n(162),f=n(5),g=n(4),M=n(12),y=".vttes_settings_json",b=function(e){function t(t){var n=e.call(this,"r20es-settings-dialog")||this;return n.activeModule=null,n.about=new l.default,n.changelog=new m.default,n.show=n.internalShow,n.on_import_settings_click=function(){var e=c.DOM.createElement("input",{type:"file",accept:y}),t=function(){return r(n,void 0,void 0,function(){var n,o,r,a,l,s,c;return i(this,function(i){switch(i.label){case 0:e.removeEventListener("change",t),n=e.files[0],(o=new f.LoadingDialog("Overwriting")).show(),i.label=1;case 1:return i.trys.push([1,3,,4]),[4,g.readFile(n)];case 2:if(r=i.sent(),1!=(a=JSON.parse(r)).version)throw"Expected 'version' to be 1, got: "+a.version;if("vttes_settings"!=a.type)throw"Expected 'type' to be 'vttes_settings', got: "+a.type;if("object"!=typeof a.settings)throw"Expected 'settings' to be a table, got: "+typeof a.settings;for(l in window.r20es.hooks)s=window.r20es.hooks[l],a.settings[l]&&(s.config=a.settings[l]);return window.r20es.save_configs(),this.rerender(),[3,4];case 3:return c=i.sent(),alert(c),console.trace(),console.error(c),[3,4];case 4:return o.dispose(),[2]}})})};e.addEventListener("change",t),e.click()},n.on_export_settings_click=function(){var e={version:1,type:"vttes_settings",settings:{}};for(var t in window.r20es.hooks){var n=window.r20es.hooks[t];e.settings[t]=n.config}var o=JSON.stringify(e,null,2),r=new Blob([o],{type:"data:application/javascript;charset=utf-8"}),i=(new Date).toLocaleString()+y;M.saveAs(r,i)},n.onSelect=function(e){n.activeModule=d.isEqual(n.activeModule,e)?null:e;var t=n._leftDiv.scrollTop;n.rerender(),n._leftDiv.scrollTop=t},n.openAbout=function(){return n.about.show()},n.openChangelog=function(){return n.changelog.show()},n.render=function(){var e={};for(var t in n.hooks){var o=n.hooks[t];o.force&&!o.forceShowConfig||(o.category in e||(e[o.category]=[]),e[o.category].push(t))}var r=c.DOM.createElement("div",{className:"left"},u.mapObj(e,function(e,t){return c.DOM.createElement("div",null,c.DOM.createElement("h3",null,t),c.DOM.createElement("div",{className:"r20es-indent"},e.map(function(e){return c.DOM.createElement(p.default,{selected:n.activeModule&&n.activeModule.id===e,onSelect:n.onSelect,hook:n.hooks[e]})})))}));return n._leftDiv=r,c.DOM.createElement(s.Dialog,{className:"r20es-settings-flex-wrapper"},c.DOM.createElement(s.DialogHeader,null,c.DOM.createElement("h2",null,"VTT Enhancement Suite Module Settings")),c.DOM.createElement(s.DialogBody,null,r,n.activeModule?c.DOM.createElement("div",{className:"r20es-indent right"},c.DOM.createElement(h.default,{hook:n.activeModule})):c.DOM.createElement("div",{className:"r20es-indent right noconfig"},c.DOM.createElement("p",null,"Select a module from the left to see its description and options"))),c.DOM.createElement(s.DialogFooter,null,c.DOM.createElement(s.DialogFooterContent,null,c.DOM.createElement("input",{className:"btn",type:"button",onClick:n.openAbout,value:"About"}),c.DOM.createElement("input",{className:"btn",style:{marginLeft:"8px"},type:"button",onClick:n.openChangelog,value:"Changelog"}),c.DOM.createElement("input",{type:"button",style:{marginLeft:"8px"},className:"btn",value:"Import Settings",onClick:n.on_import_settings_click}),c.DOM.createElement("input",{type:"button",className:"btn",style:{marginLeft:"8px"},value:"Export Settings",onClick:n.on_export_settings_click}),c.DOM.createElement("input",{className:"btn",style:{float:"right"},type:"button",onClick:n.close,value:"Apply & Close"}))))},n.hooks=t,n}return o(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this.about&&this.about.dispose(),this.changelog&&this.changelog.dispose()},t}(a.DialogBase);t.default=b},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(5),a=n(1),l=n(10),s=function(e){function t(){var t=e.call(this,null,{maxHeight:"100%"},!0)||this;return t.show=t.internalShow,t.render=function(){return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,{style:{textAlign:"center"}},a.DOM.createElement("a",{href:"javascript:void(0) // workaround for underpopup dialog from roll20 regarding leaving the site",onClick:function(){return t.openUrl(l.Config.website)}},a.DOM.createElement("h1",{style:"color: blue"},"VTT Enhancement Suite"),a.DOM.createElement("small",null,"aka R20ES")),a.DOM.createElement("h2",null,"Version ","1.28.19"),a.DOM.createElement("h3",null,"Built for ","userscript",", Roll20")),a.DOM.createElement(i.DialogBody,null,a.DOM.createElement("div",{style:{display:"flex"}},a.DOM.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center"}},a.DOM.createElement("div",null,a.DOM.createElement("b",null,"Built by"),a.DOM.createElement("p",null,"Justas Dabrila, Giddy, gludington, Blesmol, OLStefan")),a.DOM.createElement("div",null,a.DOM.createElement("b",null,"And other work by"),a.DOM.createElement("p",{style:{maxWidth:"180px"}},'Jay "Vanguard" Fothergill, Ryan Wenneker')),a.DOM.createElement("div",null,a.DOM.createElement("b",null,"Tested by"),a.DOM.createElement("p",{style:{maxWidth:"180px"}},"Axecleft, TEU_Snoopy, keablah, Nikolay, Colorblind, DoomRice, Daj, Angor de Redjak, Ryan Wenneker, Tielc, Giddy, Grigdusher, Knilk, Dominic, Neverr, SmoothAsFelt, dunedain, Vlad.D, Mike W, Hagenkopter, Ackerfe, shaosam"))),a.DOM.createElement("div",{style:{display:"flex",flexDirection:"column",direction:"rtl",justifyContent:"center"}},a.DOM.createElement("div",null,a.DOM.createElement("b",null,"With contributions from"),a.DOM.createElement("div",{style:{maxWidth:"180px"}},"Mike, Aaron, Blurn Glanstone, Tobyn, Fredrik, Ryan Wenneker, BuckeyeFan79, Jakob, Daniel (Daj), Morris Kennedy, KarateHawk, Jason Backus, Tielc, Spencer Oldemeyer, Hawks, S.Ziterman, Worst DM Ever, Curtis T, TEU_Snoopy, Jeremy, Alex, Teddy, John Finley, Shemetz, Jon, Mike Schaeffer, Anthony Diaz, Patrick Lane, Raphael Riedl, GrapeDrank, Michael Graeper, Michael Wilson, Bruce Frankford, Shona Dixon, Gabriel Diedrich, Kyle B. Bachman, The Griffin Moon Collaborative")))),a.DOM.createElement("hr",null),a.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"auto auto"}},a.DOM.createElement("span",null,"Branch"),a.DOM.createElement("span",null,"master"),a.DOM.createElement("span",null,"Commit"),a.DOM.createElement("span",null,"b0006f1c01e9b6dbf62d366b8ff7c448899f921f")),a.DOM.createElement("div",{style:{marginTop:"16px",marginBottom:"16px",textAlign:"center"}},a.DOM.createElement("span",{style:{marginRight:"8px"}},a.DOM.createElement("a",{href:"javascript:void(0) // workaround for underpopup dialog from roll20 regarding leaving the site",onClick:function(){return t.openUrl(l.Config.discordInvite)}},a.DOM.createElement("img",{height:"32",width:"32",className:"discord-logo",src:"https://unpkg.com/simple-icons@5.13.0/icons/discord.svg"}))),a.DOM.createElement("span",{style:{marginRight:"8px"}},a.DOM.createElement("a",{href:"javascript:void(0) // workaround for underpopup dialog from roll20 regarding leaving the site",onClick:function(){return t.openUrl("https://github.com/justas-d/roll20-enhancement-suite/")}},a.DOM.createElement("img",{height:"32",width:"32",className:"github-logo",src:"https://unpkg.com/simple-icons@latest/icons/github.svg"}))),a.DOM.createElement("span",null,a.DOM.createElement("a",{href:"javascript:void(0) // workaround for underpopup dialog from roll20 regarding leaving the site",onClick:function(){return t.openUrl(l.Config.contributeUrl)}},a.DOM.createElement("img",{height:"32",width:"32",src:"https://www.buymeacoffee.com/assets/img/BMC-btn-logo.svg",alt:"Buy me a coffee"}))))),a.DOM.createElement("section",{style:{margin:"20px"}},a.DOM.createElement("input",{className:"btn",style:{width:"100%",height:"auto",boxSizing:"border-box"},type:"button",onClick:t.close,value:"OK"})))},t}return o(t,e),t.prototype.openUrl=function(e){window.open(e,"_blank").location},t}(r.DialogBase);t.default=s},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(3),a=n(2),l=function(e){function t(n){var o=e.call(this)||this;return o.onSelect=null,o.onClick=function(e){e.stopPropagation(),"input"!==e.target.tagName.toLowerCase()&&o.onSelect(o.hook)},o.onCheckboxChange=function(e){e.stopPropagation(),a.R20Module.getModule(o.hook.filename).toggleEnabledState()},o.internalRender=function(){var e=!i.R20.isGM()&&o.hook.gmOnly,n=r.DOM.createElement("div",{className:"r20es-clickable-text",onClick:o.onClick,title:e?"This module is GM only.":""},!o.hook.force&&r.DOM.createElement("input",{onChange:o.onCheckboxChange,checked:o.hook.config.enabled,type:"checkbox"}),r.DOM.createElement("span",{className:"text"},o.hook.name));return e&&n.classList.add(t.DISABLED_STYLE),o.selected&&n.classList.add(t.SELECTED_STYLE),n},o.hook=n.hook,o.onSelect=n.onSelect,o.selected=n.selected,o}return o(t,e),t.SELECTED_STYLE="selected",t.DISABLED_STYLE="disabled",t}(r.DOM.ElementBase);t.default=l},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(4),a=n(3),l=n(10),s=n(156),c=n(157),d=n(158),u=n(159),p=n(35),h=n(160),m=n(161),f=n(36),g=a.R20.hasBetteR20,M=function(e){function t(t){var n=e.call(this)||this;if(n.internalRender=function(){var e={string:s.default,dropdown:c.default,checkbox:d.default,slider:u.default,number:p.default,color:h.default,mouse_button_index:m.default},t=[];if(n.hook.configView){var o=0;for(var l in n.hook.configView){var M=n.hook.configView[l];if(g()||!M.onlyWhenHasB20)if(M.type in e){var y=e[M.type],b=o%2==0?"rgb(249,249,249)":void 0;t.push(r.DOM.createElement("div",{style:{borderRight:"1px lightgray solid",paddingRight:"8px",display:"flex",justifyContent:"flex-end",alignItems:"center",paddingBottom:"8px",background:b}},r.DOM.createElement("span",{title:l,className:"text"},M.display))),t.push(r.DOM.createElement("div",{style:{paddingLeft:"8px",background:b}},r.DOM.createElement(y,{configName:l,hook:n.hook}))),o++}else alert("Unknown config type: "+M.type)}}var N=[];if(n.hook.urls){var T=function(e){var t=n.hook.urls[e];N.push(r.DOM.createElement("a",{href:"javascript:void(0)",onClick:function(){return window.open(t,"_blank")}},e))};for(var v in n.hook.urls)T(v)}return r.DOM.createElement("div",{className:"more-settings"},!i.strIsNullOrEmpty(n.hook.description)&&r.DOM.createElement("div",null,r.DOM.createElement("h3",{title:n.hook.id+" "+n.hook.filename},n.hook.name),r.DOM.createElement("hr",{style:{marginTop:"4px"}}),r.DOM.createElement("div",{className:"r20es-indent"},r.DOM.createElement("p",null,n.hook.description),r.DOM.createElement("p",null,N),n.hook.gmOnly&&r.DOM.createElement("p",null,"This module is only usable by GMs (which you ",a.R20.isGM()?"are":"aren't",")"))),t.length>0&&r.DOM.createElement("div",null,r.DOM.createElement("h3",null,"Options"),r.DOM.createElement("hr",{style:{marginTop:"4px"}}),r.DOM.createElement("ul",{className:"r20es-indent",style:{display:"grid",gridTemplateColumns:"1fr 1fr"}},t)),n.media&&r.DOM.createElement("div",null,r.DOM.createElement("h3",null,"Media"),r.DOM.createElement("hr",{style:{marginTop:"4px"}}),n.media.map(function(e){return r.DOM.createElement(f.default,{url:e.url,description:e.description})})))},n.hook=t.hook,n.hook.media)for(var o in n.media=[],n.hook.media)console.log(o),n.media.push({url:l.Config.website+o,description:n.hook.media[o]});return n}return o(t,e),t}(r.DOM.ElementBase);t.default=M},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation(),n.setValue(e.target.value)},n.internalRender=function(){return i.DOM.createElement("input",{style:{width:"90%"},className:"compact",type:"text",onChange:n.onChange,value:n.getValue()||""})},n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation(),n.setValue(e.target.value)},n.internalRender=function(){var e=[];for(var t in n.configView.dropdownValues){var o=n.configView.dropdownValues[t];e.push(i.DOM.createElement("option",{value:t},o))}return i.DOM.createElement("select",{style:{width:"90%"},className:"compact",onChange:n.onChange,value:n.getValue()},e)},n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation(),n.setValue(e.target.checked)},n.internalRender=function(){return i.DOM.createElement("input",{onChange:n.onChange,checked:n.getValue(),type:"checkbox",className:"r20es-checkbox"})},n.onChange=n.onChange.bind(n),n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation();var t=parseFloat(e.target.value);n.setValue(t),$(e.target.parentNode).find("input")[0].title=t.toString()},n.internalRender=function(){var e=n.getConfigView().sliderMin,t=n.getConfigView().sliderMax,o=n.getValue();return i.DOM.createElement("section",{className:"compact"},i.DOM.createElement("span",null,e),i.DOM.createElement("input",{onChange:n.onChange,style:{display:"inline-block",height:"auto",width:"80%",margin:"0 8px 0 8px",border:"none"},type:"range",min:e,max:t,step:"any",value:o,title:o}),i.DOM.createElement("span",null,t))},n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation();var t=e.target.value,o=[parseInt(t.charAt(1)+t.charAt(2),16),parseInt(t.charAt(3)+t.charAt(4),16),parseInt(t.charAt(5)+t.charAt(6),16)];n.setValue(o)},n.internalRender=function(){var e=n.getValue();console.log(e,n.configName,n.hook);var t=e&&e.length>=3?"#"+e[0].toString(16)+e[1].toString(16)+e[2].toString(16):"#000000";return i.DOM.createElement("input",{style:{width:"90%"},onChange:n.onChange,type:"color",className:"compact",value:t})},n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(7),i=n(1),a=function(e){function t(t){var n=e.call(this,t)||this;return n.onChange=function(e){e.stopPropagation(),n.setValue(e.target.value)},n.detect=function(e){e.stopPropagation();var t=e.button;$(e.target.parentNode).find("input")[0].value=t,n.setValue(t)},n.internalRender=function(){return i.DOM.createElement("span",null,i.DOM.createElement("input",{onChange:n.onChange,className:"compact",type:"number",value:n.getValue()}),i.DOM.createElement("span",{onMouseup:n.detect,style:{marginLeft:"8px",padding:"0px 4px 0px 4px",border:"solid 1px",background:"#EEE"}},"Detect (click me)"))},n}return o(t,e),t}(r.ConfigEditBase);t.default=a},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(6),a=n(5),l=n(37),s=function(e){function t(){return e.call(this,null,{maxWidth:"40%",maxHeight:"85%"})||this}return o(t,e),t.prototype.show=function(){var e=this;setTimeout(function(){e.recenter(),e.getRoot().scrollTop=0},100),this.internalShow()},t.prototype.render=function(){return r.DOM.createElement(a.Dialog,null,r.DOM.createElement(a.DialogHeader,{style:{textAlign:"center"}},r.DOM.createElement("h1",null,"VTTES - Changelog")),r.DOM.createElement(a.DialogBody,null,r.DOM.createElement(l.default,{listAllVersions:!0})),r.DOM.createElement("section",{style:{position:"sticky",padding:"20px",bottom:0,top:0,left:0,backgroundColor:"rgb(253, 253, 253)"}},r.DOM.createElement("input",{className:"btn",style:{width:"100%",height:"auto",boxSizing:"border-box"},type:"button",onClick:this.close,value:"OK"})))},t}(i.DialogBase);t.default=s},function(e,t){e.exports=function(e,t){for(var n=e.split("."),o=t.split("."),r=0;r<3;r++){var i=Number(n[r]),a=Number(o[r]);if(i>a)return 1;if(a>i)return-1;if(!isNaN(i)&&isNaN(a))return 1;if(isNaN(i)&&!isNaN(a))return-1}return 0}},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(2),l=n(1),s=n(13),c=n(3),d=n(11),u=function(t){function n(){var n=t.call(this,e)||this;return n.observerCallback=n.observerCallback.bind(n),n.try_injecting_single_widget=n.try_injecting_single_widget.bind(n),n.try_injecting_widget=n.try_injecting_widget.bind(n),n.navOnClick=n.navOnClick.bind(n),n.onClickNormalNavs=n.onClickNormalNavs.bind(n),n.rescan=n.rescan.bind(n),n.infectedNavs=[],n}return o(n,t),n.prototype.getWidgetTabRoots=function(e){return $(e.parentNode.parentNode.parentNode).find(".r20es-character-sheet-tab")},n.prototype.unselectSyntheticNavs=function(e){var t=e.target.parentNode.parentNode;$(t).find("a[data-r20es-nav]").each(function(e,t){t.parentNode.classList.remove("active")})},n.prototype.onClickNormalNavs=function(e){this.unselectSyntheticNavs(e),this.getWidgetTabRoots(e.target).each(function(e,t){t.style.display="none"})},n.prototype.navOnClick=function(e){var t=e.target.getAttribute("data-tab"),n=s.SheetTab._getInternalData().tabsById[t],o=e.target.getAttribute("data-characterid"),r=n.getInstanceData(o);n&&n.onShow&&n.onShow(r),this.unselectSyntheticNavs(e),e.target.parentNode.classList.add("active"),this.getWidgetTabRoots(e.target).each(function(e,n){n.style.display=n.classList.contains(t)?"block":"none"})},n.prototype.try_injecting_widget=function(e){for(var t=0,n=s.SheetTab._getInternalData().tabs;t<n.length;t++){var o=n[t];this.try_injecting_single_widget(e,o)}},n.prototype.try_injecting_single_widget=function(e,t){return r(this,void 0,void 0,function(){var n,o,r,a,s,u,p,h,m,f,g,M,y,b=this;return i(this,function(i){switch(i.label){case 0:return e?"IFRAME"!=e.nodeName?[2,!1]:(n=e.parentNode)&&n.classList.contains("characterdialog")?(o=n.getAttribute("data-characterid"),t.predicate&&(r=c.R20.getCharacter(o),!t.predicate(r))?[2]:[4,new Promise(function(t){if("complete"!=e.contentDocument.readyState){var n=function(){e.removeEventListener("load",n),t()};e.addEventListener("load",n)}else t()})]):[2,!1]:[2,!1];case 1:return i.sent(),a=null,s=null,u=new Promise(function(t){var n=function(){if(e.contentDocument&&(s=e.contentDocument.body)){var o=s.querySelector("#dialog-window");if(o&&(a=o.querySelector(".nav-tabs")))return void t()}setTimeout(n,1e3)};setTimeout(n,1e3)}),p=d.promiseWait(1e4),[4,Promise.race([u,p])];case 2:if(i.sent(),a){if(h="[data-tab="+t.id+"]",a.querySelector(h))return[2,!1];(m=l.DOM.createElement("li",null,l.DOM.createElement("a",{onClick:this.navOnClick,"data-tab":t.id,href:"javascript:void(0);","data-characterid":o},t.name))).firstElementChild.setAttribute("data-r20es-nav",!0),t._addElem(m),a.appendChild(m),$(a).find("a[data-tab]").each(function(e,t){t.hasAttribute("data-r20es-nav")||t.hasAttribute("data-r20es-character-sheet-nav-event")||(t.setAttribute("data-r20es-character-sheet-nav-event",!0),t.addEventListener("click",b.onClickNormalNavs),b.infectedNavs.push(t))}),f=t.getInstanceData(o),g=t.renderFx(f),M=s.querySelector(".tab-content"),f.contentRoot=M,f.root=g,y=l.DOM.createElement("div",{className:["r20es-character-sheet-tab",t.id,"tab-pane"],style:{display:"none"}},g),t._addElem(y),M.appendChild(y)}else console.error("SheetTab: Could not find navTabsRoot :(");return[2,!0]}})})},n.prototype.observerCallback=function(e){for(var t=0,n=e;t<n.length;t++){for(var o=n[t],r=0,i=o.addedNodes;r<i.length;r++){var a=i[r];if(this.try_injecting_widget(a))return}if(this.try_injecting_widget(o.target))return}},n.prototype.rescan=function(e){var t=this;document.querySelectorAll("iframe").forEach(function(n){t.try_injecting_single_widget(n,e)})},n.prototype.setup=function(){var e=this;this.observer=new MutationObserver(this.observerCallback),this.observer.observe(document.body,{childList:!0,subtree:!0}),document.querySelectorAll("iframe").forEach(function(t){e.try_injecting_widget(t)}),s.SheetTab._getInternalData().rescanFunc=this.rescan},n.prototype.dispose=function(){s.SheetTab._getInternalData().rescanFunc=null;for(var e=s.SheetTab._getInternalData(),t=0,n=e.tabs;t<n.length;t++){n[t].dispose()}e.tabs=[];for(var o=0,r=this.infectedNavs;o<r.length;o++){var i=r[o];i.removeEventListener("click",this.onClickNormalNavs),i.removeAttribute("data-r20es-character-sheet-nav-event")}this.infectedNavs.length=0,this.observer&&this.observer.disconnect()},n}(a.R20Module.OnAppLoadBase);t.default=function(){(new u).install()}}).call(this,"src/modules/SheetTabApi")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(2),l=n(3),s=n(12),c=n(1),d=n(41),u=n(4),p=n(30),h=n(18),m=n(166),f=function(e){if(e){var t=l.R20.createRollableTable();for(var n in e.items){var o=e.items[n];delete o.id,t.tableitems.create(o)}delete e.id,delete e.items,t.save(e)}},g=function(t){function n(){var o=t.call(this,e)||this;return o.onExportButtonClicked=function(e){var t=o.getTableId(e.target.parentNode);if(t){var n=l.R20.getRollableTable(t);if(n){var r=JSON.stringify(n.attributes,null,4),i=new Blob([r],{type:"data:application/json;charset=utf-8"});s.saveAs(i,n.get("name")+".json")}else alert("Failed to get table. Table id: "+t)}else alert("Failed to get table id.")},o.onImportClicked=function(e){e.stopPropagation();var t=c.DOM.createElement("input",{type:"file",multiple:!0}),a=null;e.target.id===n.tableExportImportButtonId?a=o.importTablesTableExport:(t.accept=".json",a=o.importTableJson),p.import_multiple_files(t,function(e){return r(o,void 0,void 0,function(){var t;return i(this,function(n){switch(n.label){case 0:return[4,u.readFile(e)];case 1:return t=n.sent(),a(t),[2]}})})})},o.onImportFromPasteClicked=function(e){e.stopPropagation(),o.pasteDialog.show()},o.onPasteDialogClose=function(e){if(o.pasteDialog.isSuccessful())try{o.importTablesTableExport(o.pasteDialog.getData())}catch(e){alert(e),console.error(e)}},o}return o(n,t),n.prototype.getTableId=function(e){var t=$(e.parentNode).find("div["+h.default.TableIdAttribute+"]");if(t.length<=0)return null;var n=t[0];return n.hasAttribute(h.default.TableIdAttribute)?n.getAttribute(h.default.TableIdAttribute):null},n.prototype.tryInsertTableWidget=function(e){if(!e.className)return!1;if("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix ui-draggable-handle"!==e.className)return!1;if(e.getElementsByClassName(n.tableWidgetClass).length>0)return!1;if(!this.getTableId(e))return!1;var t=c.DOM.createElement("button",{style:{marginTop:"8px"},onClick:this.onExportButtonClicked,className:[n.tableWidgetClass,"btn"]},"Export");return e.appendChild(t),!0},n.prototype.importTableJson=function(e){var t=u.safeParseJson(e);t&&f(t)},n.prototype.importTablesTableExport=function(e){if(d.TableExportLang.naiveVerify(e)){var t=d.TableExportLang.parse(e);if(t&&t&&!(t.length<=0))for(var n in t)f(t[n])}},n.prototype.setButtonDisabled=function(e,t){var n=$(e).find(".btn");n.each(function(e){n[e].disabled=t})},n.prototype.setup=function(){var e=this;if(l.R20.isGM()){this.pasteDialog=new m.default,this.pasteDialog.getRoot().addEventListener("close",this.onPasteDialogClose);for(var t=0,o=document.querySelectorAll(".ui-dialog-titlebar, .ui-widget-header, .ui-corner-all, .ui-helper-clearfix");t<o.length;t++){var r=o[t];this.tryInsertTableWidget(r)}var i=document.getElementById("deckstables").getElementsByClassName("content")[0],a=c.DOM.createElement("div",{id:n.journalDivId,style:{marginBottom:"20px"}},c.DOM.createElement(c.SidebarSeparator,null),c.DOM.createElement(c.SidebarCategoryTitle,null,"Import Rollable Tables"),c.DOM.createElement("div",{style:{display:"grid",gridTemplateRows:"1fr 1fr 1fr",gridRowGap:"8px"}},c.DOM.createElement("button",{id:n.normalImportButtonId,onClick:this.onImportClicked,className:"btn"},"Import From JSON"),c.DOM.createElement("button",{id:n.tableExportImportButtonId,onClick:this.onImportClicked,className:"btn"},"Import From TableExport"),c.DOM.createElement("button",{id:n.tableExportImportFromTextButtonId,onClick:this.onImportFromPasteClicked,className:"btn"},"Paste TableExport Text")));i.appendChild(a),this.observer=new MutationObserver(function(t){for(var n=0,o=t;n<o.length;n++){var r=o[n];if(e.tryInsertTableWidget(r.target))break}}),this.observer.observe(document.body,{childList:!0,subtree:!0})}},n.prototype.dispose=function(){t.prototype.dispose.call(this),this.observer&&this.observer.disconnect(),this.pasteDialog&&this.pasteDialog.dispose();for(var e=document.getElementsByClassName(n.tableWidgetClass),o=e.length;o-- >0;)e[0].remove();u.findByIdAndRemove(n.journalDivId)},n.journalDivId="r20es-tableio-journal-widget",n.tableWidgetClass="r20es-export-table-button",n.normalImportButtonId="r20es-norma;-import-button",n.tableExportImportButtonId="r20es-table-export-import-button",n.tableExportImportFromTextButtonId="r20es-table-export-import-from-text-buttom",n}(a.R20Module.OnAppLoadBase);t.default=function(){(new g).install()}}).call(this,"src/modules/TableIO")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(5),a=n(1),l=n(41),s=function(e){function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.onImportClick=function(e){e.stopPropagation();var o=document.getElementById(t.textAreaId);console.log(o),l.TableExportLang.naiveVerify(o.value)&&(n.setData(o.value),n.close(!0))},n.show=n.internalShow,n}return o(t,e),t.prototype.render=function(){return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,null,a.DOM.createElement("h2",null,"Paste TableExport")),a.DOM.createElement(i.DialogBody,null,a.DOM.createElement("div",null,a.DOM.createElement("textarea",{style:{width:"512px",height:"256px"},id:t.textAreaId,autocomplete:!1,autofocus:!0})),a.DOM.createElement("div",null,a.DOM.createElement("a",{href:"javascript:void(0)",onClick:function(){return window.open("https://docs.google.com/document/d/1Y5fMpkcm615KH_9ih-HCagswAdgS1CkBiktKeJABiBY","_blank")}},"Document filled with tables"))),a.DOM.createElement(i.DialogFooter,null,a.DOM.createElement(i.DialogFooterContent,null,a.DOM.createElement("button",{className:"btn",onClick:this.close},"Close"),a.DOM.createElement("button",{className:"btn",style:{float:"right"},onClick:this.onImportClick},"Import"))))},t.textAreaId="r20es-paste-table-export-dialog-text-area",t}(r.DialogBase);t.default=s},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=function(t){function n(){var n=t.call(this,e)||this;return n.statusDraw=function(e,t,o,r){try{var a=n.getHook().config;if(t._positionAndScaleStatusIcons(r,o.length),e.save(),1!==a.active_status_icon_opacity||1!==a.idle_status_icon_opacity){var l=i.R20.getSelectedTokens().find(function(e){return e===t});e.globalAlpha=l?a.active_status_icon_opacity:a.idle_status_icon_opacity}if(a.position_status_icons_outside_the_token)switch(r.side){case"bottom":r.position&&(r.position[1]+=2.5*r.icon_size[1]);break;case"left":r.position&&(r.position[0]-=r.icon_size[0]);break;case"right":r.position&&(r.position[0]+=r.icon_size[0]);break;case"top":r.position&&(r.position[1]=-(.5*t.height+r.icon_size[1]));break;default:console.error("[TokenBarPositionAdjust] unknown draw_command.side",r)}}catch(e){console.error(e)}return!0},n}return o(n,t),n.prototype.onSettingChange=function(e,t,n){i.R20.renderAll()},n.prototype.setup=function(){window.r20es.statusDraw=this.statusDraw,i.R20.renderAll()},n.prototype.dispose=function(){window.r20es.statusDraw=null,i.R20.renderAll()},n}(r.R20Module.SimpleBase);t.default=function(){(new a).install()}}).call(this,"src/modules/TokenBarPositionAdjust")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(1),l=n(4),s=n(8),c=n(4),d=function(t){function n(){var n=t.call(this,e)||this;return n.observerCallback=function(e){for(var t=0,o=e;t<o.length;t++)for(var r=0,i=o[t].addedNodes;r<i.length;r++){var a=i[r];if(n.tryInsertMenuWidgets(a))return}},n.original_actions_menu_template=null,n}return o(n,t),n.prototype.tryInsertMenuWidgets=function(e){if(!e.className)return!1;if("actions_menu d20contextmenu"!==e.className)return!1;var t=s.TokenContextMenu.getInternalData().widgets,n=i.R20.getSelectedTokens(),o=function(o){var r=t[o];if(r.options&&r.options.mustHaveSelection&&n.length<=0)return"continue";if(r.options&&r.options.cannotHaveSelection&&n.length>0)return"continue";var l=a.DOM.createElement("li",{style:{maxWidth:"99px"},id:r.id,onClick:function(e){e.stopPropagation(),i.R20.hideTokenRadialMenu(),i.R20.hideTokenContextMenu(),r.callback()},class:"head hasSub"},r.text);e.firstElementChild.appendChild(l)};for(var r in t)o(r);return!0},n.prototype.try_get_actions_menu_template=function(){var e=document.body.querySelector("#tmpl_actions_menu");return null==e&&console.error("TokenContextMenu: failed to find tmpl_actions_menu"),e},n.prototype.setup=function(){this._observer=new MutationObserver(this.observerCallback),this._observer.observe(document.body,{childList:!0,subtree:!0});var e=this.try_get_actions_menu_template();if(e){var t=e.innerHTML;this.original_actions_menu_template=t,t=c.replaceAll(t,'this.get("represents")','(this && this.get && this.get("represents"))'),e.innerHTML=t}},n.prototype.dispose=function(){var e=s.TokenContextMenu.getInternalData().widgets;if(null!=this.original_actions_menu_template){var t=this.try_get_actions_menu_template();null!=t&&(t.innerHTML=this.original_actions_menu_template,this.original_actions_menu_template=null)}for(var n in e){var o=e[n];l.findByIdAndRemove(o.id)}this._observer&&this._observer.disconnect()},n}(r.R20Module.SimpleBase);t.default=function(){(new d).install()}}).call(this,"src/modules/TokenContextMenuApi")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(8),a=n(21),l=n(3),s=n(9),c=function(t){function n(){var n=t.call(this,e)||this;return n.ui_on_add_token_button_click=function(){var e=l.R20.getCanvasMousePos(),t=l.R20.getCurrentPage().id,n=l.R20.getCurrentLayer(),o=window.prompt("Enter a URL","www.example.com/image.png");if(o){var r=new Image;r.onload=function(){var i={left:e[0],top:e[1],width:r.width,height:r.height,z_index:0,imgsrc:o,rotation:0,type:"image",page_id:t,layer:n,id:l.R20.generateUUID()};l.R20.getCurrentPage().thegraphics.create(i)},r.onerror=function(){for(var t,r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var s=o.toLowerCase();if(s.includes(".webm")||s.includes(".mp4")){var c=((t={left:e[0],top:e[1],width:70,height:70,z_index:0,imgsrc:o,layer:n})[a.TOKEN_FROM_ANIMATED_TOKEN_KEY]=!0,t);l.R20.getCurrentPage().addImage(c)}},r.src=o}},n.ui_on_get_token_img_url_button_click=function(){for(var e=l.R20.getSelectedTokens(),t="",n=navigator&&navigator.clipboard&&navigator.clipboard.writeText,o=0;o<e.length;++o){var r=e[o],i=l.R20.try_get_canvas_object_model(r);i&&i.attributes.imgsrc&&(t+=i.attributes.imgsrc,o!==e.length-1&&(t+=n?"\n":" "))}var a=function(){prompt("URLs:",t)};n?(navigator.clipboard.writeText(t).catch(function(e){a()}),alert("URLs copied to clipboard!")):a()},n}return o(n,t),n.prototype.setup=function(){i.TokenContextMenu.addButton(a.TOKEN_FROM_IMG_BUTTON_NAME,this.ui_on_add_token_button_click,s.TOKEN_CONTEXT_MENU_ORDER_CREATE_TOKEN_BY_URL,{cannotHaveSelection:!0}),i.TokenContextMenu.addButton(a.TOKEN_GET_URL,this.ui_on_get_token_img_url_button_click,s.TOKEN_CONTEXT_MENU_ORDER_GET_TOKEN_IMAGE_URL,{mustHaveSelection:!0})},n.prototype.dispose=function(){i.TokenContextMenu.removeButton(a.TOKEN_FROM_IMG_BUTTON_NAME,this.ui_on_add_token_button_click),i.TokenContextMenu.removeButton(a.TOKEN_GET_URL,this.ui_on_get_token_img_url_button_click),t.prototype.dispose.call(this)},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new c).install()}}).call(this,"src/modules/TokenFromImg")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(16),l=Math.PI/180,s=function(t){function n(){var n=t.call(this,e)||this;return n.drawOverlay=function(e,t){var o;try{var r=n.getHook().config,s=((o={})[i.R20.CanvasLayer.GMTokens]=r.drawOnGmLayer,o[i.R20.CanvasLayer.PlayerTokens]=r.drawOnTokenLayer,o[i.R20.CanvasLayer.Map]=r.drawOnMapLayer,o[i.R20.CanvasLayer.Lighting]=r.drawOnLightsLayer,o[i.R20.CanvasLayer.B20Weather]=r.drawOnWeatherLayer,o[i.R20.CanvasLayer.B20Foreground]=r.drawOnForegroundLayer,o[i.R20.CanvasLayer.B20Background]=r.drawOnBackgroundLayer,o),c=i.R20.try_get_canvas_object_model(t);if(!c)return;var d=c.get("layer");if(!s[d])return;var u=a.layerInfo[d];e.save();var p=e.globalAlpha,h=e.lineWidth,m=e.fillStyle,f=e.strokeStyle,g=e.font;if(e.globalAlpha=r.globalAlpha,e.lineWidth=r.textStrokeWidth,!r.rotateAlongWithToken){var M=t.flipY^t.flipX?1:-1;e.rotate(M*t.angle*l)}t.flipX&&e.scale(-1,1),t.flipY&&e.scale(1,-1);var y=r.textFontSize;e.font="bold "+y+"px Arial";var b=e.measureText(u.txt).width,N=.08*b,T=.18*b,v=Math.floor(t.get("width")/2)-b,k=Math.floor(t.get("height")/2);window.r20es.is_drawing_bars_at_the_bottom&&t._bar_data&&(k-=t._bar_data.height*t._bar_data.to_render.length+3),e.fillStyle="rgba("+u.bgColors[0]+", "+u.bgColors[1]+", "+u.bgColors[2]+", "+r.backgroundOpacity+")",e.fillRect(v-.5*T,k-y,b+T,y),e.strokeStyle="rgba("+r.textStrokeColor[0]+", "+r.textStrokeColor[1]+", "+r.textStrokeColor[2]+", "+r.textStrokeOpacity+")",e.fillStyle="rgba("+r.textFillColor[0]+", "+r.textFillColor[1]+","+r.textFillColor[2]+", "+r.textFillOpacity+")",e.strokeText(u.txt,v,k-N),e.fillText(u.txt,v,k-N),e.restore(),e.globalAlpha=p,e.lineWidth=h,e.fillStyle=m,e.strokeStyle=f,e.font=g}catch(e){console.error(e)}},n}return o(n,t),n.prototype.onSettingChange=function(e,t,n){i.R20.renderAll()},n.prototype.setup=function(){i.R20.isGM()&&(window.r20es.tokenDrawBg=this.drawOverlay,i.R20.renderAll())},n.prototype.dispose=function(){window.r20es.tokenDrawBg=null,i.R20.renderAll()},n}(r.R20Module.SimpleBase);t.default=function(){(new s).install()}}).call(this,"src/modules/TokenLayerDrawing")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(3),a=n(8),l=n(172),s=n(25),c=n(9),d=function(t){function n(){var n=t.call(this,e)||this;return n.tryPlaceTopLeft=function(e){n.getHook().config.placeTopLeft&&i.R20.setCanvasObjectLocation(e,e.width/2,e.height/2)},n.clickResizeFit=function(e){var t=i.R20.getSelectedTokens(),o=i.R20.getCurrentPage();i.R20.unselectTokens();for(var r=0,a=t;r<a.length;r++){var l=a[r],c=s.scaleToFit(l._element.width,l._element.height,70*o.attributes.width,70*o.attributes.height);i.R20.setCanvasObjectDimensions(l,c.x,c.y),n.tryPlaceTopLeft(l)}i.R20.renderAll()},n.clickResizeCustom=function(e){n.resizeDialog.show(n.getHook(),function(e){var t=n.getHook().config;if(0!=t.lastSquareWidth&&0!=t.lastSquareHeight&&0!=t.lastNumSquaresX&&0!=t.lastNumSquaresY){var o=i.R20.getSelectedTokens();i.R20.unselectTokens();for(var r=0,a=o;r<a.length;r++){var l=a[r],s=t.lastSquareWidth*t.lastNumSquaresX,c=t.lastSquareHeight*t.lastNumSquaresY;if(t.useUnits){var d=i.R20.getCurrentPage();s/=d.attributes.scale_number,c/=d.attributes.scale_number}i.R20.setCanvasObjectDimensions(l,s,c),e&&n.tryPlaceTopLeft(l)}i.R20.renderAll()}else alert("Invalid input: one of the values was zero.")})},n}return o(n,t),n.prototype.setup=function(){this.resizeDialog=new l.default,a.TokenContextMenu.addButton("Resize Fit",this.clickResizeFit,c.TOKEN_CONTEXT_MENU_ORDER_RESIZE_FIT,{mustHaveSelection:!0}),a.TokenContextMenu.addButton("Resize Custom",this.clickResizeCustom,c.TOKEN_CONTEXT_MENU_ORDER_RESIZE_CUSTOM,{mustHaveSelection:!0})},n.prototype.dispose=function(){this.resizeDialog&&this.resizeDialog.dispose(),a.TokenContextMenu.removeButton("Resize Fit",this.clickResizeFit),a.TokenContextMenu.removeButton("Resize Custom",this.clickResizeCustom)},n}(r.R20Module.SimpleBase);t.default=function(){(new d).install()}}).call(this,"src/modules/TokenResize")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(6),a=n(5),l=n(35),s=n(173),c=n(3),d=function(e){function t(){var n=e.call(this,null)||this;return n.getCheckbox=function(){return document.getElementById(t.checkboxId)},n.onSubmit=function(e){n.close(!0);var t=n.getCheckbox().checked;n.cont(t)},n.onClickCheckboxDiv=function(e){if(e.target.id!==t.checkboxId){var o=n.getCheckbox();o.checked=!o.checked}},n}return o(t,e),t.prototype.show=function(t,n){this.moduleConfig=t,this.cont=n,e.prototype.internalShow.call(this)},t.prototype.render=function(){var e=c.R20.getCurrentPage(),n=this.moduleConfig.config.useUnits?e.attributes.scale_units:"squares";return r.DOM.createElement(a.Dialog,null,r.DOM.createElement(a.DialogHeader,null,r.DOM.createElement("h2",null,"Resize Token")),r.DOM.createElement(a.DialogBody,null,r.DOM.createElement("div",null,r.DOM.createElement(s.default,{Component:l.default,cfgId:"lastSquareWidth",display:"Width of a square in the token (px)",hook:this.moduleConfig}),r.DOM.createElement(s.default,{Component:l.default,cfgId:"lastSquareHeight",display:"Height of a square in the token (px)",hook:this.moduleConfig}),r.DOM.createElement(s.default,{Component:l.default,cfgId:"lastNumSquaresX",display:"Num. "+n+" horizontally",hook:this.moduleConfig}),r.DOM.createElement(s.default,{Component:l.default,cfgId:"lastNumSquaresY",display:"Num. "+n+" vertically",hook:this.moduleConfig}),r.DOM.createElement("div",{style:{cursor:"pointer",display:"flex",alignItems:"center"},onClick:this.onClickCheckboxDiv},r.DOM.createElement("input",{type:"checkbox",id:t.checkboxId,checked:this.moduleConfig.config.placeTopLeft}),r.DOM.createElement("span",{style:{marginLeft:"4px"}},"Position tokens in the top-left corner.")))),r.DOM.createElement(a.DialogFooter,null,r.DOM.createElement(a.DialogFooterContent,null,r.DOM.createElement("input",{style:{marginRight:"8px"},className:"r20btn btn",type:"button",onClick:this.close,value:"Close"}),r.DOM.createElement("input",{className:"r20btn btn",type:"button",onClick:this.onSubmit,value:"OK"}))))},t.checkboxId="r20es-token-resize-move-tokens-checkbox",t}(i.DialogBase);t.default=d},function(e,t,n){"use strict";t.__esModule=!0;var o=n(1);t.default=function(e){var t=e.Component,n=e.cfgId,r=e.display,i=e.hook;return o.DOM.createElement("li",{style:{display:"flex",justifyContent:"flex-end"}},o.DOM.createElement("span",{style:{"margin-right":"8px","border-right":"1px lightgray solid","padding-right":"8px"},title:n,className:"text"},r),o.DOM.createElement(t,{style:{width:"300px"},configName:n,hook:i}))}},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(1),a=n(4),l=n(39),s=n(40),c=n(175),d=function(t){function n(){var n=t.call(this,e)||this;return n.dialog=null,n.onButtonClick=function(e){e.stopPropagation(),n.dialog.show()},n}return o(n,t),n.prototype.setup=function(){this.dialog=new c.ToolsDialog;var e=i.DOM.createElement(l.SettingsSidebarButton,{id:n.TOOLS_ID,text:"VTTES Tools",onClick:this.onButtonClick});s.insertButtonIntoSettings(e)},n.prototype.dispose=function(){t.prototype.dispose.call(this),a.findByIdAndRemove(n.TOOLS_ID),this.dialog&&this.dialog.dispose()},n.TOOLS_ID="r20es-tools-button",n}(r.R20Module.OnAppLoadBase);t.default=function(){(new d).install()}}).call(this,"src/modules/ToolsMenu")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(6),i=n(5),a=n(1),l=n(176),s=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onClickUse=function(e){e.stopPropagation();var n=e.target.getAttribute("data-id");if(n){var o=l.default[n];if(o){var r=o.factory();t.setTool(r,o)}else alert("Could not find tool.")}else alert("Could not find the tool id.")},t.onGoBack=function(e){e.stopPropagation(),t.setTool(null,null)},t}return o(t,e),t.prototype.show=function(){this._currentTool=null,this.internalShow()},t.prototype.setTool=function(e,t){this._currentTool=e,this._currentToolConfig=t,this.rerender()},t.prototype.render=function(){if(this._currentTool&&this._currentToolConfig){var e=this._currentTool.show();return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,null,a.DOM.createElement("h1",null,this._currentToolConfig.name)),a.DOM.createElement(i.DialogBody,null,e),a.DOM.createElement(i.DialogFooter,null,a.DOM.createElement(i.DialogFooterContent,null,a.DOM.createElement("button",{className:"btn",onClick:this.close},"Close"),a.DOM.createElement("button",{className:"btn",onclick:this.onGoBack},"Back"))))}this._currentTool=null,this._currentToolConfig=null;var t=[],n={marginTop:"auto",marginBottom:"auto",paddingLeft:"8px",paddingRight:"8px"};for(var o in l.default){var r=l.default[o];t.push(a.DOM.createElement("b",{style:n},r.name)),t.push(a.DOM.createElement("div",{style:n},r.description)),t.push(a.DOM.createElement("button",{onClick:this.onClickUse,"data-id":o,style:n,className:"btn btn-info"},"Use"))}return a.DOM.createElement(i.Dialog,null,a.DOM.createElement(i.DialogHeader,null,a.DOM.createElement("h1",null,"Tools")),a.DOM.createElement(i.DialogBody,null,a.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr"}},t)),a.DOM.createElement(i.DialogFooter,null,a.DOM.createElement(i.DialogFooterContent,null,a.DOM.createElement("button",{className:"btn",onclick:this.close},"Close"))))},t}(r.DialogBase);t.ToolsDialog=s},function(e,t,n){"use strict";t.__esModule=!0;var o={};!function(e){o[e.id]=e}(n(177).default),t.default=o},function(e,t,n){"use strict";t.__esModule=!0;var o=n(178),r={id:"sheetRollTypeSetterTool",description:"Allows bulk changing 5e OGL sheet roll query and whisper type settings.",name:"Bulk 5e OGL Roll type setter",factory:function(){return new o.SheetRollTypeSetter}};t.default=r},function(e,t,n){"use strict";t.__esModule=!0;var o=n(1),r=n(3),i=[{label:"Advantage Roll Queries",attribute_name:"rtype",value_display_map:{"{{always=1}} {{r2=[[@{d20}":"Always Roll Advantage","@{advantagetoggle}":"Advantage Toggle","@{queryadvantage}":"Query Advantage","{{normal=1}} {{r2=[[0d20":"Never Roll Advantage"}},{label:"Whisper Rolls To GM",attribute_name:"wtype",value_display_map:{"":"Never Whisper Rolls","@{whispertoggle}":"Whisper Toggle","?{Whisper?|Public Roll,|Whisper Roll,/w gm }":"Query Whisper","/w gm ":"Always Whisper Rolls"}}],a=function(e){e.stopPropagation();var t=e.target;t.disabled=!0;try{var n=t.getAttribute("data-key");if(!n)return void alert("Could not find attribute name.");var o=i.find(function(e){return e.attribute_name===n});if(!o)return void alert("Could not find attribute.");var a=$(t.parentNode).find("select")[0];if(!a)return void alert("Could not find select element.");for(var l=a.value,s=r.R20.getAllCharacters(),c={current:l},d=0,u=s;d<u.length;d++){for(var p=u[d],h=null,m=0,f=p.attribs.models;m<f.length;m++){var g=f[m];if(g.attributes.name===o.attribute_name){h=g;break}}h||(h=p.attribs.create({name:o.attribute_name})),h.save(c)}}catch(e){console.error(e),alert("Error: "+e)}finally{t.disabled=!1,t.innerText="Set for all (done!)"}},l=function(e){var t=[];for(var n in e.value_display_map)t.push(o.DOM.createElement("option",{value:n},e.value_display_map[n]));return o.DOM.createElement("div",{style:{display:"grid",gridTemplateColumns:"2fr 3fr 1fr"}},o.DOM.createElement("span",null,e.label),o.DOM.createElement("select",null,t),o.DOM.createElement("button",{"data-key":e.attribute_name,onClick:a,className:"btn"},"Set for all"))},s=function(){function e(){}return e.prototype.show=function(){return o.DOM.createElement("div",null,i.map(l))},e}();t.SheetRollTypeSetter=s},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(4),a=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.removeStyle=function(){i.findByIdAndRemove(n.styleId)},n.prototype.injectStyle=function(){var e=this.getHook().config,t=i.createCSSElement(".ui-dialog { opacity: "+e.opacity+"; }",n.styleId);document.body.appendChild(t)},n.prototype.onSettingChange=function(e,t,o){n.removeStyle(),this.injectStyle()},n.prototype.setup=function(){this.injectStyle()},n.prototype.dispose=function(){n.removeStyle(),t.prototype.dispose.call(this)},n.styleId="r20es-transparent-paper-style",n}(r.R20Module.OnAppLoadBase);t.default=function(){(new a).install()}}).call(this,"src/modules/TransparentPaper")},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(2),i=n(181),a=n(182),l=n(3),s=n(10),c=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.prototype.sendWelcomeMessage=function(){var e=this;setTimeout(function(){e.getHook().config.showWelcomePopup&&l.R20.saySystem('\n<h2 style="font-size: 18px; color: whitesmoke">VTT Enhancement Suite</h2>\n<span>The enhancement suite (aka R20ES) v1.28.19 has been loaded!</span>\n<br/>\n<br/>\n\n<a href="'+s.Config.discordInvite+'">\n<img style="margin-right: 5px; width: 26px; height: 26px" src="https://discordapp.com/assets/1c8a54f25d101bdc607cec7228247a9a.svg"/> <span style="color: orange;"><b>VTTES Discord Server</b></span>\n</a>\n\n<br/>\n\n<a class="bmc-button" target="_blank" href='+s.Config.contributeUrl+'>\n<span style="color: orange; margin-left:5px">\n<img style="margin-right: 5px; width: 26px; height: 26px" src="https://github.com/justas-d/roll20-enhancement-suite/raw/b7db254d7c6487ac54f1fb8d6d5aeb966306f813/assets/promotional/Digital-Patreon-Logo_FieryCoral.png" alt=""></img><b>Patreon</b>\n</span>\n</a>\n')},2e3)},n.prototype.setup=function(){var e=document.getElementById("playerzone"),t=null,n=this.getHook().config;this.sendWelcomeMessage(),console.log("showChangelog: "+n.showChangelog),console.log('cfg.previousVersion": '+n.previousVersion),console.log('BUILD_CONSTANT_VERSION": 1.28.19'),n.showStartupGuide?(this.welcome=new i.default(this),t=this.welcome.render()):n.showChangelog&&"1.28.19"!==n.previousVersion&&(this.changelog=new a.default,t=this.changelog.render()),this.setConfigValue("previousVersion","1.28.19"),t&&e.parentElement.insertBefore(t,e),l.R20.is_using_new_ui_preview()&&(n.has_shown_ui_preview_incompatibility_message||(alert("VTTES does not support the new UI preview during its testing phase! Using it will make some VTTES functionality unavailable.\n\nPlease turn the new preview UI off in the Roll20 settings to continue using VTTES.\n\nThis message will not be shown again."),n.has_shown_ui_preview_incompatibility_message=!0,window.r20es.save_configs()),setTimeout(function(){l.R20.saySystem("<div><b>VTTES does not support the new UI preview during its testing phase!</b></div><div>Using it will make some VTTES functionality unavailable.</div><div>Please turn the new preview UI off in the Roll20 settings to continue using VTTES.</div>")},5e3))},n.prototype.dispose=function(){t.prototype.dispose.call(this),this.welcome&&this.welcome.dispose()},n}(r.R20Module.OnAppLoadBase);t.default=function(){(new c).install()}}).call(this,"src/modules/Welcome")},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(4),a=n(38),l=function(e){function t(t){var n=e.call(this)||this;return n.onClickClose=function(){n.finish()},n.onClickLater=function(){n.close()},n.onClickNext=function(){n.finish(),$("a[href='#mysettings']").click();var e=document.getElementById(a.default),t=e.style.border;setTimeout(function(){e.style.border="solid red 5px"},500),setTimeout(function(){e.style.border=t,$(e).click()},1500)},n.mod=t,n}return o(t,e),t.prototype.close=function(){this.dispose()},t.prototype.finish=function(){this.mod.getHook().config.showStartupGuide=!1,window.r20es.save_configs(),this.close()},t.prototype.internalRender=function(){var e={marginRight:"8px"};return r.DOM.createElement("div",{className:"r20es-welcome"},r.DOM.createElement("section",{style:{display:"flex",justifyContent:"space-between"}},r.DOM.createElement("section",null,r.DOM.createElement("h3",null,"Welcome to the VTT Enhancement Suite!"),r.DOM.createElement("hr",{style:{margin:"5px 0 15px 0"}}),r.DOM.createElement("p",null,"To get started, we recommend taking a look at the settings menu. There you can discover, learn and configure the modules this plugin provides."),r.DOM.createElement("p",null,'It can be found underneath the "My Settings" tab in the sidebar.'),r.DOM.createElement("p",null,"Would you like us to take you there?")),r.DOM.createElement("section",null,r.DOM.createElement("img",{style:{height:"100%"},src:i.LOGO_SVG_B64,alt:"Logo"}))),r.DOM.createElement("div",{style:{float:"right"}},r.DOM.createElement("button",{className:"btn",style:e,onClick:this.onClickClose},"I'll figure it out"),r.DOM.createElement("button",{className:"btn",style:e,onClick:this.onClickLater},"Later"),r.DOM.createElement("button",{className:"btn",style:e,onClick:this.onClickNext},"Let's go!")))},t}(r.DOM.ElementBase);t.default=l},function(e,t,n){"use strict";var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}();t.__esModule=!0;var r=n(1),i=n(37),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.internalRender=function(){return r.DOM.createElement("div",{className:"r20es-welcome"},r.DOM.createElement("h2",null,"VTTES has been updated"),r.DOM.createElement(i.default,{listAllVersions:!1}),r.DOM.createElement("input",{className:"btn",style:{width:"100%",height:"auto",boxSizing:"border-box"},type:"button",onClick:this.dispose,value:"OK"}))},t}(r.DOM.ElementBase);t.default=a},function(e,t,n){"use strict";(function(e){var o=this&&this.__extends||function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),r=this&&this.__awaiter||function(e,t,n,o){return new(n||(n=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(a,l)}s((o=o.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(i){return function(l){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]<r[3])){a.label=i[1];break}if(6===i[0]&&a.label<r[1]){a.label=r[1],r=i;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(i);break}r[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{n=r=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,l])}}};t.__esModule=!0;var a=n(2),l=n(3),s=function(t){function n(){return t.call(this,e)||this}return o(n,t),n.prototype.setup=function(){var e=this;setTimeout(function(){return r(e,void 0,void 0,function(){var e,t,n,o,r,a,s;return i(this,function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),[4,fetch("https://justas-d.github.io/roll20-enhancement-suite/vttes.meta.js")];case 1:return[4,i.sent().text()];case 2:for(e=(e=i.sent()).trim(),t=-1,n=-1,o=e.indexOf("version");o<e.length;o+=1)if(r=e[o],-1==t)"1"!=r&&"2"!=r&&"3"!=r&&"4"!=r&&"5"!=r&&"6"!=r&&"7"!=r&&"8"!=r&&"9"!=r&&"9"!=r||(t=o);else if(-1==n&&"\n"==r){n=o;break}return-1!=n&&-1!=t&&(a=e.substring(t,n).trim(),console.log("Latest userscript version: '"+a+"'"),"1.28.19"!=a?l.R20.saySystem('\n<h2 style="color: whitesmoke">Update Available!</h2>\n<div>VTTES Userscript has an update available.</div>\n<div>Please <a style="color: orange;" href="https://justas-d.github.io/roll20-enhancement-suite/userscript_update.webm">check for updates</a> in Tampermonkey</div>\n<div>Or grab it <a style="color: orange;" href="https://justas-d.github.io/roll20-enhancement-suite/vttes.user.js">here</a>.</div>\n'):console.log("Userscript is up to date!")),[3,4];case 3:return s=i.sent(),console.error("VTTES: failed to check for new version",s),[3,4];case 4:return[2]}})})},4e3)},n.prototype.dispose=function(){t.prototype.dispose.call(this)},n}(a.R20Module.OnAppLoadBase);t.default=function(){(new s).install()}}).call(this,"src/modules/UserscriptUpdateChecker")},function(e,t,n){"use strict";t.__esModule=!0;var o=n(28),r=function(){function e(){this._fxs=[]}return e.copyExisting=function(t){var n=new e;return t&&(n._fxs=t._fxs.slice()),n},e.prototype.fire=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,o=this._fxs;n<o.length;n++){var r=o[n];try{r.apply(void 0,e)}catch(e){console.error(e)}}},e.prototype.on=function(e){this._fxs.push(e)},e.prototype.off=function(e){o.removeByReference(this._fxs,e)},e.prototype.addEventListener=function(e){this.on(e)},e.prototype.removeEventListener=function(e){this.off(e)},e}();t.EventEmitter=r},function(e,t,n){"use strict";t.__esModule=!0;var o=n(4);t.apply_mods_to_text=function(e,t,n){for(var r in console.log("Applying mods to url "+t),n){var i=n[r];if(i.mods)for(var a=0,l=i.mods;a<l.length;a++){var s=l[a];if(t.includes(s.includes)){if(s.stencils&&!s.debug_disable_stencils){console.log("===========STENCILS FOR",i);var c={},d=[],u=[];e:for(var p=0,h=s.stencils;p<h.length;p++){var m=h[p];if(!m.debug_disable){m.debug_find;var f=0;if(m.search_from){if((f=e.indexOf(m.search_from))<0){console.error("STENCIL: Failed to find search_from",m.search_from,m,s);continue e}"number"==typeof m.search_from_index_offset&&(f+=m.search_from_index_offset)<0&&(f=0)}var g=m.find[0];if("string"==typeof g){var M=e.indexOf(g,f);if(M<0)console.error("STENCIL: Failed to find the first part's start index",g,m,s);else{var y=M,b=m.find[1];if("number"==typeof b)for(var N=2;N<m.find.length;N+=2){var T=m.find[N];if("string"!=typeof T){console.error("STENCIL: part of a stencil at index "+N+" is not a string.",T,m,s);continue e}var v=e.indexOf(T,M+g.length);if(v<0){console.error("STENCIL: failed to find index of stencil part at index "+N,T,m,s);continue e}if(b>0){var k=e.substring(M+g.length,v);if("string"==typeof c[b]&&c[b]!=k){console.error("$Mismatched values between the same group! Group is "+b+" and the current value is '"+c[b]+"', whereas the new value is '"+k+"'.",m,s);continue e}c[b]=k}if(f=v+T.length,g=T,M=v,"string"==typeof(b=m.find[N+1])){console.error("STENCIL: expected group index but got a string in find string!",m,s);continue e}if("number"!=typeof b)break}m.replace&&d.push({stencil:m,start_index:y,end_index:M+g.length})}}else console.error("STENCIL: first part of a stencil is not a string.",m,s)}}console.log("Stencil replace data",d);e:for(var _=0,w=d;_<w.length;_++){(Z=w[_]).stencil.debug_replace;for(var V="",R=e.substring(Z.start_index,Z.end_index),E=0,U=Z.stencil.replace;E<U.length;E++){var x=U[E];if("string"==typeof x)V+=x;else if("number"==typeof x)if(0==x)V+=R;else{var D=c[x];if("string"!=typeof D){console.error("STENCIL: Could not find group "+x,Z);continue e}V+=D}}var S={find:R,replace:V};console.log("Generated replace:",S),u.push(S)}for(var O=0,F=u;O<F.length;O++){var Z=F[O];e=o.replaceAll(e,Z.find,Z.replace)}console.log("Generated groups:",c)}if(s.find_replace&&!s.debug_disable_find_replace)for(var j=0,W=s.find_replace;j<W.length;j++){var z=W[j],I=(Z=o.replace_all_and_count(z.replace,">>R20ES_MOD_FIND>>",z.find)).result;e=(Z=o.replace_all_and_count(e,z.find,I)).result;V="REPLACING ("+i.filename+"): Replace count: "+Z.count+" Find: '"+z.find+"' Patch: '"+I+"'.";Z.count<=0?console.error(V,i):console.log(V)}}}}return e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dialog_polyfill_css=t.dialog_polyfill_script=void 0;t.dialog_polyfill_script=(()=>{var e=window.CustomEvent;function t(e){for(;e;){if("dialog"===e.localName)return e;e=e.parentElement}return null}function n(e){e&&e.blur&&e!==document.body&&e.blur()}function o(e,t){for(var n=0;n<e.length;++n)if(e[n]===t)return!0;return!1}function r(e){return!(!e||!e.hasAttribute("method"))&&"dialog"===e.getAttribute("method").toLowerCase()}function i(e){if(this.dialog_=e,this.replacedStyleTop_=!1,this.openAsModal_=!1,e.hasAttribute("role")||e.setAttribute("role","dialog"),e.show=this.show.bind(this),e.showModal=this.showModal.bind(this),e.close=this.close.bind(this),"returnValue"in e||(e.returnValue=""),"MutationObserver"in window)new MutationObserver(this.maybeHideModal.bind(this)).observe(e,{attributes:!0,attributeFilter:["open"]});else{var t,n=!1,o=function(){n?this.downgradeModal():this.maybeHideModal(),n=!1}.bind(this),r=function(r){if(r.target===e){var i="DOMNodeRemoved";n|=r.type.substr(0,i.length)===i,window.clearTimeout(t),t=window.setTimeout(o,0)}};["DOMAttrModified","DOMNodeRemoved","DOMNodeRemovedFromDocument"].forEach(function(t){e.addEventListener(t,r)})}Object.defineProperty(e,"open",{set:this.setOpen.bind(this),get:e.hasAttribute.bind(e,"open")}),this.backdrop_=document.createElement("div"),this.backdrop_.className="backdrop",this.backdrop_.addEventListener("click",this.backdropClick_.bind(this))}e&&"object"!=typeof e||((e=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!!t.bubbles,!!t.cancelable,t.detail||null),n}).prototype=window.Event.prototype),i.prototype={get dialog(){return this.dialog_},maybeHideModal:function(){this.dialog_.hasAttribute("open")&&document.body.contains(this.dialog_)||this.downgradeModal()},downgradeModal:function(){this.openAsModal_&&(this.openAsModal_=!1,this.dialog_.style.zIndex="",this.replacedStyleTop_&&(this.dialog_.style.top="",this.replacedStyleTop_=!1),this.backdrop_.parentNode&&this.backdrop_.parentNode.removeChild(this.backdrop_),a.dm.removeDialog(this))},setOpen:function(e){e?this.dialog_.hasAttribute("open")||this.dialog_.setAttribute("open",""):(this.dialog_.removeAttribute("open"),this.maybeHideModal())},backdropClick_:function(e){if(this.dialog_.hasAttribute("tabindex"))this.dialog_.focus();else{var t=document.createElement("div");this.dialog_.insertBefore(t,this.dialog_.firstChild),t.tabIndex=-1,t.focus(),this.dialog_.removeChild(t)}var n=document.createEvent("MouseEvents");n.initMouseEvent(e.type,e.bubbles,e.cancelable,window,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),this.dialog_.dispatchEvent(n),e.stopPropagation()},focus_:function(){var e=this.dialog_.querySelector("[autofocus]:not([disabled])");if(!e&&this.dialog_.tabIndex>=0&&(e=this.dialog_),!e){var t=["button","input","keygen","select","textarea"].map(function(e){return e+":not([disabled])"});t.push('[tabindex]:not([disabled]):not([tabindex=""])'),e=this.dialog_.querySelector(t.join(", "))}n(document.activeElement),e&&e.focus()},updateZIndex:function(e,t){if(e<t)throw new Error("dialogZ should never be < backdropZ");this.dialog_.style.zIndex=e,this.backdrop_.style.zIndex=t},show:function(){this.dialog_.open||(this.setOpen(!0),this.focus_())},showModal:function(){if(this.dialog_.hasAttribute("open"))throw new Error("Failed to execute 'showModal' on dialog: The element is already open, and therefore cannot be opened modally.");if(!document.body.contains(this.dialog_))throw new Error("Failed to execute 'showModal' on dialog: The element is not in a Document.");if(!a.dm.pushDialog(this))throw new Error("Failed to execute 'showModal' on dialog: There are too many open modal dialogs.");(function(e){for(;e&&e!==document.body;){var t=window.getComputedStyle(e),n=function(e,n){return!(void 0===t[e]||t[e]===n)};if(t.opacity<1||n("zIndex","auto")||n("transform","none")||n("mixBlendMode","normal")||n("filter","none")||n("perspective","none")||"isolate"===t.isolation||"fixed"===t.position||"touch"===t.webkitOverflowScrolling)return!0;e=e.parentElement}return!1})(this.dialog_.parentElement)&&console.warn("A dialog is being shown inside a stacking context. This may cause it to be unusable. For more information, see this link: https://github.com/GoogleChrome/dialog-polyfill/#stacking-context"),this.setOpen(!0),this.openAsModal_=!0,a.reposition(this.dialog_),this.replacedStyleTop_=!0,this.dialog_.parentNode.insertBefore(this.backdrop_,this.dialog_.nextSibling),this.focus_()},close:function(t){if(!this.dialog_.hasAttribute("open"))throw new Error("Failed to execute 'close' on dialog: The element does not have an 'open' attribute, and therefore cannot be closed.");this.setOpen(!1),void 0!==t&&(this.dialog_.returnValue=t);var n=new e("close",{bubbles:!1,cancelable:!1});this.dialog_.dispatchEvent(n)}};var a={reposition:function(e){var t=document.body.scrollTop||document.documentElement.scrollTop,n=t+(window.innerHeight-e.offsetHeight)/2;e.style.top=Math.max(t,n)+"px"},isInlinePositionSetByStylesheet:function(e){for(var t=0;t<document.styleSheets.length;++t){var n=document.styleSheets[t],r=null;try{r=n.cssRules}catch(e){}if(r)for(var i=0;i<r.length;++i){var a=r[i],l=null;try{l=document.querySelectorAll(a.selectorText)}catch(e){}if(l&&o(l,e)){var s=a.style.getPropertyValue("top"),c=a.style.getPropertyValue("bottom");if(s&&"auto"!==s||c&&"auto"!==c)return!0}}}return!1},needsCentering:function(e){return!("absolute"!==window.getComputedStyle(e).position||"auto"!==e.style.top&&""!==e.style.top||"auto"!==e.style.bottom&&""!==e.style.bottom||a.isInlinePositionSetByStylesheet(e))},forceRegisterDialog:function(e){if((window.HTMLDialogElement||e.showModal)&&console.warn("This browser already supports <dialog>, the polyfill may not work correctly",e),"dialog"!==e.localName)throw new Error("Failed to register dialog: The element is not a dialog.");new i(e)},registerDialog:function(e){e.showModal||a.forceRegisterDialog(e)},DialogManager:function(){this.pendingDialogStack=[];var e=this.checkDOM_.bind(this);this.overlay=document.createElement("div"),this.overlay.className="_dialog_overlay",this.overlay.addEventListener("click",function(t){this.forwardTab_=void 0,t.stopPropagation(),e([])}.bind(this)),this.handleKey_=this.handleKey_.bind(this),this.handleFocus_=this.handleFocus_.bind(this),this.zIndexLow_=1e5,this.zIndexHigh_=100150,this.forwardTab_=void 0,"MutationObserver"in window&&(this.mo_=new MutationObserver(function(t){var n=[];t.forEach(function(e){for(var t,o=0;t=e.removedNodes[o];++o)t instanceof Element&&("dialog"===t.localName&&n.push(t),n=n.concat(t.querySelectorAll("dialog")))}),n.length&&e(n)}))}};if(a.DialogManager.prototype.blockDocument=function(){document.documentElement.addEventListener("focus",this.handleFocus_,!0),document.addEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.observe(document,{childList:!0,subtree:!0})},a.DialogManager.prototype.unblockDocument=function(){document.documentElement.removeEventListener("focus",this.handleFocus_,!0),document.removeEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.disconnect()},a.DialogManager.prototype.updateStacking=function(){for(var e,t=this.zIndexHigh_,n=0;e=this.pendingDialogStack[n];++n)e.updateZIndex(--t,--t),0===n&&(this.overlay.style.zIndex=--t);var o=this.pendingDialogStack[0];o?(o.dialog.parentNode||document.body).appendChild(this.overlay):this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay)},a.DialogManager.prototype.containedByTopDialog_=function(e){for(;e=t(e);){for(var n,o=0;n=this.pendingDialogStack[o];++o)if(n.dialog===e)return 0===o;e=e.parentElement}return!1},a.DialogManager.prototype.handleFocus_=function(e){if(!this.containedByTopDialog_(e.target)&&(e.preventDefault(),e.stopPropagation(),n(e.target),void 0!==this.forwardTab_)){var t=this.pendingDialogStack[0];return t.dialog.compareDocumentPosition(e.target)&Node.DOCUMENT_POSITION_PRECEDING&&(this.forwardTab_?t.focus_():document.documentElement.focus()),!1}},a.DialogManager.prototype.handleKey_=function(t){if(this.forwardTab_=void 0,27===t.keyCode){t.preventDefault(),t.stopPropagation();var n=new e("cancel",{bubbles:!1,cancelable:!0}),o=this.pendingDialogStack[0];o&&o.dialog.dispatchEvent(n)&&o.dialog.close()}else 9===t.keyCode&&(this.forwardTab_=!t.shiftKey)},a.DialogManager.prototype.checkDOM_=function(e){this.pendingDialogStack.slice().forEach(function(t){-1!==e.indexOf(t.dialog)?t.downgradeModal():t.maybeHideModal()})},a.DialogManager.prototype.pushDialog=function(e){var t=(this.zIndexHigh_-this.zIndexLow_)/2-1;return!(this.pendingDialogStack.length>=t||(1===this.pendingDialogStack.unshift(e)&&this.blockDocument(),this.updateStacking(),0))},a.DialogManager.prototype.removeDialog=function(e){var t=this.pendingDialogStack.indexOf(e);-1!==t&&(this.pendingDialogStack.splice(t,1),0===this.pendingDialogStack.length&&this.unblockDocument(),this.updateStacking())},a.dm=new a.DialogManager,a.formSubmitter=null,a.useValue=null,void 0===window.HTMLDialogElement){var l=document.createElement("form");if(l.setAttribute("method","dialog"),"dialog"!==l.method){var s=Object.getOwnPropertyDescriptor(HTMLFormElement.prototype,"method");if(s){var c=s.get;s.get=function(){return r(this)?"dialog":c.call(this)};var d=s.set;s.set=function(e){return"string"==typeof e&&"dialog"===e.toLowerCase()?this.setAttribute("method",e):d.call(this,e)},Object.defineProperty(HTMLFormElement.prototype,"method",s)}}document.addEventListener("click",function(e){if(a.formSubmitter=null,a.useValue=null,!e.defaultPrevented){var n=e.target;if(n&&r(n.form)){if(!("submit"===n.type&&["button","input"].indexOf(n.localName)>-1)){if("input"!==n.localName||"image"!==n.type)return;a.useValue=e.offsetX+","+e.offsetY}t(n)&&(a.formSubmitter=n)}}},!1);var u=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){if(!r(this))return u.call(this);var e=t(this);e&&e.close()},document.addEventListener("submit",function(e){var n=e.target;if(r(n)){e.preventDefault();var o=t(n);if(o){var i=a.formSubmitter;i&&i.form===n?o.close(a.useValue||i.value):o.close(),a.formSubmitter=null}}},!0)}a.forceRegisterDialog=a.forceRegisterDialog,a.registerDialog=a.registerDialog,window.dialogPolyfill=a});t.dialog_polyfill_css="\n dialog {\n position: absolute;\n left: 0; right: 0;\n width: -moz-fit-content;\n width: -webkit-fit-content;\n width: fit-content;\n height: -moz-fit-content;\n height: -webkit-fit-content;\n height: fit-content;\n margin: auto;\n border: solid;\n padding: 1em;\n background: white;\n color: black;\n display: block;\n }\n\n dialog:not([open]) {\n display: none;\n }\n\n dialog + .backdrop {\n position: fixed;\n top: 0; right: 0; bottom: 0; left: 0;\n background: rgba(0,0,0,0.1);\n }\n\n ._dialog_overlay {\n position: fixed;\n top: 0; right: 0; bottom: 0; left: 0;\n }\n\n dialog.fixed {\n position: fixed;\n top: 50%;\n transform: translate(0, -50%);\n }\n"}]);
};
const str = `(${boot.toString()})()`;
window.eval(str);