diff --git a/404.html b/404.html new file mode 100644 index 000000000..89a750106 --- /dev/null +++ b/404.html @@ -0,0 +1,29 @@ + + + + + + 404 | The Paper Pilot + + + + + + + + + + + + + + +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..580766dcf --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.thepaperpilot.org \ No newline at end of file diff --git a/advent/apple-touch-icon.png b/advent/apple-touch-icon.png new file mode 100644 index 000000000..e57064009 Binary files /dev/null and b/advent/apple-touch-icon.png differ diff --git a/advent/assets/@fontsource.c175eac8.css b/advent/assets/@fontsource.c175eac8.css new file mode 100644 index 000000000..83bd1a1ec --- /dev/null +++ b/advent/assets/@fontsource.c175eac8.css @@ -0,0 +1 @@ +@font-face{font-family:Material Icons;font-style:normal;font-display:swap;font-weight:400;src:url(./material-icons-base-400-normal.cc0462d5.woff2) format("woff2"),url(./material-icons-base-400-normal.47b692f3.woff) format("woff")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./roboto-mono-cyrillic-ext-400-normal.eef02d41.woff2) format("woff2"),url(./roboto-mono-all-400-normal.66268f92.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./roboto-mono-cyrillic-400-normal.8c367f2f.woff2) format("woff2"),url(./roboto-mono-all-400-normal.66268f92.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./roboto-mono-greek-400-normal.53a8927b.woff2) format("woff2"),url(./roboto-mono-all-400-normal.66268f92.woff) format("woff");unicode-range:U+0370-03FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(./roboto-mono-all-400-normal.66268f92.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./roboto-mono-latin-ext-400-normal.820adbd1.woff2) format("woff2"),url(./roboto-mono-all-400-normal.66268f92.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./roboto-mono-latin-400-normal.7295944e.woff2) format("woff2"),url(./roboto-mono-all-400-normal.66268f92.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Great Vibes;font-style:normal;font-display:swap;font-weight:400;src:url(./great-vibes-vietnamese-400-normal.7c6d919c.woff2) format("woff2"),url(./great-vibes-all-400-normal.f434a07e.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Great Vibes;font-style:normal;font-display:swap;font-weight:400;src:url(./great-vibes-latin-ext-400-normal.22f2aa42.woff2) format("woff2"),url(./great-vibes-all-400-normal.f434a07e.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Great Vibes;font-style:normal;font-display:swap;font-weight:400;src:url(./great-vibes-latin-400-normal.553fd833.woff2) format("woff2"),url(./great-vibes-all-400-normal.f434a07e.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD} diff --git a/advent/assets/@pixi.051d1bd4.js b/advent/assets/@pixi.051d1bd4.js new file mode 100644 index 000000000..c2f71edec --- /dev/null +++ b/advent/assets/@pixi.051d1bd4.js @@ -0,0 +1,857 @@ +import{E as Vr}from"./eventemitter3.dc5195d7.js";import{e as Ns}from"./earcut.03899505.js";import{p as ba,f as xa,r as Ea}from"./url.1821b64b.js";/*! + * @pixi/constants - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/constants is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */var zt;(function(r){r[r.WEBGL_LEGACY=0]="WEBGL_LEGACY",r[r.WEBGL=1]="WEBGL",r[r.WEBGL2=2]="WEBGL2"})(zt||(zt={}));var Ye;(function(r){r[r.UNKNOWN=0]="UNKNOWN",r[r.WEBGL=1]="WEBGL",r[r.CANVAS=2]="CANVAS"})(Ye||(Ye={}));var Cr;(function(r){r[r.COLOR=16384]="COLOR",r[r.DEPTH=256]="DEPTH",r[r.STENCIL=1024]="STENCIL"})(Cr||(Cr={}));var B;(function(r){r[r.NORMAL=0]="NORMAL",r[r.ADD=1]="ADD",r[r.MULTIPLY=2]="MULTIPLY",r[r.SCREEN=3]="SCREEN",r[r.OVERLAY=4]="OVERLAY",r[r.DARKEN=5]="DARKEN",r[r.LIGHTEN=6]="LIGHTEN",r[r.COLOR_DODGE=7]="COLOR_DODGE",r[r.COLOR_BURN=8]="COLOR_BURN",r[r.HARD_LIGHT=9]="HARD_LIGHT",r[r.SOFT_LIGHT=10]="SOFT_LIGHT",r[r.DIFFERENCE=11]="DIFFERENCE",r[r.EXCLUSION=12]="EXCLUSION",r[r.HUE=13]="HUE",r[r.SATURATION=14]="SATURATION",r[r.COLOR=15]="COLOR",r[r.LUMINOSITY=16]="LUMINOSITY",r[r.NORMAL_NPM=17]="NORMAL_NPM",r[r.ADD_NPM=18]="ADD_NPM",r[r.SCREEN_NPM=19]="SCREEN_NPM",r[r.NONE=20]="NONE",r[r.SRC_OVER=0]="SRC_OVER",r[r.SRC_IN=21]="SRC_IN",r[r.SRC_OUT=22]="SRC_OUT",r[r.SRC_ATOP=23]="SRC_ATOP",r[r.DST_OVER=24]="DST_OVER",r[r.DST_IN=25]="DST_IN",r[r.DST_OUT=26]="DST_OUT",r[r.DST_ATOP=27]="DST_ATOP",r[r.ERASE=26]="ERASE",r[r.SUBTRACT=28]="SUBTRACT",r[r.XOR=29]="XOR"})(B||(B={}));var Tt;(function(r){r[r.POINTS=0]="POINTS",r[r.LINES=1]="LINES",r[r.LINE_LOOP=2]="LINE_LOOP",r[r.LINE_STRIP=3]="LINE_STRIP",r[r.TRIANGLES=4]="TRIANGLES",r[r.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",r[r.TRIANGLE_FAN=6]="TRIANGLE_FAN"})(Tt||(Tt={}));var S;(function(r){r[r.RGBA=6408]="RGBA",r[r.RGB=6407]="RGB",r[r.RG=33319]="RG",r[r.RED=6403]="RED",r[r.RGBA_INTEGER=36249]="RGBA_INTEGER",r[r.RGB_INTEGER=36248]="RGB_INTEGER",r[r.RG_INTEGER=33320]="RG_INTEGER",r[r.RED_INTEGER=36244]="RED_INTEGER",r[r.ALPHA=6406]="ALPHA",r[r.LUMINANCE=6409]="LUMINANCE",r[r.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",r[r.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",r[r.DEPTH_STENCIL=34041]="DEPTH_STENCIL"})(S||(S={}));var pe;(function(r){r[r.TEXTURE_2D=3553]="TEXTURE_2D",r[r.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",r[r.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",r[r.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",r[r.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",r[r.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",r[r.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z"})(pe||(pe={}));var M;(function(r){r[r.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",r[r.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",r[r.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",r[r.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",r[r.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",r[r.UNSIGNED_INT=5125]="UNSIGNED_INT",r[r.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",r[r.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",r[r.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",r[r.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",r[r.BYTE=5120]="BYTE",r[r.SHORT=5122]="SHORT",r[r.INT=5124]="INT",r[r.FLOAT=5126]="FLOAT",r[r.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",r[r.HALF_FLOAT=36193]="HALF_FLOAT"})(M||(M={}));var Ir;(function(r){r[r.FLOAT=0]="FLOAT",r[r.INT=1]="INT",r[r.UINT=2]="UINT"})(Ir||(Ir={}));var It;(function(r){r[r.NEAREST=0]="NEAREST",r[r.LINEAR=1]="LINEAR"})(It||(It={}));var Be;(function(r){r[r.CLAMP=33071]="CLAMP",r[r.REPEAT=10497]="REPEAT",r[r.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT"})(Be||(Be={}));var ut;(function(r){r[r.OFF=0]="OFF",r[r.POW2=1]="POW2",r[r.ON=2]="ON",r[r.ON_MANUAL=3]="ON_MANUAL"})(ut||(ut={}));var ct;(function(r){r[r.NPM=0]="NPM",r[r.UNPACK=1]="UNPACK",r[r.PMA=2]="PMA",r[r.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",r[r.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",r[r.PREMULTIPLY_ALPHA=2]="PREMULTIPLY_ALPHA",r[r.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA"})(ct||(ct={}));var Qt;(function(r){r[r.NO=0]="NO",r[r.YES=1]="YES",r[r.AUTO=2]="AUTO",r[r.BLEND=0]="BLEND",r[r.CLEAR=1]="CLEAR",r[r.BLIT=2]="BLIT"})(Qt||(Qt={}));var Or;(function(r){r[r.AUTO=0]="AUTO",r[r.MANUAL=1]="MANUAL"})(Or||(Or={}));var pt;(function(r){r.LOW="lowp",r.MEDIUM="mediump",r.HIGH="highp"})(pt||(pt={}));var nt;(function(r){r[r.NONE=0]="NONE",r[r.SCISSOR=1]="SCISSOR",r[r.STENCIL=2]="STENCIL",r[r.SPRITE=3]="SPRITE",r[r.COLOR=4]="COLOR"})(nt||(nt={}));var On;(function(r){r[r.RED=1]="RED",r[r.GREEN=2]="GREEN",r[r.BLUE=4]="BLUE",r[r.ALPHA=8]="ALPHA"})(On||(On={}));var rt;(function(r){r[r.NONE=0]="NONE",r[r.LOW=2]="LOW",r[r.MEDIUM=4]="MEDIUM",r[r.HIGH=8]="HIGH"})(rt||(rt={}));var Bt;(function(r){r[r.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",r[r.ARRAY_BUFFER=34962]="ARRAY_BUFFER",r[r.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER"})(Bt||(Bt={}));/*! + * @pixi/settings - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/settings is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */var Ta={createCanvas:function(r,t){var e=document.createElement("canvas");return e.width=r,e.height=t,e},getWebGLRenderingContext:function(){return WebGLRenderingContext},getNavigator:function(){return navigator},getBaseUrl:function(){var r;return(r=document.baseURI)!==null&&r!==void 0?r:window.location.href},fetch:function(r,t){return fetch(r,t)}},Zr=/iPhone/i,Bn=/iPod/i,Mn=/iPad/i,Ln=/\biOS-universal(?:.+)Mac\b/i,Qr=/\bAndroid(?:.+)Mobile\b/i,Nn=/Android/i,Te=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,ar=/Silk/i,Nt=/Windows Phone/i,Fn=/\bWindows(?:.+)ARM\b/i,Dn=/BlackBerry/i,Un=/BB10/i,Gn=/Opera Mini/i,kn=/\b(CriOS|Chrome)(?:.+)Mobile/i,Xn=/Mobile(?:.+)Firefox\b/i,Hn=function(r){return typeof r!="undefined"&&r.platform==="MacIntel"&&typeof r.maxTouchPoints=="number"&&r.maxTouchPoints>1&&typeof MSStream=="undefined"};function wa(r){return function(t){return t.test(r)}}function Aa(r){var t={userAgent:"",platform:"",maxTouchPoints:0};!r&&typeof navigator!="undefined"?t={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof r=="string"?t.userAgent=r:r&&r.userAgent&&(t={userAgent:r.userAgent,platform:r.platform,maxTouchPoints:r.maxTouchPoints||0});var e=t.userAgent,i=e.split("[FBAN");typeof i[1]!="undefined"&&(e=i[0]),i=e.split("Twitter"),typeof i[1]!="undefined"&&(e=i[0]);var n=wa(e),s={apple:{phone:n(Zr)&&!n(Nt),ipod:n(Bn),tablet:!n(Zr)&&(n(Mn)||Hn(t))&&!n(Nt),universal:n(Ln),device:(n(Zr)||n(Bn)||n(Mn)||n(Ln)||Hn(t))&&!n(Nt)},amazon:{phone:n(Te),tablet:!n(Te)&&n(ar),device:n(Te)||n(ar)},android:{phone:!n(Nt)&&n(Te)||!n(Nt)&&n(Qr),tablet:!n(Nt)&&!n(Te)&&!n(Qr)&&(n(ar)||n(Nn)),device:!n(Nt)&&(n(Te)||n(ar)||n(Qr)||n(Nn))||n(/\bokhttp\b/i)},windows:{phone:n(Nt),tablet:n(Fn),device:n(Nt)||n(Fn)},other:{blackberry:n(Dn),blackberry10:n(Un),opera:n(Gn),firefox:n(Xn),chrome:n(kn),device:n(Dn)||n(Un)||n(Gn)||n(Xn)||n(kn)},any:!1,phone:!1,tablet:!1};return s.any=s.apple.device||s.android.device||s.windows.device||s.other.device,s.phone=s.apple.phone||s.android.phone||s.windows.phone,s.tablet=s.apple.tablet||s.android.tablet||s.windows.tablet,s}var de=Aa(globalThis.navigator);function Sa(){return!de.apple.device}function Ra(r){var t=!0;if(de.tablet||de.phone){if(de.apple.device){var e=navigator.userAgent.match(/OS (\d+)_(\d+)?/);if(e){var i=parseInt(e[1],10);i<11&&(t=!1)}}if(de.android.device){var e=navigator.userAgent.match(/Android\s([0-9.]*)/);if(e){var i=parseInt(e[1],10);i<7&&(t=!1)}}}return t?r:4}var P={ADAPTER:Ta,MIPMAP_TEXTURES:ut.POW2,ANISOTROPIC_LEVEL:0,RESOLUTION:1,FILTER_RESOLUTION:1,FILTER_MULTISAMPLE:rt.NONE,SPRITE_MAX_TEXTURES:Ra(32),SPRITE_BATCH_SIZE:4096,RENDER_OPTIONS:{view:null,antialias:!1,autoDensity:!1,backgroundColor:0,backgroundAlpha:1,useContextAlpha:!0,clearBeforeRender:!0,preserveDrawingBuffer:!1,width:800,height:600,legacy:!1},GC_MODE:Or.AUTO,GC_MAX_IDLE:60*60,GC_MAX_CHECK_COUNT:60*10,WRAP_MODE:Be.CLAMP,SCALE_MODE:It.LINEAR,PRECISION_VERTEX:pt.HIGH,PRECISION_FRAGMENT:de.apple.device?pt.HIGH:pt.MEDIUM,CAN_UPLOAD_SAME_BUFFER:Sa(),CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};/*! + * @pixi/utils - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/utils is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */var Pe={parse:ba,format:xa,resolve:Ea};function yt(r){if(typeof r!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(r))}function jn(r){var t=r.split("?")[0];return t.split("#")[0]}function Pa(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ca(r,t,e){return r.replace(new RegExp(Pa(t),"g"),e)}function Ia(r,t){for(var e="",i=0,n=-1,s=0,a,o=0;o<=r.length;++o){if(o2){var h=e.lastIndexOf("/");if(h!==e.length-1){h===-1?(e="",i=0):(e=e.slice(0,h),i=e.length-1-e.lastIndexOf("/")),n=o,s=0;continue}}else if(e.length===2||e.length===1){e="",i=0,n=o,s=0;continue}}t&&(e.length>0?e+="/..":e="..",i=2)}else e.length>0?e+="/"+r.slice(n+1,o):e=r.slice(n+1,o),i=o-n-1;n=o,s=0}else a===46&&s!==-1?++s:s=-1}return e}var ht={toPosix:function(r){return Ca(r,"\\","/")},isUrl:function(r){return/^https?:/.test(this.toPosix(r))},isDataUrl:function(r){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(r)},hasProtocol:function(r){return/^[^/:]+:\//.test(this.toPosix(r))},getProtocol:function(r){yt(r),r=this.toPosix(r);var t="",e=/^file:\/\/\//.exec(r),i=/^[^/:]+:\/\//.exec(r),n=/^[^/:]+:\//.exec(r);if(e||i||n){var s=(e==null?void 0:e[0])||(i==null?void 0:i[0])||(n==null?void 0:n[0]);t=s,r=r.slice(s.length)}return t},toAbsolute:function(r,t,e){if(this.isDataUrl(r))return r;var i=jn(this.toPosix(t!=null?t:P.ADAPTER.getBaseUrl())),n=jn(this.toPosix(e!=null?e:this.rootname(i)));if(yt(r),r=this.toPosix(r),r.startsWith("/"))return ht.join(n,r.slice(1));var s=this.isAbsolute(r)?r:this.join(i,r);return s},normalize:function(r){if(r=this.toPosix(r),yt(r),r.length===0)return".";var t="",e=r.startsWith("/");this.hasProtocol(r)&&(t=this.rootname(r),r=r.slice(t.length));var i=r.endsWith("/");return r=Ia(r,!1),r.length>0&&i&&(r+="/"),e?"/"+r:t+r},isAbsolute:function(r){return yt(r),r=this.toPosix(r),this.hasProtocol(r)?!0:r.startsWith("/")},join:function(){for(var r=arguments,t,e=[],i=0;i0)if(n===void 0)n=a;else{var o=(t=e[s-1])!==null&&t!==void 0?t:"";this.extname(o)?n+="/../"+a:n+="/"+a}}return n===void 0?".":this.normalize(n)},dirname:function(r){if(yt(r),r.length===0)return".";r=this.toPosix(r);var t=r.charCodeAt(0),e=t===47,i=-1,n=!0,s=this.getProtocol(r),a=r;r=r.slice(s.length);for(var o=r.length-1;o>=1;--o)if(t=r.charCodeAt(o),t===47){if(!n){i=o;break}}else n=!1;return i===-1?e?"/":this.isUrl(a)?s+r:s:e&&i===1?"//":s+r.slice(0,i)},rootname:function(r){yt(r),r=this.toPosix(r);var t="";if(r.startsWith("/")?t="/":t=this.getProtocol(r),this.isUrl(r)){var e=r.indexOf("/",t.length);e!==-1?t=r.slice(0,e):t=r,t.endsWith("/")||(t+="/")}return t},basename:function(r,t){yt(r),t&&yt(t),r=this.toPosix(r);var e=0,i=-1,n=!0,s;if(t!==void 0&&t.length>0&&t.length<=r.length){if(t.length===r.length&&t===r)return"";var a=t.length-1,o=-1;for(s=r.length-1;s>=0;--s){var h=r.charCodeAt(s);if(h===47){if(!n){e=s+1;break}}else o===-1&&(n=!1,o=s+1),a>=0&&(h===t.charCodeAt(a)?--a===-1&&(i=s):(a=-1,i=o))}return e===i?i=o:i===-1&&(i=r.length),r.slice(e,i)}for(s=r.length-1;s>=0;--s)if(r.charCodeAt(s)===47){if(!n){e=s+1;break}}else i===-1&&(n=!1,i=s+1);return i===-1?"":r.slice(e,i)},extname:function(r){yt(r),r=this.toPosix(r);for(var t=-1,e=0,i=-1,n=!0,s=0,a=r.length-1;a>=0;--a){var o=r.charCodeAt(a);if(o===47){if(!n){e=a+1;break}continue}i===-1&&(n=!1,i=a+1),o===46?t===-1?t=a:s!==1&&(s=1):t!==-1&&(s=-1)}return t===-1||i===-1||s===0||s===1&&t===i-1&&t===e+1?"":r.slice(t,i)},parse:function(r){yt(r);var t={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return t;r=this.toPosix(r);var e=r.charCodeAt(0),i=this.isAbsolute(r),n;t.root=this.rootname(r),i||this.hasProtocol(r)?n=1:n=0;for(var s=-1,a=0,o=-1,h=!0,u=r.length-1,l=0;u>=n;--u){if(e=r.charCodeAt(u),e===47){if(!h){a=u+1;break}continue}o===-1&&(h=!1,o=u+1),e===46?s===-1?s=u:l!==1&&(l=1):s!==-1&&(l=-1)}return s===-1||o===-1||l===0||l===1&&s===o-1&&s===a+1?o!==-1&&(a===0&&i?t.base=t.name=r.slice(1,o):t.base=t.name=r.slice(a,o)):(a===0&&i?(t.name=r.slice(1,s),t.base=r.slice(1,o)):(t.name=r.slice(a,s),t.base=r.slice(a,o)),t.ext=r.slice(s,o)),t.dir=this.dirname(r),t},sep:"/",delimiter:":"};P.RETINA_PREFIX=/@([0-9\.]+)x/;P.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var Wn=!1,Vn="6.5.8";function Oa(r){var t;if(!Wn){if(P.ADAPTER.getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){var e=[` + %c %c %c PixiJS `+Vn+" - \u2730 "+r+` \u2730 %c %c http://www.pixijs.com/ %c %c \u2665%c\u2665%c\u2665 + +`,"background: #ff66a5; padding:5px 0;","background: #ff66a5; padding:5px 0;","color: #ff66a5; background: #030307; padding:5px 0;","background: #ff66a5; padding:5px 0;","background: #ffc3dc; padding:5px 0;","background: #ff66a5; padding:5px 0;","color: #ff2424; background: #fff; padding:5px 0;","color: #ff2424; background: #fff; padding:5px 0;","color: #ff2424; background: #fff; padding:5px 0;"];(t=globalThis.console).log.apply(t,e)}else globalThis.console&&globalThis.console.log("PixiJS "+Vn+" - "+r+" - http://www.pixijs.com/");Wn=!0}}var Jr;function Ba(){return typeof Jr=="undefined"&&(Jr=function(){var t={stencil:!0,failIfMajorPerformanceCaveat:P.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!P.ADAPTER.getWebGLRenderingContext())return!1;var e=P.ADAPTER.createCanvas(),i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),n=!!(i&&i.getContextAttributes().stencil);if(i){var s=i.getExtension("WEBGL_lose_context");s&&s.loseContext()}return i=null,n}catch{return!1}}()),Jr}var Ma="#f0f8ff",La="#faebd7",Na="#00ffff",Fa="#7fffd4",Da="#f0ffff",Ua="#f5f5dc",Ga="#ffe4c4",ka="#000000",Xa="#ffebcd",Ha="#0000ff",ja="#8a2be2",Wa="#a52a2a",Va="#deb887",Ya="#5f9ea0",za="#7fff00",qa="#d2691e",$a="#ff7f50",Ka="#6495ed",Za="#fff8dc",Qa="#dc143c",Ja="#00ffff",to="#00008b",eo="#008b8b",ro="#b8860b",io="#a9a9a9",no="#006400",so="#a9a9a9",ao="#bdb76b",oo="#8b008b",ho="#556b2f",uo="#ff8c00",lo="#9932cc",fo="#8b0000",co="#e9967a",po="#8fbc8f",vo="#483d8b",_o="#2f4f4f",mo="#2f4f4f",go="#00ced1",yo="#9400d3",bo="#ff1493",xo="#00bfff",Eo="#696969",To="#696969",wo="#1e90ff",Ao="#b22222",So="#fffaf0",Ro="#228b22",Po="#ff00ff",Co="#dcdcdc",Io="#f8f8ff",Oo="#daa520",Bo="#ffd700",Mo="#808080",Lo="#008000",No="#adff2f",Fo="#808080",Do="#f0fff0",Uo="#ff69b4",Go="#cd5c5c",ko="#4b0082",Xo="#fffff0",Ho="#f0e68c",jo="#fff0f5",Wo="#e6e6fa",Vo="#7cfc00",Yo="#fffacd",zo="#add8e6",qo="#f08080",$o="#e0ffff",Ko="#fafad2",Zo="#d3d3d3",Qo="#90ee90",Jo="#d3d3d3",th="#ffb6c1",eh="#ffa07a",rh="#20b2aa",ih="#87cefa",nh="#778899",sh="#778899",ah="#b0c4de",oh="#ffffe0",hh="#00ff00",uh="#32cd32",lh="#faf0e6",fh="#ff00ff",ch="#800000",dh="#66cdaa",ph="#0000cd",vh="#ba55d3",_h="#9370db",mh="#3cb371",gh="#7b68ee",yh="#00fa9a",bh="#48d1cc",xh="#c71585",Eh="#191970",Th="#f5fffa",wh="#ffe4e1",Ah="#ffe4b5",Sh="#ffdead",Rh="#000080",Ph="#fdf5e6",Ch="#808000",Ih="#6b8e23",Oh="#ffa500",Bh="#ff4500",Mh="#da70d6",Lh="#eee8aa",Nh="#98fb98",Fh="#afeeee",Dh="#db7093",Uh="#ffefd5",Gh="#ffdab9",kh="#cd853f",Xh="#ffc0cb",Hh="#dda0dd",jh="#b0e0e6",Wh="#800080",Vh="#663399",Yh="#ff0000",zh="#bc8f8f",qh="#4169e1",$h="#8b4513",Kh="#fa8072",Zh="#f4a460",Qh="#2e8b57",Jh="#fff5ee",tu="#a0522d",eu="#c0c0c0",ru="#87ceeb",iu="#6a5acd",nu="#708090",su="#708090",au="#fffafa",ou="#00ff7f",hu="#4682b4",uu="#d2b48c",lu="#008080",fu="#d8bfd8",cu="#ff6347",du="#40e0d0",pu="#ee82ee",vu="#f5deb3",_u="#ffffff",mu="#f5f5f5",gu="#ffff00",yu="#9acd32",bu={aliceblue:Ma,antiquewhite:La,aqua:Na,aquamarine:Fa,azure:Da,beige:Ua,bisque:Ga,black:ka,blanchedalmond:Xa,blue:Ha,blueviolet:ja,brown:Wa,burlywood:Va,cadetblue:Ya,chartreuse:za,chocolate:qa,coral:$a,cornflowerblue:Ka,cornsilk:Za,crimson:Qa,cyan:Ja,darkblue:to,darkcyan:eo,darkgoldenrod:ro,darkgray:io,darkgreen:no,darkgrey:so,darkkhaki:ao,darkmagenta:oo,darkolivegreen:ho,darkorange:uo,darkorchid:lo,darkred:fo,darksalmon:co,darkseagreen:po,darkslateblue:vo,darkslategray:_o,darkslategrey:mo,darkturquoise:go,darkviolet:yo,deeppink:bo,deepskyblue:xo,dimgray:Eo,dimgrey:To,dodgerblue:wo,firebrick:Ao,floralwhite:So,forestgreen:Ro,fuchsia:Po,gainsboro:Co,ghostwhite:Io,goldenrod:Oo,gold:Bo,gray:Mo,green:Lo,greenyellow:No,grey:Fo,honeydew:Do,hotpink:Uo,indianred:Go,indigo:ko,ivory:Xo,khaki:Ho,lavenderblush:jo,lavender:Wo,lawngreen:Vo,lemonchiffon:Yo,lightblue:zo,lightcoral:qo,lightcyan:$o,lightgoldenrodyellow:Ko,lightgray:Zo,lightgreen:Qo,lightgrey:Jo,lightpink:th,lightsalmon:eh,lightseagreen:rh,lightskyblue:ih,lightslategray:nh,lightslategrey:sh,lightsteelblue:ah,lightyellow:oh,lime:hh,limegreen:uh,linen:lh,magenta:fh,maroon:ch,mediumaquamarine:dh,mediumblue:ph,mediumorchid:vh,mediumpurple:_h,mediumseagreen:mh,mediumslateblue:gh,mediumspringgreen:yh,mediumturquoise:bh,mediumvioletred:xh,midnightblue:Eh,mintcream:Th,mistyrose:wh,moccasin:Ah,navajowhite:Sh,navy:Rh,oldlace:Ph,olive:Ch,olivedrab:Ih,orange:Oh,orangered:Bh,orchid:Mh,palegoldenrod:Lh,palegreen:Nh,paleturquoise:Fh,palevioletred:Dh,papayawhip:Uh,peachpuff:Gh,peru:kh,pink:Xh,plum:Hh,powderblue:jh,purple:Wh,rebeccapurple:Vh,red:Yh,rosybrown:zh,royalblue:qh,saddlebrown:$h,salmon:Kh,sandybrown:Zh,seagreen:Qh,seashell:Jh,sienna:tu,silver:eu,skyblue:ru,slateblue:iu,slategray:nu,slategrey:su,snow:au,springgreen:ou,steelblue:hu,tan:uu,teal:lu,thistle:fu,tomato:cu,turquoise:du,violet:pu,wheat:vu,white:_u,whitesmoke:mu,yellow:gu,yellowgreen:yu};function ze(r,t){return t===void 0&&(t=[]),t[0]=(r>>16&255)/255,t[1]=(r>>8&255)/255,t[2]=(r&255)/255,t}function Fs(r){var t=r.toString(16);return t="000000".substring(0,6-t.length)+t,"#"+t}function Ds(r){return typeof r=="string"&&(r=bu[r.toLowerCase()]||r,r[0]==="#"&&(r=r.slice(1))),parseInt(r,16)}function xu(){for(var r=[],t=[],e=0;e<32;e++)r[e]=e,t[e]=e;r[B.NORMAL_NPM]=B.NORMAL,r[B.ADD_NPM]=B.ADD,r[B.SCREEN_NPM]=B.SCREEN,t[B.NORMAL]=B.NORMAL_NPM,t[B.ADD]=B.ADD_NPM,t[B.SCREEN]=B.SCREEN_NPM;var i=[];return i.push(t),i.push(r),i}var Eu=xu();function Us(r,t){if(t===1)return(t*255<<24)+r;if(t===0)return 0;var e=r>>16&255,i=r>>8&255,n=r&255;return e=e*t+.5|0,i=i*t+.5|0,n=n*t+.5|0,(t*255<<24)+(e<<16)+(i<<8)+n}function Tu(r,t,e,i){return e=e||new Float32Array(4),e[0]=(r>>16&255)/255,e[1]=(r>>8&255)/255,e[2]=(r&255)/255,(i||i===void 0)&&(e[0]*=t,e[1]*=t,e[2]*=t),e[3]=t,e}function Gs(r){if(r.BYTES_PER_ELEMENT===4)return r instanceof Float32Array?"Float32Array":r instanceof Uint32Array?"Uint32Array":"Int32Array";if(r.BYTES_PER_ELEMENT===2){if(r instanceof Uint16Array)return"Uint16Array"}else if(r.BYTES_PER_ELEMENT===1&&r instanceof Uint8Array)return"Uint8Array";return null}function Br(r){return r+=r===0?1:0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r+1}function Yn(r){return!(r&r-1)&&!!r}function zn(r){var t=(r>65535?1:0)<<4;r>>>=t;var e=(r>255?1:0)<<3;return r>>>=e,t|=e,e=(r>15?1:0)<<2,r>>>=e,t|=e,e=(r>3?1:0)<<1,r>>>=e,t|=e,t|r>>1}function je(r,t,e){var i=r.length,n;if(!(t>=i||e===0)){e=t+e>i?i-t:e;var s=i-e;for(n=t;n8)throw new Error("max arguments reached");var u=this,l=u.name,f=u.items;this._aliasCount++;for(var c=0,d=f.length;c0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))},r.prototype.add=function(t){return t[this._name]&&(this.ensureNonAliasedItems(),this.remove(t),this.items.push(t)),this},r.prototype.remove=function(t){var e=this.items.indexOf(t);return e!==-1&&(this.ensureNonAliasedItems(),this.items.splice(e,1)),this},r.prototype.contains=function(t){return this.items.indexOf(t)!==-1},r.prototype.removeAll=function(){return this.ensureNonAliasedItems(),this.items.length=0,this},r.prototype.destroy=function(){this.removeAll(),this.items=null,this._name=null},Object.defineProperty(r.prototype,"empty",{get:function(){return this.items.length===0},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),r}();Object.defineProperties(ot.prototype,{dispatch:{value:ot.prototype.emit},run:{value:ot.prototype.emit}});/*! + * @pixi/ticker - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/ticker is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */P.TARGET_FPMS=.06;var $e;(function(r){r[r.INTERACTION=50]="INTERACTION",r[r.HIGH=25]="HIGH",r[r.NORMAL=0]="NORMAL",r[r.LOW=-25]="LOW",r[r.UTILITY=-50]="UTILITY"})($e||($e={}));var ti=function(){function r(t,e,i,n){e===void 0&&(e=null),i===void 0&&(i=0),n===void 0&&(n=!1),this.next=null,this.previous=null,this._destroyed=!1,this.fn=t,this.context=e,this.priority=i,this.once=n}return r.prototype.match=function(t,e){return e===void 0&&(e=null),this.fn===t&&this.context===e},r.prototype.emit=function(t){this.fn&&(this.context?this.fn.call(this.context,t):this.fn(t));var e=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),e},r.prototype.connect=function(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this},r.prototype.destroy=function(t){t===void 0&&(t=!1),this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);var e=this.next;return this.next=t?null:e,this.previous=null,e},r}(),Xt=function(){function r(){var t=this;this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new ti(null,null,1/0),this.deltaMS=1/P.TARGET_FPMS,this.elapsedMS=1/P.TARGET_FPMS,this._tick=function(e){t._requestId=null,t.started&&(t.update(e),t.started&&t._requestId===null&&t._head.next&&(t._requestId=requestAnimationFrame(t._tick)))}}return r.prototype._requestIfNeeded=function(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))},r.prototype._cancelIfNeeded=function(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)},r.prototype._startIfPossible=function(){this.started?this._requestIfNeeded():this.autoStart&&this.start()},r.prototype.add=function(t,e,i){return i===void 0&&(i=$e.NORMAL),this._addListener(new ti(t,e,i))},r.prototype.addOnce=function(t,e,i){return i===void 0&&(i=$e.NORMAL),this._addListener(new ti(t,e,i,!0))},r.prototype._addListener=function(t){var e=this._head.next,i=this._head;if(!e)t.connect(i);else{for(;e;){if(t.priority>e.priority){t.connect(i);break}i=e,e=e.next}t.previous||t.connect(i)}return this._startIfPossible(),this},r.prototype.remove=function(t,e){for(var i=this._head.next;i;)i.match(t,e)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this},Object.defineProperty(r.prototype,"count",{get:function(){if(!this._head)return 0;for(var t=0,e=this._head;e=e.next;)t++;return t},enumerable:!1,configurable:!0}),r.prototype.start=function(){this.started||(this.started=!0,this._requestIfNeeded())},r.prototype.stop=function(){this.started&&(this.started=!1,this._cancelIfNeeded())},r.prototype.destroy=function(){if(!this._protected){this.stop();for(var t=this._head.next;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}},r.prototype.update=function(t){t===void 0&&(t=performance.now());var e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){var i=t-this._lastFrame|0;if(i=this.x&&t=this.y&&et.right?t.right:this.right;if(n<=i)return!1;var s=this.yt.bottom?t.bottom:this.bottom;return a>s}var o=this.left,h=this.right,u=this.top,l=this.bottom;if(h<=o||l<=u)return!1;var f=hr[0].set(t.left,t.top),c=hr[1].set(t.left,t.bottom),d=hr[2].set(t.right,t.top),p=hr[3].set(t.right,t.bottom);if(d.x<=f.x||c.y<=f.y)return!1;var v=Math.sign(e.a*e.d-e.b*e.c);if(v===0||(e.apply(f,f),e.apply(c,c),e.apply(d,d),e.apply(p,p),Math.max(f.x,c.x,d.x,p.x)<=o||Math.min(f.x,c.x,d.x,p.x)>=h||Math.max(f.y,c.y,d.y,p.y)<=u||Math.min(f.y,c.y,d.y,p.y)>=l))return!1;var _=v*(c.y-f.y),m=v*(f.x-c.x),x=_*o+m*u,E=_*h+m*u,w=_*o+m*l,y=_*h+m*l;if(Math.max(x,E,w,y)<=_*f.x+m*f.y||Math.min(x,E,w,y)>=_*p.x+m*p.y)return!1;var b=v*(f.y-d.y),g=v*(d.x-f.x),A=b*o+g*u,T=b*h+g*u,R=b*o+g*l,O=b*h+g*l;return!(Math.max(A,T,R,O)<=b*f.x+g*f.y||Math.min(A,T,R,O)>=b*p.x+g*p.y)},r.prototype.pad=function(t,e){return t===void 0&&(t=0),e===void 0&&(e=t),this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this},r.prototype.fit=function(t){var e=Math.max(this.x,t.x),i=Math.min(this.x+this.width,t.x+t.width),n=Math.max(this.y,t.y),s=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(i-e,0),this.y=n,this.height=Math.max(s-n,0),this},r.prototype.ceil=function(t,e){t===void 0&&(t=1),e===void 0&&(e=.001);var i=Math.ceil((this.x+this.width-e)*t)/t,n=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=i-this.x,this.height=n-this.y,this},r.prototype.enlarge=function(t){var e=Math.min(this.x,t.x),i=Math.max(this.x+this.width,t.x+t.width),n=Math.min(this.y,t.y),s=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=i-e,this.y=n,this.height=s-n,this},r.prototype.toString=function(){return"[@pixi/math:Rectangle x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+"]"},r}(),Cu=function(){function r(t,e,i){t===void 0&&(t=0),e===void 0&&(e=0),i===void 0&&(i=0),this.x=t,this.y=e,this.radius=i,this.type=at.CIRC}return r.prototype.clone=function(){return new r(this.x,this.y,this.radius)},r.prototype.contains=function(t,e){if(this.radius<=0)return!1;var i=this.radius*this.radius,n=this.x-t,s=this.y-e;return n*=n,s*=s,n+s<=i},r.prototype.getBounds=function(){return new W(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)},r.prototype.toString=function(){return"[@pixi/math:Circle x="+this.x+" y="+this.y+" radius="+this.radius+"]"},r}(),Iu=function(){function r(t,e,i,n){t===void 0&&(t=0),e===void 0&&(e=0),i===void 0&&(i=0),n===void 0&&(n=0),this.x=t,this.y=e,this.width=i,this.height=n,this.type=at.ELIP}return r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.contains=function(t,e){if(this.width<=0||this.height<=0)return!1;var i=(t-this.x)/this.width,n=(e-this.y)/this.height;return i*=i,n*=n,i+n<=1},r.prototype.getBounds=function(){return new W(this.x-this.width,this.y-this.height,this.width,this.height)},r.prototype.toString=function(){return"[@pixi/math:Ellipse x="+this.x+" y="+this.y+" width="+this.width+" height="+this.height+"]"},r}(),Sr=function(){function r(){for(var t=arguments,e=[],i=0;ie!=l>e&&t<(u-o)*((e-h)/(l-h))+o;f&&(i=!i)}return i},r.prototype.toString=function(){return"[@pixi/math:Polygon"+("closeStroke="+this.closeStroke)+("points="+this.points.reduce(function(t,e){return t+", "+e},"")+"]")},r}(),Ou=function(){function r(t,e,i,n,s){t===void 0&&(t=0),e===void 0&&(e=0),i===void 0&&(i=0),n===void 0&&(n=0),s===void 0&&(s=20),this.x=t,this.y=e,this.width=i,this.height=n,this.radius=s,this.type=at.RREC}return r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height,this.radius)},r.prototype.contains=function(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){var i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+i&&e<=this.y+this.height-i||t>=this.x+i&&t<=this.x+this.width-i)return!0;var n=t-(this.x+i),s=e-(this.y+i),a=i*i;if(n*n+s*s<=a||(n=t-(this.x+this.width-i),n*n+s*s<=a)||(s=e-(this.y+this.height-i),n*n+s*s<=a)||(n=t-(this.x+i),n*n+s*s<=a))return!0}return!1},r.prototype.toString=function(){return"[@pixi/math:RoundedRectangle x="+this.x+" y="+this.y+("width="+this.width+" height="+this.height+" radius="+this.radius+"]")},r}(),Ie=function(){function r(t,e,i,n){i===void 0&&(i=0),n===void 0&&(n=0),this._x=i,this._y=n,this.cb=t,this.scope=e}return r.prototype.clone=function(t,e){return t===void 0&&(t=this.cb),e===void 0&&(e=this.scope),new r(t,e,this._x,this._y)},r.prototype.set=function(t,e){return t===void 0&&(t=0),e===void 0&&(e=t),(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this.cb.call(this.scope)),this},r.prototype.copyFrom=function(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this.cb.call(this.scope)),this},r.prototype.copyTo=function(t){return t.set(this._x,this._y),t},r.prototype.equals=function(t){return t.x===this._x&&t.y===this._y},r.prototype.toString=function(){return"[@pixi/math:ObservablePoint x="+0+" y="+0+" scope="+this.scope+"]"},Object.defineProperty(r.prototype,"x",{get:function(){return this._x},set:function(t){this._x!==t&&(this._x=t,this.cb.call(this.scope))},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"y",{get:function(){return this._y},set:function(t){this._y!==t&&(this._y=t,this.cb.call(this.scope))},enumerable:!1,configurable:!0}),r}(),dt=function(){function r(t,e,i,n,s,a){t===void 0&&(t=1),e===void 0&&(e=0),i===void 0&&(i=0),n===void 0&&(n=1),s===void 0&&(s=0),a===void 0&&(a=0),this.array=null,this.a=t,this.b=e,this.c=i,this.d=n,this.tx=s,this.ty=a}return r.prototype.fromArray=function(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]},r.prototype.set=function(t,e,i,n,s,a){return this.a=t,this.b=e,this.c=i,this.d=n,this.tx=s,this.ty=a,this},r.prototype.toArray=function(t,e){this.array||(this.array=new Float32Array(9));var i=e||this.array;return t?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i},r.prototype.apply=function(t,e){e=e||new q;var i=t.x,n=t.y;return e.x=this.a*i+this.c*n+this.tx,e.y=this.b*i+this.d*n+this.ty,e},r.prototype.applyInverse=function(t,e){e=e||new q;var i=1/(this.a*this.d+this.c*-this.b),n=t.x,s=t.y;return e.x=this.d*i*n+-this.c*i*s+(this.ty*this.c-this.tx*this.d)*i,e.y=this.a*i*s+-this.b*i*n+(-this.ty*this.a+this.tx*this.b)*i,e},r.prototype.translate=function(t,e){return this.tx+=t,this.ty+=e,this},r.prototype.scale=function(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this},r.prototype.rotate=function(t){var e=Math.cos(t),i=Math.sin(t),n=this.a,s=this.c,a=this.tx;return this.a=n*e-this.b*i,this.b=n*i+this.b*e,this.c=s*e-this.d*i,this.d=s*i+this.d*e,this.tx=a*e-this.ty*i,this.ty=a*i+this.ty*e,this},r.prototype.append=function(t){var e=this.a,i=this.b,n=this.c,s=this.d;return this.a=t.a*e+t.b*n,this.b=t.a*i+t.b*s,this.c=t.c*e+t.d*n,this.d=t.c*i+t.d*s,this.tx=t.tx*e+t.ty*n+this.tx,this.ty=t.tx*i+t.ty*s+this.ty,this},r.prototype.setTransform=function(t,e,i,n,s,a,o,h,u){return this.a=Math.cos(o+u)*s,this.b=Math.sin(o+u)*s,this.c=-Math.sin(o-h)*a,this.d=Math.cos(o-h)*a,this.tx=t-(i*this.a+n*this.c),this.ty=e-(i*this.b+n*this.d),this},r.prototype.prepend=function(t){var e=this.tx;if(t.a!==1||t.b!==0||t.c!==0||t.d!==1){var i=this.a,n=this.c;this.a=i*t.a+this.b*t.c,this.b=i*t.b+this.b*t.d,this.c=n*t.a+this.d*t.c,this.d=n*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this},r.prototype.decompose=function(t){var e=this.a,i=this.b,n=this.c,s=this.d,a=t.pivot,o=-Math.atan2(-n,s),h=Math.atan2(i,e),u=Math.abs(o+h);return u<1e-5||Math.abs(Mr-u)<1e-5?(t.rotation=h,t.skew.x=t.skew.y=0):(t.rotation=0,t.skew.x=o,t.skew.y=h),t.scale.x=Math.sqrt(e*e+i*i),t.scale.y=Math.sqrt(n*n+s*s),t.position.x=this.tx+(a.x*e+a.y*n),t.position.y=this.ty+(a.x*i+a.y*s),t},r.prototype.invert=function(){var t=this.a,e=this.b,i=this.c,n=this.d,s=this.tx,a=t*n-e*i;return this.a=n/a,this.b=-e/a,this.c=-i/a,this.d=t/a,this.tx=(i*this.ty-n*s)/a,this.ty=-(t*this.ty-e*s)/a,this},r.prototype.identity=function(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this},r.prototype.clone=function(){var t=new r;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t},r.prototype.copyTo=function(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t},r.prototype.copyFrom=function(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this},r.prototype.toString=function(){return"[@pixi/math:Matrix a="+this.a+" b="+this.b+" c="+this.c+" d="+this.d+" tx="+this.tx+" ty="+this.ty+"]"},Object.defineProperty(r,"IDENTITY",{get:function(){return new r},enumerable:!1,configurable:!0}),Object.defineProperty(r,"TEMP_MATRIX",{get:function(){return new r},enumerable:!1,configurable:!0}),r}(),ue=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],le=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],fe=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],ce=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Ci=[],ks=[],ur=Math.sign;function Bu(){for(var r=0;r<16;r++){var t=[];Ci.push(t);for(var e=0;e<16;e++)for(var i=ur(ue[r]*ue[e]+fe[r]*le[e]),n=ur(le[r]*ue[e]+ce[r]*le[e]),s=ur(ue[r]*fe[e]+fe[r]*ce[e]),a=ur(le[r]*fe[e]+ce[r]*ce[e]),o=0;o<16;o++)if(ue[o]===i&&le[o]===n&&fe[o]===s&&ce[o]===a){t.push(o);break}}for(var r=0;r<16;r++){var h=new dt;h.set(ue[r],le[r],fe[r],ce[r],0,0),ks.push(h)}}Bu();var tt={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:function(r){return ue[r]},uY:function(r){return le[r]},vX:function(r){return fe[r]},vY:function(r){return ce[r]},inv:function(r){return r&8?r&15:-r&7},add:function(r,t){return Ci[r][t]},sub:function(r,t){return Ci[r][tt.inv(t)]},rotate180:function(r){return r^4},isVertical:function(r){return(r&3)===2},byDirection:function(r,t){return Math.abs(r)*2<=Math.abs(t)?t>=0?tt.S:tt.N:Math.abs(t)*2<=Math.abs(r)?r>0?tt.E:tt.W:t>0?r>0?tt.SE:tt.SW:r>0?tt.NE:tt.NW},matrixAppendRotationInv:function(r,t,e,i){e===void 0&&(e=0),i===void 0&&(i=0);var n=ks[tt.inv(t)];n.tx=e,n.ty=i,r.append(n)}},Mu=function(){function r(){this.worldTransform=new dt,this.localTransform=new dt,this.position=new Ie(this.onChange,this,0,0),this.scale=new Ie(this.onChange,this,1,1),this.pivot=new Ie(this.onChange,this,0,0),this.skew=new Ie(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}return r.prototype.onChange=function(){this._localID++},r.prototype.updateSkew=function(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++},r.prototype.toString=function(){return"[@pixi/math:Transform "+("position=("+this.position.x+", "+this.position.y+") ")+("rotation="+this.rotation+" ")+("scale=("+this.scale.x+", "+this.scale.y+") ")+("skew=("+this.skew.x+", "+this.skew.y+") ")+"]"},r.prototype.updateLocalTransform=function(){var t=this.localTransform;this._localID!==this._currentLocalID&&(t.a=this._cx*this.scale.x,t.b=this._sx*this.scale.x,t.c=this._cy*this.scale.y,t.d=this._sy*this.scale.y,t.tx=this.position.x-(this.pivot.x*t.a+this.pivot.y*t.c),t.ty=this.position.y-(this.pivot.x*t.b+this.pivot.y*t.d),this._currentLocalID=this._localID,this._parentID=-1)},r.prototype.updateTransform=function(t){var e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==t._worldID){var i=t.worldTransform,n=this.worldTransform;n.a=e.a*i.a+e.b*i.c,n.b=e.a*i.b+e.b*i.d,n.c=e.c*i.a+e.d*i.c,n.d=e.c*i.b+e.d*i.d,n.tx=e.tx*i.a+e.ty*i.c+i.tx,n.ty=e.tx*i.b+e.ty*i.d+i.ty,this._parentID=t._worldID,this._worldID++}},r.prototype.setFromMatrix=function(t){t.decompose(this),this._localID++},Object.defineProperty(r.prototype,"rotation",{get:function(){return this._rotation},set:function(t){this._rotation!==t&&(this._rotation=t,this.updateSkew())},enumerable:!1,configurable:!0}),r.IDENTITY=new r,r}();/*! + * @pixi/core - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/core is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */P.PREFER_ENV=de.any?zt.WEBGL:zt.WEBGL2;P.STRICT_TEXTURE_CACHE=!1;var Ii=[];function Xs(r,t){if(!r)return null;var e="";if(typeof r=="string"){var i=/\.(\w{3,4})(?:$|\?|#)/i.exec(r);i&&(e=i[1].toLowerCase())}for(var n=Ii.length-1;n>=0;--n){var s=Ii[n];if(s.test&&s.test(r,e))return new s(r,t)}throw new Error("Unrecognized source type to auto-detect Resource")}/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Oi=function(r,t){return Oi=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])},Oi(r,t)};function Z(r,t){Oi(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var Bi=function(){return Bi=Object.assign||function(t){for(var e=arguments,i,n=1,s=arguments.length;n0&&l>0,n.textureCacheIds=[],n.destroyed=!1,n.resource=null,n._batchEnabled=0,n._batchLocation=0,n.parentTextureArray=null,n.setResource(e),n}return Object.defineProperty(t.prototype,"realWidth",{get:function(){return Math.round(this.width*this.resolution)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"realHeight",{get:function(){return Math.round(this.height*this.resolution)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"mipmap",{get:function(){return this._mipmap},set:function(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"scaleMode",{get:function(){return this._scaleMode},set:function(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"wrapMode",{get:function(){return this._wrapMode},set:function(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)},enumerable:!1,configurable:!0}),t.prototype.setStyle=function(e,i){var n;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,n=!0),i!==void 0&&i!==this.mipmap&&(this.mipmap=i,n=!0),n&&this.dirtyStyleId++,this},t.prototype.setSize=function(e,i,n){return n=n||this.resolution,this.setRealSize(e*n,i*n,n)},t.prototype.setRealSize=function(e,i,n){return this.resolution=n||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(i)/this.resolution,this._refreshPOT(),this.update(),this},t.prototype._refreshPOT=function(){this.isPowerOfTwo=Yn(this.realWidth)&&Yn(this.realHeight)},t.prototype.setResolution=function(e){var i=this.resolution;return i===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*i)/e,this.height=Math.round(this.height*i)/e,this.emit("update",this)),this._refreshPOT(),this)},t.prototype.setResource=function(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this},t.prototype.update=function(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))},t.prototype.onError=function(e){this.emit("error",this,e)},t.prototype.destroy=function(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete ie[this.cacheId],delete Ut[this.cacheId],this.cacheId=null),this.dispose(),t.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0},t.prototype.dispose=function(){this.emit("dispose",this)},t.prototype.castToBaseTexture=function(){return this},t.from=function(e,i,n){n===void 0&&(n=P.STRICT_TEXTURE_CACHE);var s=typeof e=="string",a=null;if(s)a=e;else{if(!e._pixiId){var o=i&&i.pixiIdPrefix||"pixiid";e._pixiId=o+"_"+qe()}a=e._pixiId}var h=ie[a];if(s&&n&&!h)throw new Error('The cacheId "'+a+'" does not exist in BaseTextureCache.');return h||(h=new t(e,i),h.cacheId=a,t.addToCache(h,a)),h},t.fromBuffer=function(e,i,n,s){e=e||new Float32Array(i*n*4);var a=new _e(e,{width:i,height:n}),o=e instanceof Float32Array?M.FLOAT:M.UNSIGNED_BYTE;return new t(a,Object.assign({},Nu,s||{width:i,height:n,type:o}))},t.addToCache=function(e,i){i&&(e.textureCacheIds.indexOf(i)===-1&&e.textureCacheIds.push(i),ie[i]&&console.warn("BaseTexture added to the cache with an id ["+i+"] that already had an entry"),ie[i]=e)},t.removeFromCache=function(e){if(typeof e=="string"){var i=ie[e];if(i){var n=i.textureCacheIds.indexOf(e);return n>-1&&i.textureCacheIds.splice(n,1),delete ie[e],i}}else if(e&&e.textureCacheIds){for(var s=0;s0)if(e.resource)this.addResourceAt(e.resource,i);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=pe.TEXTURE_CUBE_MAP_POSITIVE_X+i,e.parentTextureArray=this.baseTexture,this.items[i]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[i]=e,this},t.prototype.upload=function(e,i,n){for(var s=this.itemDirtyIds,a=0;a)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i,t}(ee),Gu=function(r){Z(t,r);function t(e,i){var n=this;if(i=i||{},!(e instanceof HTMLVideoElement)){var s=document.createElement("video");s.setAttribute("preload","auto"),s.setAttribute("webkit-playsinline",""),s.setAttribute("playsinline",""),typeof e=="string"&&(e=[e]);var a=e[0].src||e[0];ee.crossOrigin(s,a,i.crossorigin);for(var o=0;o2},t.prototype._onPlayStart=function(){this.valid||this._onCanPlay(),this.autoUpdate&&!this._isConnectedToTicker&&(Xt.shared.add(this.update,this),this._isConnectedToTicker=!0)},t.prototype._onPlayStop=function(){this._isConnectedToTicker&&(Xt.shared.remove(this.update,this),this._isConnectedToTicker=!1)},t.prototype._onCanPlay=function(){var e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);var i=this.valid;this.resize(e.videoWidth,e.videoHeight),!i&&this._resolve&&(this._resolve(this),this._resolve=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()},t.prototype.dispose=function(){this._isConnectedToTicker&&(Xt.shared.remove(this.update,this),this._isConnectedToTicker=!1);var e=this.source;e&&(e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),r.prototype.dispose.call(this)},Object.defineProperty(t.prototype,"autoUpdate",{get:function(){return this._autoUpdate},set:function(e){e!==this._autoUpdate&&(this._autoUpdate=e,!this._autoUpdate&&this._isConnectedToTicker?(Xt.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._isSourcePlaying()&&(Xt.shared.add(this.update,this),this._isConnectedToTicker=!0))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"updateFPS",{get:function(){return this._updateFPS},set:function(e){e!==this._updateFPS&&(this._updateFPS=e)},enumerable:!1,configurable:!0}),t.test=function(e,i){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||t.TYPES.indexOf(i)>-1},t.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],t.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"},t}(ee),ku=function(r){Z(t,r);function t(e){return r.call(this,e)||this}return t.test=function(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap},t}(ee);Ii.push(js,ku,Du,Gu,Mi,_e,Uu,Fu);var Xu=function(r){Z(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.upload=function(e,i,n){var s=e.gl;s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.alphaMode===ct.UNPACK);var a=i.realWidth,o=i.realHeight;return n.width===a&&n.height===o?s.texSubImage2D(i.target,0,0,0,a,o,i.format,n.type,this.data):(n.width=a,n.height=o,s.texImage2D(i.target,0,n.internalFormat,a,o,0,i.format,n.type,this.data)),!0},t}(_e),Li=function(){function r(t,e){this.width=Math.round(t||100),this.height=Math.round(e||100),this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new ot("disposeFramebuffer"),this.multisample=rt.NONE}return Object.defineProperty(r.prototype,"colorTexture",{get:function(){return this.colorTextures[0]},enumerable:!1,configurable:!0}),r.prototype.addColorTexture=function(t,e){return t===void 0&&(t=0),this.colorTextures[t]=e||new X(null,{scaleMode:It.NEAREST,resolution:1,mipmap:ut.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this},r.prototype.addDepthTexture=function(t){return this.depthTexture=t||new X(new Xu(null,{width:this.width,height:this.height}),{scaleMode:It.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:ut.OFF,format:S.DEPTH_COMPONENT,type:M.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this},r.prototype.enableDepth=function(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this},r.prototype.enableStencil=function(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this},r.prototype.resize=function(t,e){if(t=Math.round(t),e=Math.round(e),!(t===this.width&&e===this.height)){this.width=t,this.height=e,this.dirtyId++,this.dirtySize++;for(var i=0;i-1&&i.textureCacheIds.splice(n,1),delete Ut[e],i}}else if(e&&e.textureCacheIds){for(var s=0;sthis.baseTexture.width,h=n+a>this.baseTexture.height;if(o||h){var u=o&&h?"and":"or",l="X: "+i+" + "+s+" = "+(i+s)+" > "+this.baseTexture.width,f="Y: "+n+" + "+a+" = "+(n+a)+" > "+this.baseTexture.height;throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: "+(l+" "+u+" "+f))}this.valid=s&&a&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rotate",{get:function(){return this._rotate},set:function(e){this._rotate=e,this.valid&&this.updateUvs()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.orig.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.orig.height},enumerable:!1,configurable:!0}),t.prototype.castToBaseTexture=function(){return this.baseTexture},Object.defineProperty(t,"EMPTY",{get:function(){return t._EMPTY||(t._EMPTY=new t(new X),lr(t._EMPTY),lr(t._EMPTY.baseTexture)),t._EMPTY},enumerable:!1,configurable:!0}),Object.defineProperty(t,"WHITE",{get:function(){if(!t._WHITE){var e=P.ADAPTER.createCanvas(16,16),i=e.getContext("2d");e.width=16,e.height=16,i.fillStyle="white",i.fillRect(0,0,16,16),t._WHITE=new t(X.from(e)),lr(t._WHITE),lr(t._WHITE.baseTexture)}return t._WHITE},enumerable:!1,configurable:!0}),t}(Vr),$i=function(r){Z(t,r);function t(e,i){var n=r.call(this,e,i)||this;return n.valid=!0,n.filterFrame=null,n.filterPoolKey=null,n.updateUvs(),n}return Object.defineProperty(t.prototype,"framebuffer",{get:function(){return this.baseTexture.framebuffer},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"multisample",{get:function(){return this.framebuffer.multisample},set:function(e){this.framebuffer.multisample=e},enumerable:!1,configurable:!0}),t.prototype.resize=function(e,i,n){n===void 0&&(n=!0);var s=this.baseTexture.resolution,a=Math.round(e*s)/s,o=Math.round(i*s)/s;this.valid=a>0&&o>0,this._frame.width=this.orig.width=a,this._frame.height=this.orig.height=o,n&&this.baseTexture.resize(a,o),this.updateUvs()},t.prototype.setResolution=function(e){var i=this.baseTexture;i.resolution!==e&&(i.setResolution(e),this.resize(i.width,i.height,!1))},t.create=function(e){for(var i=arguments,n=[],s=1;s>>0,n>1&&(s+=n*4294967296)):s=n>1?-n:-1,this.texturePool[s]||(this.texturePool[s]=[]);var a=this.texturePool[s].pop();return a||(a=this.createTexture(t,e,n)),a.filterPoolKey=s,a.setResolution(i),a},r.prototype.getFilterTexture=function(t,e,i){var n=this.getOptimalTexture(t.width,t.height,e||t.resolution,i||rt.NONE);return n.filterFrame=t.filterFrame,n},r.prototype.returnTexture=function(t){var e=t.filterPoolKey;t.filterFrame=null,this.texturePool[e].push(t)},r.prototype.returnFilterTexture=function(t){this.returnTexture(t)},r.prototype.clear=function(t){if(t=t!==!1,t)for(var e in this.texturePool){var i=this.texturePool[e];if(i)for(var n=0;n0&&t.height>0;for(var e in this.texturePool)if(Number(e)<0){var i=this.texturePool[e];if(i)for(var n=0;n1){for(var l=0;l1&&(f=this.getOptimalFilterTexture(l.width,l.height,e.resolution),f.filterFrame=l.filterFrame),i[c].apply(this,l,f,Qt.CLEAR,e);var d=l;l=f,f=d}i[c].apply(this,l,u.renderTexture,Qt.BLEND,e),c>1&&e.multisample>1&&this.returnFilterTexture(e.renderTexture),this.returnFilterTexture(l),this.returnFilterTexture(f)}e.clear(),this.statePool.push(e)},r.prototype.bindAndClear=function(t,e){e===void 0&&(e=Qt.CLEAR);var i=this.renderer,n=i.renderTexture,s=i.state;if(t===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,t&&t.filterFrame){var a=this.tempRect;a.x=0,a.y=0,a.width=t.filterFrame.width,a.height=t.filterFrame.height,n.bind(t,t.filterFrame,a)}else t!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?n.bind(t):this.renderer.renderTexture.bind(t,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);var o=s.stateId&1||this.forceClear;(e===Qt.CLEAR||e===Qt.BLIT&&o)&&this.renderer.framebuffer.clear(0,0,0,0)},r.prototype.applyFilter=function(t,e,i,n){var s=this.renderer;s.state.set(t.state),this.bindAndClear(i,n),t.uniforms.uSampler=e,t.uniforms.filterGlobals=this.globalUniforms,s.shader.bind(t),t.legacy=!!t.program.attributeData.aTextureCoord,t.legacy?(this.quadUv.map(e._frame,e.filterFrame),s.geometry.bind(this.quadUv),s.geometry.draw(Tt.TRIANGLES)):(s.geometry.bind(this.quad),s.geometry.draw(Tt.TRIANGLE_STRIP))},r.prototype.calculateSpriteMatrix=function(t,e){var i=this.activeState,n=i.sourceFrame,s=i.destinationFrame,a=e._texture.orig,o=t.set(s.width,0,0,s.height,n.x,n.y),h=e.worldTransform.copyTo(dt.TEMP_MATRIX);return h.invert(),o.prepend(h),o.scale(1/a.width,1/a.height),o.translate(e.anchor.x,e.anchor.y),o},r.prototype.destroy=function(){this.renderer=null,this.texturePool.clear(!1)},r.prototype.getOptimalFilterTexture=function(t,e,i,n){return i===void 0&&(i=1),n===void 0&&(n=rt.NONE),this.texturePool.getOptimalTexture(t,e,i,n)},r.prototype.getFilterTexture=function(t,e,i){if(typeof t=="number"){var n=t;t=e,e=n}t=t||this.activeState.renderTexture;var s=this.texturePool.getOptimalTexture(t.width,t.height,e||t.resolution,i||rt.NONE);return s.filterFrame=t.filterFrame,s},r.prototype.returnFilterTexture=function(t){this.texturePool.returnTexture(t)},r.prototype.emptyPool=function(){this.texturePool.clear(!0)},r.prototype.resize=function(){this.texturePool.setScreenSize(this.renderer.view)},r.prototype.transformAABB=function(t,e){var i=fr[0],n=fr[1],s=fr[2],a=fr[3];i.set(e.left,e.top),n.set(e.left,e.bottom),s.set(e.right,e.top),a.set(e.right,e.bottom),t.apply(i,i),t.apply(n,n),t.apply(s,s),t.apply(a,a);var o=Math.min(i.x,n.x,s.x,a.x),h=Math.min(i.y,n.y,s.y,a.y),u=Math.max(i.x,n.x,s.x,a.x),l=Math.max(i.y,n.y,s.y,a.y);e.x=o,e.y=h,e.width=u-o,e.height=l-h},r.prototype.roundFrame=function(t,e,i,n,s){if(!(t.width<=0||t.height<=0||i.width<=0||i.height<=0)){if(s){var a=s.a,o=s.b,h=s.c,u=s.d;if((Math.abs(o)>1e-4||Math.abs(h)>1e-4)&&(Math.abs(a)>1e-4||Math.abs(u)>1e-4))return}s=s?ei.copyFrom(s):ei.identity(),s.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.transformAABB(s,t),t.ceil(e),this.transformAABB(s.invert(),t)}},r}(),Ys=function(){function r(t){this.renderer=t}return r.prototype.flush=function(){},r.prototype.destroy=function(){this.renderer=null},r.prototype.start=function(){},r.prototype.stop=function(){this.flush()},r.prototype.render=function(t){},r}(),Ju=function(){function r(t){this.renderer=t,this.emptyRenderer=new Ys(t),this.currentRenderer=this.emptyRenderer}return r.prototype.setObjectRenderer=function(t){this.currentRenderer!==t&&(this.currentRenderer.stop(),this.currentRenderer=t,this.currentRenderer.start())},r.prototype.flush=function(){this.setObjectRenderer(this.emptyRenderer)},r.prototype.reset=function(){this.setObjectRenderer(this.emptyRenderer)},r.prototype.copyBoundTextures=function(t,e){for(var i=this.renderer.texture.boundTextures,n=e-1;n>=0;--n)t[n]=i[n]||null,t[n]&&(t[n]._batchLocation=n)},r.prototype.boundArray=function(t,e,i,n){for(var s=t.elements,a=t.ids,o=t.count,h=0,u=0;u=0&&f=zt.WEBGL2&&(i=t.getContext("webgl2",e)),i)this.webGLVersion=2;else if(this.webGLVersion=1,i=t.getContext("webgl",e)||t.getContext("experimental-webgl",e),!i)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=i,this.getExtensions(),this.gl},r.prototype.getExtensions=function(){var t=this.gl,e={anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc")};this.webGLVersion===1?Object.assign(this.extensions,e,{drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),loseContext:t.getExtension("WEBGL_lose_context"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,e,{colorBufferFloat:t.getExtension("EXT_color_buffer_float")})},r.prototype.handleContextLost=function(t){t.preventDefault()},r.prototype.handleContextRestored=function(){this.renderer.runners.contextChange.emit(this.gl)},r.prototype.destroy=function(){var t=this.renderer.view;this.renderer=null,t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()},r.prototype.postrender=function(){this.renderer.renderingToScreen&&this.gl.flush()},r.prototype.validateContext=function(t){var e=t.getContextAttributes(),i="WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext;i&&(this.webGLVersion=2),e&&!e.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");var n=i||!!t.getExtension("OES_element_index_uint");this.supports.uint32Indices=n,n||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")},r}(),el=function(){function r(t){this.framebuffer=t,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=rt.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}return r}(),rl=new W,il=function(){function r(t){this.renderer=t,this.managedFramebuffers=[],this.unknownFramebuffer=new Li(10,10),this.msaaSamples=null}return r.prototype.contextChange=function(){var t=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new W,this.hasMRT=!0,this.writeDepthTexture=!0,this.disposeAll(!0),this.renderer.context.webGLVersion===1){var e=this.renderer.context.extensions.drawBuffers,i=this.renderer.context.extensions.depthTexture;P.PREFER_ENV===zt.WEBGL_LEGACY&&(e=null,i=null),e?t.drawBuffers=function(n){return e.drawBuffersWEBGL(n)}:(this.hasMRT=!1,t.drawBuffers=function(){}),i||(this.writeDepthTexture=!1)}else this.msaaSamples=t.getInternalformatParameter(t.RENDERBUFFER,t.RGBA8,t.SAMPLES)},r.prototype.bind=function(t,e,i){i===void 0&&(i=0);var n=this.gl;if(t){var s=t.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(t);this.current!==t&&(this.current=t,n.bindFramebuffer(n.FRAMEBUFFER,s.framebuffer)),s.mipLevel!==i&&(t.dirtyId++,t.dirtyFormat++,s.mipLevel=i),s.dirtyId!==t.dirtyId&&(s.dirtyId=t.dirtyId,s.dirtyFormat!==t.dirtyFormat?(s.dirtyFormat=t.dirtyFormat,s.dirtySize=t.dirtySize,this.updateFramebuffer(t,i)):s.dirtySize!==t.dirtySize&&(s.dirtySize=t.dirtySize,this.resizeFramebuffer(t)));for(var a=0;a>i,u=e.height>>i,l=h/e.width;this.setViewport(e.x*l,e.y*l,h,u)}else{var h=t.width>>i,u=t.height>>i;this.setViewport(0,0,h,u)}}else this.current&&(this.current=null,n.bindFramebuffer(n.FRAMEBUFFER,null)),e?this.setViewport(e.x,e.y,e.width,e.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)},r.prototype.setViewport=function(t,e,i,n){var s=this.viewport;t=Math.round(t),e=Math.round(e),i=Math.round(i),n=Math.round(n),(s.width!==i||s.height!==n||s.x!==t||s.y!==e)&&(s.x=t,s.y=e,s.width=i,s.height=n,this.gl.viewport(t,e,i,n))},Object.defineProperty(r.prototype,"size",{get:function(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}},enumerable:!1,configurable:!0}),r.prototype.clear=function(t,e,i,n,s){s===void 0&&(s=Cr.COLOR|Cr.DEPTH);var a=this.gl;a.clearColor(t,e,i,n),a.clear(s)},r.prototype.initFramebuffer=function(t){var e=this.gl,i=new el(e.createFramebuffer());return i.multisample=this.detectSamples(t.multisample),t.glFramebuffers[this.CONTEXT_UID]=i,this.managedFramebuffers.push(t),t.disposeRunner.add(this),i},r.prototype.resizeFramebuffer=function(t){var e=this.gl,i=t.glFramebuffers[this.CONTEXT_UID];i.msaaBuffer&&(e.bindRenderbuffer(e.RENDERBUFFER,i.msaaBuffer),e.renderbufferStorageMultisample(e.RENDERBUFFER,i.multisample,e.RGBA8,t.width,t.height)),i.stencil&&(e.bindRenderbuffer(e.RENDERBUFFER,i.stencil),i.msaaBuffer?e.renderbufferStorageMultisample(e.RENDERBUFFER,i.multisample,e.DEPTH24_STENCIL8,t.width,t.height):e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,t.width,t.height));var n=t.colorTextures,s=n.length;e.drawBuffers||(s=Math.min(s,1));for(var a=0;a1&&this.canMultisampleFramebuffer(t)?(n.msaaBuffer=n.msaaBuffer||i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,n.msaaBuffer),i.renderbufferStorageMultisample(i.RENDERBUFFER,n.multisample,i.RGBA8,t.width,t.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,n.msaaBuffer)):n.msaaBuffer&&(i.deleteRenderbuffer(n.msaaBuffer),n.msaaBuffer=null,n.blitFramebuffer&&(n.blitFramebuffer.dispose(),n.blitFramebuffer=null));for(var o=[],h=0;h1&&i.drawBuffers(o),t.depthTexture){var f=this.writeDepthTexture;if(f){var c=t.depthTexture;this.renderer.texture.bind(c,0),i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,c._glTextures[this.CONTEXT_UID].texture,e)}}(t.stencil||t.depth)&&!(t.depthTexture&&this.writeDepthTexture)?(n.stencil=n.stencil||i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,n.stencil),n.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,n.multisample,i.DEPTH24_STENCIL8,t.width,t.height):i.renderbufferStorage(i.RENDERBUFFER,i.DEPTH_STENCIL,t.width,t.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.RENDERBUFFER,n.stencil)):n.stencil&&(i.deleteRenderbuffer(n.stencil),n.stencil=null)},r.prototype.canMultisampleFramebuffer=function(t){return this.renderer.context.webGLVersion!==1&&t.colorTextures.length<=1&&!t.depthTexture},r.prototype.detectSamples=function(t){var e=this.msaaSamples,i=rt.NONE;if(t<=1||e===null)return i;for(var n=0;n=0&&this.managedFramebuffers.splice(s,1),t.disposeRunner.remove(this),e||(n.deleteFramebuffer(i.framebuffer),i.msaaBuffer&&n.deleteRenderbuffer(i.msaaBuffer),i.stencil&&n.deleteRenderbuffer(i.stencil)),i.blitFramebuffer&&i.blitFramebuffer.dispose()}},r.prototype.disposeAll=function(t){var e=this.managedFramebuffers;this.managedFramebuffers=[];for(var i=0;i=zt.WEBGL2&&(t=r.getContext("webgl2",{})),t||(t=r.getContext("webgl",{})||r.getContext("experimental-webgl",{}),t?t.getExtension("WEBGL_draw_buffers"):t=null),Le=t}return Le}var cr;function hl(){if(!cr){cr=pt.MEDIUM;var r=ol();if(r&&r.getShaderPrecisionFormat){var t=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT);cr=t.precision?pt.HIGH:pt.MEDIUM}}return cr}function is(r,t,e){if(r.substring(0,9)!=="precision"){var i=t;return t===pt.HIGH&&e!==pt.HIGH&&(i=pt.MEDIUM),"precision "+i+` float; +`+r}else if(e!==pt.HIGH&&r.substring(0,15)==="precision highp")return r.replace("precision highp","precision mediump");return r}var ul={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function $s(r){return ul[r]}var dr=null,ns={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function Ks(r,t){if(!dr){var e=Object.keys(ns);dr={};for(var i=0;i0&&(t+=` +else `),e0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==e&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)},r.prototype.destroy=function(){this.renderer=null},r}(),Qs=function(){function r(t){this.renderer=t,this.maskStack=[],this.glConst=0}return r.prototype.getStackLength=function(){return this.maskStack.length},r.prototype.setMaskStack=function(t){var e=this.renderer.gl,i=this.getStackLength();this.maskStack=t;var n=this.getStackLength();n!==i&&(n===0?e.disable(this.glConst):(e.enable(this.glConst),this._useCurrent()))},r.prototype._useCurrent=function(){},r.prototype.destroy=function(){this.renderer=null,this.maskStack=null},r}(),as=new dt,os=[],Rl=function(r){Z(t,r);function t(e){var i=r.call(this,e)||this;return i.glConst=P.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST,i}return t.prototype.getStackLength=function(){var e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0},t.prototype.calcScissorRect=function(e){var i;if(!e._scissorRectLocal){var n=e._scissorRect,s=e.maskObject,a=this.renderer,o=a.renderTexture,h=s.getBounds(!0,(i=os.pop())!==null&&i!==void 0?i:new W);this.roundFrameToPixels(h,o.current?o.current.resolution:a.resolution,o.sourceFrame,o.destinationFrame,a.projection.transform),n&&h.fit(n),e._scissorRectLocal=h}},t.isMatrixRotated=function(e){if(!e)return!1;var i=e.a,n=e.b,s=e.c,a=e.d;return(Math.abs(n)>1e-4||Math.abs(s)>1e-4)&&(Math.abs(i)>1e-4||Math.abs(a)>1e-4)},t.prototype.testScissor=function(e){var i=e.maskObject;if(!i.isFastRect||!i.isFastRect()||t.isMatrixRotated(i.worldTransform)||t.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);var n=e._scissorRectLocal;return n.width>0&&n.height>0},t.prototype.roundFrameToPixels=function(e,i,n,s,a){t.isMatrixRotated(a)||(a=a?as.copyFrom(a):as.identity(),a.translate(-n.x,-n.y).scale(s.width/n.width,s.height/n.height).translate(s.x,s.y),this.renderer.filter.transformAABB(a,e),e.fit(s),e.x=Math.round(e.x*i),e.y=Math.round(e.y*i),e.width=Math.round(e.width*i),e.height=Math.round(e.height*i))},t.prototype.push=function(e){e._scissorRectLocal||this.calcScissorRect(e);var i=this.renderer.gl;e._scissorRect||i.enable(i.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()},t.prototype.pop=function(e){var i=this.renderer.gl;e&&os.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():i.disable(i.SCISSOR_TEST)},t.prototype._useCurrent=function(){var e=this.maskStack[this.maskStack.length-1]._scissorRect,i;this.renderer.renderTexture.current?i=e.y:i=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,i,e.width,e.height)},t}(Qs),Pl=function(r){Z(t,r);function t(e){var i=r.call(this,e)||this;return i.glConst=P.ADAPTER.getWebGLRenderingContext().STENCIL_TEST,i}return t.prototype.getStackLength=function(){var e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0},t.prototype.push=function(e){var i=e.maskObject,n=this.renderer.gl,s=e._stencilCounter;s===0&&(this.renderer.framebuffer.forceStencil(),n.clearStencil(0),n.clear(n.STENCIL_BUFFER_BIT),n.enable(n.STENCIL_TEST)),e._stencilCounter++;var a=e._colorMask;a!==0&&(e._colorMask=0,n.colorMask(!1,!1,!1,!1)),n.stencilFunc(n.EQUAL,s,4294967295),n.stencilOp(n.KEEP,n.KEEP,n.INCR),i.renderable=!0,i.render(this.renderer),this.renderer.batch.flush(),i.renderable=!1,a!==0&&(e._colorMask=a,n.colorMask((a&1)!==0,(a&2)!==0,(a&4)!==0,(a&8)!==0)),this._useCurrent()},t.prototype.pop=function(e){var i=this.renderer.gl;if(this.getStackLength()===0)i.disable(i.STENCIL_TEST);else{var n=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,s=n?n._colorMask:15;s!==0&&(n._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilOp(i.KEEP,i.KEEP,i.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,s!==0&&(n._colorMask=s,i.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this._useCurrent()}},t.prototype._useCurrent=function(){var e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)},t}(Qs),Cl=function(){function r(t){this.renderer=t,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new dt,this.transform=null}return r.prototype.update=function(t,e,i,n){this.destinationFrame=t||this.destinationFrame||this.defaultFrame,this.sourceFrame=e||this.sourceFrame||t,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,n),this.transform&&this.projectionMatrix.append(this.transform);var s=this.renderer;s.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,s.globalUniforms.update(),s.shader.shader&&s.shader.syncUniformGroup(s.shader.shader.uniforms.globals)},r.prototype.calculateProjection=function(t,e,i,n){var s=this.projectionMatrix,a=n?-1:1;s.identity(),s.a=1/e.width*2,s.d=a*(1/e.height*2),s.tx=-1-e.x*s.a,s.ty=-a-e.y*s.d},r.prototype.setTransform=function(t){},r.prototype.destroy=function(){this.renderer=null},r}(),ne=new W,Fe=new W,Il=function(){function r(t){this.renderer=t,this.clearColor=t._backgroundColorRgba,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new W,this.destinationFrame=new W,this.viewportFrame=new W}return r.prototype.bind=function(t,e,i){t===void 0&&(t=null);var n=this.renderer;this.current=t;var s,a,o;t?(s=t.baseTexture,o=s.resolution,e||(ne.width=t.frame.width,ne.height=t.frame.height,e=ne),i||(Fe.x=t.frame.x,Fe.y=t.frame.y,Fe.width=e.width,Fe.height=e.height,i=Fe),a=s.framebuffer):(o=n.resolution,e||(ne.width=n.screen.width,ne.height=n.screen.height,e=ne),i||(i=ne,i.width=e.width,i.height=e.height));var h=this.viewportFrame;h.x=i.x*o,h.y=i.y*o,h.width=i.width*o,h.height=i.height*o,t||(h.y=n.view.height-(h.y+h.height)),h.ceil(),this.renderer.framebuffer.bind(a,h),this.renderer.projection.update(i,e,o,!a),t?this.renderer.mask.setMaskStack(s.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(e),this.destinationFrame.copyFrom(i)},r.prototype.clear=function(t,e){this.current?t=t||this.current.baseTexture.clearColor:t=t||this.clearColor;var i=this.destinationFrame,n=this.current?this.current.baseTexture:this.renderer.screen,s=i.width!==n.width||i.height!==n.height;if(s){var a=this.viewportFrame,o=a.x,h=a.y,u=a.width,l=a.height;o=Math.round(o),h=Math.round(h),u=Math.round(u),l=Math.round(l),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(o,h,u,l)}this.renderer.framebuffer.clear(t[0],t[1],t[2],t[3],e),s&&this.renderer.scissor.pop()},r.prototype.resize=function(){this.bind(null)},r.prototype.reset=function(){this.bind(null)},r.prototype.destroy=function(){this.renderer=null},r}();function Ol(r,t,e,i,n){e.buffer.update(n)}var Bl={float:` + data[offset] = v; + `,vec2:` + data[offset] = v[0]; + data[offset+1] = v[1]; + `,vec3:` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + + `,vec4:` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + data[offset+3] = v[3]; + `,mat2:` + data[offset] = v[0]; + data[offset+1] = v[1]; + + data[offset+4] = v[2]; + data[offset+5] = v[3]; + `,mat3:` + data[offset] = v[0]; + data[offset+1] = v[1]; + data[offset+2] = v[2]; + + data[offset + 4] = v[3]; + data[offset + 5] = v[4]; + data[offset + 6] = v[5]; + + data[offset + 8] = v[6]; + data[offset + 9] = v[7]; + data[offset + 10] = v[8]; + `,mat4:` + for(var i = 0; i < 16; i++) + { + data[offset + i] = v[i]; + } + `},Js={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:16*2,mat3:16*3,mat4:16*4};function Ml(r){for(var t=r.map(function(h){return{data:h,offset:0,dataLen:0,dirty:0}}),e=0,i=0,n=0,s=0;s1&&(e=Math.max(e,16)*a.data.size),a.dataLen=e,i%e!==0&&i<16){var o=i%e%16;i+=o,n+=o}i+e>16?(n=Math.ceil(n/16)*16,a.offset=n,n+=e,i=e):(a.offset=n,i+=e,n+=e)}return n=Math.ceil(n/16)*16,{uboElements:t,size:n}}function Ll(r,t){var e=[];for(var i in r)t[i]&&e.push(t[i]);return e.sort(function(n,s){return n.index-s.index}),e}function Nl(r,t){if(!r.autoManage)return{size:0,syncFunc:Ol};for(var e=Ll(r.uniforms,t),i=Ml(e),n=i.uboElements,s=i.size,a=[` + var v = null; + var v2 = null; + var cv = null; + var t = 0; + var gl = renderer.gl + var index = 0; + var data = buffer.data; + `],o=0;o1){var p=$s(h.data.type),v=Math.max(Js[h.data.type]/16,1),_=p/v,m=(4-_%4)%4;a.push(` + cv = ud.`+l+`.value; + v = uv.`+l+`; + offset = `+h.offset/4+`; + + t = 0; + + for(var i=0; i < `+h.data.size*v+`; i++) + { + for(var j = 0; j < `+_+`; j++) + { + data[offset++] = v[t++]; + } + offset += `+m+`; + } + + `)}else{var x=Bl[h.data.type];a.push(` + cv = ud.`+l+`.value; + v = uv.`+l+`; + offset = `+h.offset/4+`; + `+x+`; + `)}}return a.push(` + renderer.buffer.update(buffer); + `),{size:s,syncFunc:new Function("ud","uv","renderer","syncData","buffer",a.join(` +`))}}var Fl=function(){function r(t,e){this.program=t,this.uniformData=e,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}return r.prototype.destroy=function(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null},r}();function Dl(r,t){for(var e={},i=t.getProgramParameter(r,t.ACTIVE_ATTRIBUTES),n=0;nf?1:-1});for(var a=0;a>1,i++;this.stateId=t.data}for(var i=0;ithis.checkCountMax&&(this.checkCount=0,this.run())))},r.prototype.run=function(){for(var t=this.renderer.texture,e=t.managedTextures,i=!1,n=0;nthis.maxIdle&&(t.destroyTexture(s,!0),e[n]=null,i=!0)}if(i){for(var a=0,n=0;n=0;n--)this.unload(t.children[n])},r.prototype.destroy=function(){this.renderer=null},r}();function Zl(r){var t,e,i,n,s,a,o,h,u,l,f,c,d,p,v,_,m,x,E,w,y,b,g;return"WebGL2RenderingContext"in globalThis&&r instanceof globalThis.WebGL2RenderingContext?g=(t={},t[M.UNSIGNED_BYTE]=(e={},e[S.RGBA]=r.RGBA8,e[S.RGB]=r.RGB8,e[S.RG]=r.RG8,e[S.RED]=r.R8,e[S.RGBA_INTEGER]=r.RGBA8UI,e[S.RGB_INTEGER]=r.RGB8UI,e[S.RG_INTEGER]=r.RG8UI,e[S.RED_INTEGER]=r.R8UI,e[S.ALPHA]=r.ALPHA,e[S.LUMINANCE]=r.LUMINANCE,e[S.LUMINANCE_ALPHA]=r.LUMINANCE_ALPHA,e),t[M.BYTE]=(i={},i[S.RGBA]=r.RGBA8_SNORM,i[S.RGB]=r.RGB8_SNORM,i[S.RG]=r.RG8_SNORM,i[S.RED]=r.R8_SNORM,i[S.RGBA_INTEGER]=r.RGBA8I,i[S.RGB_INTEGER]=r.RGB8I,i[S.RG_INTEGER]=r.RG8I,i[S.RED_INTEGER]=r.R8I,i),t[M.UNSIGNED_SHORT]=(n={},n[S.RGBA_INTEGER]=r.RGBA16UI,n[S.RGB_INTEGER]=r.RGB16UI,n[S.RG_INTEGER]=r.RG16UI,n[S.RED_INTEGER]=r.R16UI,n[S.DEPTH_COMPONENT]=r.DEPTH_COMPONENT16,n),t[M.SHORT]=(s={},s[S.RGBA_INTEGER]=r.RGBA16I,s[S.RGB_INTEGER]=r.RGB16I,s[S.RG_INTEGER]=r.RG16I,s[S.RED_INTEGER]=r.R16I,s),t[M.UNSIGNED_INT]=(a={},a[S.RGBA_INTEGER]=r.RGBA32UI,a[S.RGB_INTEGER]=r.RGB32UI,a[S.RG_INTEGER]=r.RG32UI,a[S.RED_INTEGER]=r.R32UI,a[S.DEPTH_COMPONENT]=r.DEPTH_COMPONENT24,a),t[M.INT]=(o={},o[S.RGBA_INTEGER]=r.RGBA32I,o[S.RGB_INTEGER]=r.RGB32I,o[S.RG_INTEGER]=r.RG32I,o[S.RED_INTEGER]=r.R32I,o),t[M.FLOAT]=(h={},h[S.RGBA]=r.RGBA32F,h[S.RGB]=r.RGB32F,h[S.RG]=r.RG32F,h[S.RED]=r.R32F,h[S.DEPTH_COMPONENT]=r.DEPTH_COMPONENT32F,h),t[M.HALF_FLOAT]=(u={},u[S.RGBA]=r.RGBA16F,u[S.RGB]=r.RGB16F,u[S.RG]=r.RG16F,u[S.RED]=r.R16F,u),t[M.UNSIGNED_SHORT_5_6_5]=(l={},l[S.RGB]=r.RGB565,l),t[M.UNSIGNED_SHORT_4_4_4_4]=(f={},f[S.RGBA]=r.RGBA4,f),t[M.UNSIGNED_SHORT_5_5_5_1]=(c={},c[S.RGBA]=r.RGB5_A1,c),t[M.UNSIGNED_INT_2_10_10_10_REV]=(d={},d[S.RGBA]=r.RGB10_A2,d[S.RGBA_INTEGER]=r.RGB10_A2UI,d),t[M.UNSIGNED_INT_10F_11F_11F_REV]=(p={},p[S.RGB]=r.R11F_G11F_B10F,p),t[M.UNSIGNED_INT_5_9_9_9_REV]=(v={},v[S.RGB]=r.RGB9_E5,v),t[M.UNSIGNED_INT_24_8]=(_={},_[S.DEPTH_STENCIL]=r.DEPTH24_STENCIL8,_),t[M.FLOAT_32_UNSIGNED_INT_24_8_REV]=(m={},m[S.DEPTH_STENCIL]=r.DEPTH32F_STENCIL8,m),t):g=(x={},x[M.UNSIGNED_BYTE]=(E={},E[S.RGBA]=r.RGBA,E[S.RGB]=r.RGB,E[S.ALPHA]=r.ALPHA,E[S.LUMINANCE]=r.LUMINANCE,E[S.LUMINANCE_ALPHA]=r.LUMINANCE_ALPHA,E),x[M.UNSIGNED_SHORT_5_6_5]=(w={},w[S.RGB]=r.RGB,w),x[M.UNSIGNED_SHORT_4_4_4_4]=(y={},y[S.RGBA]=r.RGBA,y),x[M.UNSIGNED_SHORT_5_5_5_1]=(b={},b[S.RGBA]=r.RGBA,b),x),g}var li=function(){function r(t){this.texture=t,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=M.UNSIGNED_BYTE,this.internalFormat=S.RGBA,this.samplerType=0}return r}(),Ql=function(){function r(t){this.renderer=t,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new X,this.hasIntegerTextures=!1}return r.prototype.contextChange=function(){var t=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=Zl(t);var e=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=e;for(var i=0;i=0;--a){var o=i[a];if(o){var h=o._glTextures[s];h.samplerType!==Ir.FLOAT&&this.renderer.texture.unbind(o)}}},r.prototype.initTexture=function(t){var e=new li(this.gl.createTexture());return e.dirtyId=-1,t._glTextures[this.CONTEXT_UID]=e,this.managedTextures.push(t),t.on("dispose",this.destroyTexture,this),e},r.prototype.initTextureType=function(t,e){var i,n;e.internalFormat=(n=(i=this.internalFormats[t.type])===null||i===void 0?void 0:i[t.format])!==null&&n!==void 0?n:t.format,this.webGLVersion===2&&t.type===M.HALF_FLOAT?e.type=this.gl.HALF_FLOAT:e.type=t.type},r.prototype.updateTexture=function(t){var e=t._glTextures[this.CONTEXT_UID];if(!!e){var i=this.renderer;if(this.initTextureType(t,e),t.resource&&t.resource.upload(i,t,e))e.samplerType!==Ir.FLOAT&&(this.hasIntegerTextures=!0);else{var n=t.realWidth,s=t.realHeight,a=i.gl;(e.width!==n||e.height!==s||e.dirtyId<0)&&(e.width=n,e.height=s,a.texImage2D(t.target,0,e.internalFormat,n,s,0,t.format,e.type,null))}t.dirtyStyleId!==e.dirtyStyleId&&this.updateTextureStyle(t),e.dirtyId=t.dirtyId}},r.prototype.destroyTexture=function(t,e){var i=this.gl;if(t=t.castToBaseTexture(),t._glTextures[this.CONTEXT_UID]&&(this.unbind(t),i.deleteTexture(t._glTextures[this.CONTEXT_UID].texture),t.off("dispose",this.destroyTexture,this),delete t._glTextures[this.CONTEXT_UID],!e)){var n=this.managedTextures.indexOf(t);n!==-1&&je(this.managedTextures,n,1)}},r.prototype.updateTextureStyle=function(t){var e=t._glTextures[this.CONTEXT_UID];!e||((t.mipmap===ut.POW2||this.webGLVersion!==2)&&!t.isPowerOfTwo?e.mipmap=!1:e.mipmap=t.mipmap>=1,this.webGLVersion!==2&&!t.isPowerOfTwo?e.wrapMode=Be.CLAMP:e.wrapMode=t.wrapMode,t.resource&&t.resource.style(this.renderer,t,e)||this.setStyle(t,e),e.dirtyStyleId=t.dirtyStyleId)},r.prototype.setStyle=function(t,e){var i=this.gl;if(e.mipmap&&t.mipmap!==ut.ON_MANUAL&&i.generateMipmap(t.target),i.texParameteri(t.target,i.TEXTURE_WRAP_S,e.wrapMode),i.texParameteri(t.target,i.TEXTURE_WRAP_T,e.wrapMode),e.mipmap){i.texParameteri(t.target,i.TEXTURE_MIN_FILTER,t.scaleMode===It.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);var n=this.renderer.context.extensions.anisotropicFiltering;if(n&&t.anisotropicLevel>0&&t.scaleMode===It.LINEAR){var s=Math.min(t.anisotropicLevel,i.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(t.target,n.TEXTURE_MAX_ANISOTROPY_EXT,s)}}else i.texParameteri(t.target,i.TEXTURE_MIN_FILTER,t.scaleMode===It.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(t.target,i.TEXTURE_MAG_FILTER,t.scaleMode===It.LINEAR?i.LINEAR:i.NEAREST)},r.prototype.destroy=function(){this.renderer=null},r}(),fi=new dt,Jl=function(r){Z(t,r);function t(e,i){e===void 0&&(e=Ye.UNKNOWN);var n=r.call(this)||this;return i=Object.assign({},P.RENDER_OPTIONS,i),n.options=i,n.type=e,n.screen=new W(0,0,i.width,i.height),n.view=i.view||P.ADAPTER.createCanvas(),n.resolution=i.resolution||P.RESOLUTION,n.useContextAlpha=i.useContextAlpha,n.autoDensity=!!i.autoDensity,n.preserveDrawingBuffer=i.preserveDrawingBuffer,n.clearBeforeRender=i.clearBeforeRender,n._backgroundColor=0,n._backgroundColorRgba=[0,0,0,1],n._backgroundColorString="#000000",n.backgroundColor=i.backgroundColor||n._backgroundColor,n.backgroundAlpha=i.backgroundAlpha,i.transparent!==void 0&&(Mt("6.0.0","Option transparent is deprecated, please use backgroundAlpha instead."),n.useContextAlpha=i.transparent,n.backgroundAlpha=i.transparent?0:1),n._lastObjectRendered=null,n.plugins={},n}return t.prototype.initPlugins=function(e){for(var i in e)this.plugins[i]=new e[i](this)},Object.defineProperty(t.prototype,"width",{get:function(){return this.view.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.view.height},enumerable:!1,configurable:!0}),t.prototype.resize=function(e,i){this.view.width=Math.round(e*this.resolution),this.view.height=Math.round(i*this.resolution);var n=this.view.width/this.resolution,s=this.view.height/this.resolution;this.screen.width=n,this.screen.height=s,this.autoDensity&&(this.view.style.width=n+"px",this.view.style.height=s+"px"),this.emit("resize",n,s)},t.prototype.generateTexture=function(e,i,n,s){i===void 0&&(i={}),typeof i=="number"&&(Mt("6.1.0","generateTexture options (scaleMode, resolution, region) are now object options."),i={scaleMode:i,resolution:n,region:s});var a=i.region,o=Lu(i,["region"]);s=a||e.getLocalBounds(null,!0),s.width===0&&(s.width=1),s.height===0&&(s.height=1);var h=$i.create(Bi({width:s.width,height:s.height},o));return fi.tx=-s.x,fi.ty=-s.y,this.render(e,{renderTexture:h,clear:!1,transform:fi,skipUpdateTransform:!!e.parent}),h},t.prototype.destroy=function(e){for(var i in this.plugins)this.plugins[i].destroy(),this.plugins[i]=null;e&&this.view.parentNode&&this.view.parentNode.removeChild(this.view);var n=this;n.plugins=null,n.type=Ye.UNKNOWN,n.view=null,n.screen=null,n._tempDisplayObjectParent=null,n.options=null,this._backgroundColorRgba=null,this._backgroundColorString=null,this._lastObjectRendered=null},Object.defineProperty(t.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=e,this._backgroundColorString=Fs(e),ze(e,this._backgroundColorRgba)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"backgroundAlpha",{get:function(){return this._backgroundColorRgba[3]},set:function(e){this._backgroundColorRgba[3]=e},enumerable:!1,configurable:!0}),t}(Vr),tf=function(){function r(t){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}return r}(),ef=function(){function r(t){this.renderer=t,this.managedBuffers={},this.boundBufferBases={}}return r.prototype.destroy=function(){this.renderer=null},r.prototype.contextChange=function(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID},r.prototype.bind=function(t){var e=this,i=e.gl,n=e.CONTEXT_UID,s=t._glBuffers[n]||this.createGLBuffer(t);i.bindBuffer(t.type,s.buffer)},r.prototype.bindBufferBase=function(t,e){var i=this,n=i.gl,s=i.CONTEXT_UID;if(this.boundBufferBases[e]!==t){var a=t._glBuffers[s]||this.createGLBuffer(t);this.boundBufferBases[e]=t,n.bindBufferBase(n.UNIFORM_BUFFER,e,a.buffer)}},r.prototype.bindBufferRange=function(t,e,i){var n=this,s=n.gl,a=n.CONTEXT_UID;i=i||0;var o=t._glBuffers[a]||this.createGLBuffer(t);s.bindBufferRange(s.UNIFORM_BUFFER,e||0,o.buffer,i*256,256)},r.prototype.update=function(t){var e=this,i=e.gl,n=e.CONTEXT_UID,s=t._glBuffers[n];if(t._updateID!==s.updateID)if(s.updateID=t._updateID,i.bindBuffer(t.type,s.buffer),s.byteLength>=t.data.byteLength)i.bufferSubData(t.type,0,t.data);else{var a=t.static?i.STATIC_DRAW:i.DYNAMIC_DRAW;s.byteLength=t.data.byteLength,i.bufferData(t.type,t.data,a)}},r.prototype.dispose=function(t,e){if(!!this.managedBuffers[t.id]){delete this.managedBuffers[t.id];var i=t._glBuffers[this.CONTEXT_UID],n=this.gl;t.disposeRunner.remove(this),i&&(e||n.deleteBuffer(i.buffer),delete t._glBuffers[this.CONTEXT_UID])}},r.prototype.disposeAll=function(t){for(var e=Object.keys(this.managedBuffers),i=0;i=rt.HIGH?this.multisample=rt.HIGH:i>=rt.MEDIUM?this.multisample=rt.MEDIUM:i>=rt.LOW?this.multisample=rt.LOW:this.multisample=rt.NONE},t.prototype.addSystem=function(e,i){var n=new e(this);if(this[i])throw new Error('Whoops! The name "'+i+'" is already in use');this[i]=n;for(var s in this.runners)this.runners[s].add(n);return this},t.prototype.render=function(e,i){var n,s,a,o;if(i&&(i instanceof $i?(Mt("6.0.0","Renderer#render arguments changed, use options instead."),n=i,s=arguments[2],a=arguments[3],o=arguments[4]):(n=i.renderTexture,s=i.clear,a=i.transform,o=i.skipUpdateTransform)),this.renderingToScreen=!n,this.runners.prerender.emit(),this.emit("prerender"),this.projection.transform=a,!this.context.isLost){if(n||(this._lastObjectRendered=e),!o){var h=e.enableTempParent();e.updateTransform(),e.disableTempParent(h)}this.renderTexture.bind(n),this.batch.currentRenderer.start(),(s!==void 0?s:this.clearBeforeRender)&&this.renderTexture.clear(),e.render(this),this.batch.currentRenderer.flush(),n&&n.baseTexture.update(),this.runners.postrender.emit(),this.projection.transform=null,this.emit("postrender")}},t.prototype.generateTexture=function(e,i,n,s){i===void 0&&(i={});var a=r.prototype.generateTexture.call(this,e,i,n,s);return this.framebuffer.blit(),a},t.prototype.resize=function(e,i){r.prototype.resize.call(this,e,i),this.runners.resize.emit(this.screen.height,this.screen.width)},t.prototype.reset=function(){return this.runners.reset.emit(),this},t.prototype.clear=function(){this.renderTexture.bind(),this.renderTexture.clear()},t.prototype.destroy=function(e){this.runners.destroy.emit();for(var i in this.runners)this.runners[i].destroy();r.prototype.destroy.call(this,e),this.gl=null},Object.defineProperty(t.prototype,"extract",{get:function(){return Mt("6.0.0","Renderer#extract has been deprecated, please use Renderer#plugins.extract instead."),this.plugins.extract},enumerable:!1,configurable:!0}),t.registerPlugin=function(e,i){Mt("6.5.0","Renderer.registerPlugin() has been deprecated, please use extensions.add() instead."),At.add({name:e,type:F.RendererPlugin,ref:i})},t.__plugins={},t}(Jl);At.handleByMap(F.RendererPlugin,ta.__plugins);function rf(r){return ta.create(r)}var Ni=function(){function r(){this.texArray=null,this.blend=0,this.type=Tt.TRIANGLES,this.start=0,this.size=0,this.data=null}return r}(),Fi=function(){function r(){this.elements=[],this.ids=[],this.count=0}return r.prototype.clear=function(){for(var t=0;tthis.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)},t.prototype.buildTexturesAndDrawCalls=function(){var e=this,i=e._bufferedTextures,n=e.MAX_TEXTURES,s=t._textureArrayPool,a=this.renderer.batch,o=this._tempBoundTextures,h=this.renderer.textureGC.count,u=++X._globalBatch,l=0,f=s[0],c=0;a.copyBoundTextures(o,n);for(var d=0;d=n&&(a.boundArray(f,o,u,n),this.buildDrawCalls(f,c,d),c=d,f=s[++l],++u),p._batchEnabled=u,p.touched=h,f.elements[f.count++]=p)}f.count>0&&(a.boundArray(f,o,u,n),this.buildDrawCalls(f,c,this._bufferSize),++l,++u);for(var d=0;d0&&(e+=` +else `),ithis.maxX||this.minY>this.maxY},r.prototype.clear=function(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0},r.prototype.getRectangle=function(t){return this.minX>this.maxX||this.minY>this.maxY?W.EMPTY:(t=t||new W(0,0,1,1),t.x=this.minX,t.y=this.minY,t.width=this.maxX-this.minX,t.height=this.maxY-this.minY,t)},r.prototype.addPoint=function(t){this.minX=Math.min(this.minX,t.x),this.maxX=Math.max(this.maxX,t.x),this.minY=Math.min(this.minY,t.y),this.maxY=Math.max(this.maxY,t.y)},r.prototype.addPointMatrix=function(t,e){var i=t.a,n=t.b,s=t.c,a=t.d,o=t.tx,h=t.ty,u=i*e.x+s*e.y+o,l=n*e.x+a*e.y+h;this.minX=Math.min(this.minX,u),this.maxX=Math.max(this.maxX,u),this.minY=Math.min(this.minY,l),this.maxY=Math.max(this.maxY,l)},r.prototype.addQuad=function(t){var e=this.minX,i=this.minY,n=this.maxX,s=this.maxY,a=t[0],o=t[1];e=an?a:n,s=o>s?o:s,a=t[2],o=t[3],e=an?a:n,s=o>s?o:s,a=t[4],o=t[5],e=an?a:n,s=o>s?o:s,a=t[6],o=t[7],e=an?a:n,s=o>s?o:s,this.minX=e,this.minY=i,this.maxX=n,this.maxY=s},r.prototype.addFrame=function(t,e,i,n,s){this.addFrameMatrix(t.worldTransform,e,i,n,s)},r.prototype.addFrameMatrix=function(t,e,i,n,s){var a=t.a,o=t.b,h=t.c,u=t.d,l=t.tx,f=t.ty,c=this.minX,d=this.minY,p=this.maxX,v=this.maxY,_=a*e+h*i+l,m=o*e+u*i+f;c=_p?_:p,v=m>v?m:v,_=a*n+h*i+l,m=o*n+u*i+f,c=_p?_:p,v=m>v?m:v,_=a*e+h*s+l,m=o*e+u*s+f,c=_p?_:p,v=m>v?m:v,_=a*n+h*s+l,m=o*n+u*s+f,c=_p?_:p,v=m>v?m:v,this.minX=c,this.minY=d,this.maxX=p,this.maxY=v},r.prototype.addVertexData=function(t,e,i){for(var n=this.minX,s=this.minY,a=this.maxX,o=this.maxY,h=e;ha?u:a,o=l>o?l:o}this.minX=n,this.minY=s,this.maxX=a,this.maxY=o},r.prototype.addVertices=function(t,e,i,n){this.addVerticesMatrix(t.worldTransform,e,i,n)},r.prototype.addVerticesMatrix=function(t,e,i,n,s,a){s===void 0&&(s=0),a===void 0&&(a=s);for(var o=t.a,h=t.b,u=t.c,l=t.d,f=t.tx,c=t.ty,d=this.minX,p=this.minY,v=this.maxX,_=this.maxY,m=i;mn?t.maxX:n,this.maxY=t.maxY>s?t.maxY:s},r.prototype.addBoundsMask=function(t,e){var i=t.minX>e.minX?t.minX:e.minX,n=t.minY>e.minY?t.minY:e.minY,s=t.maxXu?s:u,this.maxY=a>l?a:l}},r.prototype.addBoundsMatrix=function(t,e){this.addFrameMatrix(e,t.minX,t.minY,t.maxX,t.maxY)},r.prototype.addBoundsArea=function(t,e){var i=t.minX>e.x?t.minX:e.x,n=t.minY>e.y?t.minY:e.y,s=t.maxXu?s:u,this.maxY=a>l?a:l}},r.prototype.pad=function(t,e){t===void 0&&(t=0),e===void 0&&(e=t),this.isEmpty()||(this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e)},r.prototype.addFramePad=function(t,e,i,n,s,a){t-=s,e-=a,i+=s,n+=a,this.minX=this.minXi?this.maxX:i,this.minY=this.minYn?this.maxY:n},r}();/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Ui=function(r,t){return Ui=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])},Ui(r,t)};function Ki(r,t){Ui(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var Nr=function(r){Ki(t,r);function t(){var e=r.call(this)||this;return e.tempDisplayObjectParent=null,e.transform=new Mu,e.alpha=1,e.visible=!0,e.renderable=!0,e.cullable=!1,e.cullArea=null,e.parent=null,e.worldAlpha=1,e._lastSortedIndex=0,e._zIndex=0,e.filterArea=null,e.filters=null,e._enabledFilters=null,e._bounds=new Lr,e._localBounds=null,e._boundsID=0,e._boundsRect=null,e._localBoundsRect=null,e._mask=null,e._maskRefCount=0,e._destroyed=!1,e.isSprite=!1,e.isMask=!1,e}return t.mixin=function(e){for(var i=Object.keys(e),n=0;n1)for(var s=0;sthis.children.length)throw new Error(e+"addChildAt: The index "+i+" supplied is out of bounds "+this.children.length);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(i,0,e),this._boundsID++,this.onChildrenChange(i),e.emit("added",this),this.emit("childAdded",e,this,i),e},t.prototype.swapChildren=function(e,i){if(e!==i){var n=this.getChildIndex(e),s=this.getChildIndex(i);this.children[n]=i,this.children[s]=e,this.onChildrenChange(n=this.children.length)throw new Error("The index "+i+" supplied is out of bounds "+this.children.length);var n=this.getChildIndex(e);je(this.children,n,1),this.children.splice(i,0,e),this.onChildrenChange(i)},t.prototype.getChildAt=function(e){if(e<0||e>=this.children.length)throw new Error("getChildAt: Index ("+e+") does not exist.");return this.children[e]},t.prototype.removeChild=function(){for(var e=arguments,i=[],n=0;n1)for(var s=0;s0&&a<=s){o=this.children.splice(n,a);for(var h=0;h1&&this.children.sort(uf),this.sortDirty=!1},t.prototype.updateTransform=function(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(var e=0,i=this.children.length;e0&&i.height>0){var n,s;if(this.cullArea?(n=this.cullArea,s=this.worldTransform):this._render!==t.prototype._render&&(n=this.getBounds(!0)),n&&i.intersects(n,s))this._render(e);else if(this.cullArea)return;for(var a=0,o=this.children.length;a=s&&De.x=a&&De.y>16)+(e&65280)+((e&255)<<16)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"texture",{get:function(){return this._texture},set:function(e){this._texture!==e&&(this._texture&&this._texture.off("update",this._onTextureUpdate,this),this._texture=e||k.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,e&&(e.baseTexture.valid?this._onTextureUpdate():e.once("update",this._onTextureUpdate,this)))},enumerable:!1,configurable:!0}),t}(me);/*! + * @pixi/particle-emitter - v5.0.8 + * Compiled Mon, 28 Nov 2022 04:01:38 UTC + * + * @pixi/particle-emitter is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + */class Ot{constructor(t,e,i){this.value=t,this.time=e,this.next=null,this.isStepped=!1,i?this.ease=typeof i=="function"?i:sa(i):this.ease=null}static createList(t){if("list"in t){const i=t.list;let n;const{value:s,time:a}=i[0],o=n=new Ot(typeof s=="string"?_r(s):s,a,t.ease);if(i.length>2||i.length===2&&i[1].value!==s)for(let h=1;h0?this._frequency=t:this._frequency=1}get parent(){return this._parent}set parent(t){this.cleanup(),this._parent=t}init(t){if(!t)return;this.cleanup(),this._origConfig=t,this.minLifetime=t.lifetime.min,this.maxLifetime=t.lifetime.max,t.ease?this.customEase=typeof t.ease=="function"?t.ease:sa(t.ease):this.customEase=null,this.particlesPerWave=1,t.particlesPerWave&&t.particlesPerWave>1&&(this.particlesPerWave=t.particlesPerWave),this.frequency=t.frequency,this.spawnChance=typeof t.spawnChance=="number"&&t.spawnChance>0?t.spawnChance:1,this.emitterLifetime=t.emitterLifetime||-1,this.maxParticles=t.maxParticles>0?t.maxParticles:1e3,this.addAtBack=!!t.addAtBack,this.rotation=0,this.ownerPos.set(0),t.pos?this.spawnPos.copyFrom(t.pos):this.spawnPos.set(0),this._prevEmitterPos.copyFrom(this.spawnPos),this._prevPosIsValid=!1,this._spawnTimer=0,this.emit=t.emit===void 0?!0:!!t.emit,this.autoUpdate=!!t.autoUpdate;const e=t.behaviors.map(i=>{const n=$.knownBehaviors[i.type];return n?new n(i.config):(console.error(`Unknown behavior: ${i.type}`),null)}).filter(i=>!!i);e.push(se),e.sort((i,n)=>i===se?n.order===K.Spawn?1:-1:n===se?i.order===K.Spawn?-1:1:i.order-n.order),this.initBehaviors=e.slice(),this.updateBehaviors=e.filter(i=>i!==se&&i.updateParticle),this.recycleBehaviors=e.filter(i=>i!==se&&i.recycleParticle)}getBehavior(t){return $.knownBehaviors[t]&&this.initBehaviors.find(e=>e instanceof $.knownBehaviors[t])||null}fillPool(t){for(;t>0;--t){const e=new ci(this);e.next=this._poolFirst,this._poolFirst=e}}recycle(t,e=!1){for(let i=0;ia.maxLife||a.age<0)this.recycle(a);else{let h=a.age*a.oneOverLife;this.customEase&&(this.customEase.length===4?h=this.customEase(h,0,1,1):h=this.customEase(h)),a.agePercent=h;for(let u=0;u=0&&(this._emitterLife-=this._frequency,this._emitterLife<=0)){this._spawnTimer=0,this._emitterLife=0,this.emit=!1;break}if(this.particleCount>=this.maxParticles){this._spawnTimer+=this._frequency;continue}let a,o;if(this._prevPosIsValid&&this._posChanged){const l=1+this._spawnTimer/t;a=(n-e)*l+e,o=(s-i)*l+i}else a=n,o=s;let h=null,u=null;for(let l=Math.min(this.particlesPerWave,this.maxParticles-this.particleCount),f=0;f=this.spawnChance)continue;let c;if(this.minLifetime===this.maxLifetime?c=this.minLifetime:c=Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,-this._spawnTimer>=c)continue;let d;this._poolFirst?(d=this._poolFirst,this._poolFirst=this._poolFirst.next,d.next=null):d=new ci(this),d.init(c),this.addAtBack?this._parent.addChildAt(d,0):this._parent.addChild(d),h?(u.next=d,d.prev=u,u=d):u=h=d,++this.particleCount}if(h){this._activeParticlesLast?(this._activeParticlesLast.next=h,h.prev=this._activeParticlesLast,this._activeParticlesLast=u):(this._activeParticlesFirst=h,this._activeParticlesLast=u);for(let l=0;l=this.spawnChance)continue;let o;this._poolFirst?(o=this._poolFirst,this._poolFirst=this._poolFirst.next,o.next=null):o=new ci(this);let h;this.minLifetime===this.maxLifetime?h=this.minLifetime:h=Math.random()*(this.maxLifetime-this.minLifetime)+this.minLifetime,o.init(h),this.addAtBack?this._parent.addChildAt(o,0):this._parent.addChild(o),i?(n.next=o,o.prev=n,n=o):n=i=o,++this.particleCount}if(i){this._activeParticlesLast?(this._activeParticlesLast.next=i,i.prev=this._activeParticlesLast,this._activeParticlesLast=n):(this._activeParticlesFirst=i,this._activeParticlesLast=n);for(let s=0;sthis.maxSpeed&&na(i,this.maxSpeed/a)}t.x+=(n+i.x)/2*e,t.y+=(s+i.y)/2*e,this.rotate&&(t.rotation=Math.atan2(i.y,i.x))}}Ji.type="moveAcceleration";Ji.editorConfig=null;function pf(r){return this.ease&&(r=this.ease(r)),(this.first.next.value-this.first.value)*r+this.first.value}function vf(r){this.ease&&(r=this.ease(r));const t=this.first.value,e=this.first.next.value,i=(e.r-t.r)*r+t.r,n=(e.g-t.g)*r+t.g,s=(e.b-t.b)*r+t.b;return qr(i,n,s)}function _f(r){this.ease&&(r=this.ease(r));let t=this.first,e=t.next;for(;r>e.time;)t=e,e=e.next;return r=(r-t.time)/(e.time-t.time),(e.value-t.value)*r+t.value}function mf(r){this.ease&&(r=this.ease(r));let t=this.first,e=t.next;for(;r>e.time;)t=e,e=e.next;r=(r-t.time)/(e.time-t.time);const i=t.value,n=e.value,s=(n.r-i.r)*r+i.r,a=(n.g-i.g)*r+i.g,o=(n.b-i.b)*r+i.b;return qr(s,a,o)}function gf(r){this.ease&&(r=this.ease(r));let t=this.first;for(;t.next&&r>t.next.time;)t=t.next;return t.value}function yf(r){this.ease&&(r=this.ease(r));let t=this.first;for(;t.next&&r>t.next.time;)t=t.next;const e=t.value;return qr(e.r,e.g,e.b)}class rr{constructor(t=!1){this.first=null,this.isColor=!!t,this.interpolate=null,this.ease=null}reset(t){this.first=t,t.next&&t.next.time>=1?this.interpolate=this.isColor?vf:pf:t.isStepped?this.interpolate=this.isColor?yf:gf:this.interpolate=this.isColor?mf:_f,this.ease=this.first.ease}}class tn{constructor(t){this.order=K.Normal,this.list=new rr(!1),this.list.reset(Ot.createList(t.alpha))}initParticles(t){let e=t;for(;e;)e.alpha=this.list.first.value,e=e.next}updateParticle(t){t.alpha=this.list.interpolate(t.agePercent)}}tn.type="alpha";tn.editorConfig=null;class en{constructor(t){this.order=K.Normal,this.value=t.alpha}initParticles(t){let e=t;for(;e;)e.alpha=this.value,e=e.next}}en.type="alphaStatic";en.editorConfig=null;function aa(r){const t=[];for(let e=0;e0;--n)t.push(i)}}return t}class rn{constructor(t){this.order=K.Normal,this.anims=[];for(let e=0;e0?i.framerate:60,a={textures:n,duration:s>0?n.length/s:0,framerate:s,loop:s>0?!!i.loop:!1};this.anims.push(a)}}initParticles(t){let e=t;for(;e;){const i=Math.floor(Math.random()*this.anims.length),n=e.config.anim=this.anims[i];e.texture=n.textures[0],e.config.animElapsed=0,n.framerate===-1?(e.config.animDuration=e.maxLife,e.config.animFramerate=n.textures.length/e.maxLife):(e.config.animDuration=n.duration,e.config.animFramerate=n.framerate),e=e.next}}updateParticle(t,e){const i=t.config,n=i.anim;i.animElapsed+=e,i.animElapsed>=i.animDuration&&(i.anim.loop?i.animElapsed=i.animElapsed%i.animDuration:i.animElapsed=i.animDuration-1e-6);const s=i.animElapsed*i.animFramerate+1e-7|0;t.texture=n.textures[s]||n.textures[n.textures.length-1]||k.EMPTY}}rn.type="animatedRandom";rn.editorConfig=null;class nn{constructor(t){this.order=K.Normal;const e=t.anim,i=aa(e.textures),n=e.framerate<0?-1:e.framerate>0?e.framerate:60;this.anim={textures:i,duration:n>0?i.length/n:0,framerate:n,loop:n>0?!!e.loop:!1}}initParticles(t){let e=t;const i=this.anim;for(;e;)e.texture=i.textures[0],e.config.animElapsed=0,i.framerate===-1?(e.config.animDuration=e.maxLife,e.config.animFramerate=i.textures.length/e.maxLife):(e.config.animDuration=i.duration,e.config.animFramerate=i.framerate),e=e.next}updateParticle(t,e){const i=this.anim,n=t.config;n.animElapsed+=e,n.animElapsed>=n.animDuration&&(i.loop?n.animElapsed=n.animElapsed%n.animDuration:n.animElapsed=n.animDuration-1e-6);const s=n.animElapsed*n.animFramerate+1e-7|0;t.texture=i.textures[s]||i.textures[i.textures.length-1]||k.EMPTY}}nn.type="animatedSingle";nn.editorConfig=null;class sn{constructor(t){this.order=K.Normal,this.value=t.blendMode}initParticles(t){let e=t;for(;e;)e.blendMode=df(this.value),e=e.next}}sn.type="blendMode";sn.editorConfig=null;class an{constructor(t){this.order=K.Spawn,this.spacing=t.spacing*Ct,this.start=t.start*Ct,this.distance=t.distance}initParticles(t){let e=0,i=t;for(;i;){let n;this.spacing?n=this.start+this.spacing*e:n=Math.random()*Math.PI*2,i.rotation=n,this.distance&&(i.position.x=this.distance,Vt(n,i.position)),i=i.next,++e}}}an.type="spawnBurst";an.editorConfig=null;class on{constructor(t){this.order=K.Normal,this.list=new rr(!0),this.list.reset(Ot.createList(t.color))}initParticles(t){let e=t;const i=this.list.first.value,n=qr(i.r,i.g,i.b);for(;e;)e.tint=n,e=e.next}updateParticle(t){t.tint=this.list.interpolate(t.agePercent)}}on.type="color";on.editorConfig=null;class hn{constructor(t){this.order=K.Normal;let e=t.color;e.charAt(0)==="#"?e=e.substr(1):e.indexOf("0x")===0&&(e=e.substr(2)),this.value=parseInt(e,16)}initParticles(t){let e=t;for(;e;)e.tint=this.value,e=e.next}}hn.type="colorStatic";hn.editorConfig=null;class un{constructor(t){this.order=K.Normal,this.index=0,this.textures=t.textures.map(e=>typeof e=="string"?Ze(e):e)}initParticles(t){let e=t;for(;e;)e.texture=this.textures[this.index],++this.index>=this.textures.length&&(this.index=0),e=e.next}}un.type="textureOrdered";un.editorConfig=null;const we=new q,oa=["E","LN2","LN10","LOG2E","LOG10E","PI","SQRT1_2","SQRT2","abs","acos","acosh","asin","asinh","atan","atanh","atan2","cbrt","ceil","cos","cosh","exp","expm1","floor","fround","hypot","log","log1p","log10","log2","max","min","pow","random","round","sign","sin","sinh","sqrt","tan","tanh"],bf=new RegExp(["[01234567890\\.\\*\\-\\+\\/\\(\\)x ,]"].concat(oa).join("|"),"g");function xf(r){const t=r.match(bf);for(let e=t.length-1;e>=0;--e)oa.indexOf(t[e])>=0&&(t[e]=`Math.${t[e]}`);return r=t.join(""),new Function("x",`return ${r};`)}class ln{constructor(t){var e;if(this.order=K.Late,t.path)if(typeof t.path=="function")this.path=t.path;else try{this.path=xf(t.path)}catch{this.path=null}else this.path=i=>i;this.list=new rr(!1),this.list.reset(Ot.createList(t.speed)),this.minMult=(e=t.minMult)!==null&&e!==void 0?e:1}initParticles(t){let e=t;for(;e;){e.config.initRotation=e.rotation,e.config.initPosition?e.config.initPosition.copyFrom(e.position):e.config.initPosition=new q(e.x,e.y),e.config.movement=0;const i=Math.random()*(1-this.minMult)+this.minMult;e.config.speedMult=i,e=e.next}}updateParticle(t,e){const i=this.list.interpolate(t.agePercent)*t.config.speedMult;t.config.movement+=i*e,we.x=t.config.movement,we.y=this.path(we.x),Vt(t.config.initRotation,we),t.position.x=t.config.initPosition.x+we.x,t.position.y=t.config.initPosition.y+we.y}}ln.type="movePath";ln.editorConfig=null;class fn{constructor(){this.order=K.Spawn}initParticles(t){}}fn.type="spawnPoint";fn.editorConfig=null;class cn{constructor(t){this.order=K.Normal,this.textures=t.textures.map(e=>typeof e=="string"?Ze(e):e)}initParticles(t){let e=t;for(;e;){const i=Math.floor(Math.random()*this.textures.length);e.texture=this.textures[i],e=e.next}}}cn.type="textureRandom";cn.editorConfig=null;class dn{constructor(t){this.order=K.Normal,this.minStart=t.minStart*Ct,this.maxStart=t.maxStart*Ct,this.minSpeed=t.minSpeed*Ct,this.maxSpeed=t.maxSpeed*Ct,this.accel=t.accel*Ct}initParticles(t){let e=t;for(;e;)this.minStart===this.maxStart?e.rotation+=this.maxStart:e.rotation+=Math.random()*(this.maxStart-this.minStart)+this.minStart,e.config.rotSpeed=Math.random()*(this.maxSpeed-this.minSpeed)+this.minSpeed,e=e.next}updateParticle(t,e){if(this.accel){const i=t.config.rotSpeed;t.config.rotSpeed+=this.accel*e,t.rotation+=(t.config.rotSpeed+i)/2*e}else t.rotation+=t.config.rotSpeed*e}}dn.type="rotation";dn.editorConfig=null;class pn{constructor(t){this.order=K.Normal,this.min=t.min*Ct,this.max=t.max*Ct}initParticles(t){let e=t;for(;e;)this.min===this.max?e.rotation+=this.max:e.rotation+=Math.random()*(this.max-this.min)+this.min,e=e.next}}pn.type="rotationStatic";pn.editorConfig=null;class vn{constructor(t){this.order=K.Late+1,this.rotation=(t.rotation||0)*Ct}initParticles(t){let e=t;for(;e;)e.rotation=this.rotation,e=e.next}}vn.type="noRotation";vn.editorConfig=null;class _n{constructor(t){var e;this.order=K.Normal,this.list=new rr(!1),this.list.reset(Ot.createList(t.scale)),this.minMult=(e=t.minMult)!==null&&e!==void 0?e:1}initParticles(t){let e=t;for(;e;){const i=Math.random()*(1-this.minMult)+this.minMult;e.config.scaleMult=i,e.scale.x=e.scale.y=this.list.first.value*i,e=e.next}}updateParticle(t){t.scale.x=t.scale.y=this.list.interpolate(t.agePercent)*t.config.scaleMult}}_n.type="scale";_n.editorConfig=null;class mn{constructor(t){this.order=K.Normal,this.min=t.min,this.max=t.max}initParticles(t){let e=t;for(;e;){const i=Math.random()*(this.max-this.min)+this.min;e.scale.x=e.scale.y=i,e=e.next}}}mn.type="scaleStatic";mn.editorConfig=null;class wt{constructor(t){this.order=K.Spawn;const e=wt.shapes[t.type];if(!e)throw new Error(`No shape found with type '${t.type}'`);this.shape=new e(t.data)}static registerShape(t,e){wt.shapes[e||t.type]=t}initParticles(t){let e=t;for(;e;)this.shape.getRandPos(e),e=e.next}}wt.type="spawnShape";wt.editorConfig=null;wt.shapes={};wt.registerShape(Qi);wt.registerShape(Zi);wt.registerShape($r);wt.registerShape($r,"circle");class gn{constructor(t){this.order=K.Normal,this.texture=typeof t.texture=="string"?Ze(t.texture):t.texture}initParticles(t){let e=t;for(;e;)e.texture=this.texture,e=e.next}}gn.type="textureSingle";gn.editorConfig=null;class yn{constructor(t){var e;this.order=K.Late,this.list=new rr(!1),this.list.reset(Ot.createList(t.speed)),this.minMult=(e=t.minMult)!==null&&e!==void 0?e:1}initParticles(t){let e=t;for(;e;){const i=Math.random()*(1-this.minMult)+this.minMult;e.config.speedMult=i,e.config.velocity?e.config.velocity.set(this.list.first.value*i,0):e.config.velocity=new q(this.list.first.value*i,0),Vt(e.rotation,e.config.velocity),e=e.next}}updateParticle(t,e){const i=this.list.interpolate(t.agePercent)*t.config.speedMult,n=t.config.velocity;cf(n),na(n,i),t.x+=n.x*e,t.y+=n.y*e}}yn.type="moveSpeed";yn.editorConfig=null;class bn{constructor(t){this.order=K.Late,this.min=t.min,this.max=t.max}initParticles(t){let e=t;for(;e;){const i=Math.random()*(this.max-this.min)+this.min;e.config.velocity?e.config.velocity.set(i,0):e.config.velocity=new q(i,0),Vt(e.rotation,e.config.velocity),e=e.next}}updateParticle(t,e){const i=t.config.velocity;t.x+=i.x*e,t.y+=i.y*e}}bn.type="moveSpeedStatic";bn.editorConfig=null;function cd(r,t){var e,i,n,s,a,o,h,u,l,f,c,d,p,v,_,m,x,E,w,y,b;if("behaviors"in r)return r;const g={lifetime:r.lifetime,ease:r.ease,particlesPerWave:r.particlesPerWave,frequency:r.frequency,spawnChance:r.spawnChance,emitterLifetime:r.emitterLifetime,maxParticles:r.maxParticles,addAtBack:r.addAtBack,pos:r.pos,emit:r.emit,autoUpdate:r.autoUpdate,behaviors:[]};if(r.alpha)if("start"in r.alpha)if(r.alpha.start===r.alpha.end)r.alpha.start!==1&&g.behaviors.push({type:"alphaStatic",config:{alpha:r.alpha.start}});else{const A={list:[{time:0,value:r.alpha.start},{time:1,value:r.alpha.end}]};g.behaviors.push({type:"alpha",config:{alpha:A}})}else r.alpha.list.length===1?r.alpha.list[0].value!==1&&g.behaviors.push({type:"alphaStatic",config:{alpha:r.alpha.list[0].value}}):g.behaviors.push({type:"alpha",config:{alpha:r.alpha}});if(r.acceleration&&(r.acceleration.x||r.acceleration.y)){let A,T;"start"in r.speed?(A=r.speed.start*((e=r.speed.minimumSpeedMultiplier)!==null&&e!==void 0?e:1),T=r.speed.start):(A=r.speed.list[0].value*((i=r.minimumSpeedMultiplier)!==null&&i!==void 0?i:1),T=r.speed.list[0].value),g.behaviors.push({type:"moveAcceleration",config:{accel:r.acceleration,minStart:A,maxStart:T,rotate:!r.noRotation,maxSpeed:r.maxSpeed}})}else if(!((n=r.extraData)===null||n===void 0)&&n.path){let A,T;"start"in r.speed?(T=(s=r.speed.minimumSpeedMultiplier)!==null&&s!==void 0?s:1,r.speed.start===r.speed.end?A={list:[{time:0,value:r.speed.start}]}:A={list:[{time:0,value:r.speed.start},{time:1,value:r.speed.end}]}):(A=r.speed,T=(a=r.minimumSpeedMultiplier)!==null&&a!==void 0?a:1),g.behaviors.push({type:"movePath",config:{path:r.extraData.path,speed:A,minMult:T}})}else if(r.speed)if("start"in r.speed)if(r.speed.start===r.speed.end)g.behaviors.push({type:"moveSpeedStatic",config:{min:r.speed.start*((o=r.speed.minimumSpeedMultiplier)!==null&&o!==void 0?o:1),max:r.speed.start}});else{const A={list:[{time:0,value:r.speed.start},{time:1,value:r.speed.end}]};g.behaviors.push({type:"moveSpeed",config:{speed:A,minMult:r.speed.minimumSpeedMultiplier}})}else r.speed.list.length===1?g.behaviors.push({type:"moveSpeedStatic",config:{min:r.speed.list[0].value*((h=r.minimumSpeedMultiplier)!==null&&h!==void 0?h:1),max:r.speed.list[0].value}}):g.behaviors.push({type:"moveSpeed",config:{speed:r.speed,minMult:(u=r.minimumSpeedMultiplier)!==null&&u!==void 0?u:1}});if(r.scale)if("start"in r.scale){const A=(l=r.scale.minimumScaleMultiplier)!==null&&l!==void 0?l:1;if(r.scale.start===r.scale.end)g.behaviors.push({type:"scaleStatic",config:{min:r.scale.start*A,max:r.scale.start}});else{const T={list:[{time:0,value:r.scale.start},{time:1,value:r.scale.end}]};g.behaviors.push({type:"scale",config:{scale:T,minMult:A}})}}else if(r.scale.list.length===1){const A=(f=r.minimumScaleMultiplier)!==null&&f!==void 0?f:1,T=r.scale.list[0].value;g.behaviors.push({type:"scaleStatic",config:{min:T*A,max:T}})}else g.behaviors.push({type:"scale",config:{scale:r.scale,minMult:(c=r.minimumScaleMultiplier)!==null&&c!==void 0?c:1}});if(r.color)if("start"in r.color)if(r.color.start===r.color.end)r.color.start!=="ffffff"&&g.behaviors.push({type:"colorStatic",config:{color:r.color.start}});else{const A={list:[{time:0,value:r.color.start},{time:1,value:r.color.end}]};g.behaviors.push({type:"color",config:{color:A}})}else r.color.list.length===1?r.color.list[0].value!=="ffffff"&&g.behaviors.push({type:"colorStatic",config:{color:r.color.list[0].value}}):g.behaviors.push({type:"color",config:{color:r.color}});if(r.rotationAcceleration||((d=r.rotationSpeed)===null||d===void 0?void 0:d.min)||((p=r.rotationSpeed)===null||p===void 0?void 0:p.max)?g.behaviors.push({type:"rotation",config:{accel:r.rotationAcceleration||0,minSpeed:((v=r.rotationSpeed)===null||v===void 0?void 0:v.min)||0,maxSpeed:((_=r.rotationSpeed)===null||_===void 0?void 0:_.max)||0,minStart:((m=r.startRotation)===null||m===void 0?void 0:m.min)||0,maxStart:((x=r.startRotation)===null||x===void 0?void 0:x.max)||0}}):(((E=r.startRotation)===null||E===void 0?void 0:E.min)||((w=r.startRotation)===null||w===void 0?void 0:w.max))&&g.behaviors.push({type:"rotationStatic",config:{min:((y=r.startRotation)===null||y===void 0?void 0:y.min)||0,max:((b=r.startRotation)===null||b===void 0?void 0:b.max)||0}}),r.noRotation&&g.behaviors.push({type:"noRotation",config:{}}),r.blendMode&&r.blendMode!=="normal"&&g.behaviors.push({type:"blendMode",config:{blendMode:r.blendMode}}),Array.isArray(t)&&typeof t[0]!="string"&&"framerate"in t[0]){for(let A=0;A0||t.responseType===r.XHR_RESPONSE_TYPE.BUFFER)?i=fs:i===Sf&&(i=Af);var n=i/100|0;if(n===Rf)if(this.xhrType===r.XHR_RESPONSE_TYPE.TEXT)this.data=e,this.type=r.TYPE.TEXT;else if(this.xhrType===r.XHR_RESPONSE_TYPE.JSON)try{this.data=JSON.parse(e),this.type=r.TYPE.JSON}catch(o){this.abort("Error trying to parse loaded json: "+o);return}else if(this.xhrType===r.XHR_RESPONSE_TYPE.DOCUMENT)try{if(globalThis.DOMParser){var s=new DOMParser;this.data=s.parseFromString(e,"text/xml")}else{var a=document.createElement("div");a.innerHTML=e,this.data=a}this.type=r.TYPE.XML}catch(o){this.abort("Error trying to parse loaded xml: "+o);return}else this.data=t.response||e;else{this.abort("["+t.status+"] "+t.statusText+": "+t.responseURL);return}this.complete()},r.prototype._determineCrossOrigin=function(t,e){if(t.indexOf("data:")===0)return"";if(globalThis.origin!==globalThis.location.origin)return"anonymous";e=e||globalThis.location,gr||(gr=document.createElement("a")),gr.href=t;var i=ha(gr.href,{strictMode:!0}),n=!i.port&&e.port===""||i.port===e.port,s=i.protocol?i.protocol+":":"";return i.host!==e.hostname||!n||s!==e.protocol?"anonymous":""},r.prototype._determineXhrType=function(){return r._xhrTypeMap[this.extension]||r.XHR_RESPONSE_TYPE.TEXT},r.prototype._determineLoadType=function(){return r._loadTypeMap[this.extension]||r.LOAD_TYPE.XHR},r.prototype._getExtension=function(t){t===void 0&&(t=this.url);var e="";if(this.isDataUrl){var i=t.indexOf("/");e=t.substring(i+1,t.indexOf(";",i))}else{var n=t.indexOf("?"),s=t.indexOf("#"),a=Math.min(n>-1?n:t.length,s>-1?s:t.length);t=t.substring(0,a),e=t.substring(t.lastIndexOf(".")+1)}return e.toLowerCase()},r.prototype._getMimeFromXhrType=function(t){switch(t){case r.XHR_RESPONSE_TYPE.BUFFER:return"application/octet-binary";case r.XHR_RESPONSE_TYPE.BLOB:return"application/blob";case r.XHR_RESPONSE_TYPE.DOCUMENT:return"application/xml";case r.XHR_RESPONSE_TYPE.JSON:return"application/json";case r.XHR_RESPONSE_TYPE.DEFAULT:case r.XHR_RESPONSE_TYPE.TEXT:default:return"text/plain"}},r}();(function(r){(function(t){t[t.NONE=0]="NONE",t[t.DATA_URL=1]="DATA_URL",t[t.COMPLETE=2]="COMPLETE",t[t.LOADING=4]="LOADING"})(r.STATUS_FLAGS||(r.STATUS_FLAGS={})),function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.JSON=1]="JSON",t[t.XML=2]="XML",t[t.IMAGE=3]="IMAGE",t[t.AUDIO=4]="AUDIO",t[t.VIDEO=5]="VIDEO",t[t.TEXT=6]="TEXT"}(r.TYPE||(r.TYPE={})),function(t){t[t.XHR=1]="XHR",t[t.IMAGE=2]="IMAGE",t[t.AUDIO=3]="AUDIO",t[t.VIDEO=4]="VIDEO"}(r.LOAD_TYPE||(r.LOAD_TYPE={})),function(t){t.DEFAULT="text",t.BUFFER="arraybuffer",t.BLOB="blob",t.DOCUMENT="document",t.JSON="json",t.TEXT="text"}(r.XHR_RESPONSE_TYPE||(r.XHR_RESPONSE_TYPE={})),r._loadTypeMap={gif:r.LOAD_TYPE.IMAGE,png:r.LOAD_TYPE.IMAGE,bmp:r.LOAD_TYPE.IMAGE,jpg:r.LOAD_TYPE.IMAGE,jpeg:r.LOAD_TYPE.IMAGE,tif:r.LOAD_TYPE.IMAGE,tiff:r.LOAD_TYPE.IMAGE,webp:r.LOAD_TYPE.IMAGE,tga:r.LOAD_TYPE.IMAGE,avif:r.LOAD_TYPE.IMAGE,svg:r.LOAD_TYPE.IMAGE,"svg+xml":r.LOAD_TYPE.IMAGE,mp3:r.LOAD_TYPE.AUDIO,ogg:r.LOAD_TYPE.AUDIO,wav:r.LOAD_TYPE.AUDIO,mp4:r.LOAD_TYPE.VIDEO,webm:r.LOAD_TYPE.VIDEO},r._xhrTypeMap={xhtml:r.XHR_RESPONSE_TYPE.DOCUMENT,html:r.XHR_RESPONSE_TYPE.DOCUMENT,htm:r.XHR_RESPONSE_TYPE.DOCUMENT,xml:r.XHR_RESPONSE_TYPE.DOCUMENT,tmx:r.XHR_RESPONSE_TYPE.DOCUMENT,svg:r.XHR_RESPONSE_TYPE.DOCUMENT,tsx:r.XHR_RESPONSE_TYPE.DOCUMENT,gif:r.XHR_RESPONSE_TYPE.BLOB,png:r.XHR_RESPONSE_TYPE.BLOB,bmp:r.XHR_RESPONSE_TYPE.BLOB,jpg:r.XHR_RESPONSE_TYPE.BLOB,jpeg:r.XHR_RESPONSE_TYPE.BLOB,tif:r.XHR_RESPONSE_TYPE.BLOB,tiff:r.XHR_RESPONSE_TYPE.BLOB,webp:r.XHR_RESPONSE_TYPE.BLOB,tga:r.XHR_RESPONSE_TYPE.BLOB,avif:r.XHR_RESPONSE_TYPE.BLOB,json:r.XHR_RESPONSE_TYPE.JSON,text:r.XHR_RESPONSE_TYPE.TEXT,txt:r.XHR_RESPONSE_TYPE.TEXT,ttf:r.XHR_RESPONSE_TYPE.BUFFER,otf:r.XHR_RESPONSE_TYPE.BUFFER},r.EMPTY_GIF="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="})(J||(J={}));function ae(){}function Pf(r){return function(){for(var e=arguments,i=[],n=0;n>2,n[1]=(i[0]&3)<<4|i[1]>>4,n[2]=(i[1]&15)<<2|i[2]>>6,n[3]=i[2]&63;var a=e-(r.length-1);switch(a){case 2:n[3]=64,n[2]=64;break;case 1:n[3]=64;break}for(var s=0;s0&&s[s.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!s||u[1]>s[0]&&u[1]=33776&&e<=33779)return"s3tc";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e>=36196)return"etc1";if(e>=35986&&e<=34798)return"atc";throw new Error("Invalid (compressed) texture format given!")},t._createLevelBuffers=function(e,i,n,s,a,o,h){for(var u=new Array(n),l=e.byteOffset,f=o,c=h,d=f+s-1&~(s-1),p=c+a-1&~(a-1),v=d*p*Dr[i],_=0;_1?f:d,levelHeight:n>1?c:p,levelBuffer:new Uint8Array(e.buffer,l,v)},l+=v,f=f>>1||1,c=c>>1||1,d=f+s-1&~(s-1),p=c+a-1&~(a-1),v=d*p*Dr[i];return u},t}(Uf);(function(){function r(){}return r.use=function(t,e){var i=t.data,n=this;if(t.type===J.TYPE.JSON&&i&&i.cacheID&&i.textures){for(var s=i.textures,a=void 0,o=void 0,h=0,u=s.length;h>>1,R=R>>>1}for(var C=b,O=0;O1||s!==0?T:O,levelHeight:d>1||s!==0?R:D,levelBuffer:new Uint8Array(t,I,A)},I+=A}j+=C+4,j=j%4!==0?j+4-j%4:j,T=T>>1||1,R=R>>1||1,O=T+v-1&~(v-1),D=R+_-1&~(_-1),A=O*D*y}return s!==0?{uncompressed:E.map(function(V){var it=V[0].levelBuffer,N=!1;return s===M.FLOAT?it=new Float32Array(V[0].levelBuffer.buffer,V[0].levelBuffer.byteOffset,V[0].levelBuffer.byteLength/4):s===M.UNSIGNED_INT?(N=!0,it=new Uint32Array(V[0].levelBuffer.buffer,V[0].levelBuffer.byteOffset,V[0].levelBuffer.byteLength/4)):s===M.INT&&(N=!0,it=new Int32Array(V[0].levelBuffer.buffer,V[0].levelBuffer.byteOffset,V[0].levelBuffer.byteLength/4)),{resource:new _e(it,{width:V[0].levelWidth,height:V[0].levelHeight}),type:s,format:N?sc(a):a}}),kvData:b}:{compressed:E.map(function(V){return new ge(null,{format:o,width:h,height:u,levels:d,levelBuffers:V})}),kvData:b}}function nc(r,t){for(var e=0;et-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}for(var h=0;h0&&s[s.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!s||u[1]>s[0]&&u[1]12,h)u=o.map(function(p){return new _e(new Uint16Array(p.levelArray[0].levelBuffer.buffer),{width:p.width,height:p.height})});else for(l=kr[s.basisFormat],u=new Array(o.length),f=0,c=o.length;f1?ut.ON_MANUAL:ut.OFF,alphaMode:ct.NO_PREMULTIPLIED_ALPHA,type:s,format:a},i)))});return h.forEach(function(u,l){var f=u.baseTexture,c=t+"-"+(l+1);X.addToCache(f,c),k.addToCache(u,c),l===0&&(X.addToCache(f,t),k.addToCache(u,t),n.texture=u),n.textures[c]=u}),n},r.bindTranscoder=function(t){Ht.basisBinding=t},r.loadTranscoder=function(t,e){return Ht.TranscoderWorker.loadTranscoder(t,e)},r.setTranscoder=function(t,e){Ht.TranscoderWorker.setTranscoder(t,e)},r.extension=F.Loader,r}();At.add(uc);/*! + * @pixi/mesh - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/mesh is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + *//*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var ji=function(r,t){return ji=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])},ji(r,t)};function En(r,t){ji(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var lc=function(){function r(t,e){this.uvBuffer=t,this.uvMatrix=e,this.data=null,this._bufferUpdateId=-1,this._textureUpdateId=-1,this._updateID=0}return r.prototype.update=function(t){if(!(!t&&this._bufferUpdateId===this.uvBuffer._updateID&&this._textureUpdateId===this.uvMatrix._updateID)){this._bufferUpdateId=this.uvBuffer._updateID,this._textureUpdateId=this.uvMatrix._updateID;var e=this.uvBuffer.data;(!this.data||this.data.length!==e.length)&&(this.data=new Float32Array(e.length)),this.uvMatrix.multiplyUvs(e,this.data),this._updateID++}},r}(),yi=new q,gs=new Sr,ys=function(r){En(t,r);function t(e,i,n,s){s===void 0&&(s=Tt.TRIANGLES);var a=r.call(this)||this;return a.geometry=e,a.shader=i,a.state=n||er.for2d(),a.drawMode=s,a.start=0,a.size=0,a.uvs=null,a.indices=null,a.vertexData=new Float32Array(1),a.vertexDirty=-1,a._transformID=-1,a._roundPixels=P.ROUND_PIXELS,a.batchUvs=null,a}return Object.defineProperty(t.prototype,"geometry",{get:function(){return this._geometry},set:function(e){this._geometry!==e&&(this._geometry&&(this._geometry.refCount--,this._geometry.refCount===0&&this._geometry.dispose()),this._geometry=e,this._geometry&&this._geometry.refCount++,this.vertexDirty=-1)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"uvBuffer",{get:function(){return this.geometry.buffers[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"verticesBuffer",{get:function(){return this.geometry.buffers[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"material",{get:function(){return this.shader},set:function(e){this.shader=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"blendMode",{get:function(){return this.state.blendMode},set:function(e){this.state.blendMode=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"roundPixels",{get:function(){return this._roundPixels},set:function(e){this._roundPixels!==e&&(this._transformID=-1),this._roundPixels=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tint",{get:function(){return"tint"in this.shader?this.shader.tint:null},set:function(e){this.shader.tint=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"texture",{get:function(){return"texture"in this.shader?this.shader.texture:null},set:function(e){this.shader.texture=e},enumerable:!1,configurable:!0}),t.prototype._render=function(e){var i=this.geometry.buffers[0].data,n=this.shader;n.batchable&&this.drawMode===Tt.TRIANGLES&&i.length>16)+(e&65280)+((e&255)<<16),this._colorDirty=!0)},enumerable:!1,configurable:!0}),t.prototype.update=function(){if(this._colorDirty){this._colorDirty=!1;var e=this.texture.baseTexture;Tu(this._tint,this._alpha,this.uniforms.uColor,e.alphaMode)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)},t}(zr),dc=function(r){En(t,r);function t(e,i,n){var s=r.call(this)||this,a=new ft(e),o=new ft(i,!0),h=new ft(n,!0,!0);return s.addAttribute("aVertexPosition",a,2,!1,M.FLOAT).addAttribute("aTextureCoord",o,2,!1,M.FLOAT).addIndex(h),s._updateId=-1,s}return Object.defineProperty(t.prototype,"vertexDirtyId",{get:function(){return this.buffers[0]._updateID},enumerable:!1,configurable:!0}),t}(Yr);/*! + * @pixi/text - v6.5.8 + * Compiled Sun, 23 Oct 2022 23:01:45 UTC + * + * @pixi/text is licensed under the MIT License. + * http://www.opensource.org/licenses/mit-license + *//*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Wi=function(r,t){return Wi=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])},Wi(r,t)};function pc(r,t){Wi(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var Qe;(function(r){r[r.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",r[r.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL"})(Qe||(Qe={}));var bi={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:Qe.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100,leading:0},vc=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Xr=function(){function r(t){this.styleID=0,this.reset(),Ei(this,t,t)}return r.prototype.clone=function(){var t={};return Ei(t,this,bi),new r(t)},r.prototype.reset=function(){Ei(this,bi,bi)},Object.defineProperty(r.prototype,"align",{get:function(){return this._align},set:function(t){this._align!==t&&(this._align=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"breakWords",{get:function(){return this._breakWords},set:function(t){this._breakWords!==t&&(this._breakWords=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"dropShadow",{get:function(){return this._dropShadow},set:function(t){this._dropShadow!==t&&(this._dropShadow=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"dropShadowAlpha",{get:function(){return this._dropShadowAlpha},set:function(t){this._dropShadowAlpha!==t&&(this._dropShadowAlpha=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"dropShadowAngle",{get:function(){return this._dropShadowAngle},set:function(t){this._dropShadowAngle!==t&&(this._dropShadowAngle=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"dropShadowBlur",{get:function(){return this._dropShadowBlur},set:function(t){this._dropShadowBlur!==t&&(this._dropShadowBlur=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"dropShadowColor",{get:function(){return this._dropShadowColor},set:function(t){var e=xi(t);this._dropShadowColor!==e&&(this._dropShadowColor=e,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"dropShadowDistance",{get:function(){return this._dropShadowDistance},set:function(t){this._dropShadowDistance!==t&&(this._dropShadowDistance=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fill",{get:function(){return this._fill},set:function(t){var e=xi(t);this._fill!==e&&(this._fill=e,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fillGradientType",{get:function(){return this._fillGradientType},set:function(t){this._fillGradientType!==t&&(this._fillGradientType=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fillGradientStops",{get:function(){return this._fillGradientStops},set:function(t){_c(this._fillGradientStops,t)||(this._fillGradientStops=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fontFamily",{get:function(){return this._fontFamily},set:function(t){this.fontFamily!==t&&(this._fontFamily=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fontSize",{get:function(){return this._fontSize},set:function(t){this._fontSize!==t&&(this._fontSize=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fontStyle",{get:function(){return this._fontStyle},set:function(t){this._fontStyle!==t&&(this._fontStyle=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fontVariant",{get:function(){return this._fontVariant},set:function(t){this._fontVariant!==t&&(this._fontVariant=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"fontWeight",{get:function(){return this._fontWeight},set:function(t){this._fontWeight!==t&&(this._fontWeight=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"letterSpacing",{get:function(){return this._letterSpacing},set:function(t){this._letterSpacing!==t&&(this._letterSpacing=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"lineHeight",{get:function(){return this._lineHeight},set:function(t){this._lineHeight!==t&&(this._lineHeight=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"leading",{get:function(){return this._leading},set:function(t){this._leading!==t&&(this._leading=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"lineJoin",{get:function(){return this._lineJoin},set:function(t){this._lineJoin!==t&&(this._lineJoin=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"miterLimit",{get:function(){return this._miterLimit},set:function(t){this._miterLimit!==t&&(this._miterLimit=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"padding",{get:function(){return this._padding},set:function(t){this._padding!==t&&(this._padding=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"stroke",{get:function(){return this._stroke},set:function(t){var e=xi(t);this._stroke!==e&&(this._stroke=e,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"strokeThickness",{get:function(){return this._strokeThickness},set:function(t){this._strokeThickness!==t&&(this._strokeThickness=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"textBaseline",{get:function(){return this._textBaseline},set:function(t){this._textBaseline!==t&&(this._textBaseline=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"trim",{get:function(){return this._trim},set:function(t){this._trim!==t&&(this._trim=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"whiteSpace",{get:function(){return this._whiteSpace},set:function(t){this._whiteSpace!==t&&(this._whiteSpace=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"wordWrap",{get:function(){return this._wordWrap},set:function(t){this._wordWrap!==t&&(this._wordWrap=t,this.styleID++)},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"wordWrapWidth",{get:function(){return this._wordWrapWidth},set:function(t){this._wordWrapWidth!==t&&(this._wordWrapWidth=t,this.styleID++)},enumerable:!1,configurable:!0}),r.prototype.toFontString=function(){var t=typeof this.fontSize=="number"?this.fontSize+"px":this.fontSize,e=this.fontFamily;Array.isArray(this.fontFamily)||(e=this.fontFamily.split(","));for(var i=e.length-1;i>=0;i--){var n=e[i].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&vc.indexOf(n)<0&&(n='"'+n+'"'),e[i]=n}return this.fontStyle+" "+this.fontVariant+" "+this.fontWeight+" "+t+" "+e.join(",")},r}();function xs(r){return typeof r=="number"?Fs(r):(typeof r=="string"&&r.indexOf("0x")===0&&(r=r.replace("0x","#")),r)}function xi(r){if(Array.isArray(r)){for(var t=0;tp)if(a!==""&&(o+=r.addLine(a),a="",s=0),r.canBreakWords(m,e.breakWords))for(var y=r.wordWrapSplit(m),b=0;bp&&(o+=r.addLine(a),d=!1,a="",s=0),a+=g,s+=O}else{a.length>0&&(o+=r.addLine(a),a="",s=0);var D=_===v.length-1;o+=r.addLine(m,!D),d=!1,a="",s=0}else w+s>p&&(d=!1,o+=r.addLine(a),a="",s=0),(a.length>0||!r.isBreakingSpace(m)||d)&&(a+=m,s+=w)}return o+=r.addLine(a,!1),o},r.addLine=function(t,e){return e===void 0&&(e=!0),t=r.trimRight(t),t=e?t+` +`:t,t},r.getFromCache=function(t,e,i,n){var s=i[t];if(typeof s!="number"){var a=t.length*e;s=n.measureText(t).width+a,i[t]=s}return s},r.collapseSpaces=function(t){return t==="normal"||t==="pre-line"},r.collapseNewlines=function(t){return t==="normal"},r.trimRight=function(t){if(typeof t!="string")return"";for(var e=t.length-1;e>=0;e--){var i=t[e];if(!r.isBreakingSpace(i))break;t=t.slice(0,-1)}return t},r.isNewline=function(t){return typeof t!="string"?!1:r._newlines.indexOf(t.charCodeAt(0))>=0},r.isBreakingSpace=function(t,e){return typeof t!="string"?!1:r._breakingSpaces.indexOf(t.charCodeAt(0))>=0},r.tokenize=function(t){var e=[],i="";if(typeof t!="string")return e;for(var n=0;no;--c){for(var v=0;v0&&_>m&&(x=(m+_)/2);var E=m+v,w=n.lineHeight*(p+1),y=E;p+1")>-1){var e=new globalThis.DOMParser().parseFromString(t,"text/xml");return Yi.test(e)}return!1},r.parse=function(t){var e=new globalThis.DOMParser().parseFromString(t,"text/xml");return Yi.parse(e)},r}(),Ti=[Rr,Yi,zi];function pa(r){for(var t=0;t=u-T*o){if(v===0)throw new Error("[BitmapFont] textureHeight "+u+"px is too small "+("(fontFamily: '"+f.fontFamily+"', fontSize: "+f.fontSize+"px, char: '"+b+"')"));--y,_=null,m=null,x=null,v=0,p=0,E=0;continue}if(E=Math.max(T+g.fontProperties.descent,E),R*o+p>=c){if(p===0)throw new Error("[BitmapFont] textureWidth "+h+"px is too small "+("(fontFamily: '"+f.fontFamily+"', fontSize: "+f.fontSize+"px, char: '"+b+"')"));--y,v+=E*o,v=Math.ceil(v),p=0,E=0;continue}bc(_,m,g,p,v,o,f);var O=Pr(g.text);d.char.push({id:O,page:w.length-1,x:p/o,y:v/o,width:R,height:T,xoffset:0,yoffset:0,xadvance:Math.ceil(A-(f.dropShadow?f.dropShadowDistance:0)-(f.stroke?f.strokeThickness:0))}),p+=(R+2*a)*o,p=Math.ceil(p)}for(var y=0,D=l.length;y 0.99) {\r + alpha = 1.0;\r + }\r +\r + // NPM Textures, NPM outputs\r + gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\r +\r +}\r +`,Tc=`// Mesh material default fragment\r +attribute vec2 aVertexPosition;\r +attribute vec2 aTextureCoord;\r +\r +uniform mat3 projectionMatrix;\r +uniform mat3 translationMatrix;\r +uniform mat3 uTextureMatrix;\r +\r +varying vec2 vTextureCoord;\r +\r +void main(void)\r +{\r + gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r +\r + vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r +}\r +`,Es=[],Ts=[],ws=[];(function(r){gc(t,r);function t(e,i){i===void 0&&(i={});var n=r.call(this)||this;n._tint=16777215;var s=Object.assign({},t.styleDefaults,i),a=s.align,o=s.tint,h=s.maxWidth,u=s.letterSpacing,l=s.fontName,f=s.fontSize;if(!kt.available[l])throw new Error('Missing BitmapFont "'+l+'"');return n._activePagesMeshData=[],n._textWidth=0,n._textHeight=0,n._align=a,n._tint=o,n._font=void 0,n._fontName=l,n._fontSize=f,n.text=e,n._maxWidth=h,n._maxLineHeight=0,n._letterSpacing=u,n._anchor=new Ie(function(){n.dirty=!0},n,0,0),n._roundPixels=P.ROUND_PIXELS,n.dirty=!0,n._resolution=P.RESOLUTION,n._autoResolution=!0,n._textureCache={},n}return t.prototype.updateText=function(){for(var e,i=kt.available[this._fontName],n=this.fontSize,s=n/i.size,a=new q,o=[],h=[],u=[],l=this._text.replace(/(?:\r\n|\r)/g,` +`)||" ",f=va(l),c=this._maxWidth*i.size/n,d=i.distanceFieldType==="none"?Es:Ts,p=null,v=0,_=0,m=0,x=-1,E=0,w=0,y=0,b=0,g=0;g0&&a.x>c&&(++w,je(o,1+x-w,1+g-x),g=x,x=-1,h.push(E),u.push(o.length>0?o[o.length-1].prevSpaces:0),_=Math.max(_,E),m++,a.x=0,a.y+=i.lineHeight,p=null,b=0)}}var D=f[f.length-1];D!=="\r"&&D!==` +`&&(/(?:\s)/.test(D)&&(v=E),h.push(v),_=Math.max(_,v),u.push(-1));for(var j=[],g=0;g<=m;g++){var et=0;this._align==="right"?et=_-h[g]:this._align==="center"?et=(_-h[g])/2:this._align==="justify"&&(et=u[g]<0?0:(_-h[g])/u[g]),j.push(et)}var C=o.length,I={},H=[],lt=this._activePagesMeshData;d.push.apply(d,lt);for(var g=0;g6*St)||N.vertices.length0&&s[s.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!s||u[1]>s[0]&&u[1] { self.postMessage(result); }); + `},Hc={id:"loadImageBitmap",code:` + async function loadImageBitmap(url) + { + const response = await fetch(url); + + if (!response.ok) + { + throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \` + + \`\${response.status} \${response.statusText}\`); + } + + const imageBlob = await response.blob(); + const imageBitmap = await createImageBitmap(imageBlob); + + return imageBitmap; + } + self.onmessage = async (event) => + { + try + { + const imageBitmap = await loadImageBitmap(event.data.data[0]); + + self.postMessage({ + data: imageBitmap, + uuid: event.data.uuid, + id: event.data.id, + }, [imageBitmap]); + } + catch(e) + { + self.postMessage({ + error: e, + uuid: event.data.uuid, + id: event.data.id, + }); + } + };`},Ai,jc=function(){function r(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}return r.prototype.isImageBitmapSupported=function(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(function(t){var e=URL.createObjectURL(new Blob([Xc.code],{type:"application/javascript"})),i=new Worker(e);i.addEventListener("message",function(n){i.terminate(),URL.revokeObjectURL(e),t(n.data)})}),this._isImageBitmapSupported)},r.prototype.loadImageBitmap=function(t){return this._run("loadImageBitmap",[t])},r.prototype._initWorkers=function(){return U(this,void 0,void 0,function(){return G(this,function(t){return this._initialized?[2]:(this._initialized=!0,[2])})})},r.prototype.getWorker=function(){var t=this;wi===void 0&&(wi=navigator.hardwareConcurrency||4);var e=this.workerPool.pop();return!e&&this._createdWorkersthis.maxSegments&&(e=this.maxSegments),e}},ga=function(){function r(){this.color=16777215,this.alpha=1,this.texture=k.WHITE,this.matrix=null,this.visible=!1,this.reset()}return r.prototype.clone=function(){var t=new r;return t.color=this.color,t.alpha=this.alpha,t.texture=this.texture,t.matrix=this.matrix,t.visible=this.visible,t},r.prototype.reset=function(){this.color=16777215,this.alpha=1,this.texture=k.WHITE,this.matrix=null,this.visible=!1},r.prototype.destroy=function(){this.texture=null,this.matrix=null},r}();/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var qi=function(r,t){return qi=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])},qi(r,t)};function Sn(r,t){qi(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function Ps(r,t){var e,i;t===void 0&&(t=!1);var n=r.length;if(!(n<6)){for(var s=0,a=0,o=r[n-2],h=r[n-1];a0||t&&s<=0)for(var f=n/2,a=f+f%2;a=6){Ps(e,!1);for(var a=[],o=0;o=0&&o>=0&&n>=0&&s>=0)){t.length=0;return}var d=Math.ceil(2.3*Math.sqrt(a+o)),p=d*8+(n?4:0)+(s?4:0);if(t.length=p,p!==0){if(d===0){t.length=8,t[0]=t[6]=e+n,t[1]=t[3]=i+s,t[2]=t[4]=e-n,t[5]=t[7]=i-s;return}var v=0,_=d*4+(n?2:0)+2,m=_,x=p;{var E=n+a,w=s,y=e+E,b=e-E,g=i+w;if(t[v++]=y,t[v++]=g,t[--_]=g,t[--_]=b,s){var A=i-w;t[m++]=b,t[m++]=A,t[--x]=A,t[--x]=y}}for(var T=1;Tf&&(f+=Math.PI*2);var c=l,d=f-l,p=Math.abs(d),v=Math.sqrt(h*h+u*u),_=(15*p*Math.sqrt(v)/Math.PI>>0)+1,m=d/_;if(c+=m,o){a.push(r,t),a.push(e,i);for(var x=1,E=c;x<_;x++,E+=m)a.push(r,t),a.push(r+Math.sin(E)*v,t+Math.cos(E)*v);a.push(r,t),a.push(n,s)}else{a.push(e,i),a.push(r,t);for(var x=1,E=c;x<_;x++,E+=m)a.push(r+Math.sin(E)*v,t+Math.cos(E)*v),a.push(r,t);a.push(n,s),a.push(r,t)}return _*2}function td(r,t){var e=r.shape,i=r.points||e.points.slice(),n=t.closePointEps;if(i.length!==0){var s=r.lineStyle,a=new q(i[0],i[1]),o=new q(i[i.length-2],i[i.length-1]),h=e.type!==at.POLY||e.closeStroke,u=Math.abs(a.x-o.x)=0&&(s.join===Wt.ROUND?p+=oe(y,b,y-T*C,b-R*C,y-O*C,b-D*C,c,!1)+4:p+=2,c.push(y-O*I,b-D*I),c.push(y+O*C,b+D*C));continue}var Me=(-T+E)*(-R+b)-(-T+y)*(-R+w),ye=(-O+g)*(-D+b)-(-O+y)*(-D+A),St=(lt*ye-it*Me)/Kt,be=(N*Me-V*ye)/Kt,xe=(St-y)*(St-y)+(be-b)*(be-b),mt=y+(St-y)*C,gt=b+(be-b)*C,vt=y-(St-y)*I,_t=b-(be-b)*I,Q=Math.min(lt*lt+V*V,it*it+N*N),re=Lt?C:I,Rt=Q+re*re*m,Y=xe<=Rt;Y?s.join===Wt.BEVEL||xe/m>x?(Lt?(c.push(mt,gt),c.push(y+T*I,b+R*I),c.push(mt,gt),c.push(y+O*I,b+D*I)):(c.push(y-T*C,b-R*C),c.push(vt,_t),c.push(y-O*C,b-D*C),c.push(vt,_t)),p+=2):s.join===Wt.ROUND?Lt?(c.push(mt,gt),c.push(y+T*I,b+R*I),p+=oe(y,b,y+T*I,b+R*I,y+O*I,b+D*I,c,!0)+4,c.push(mt,gt),c.push(y+O*I,b+D*I)):(c.push(y-T*C,b-R*C),c.push(vt,_t),p+=oe(y,b,y-T*C,b-R*C,y-O*C,b-D*C,c,!1)+4,c.push(y-O*C,b-D*C),c.push(vt,_t)):(c.push(mt,gt),c.push(vt,_t)):(c.push(y-T*C,b-R*C),c.push(y+T*I,b+R*I),s.join===Wt.ROUND?Lt?p+=oe(y,b,y+T*I,b+R*I,y+O*I,b+D*I,c,!0)+2:p+=oe(y,b,y-T*C,b-R*C,y-O*C,b-D*C,c,!1)+2:s.join===Wt.MITER&&xe/m<=x&&(Lt?(c.push(vt,_t),c.push(vt,_t)):(c.push(mt,gt),c.push(mt,gt)),p+=2),c.push(y-O*C,b-D*C),c.push(y+O*I,b+D*I),p+=2)}E=i[(d-2)*2],w=i[(d-2)*2+1],y=i[(d-1)*2],b=i[(d-1)*2+1],T=-(w-b),R=E-y,j=Math.sqrt(T*T+R*R),T/=j,R/=j,T*=_,R*=_,c.push(y-T*C,b-R*C),c.push(y+T*I,b+R*I),h||(s.cap===Jt.ROUND?p+=oe(y-T*(C-I)*.5,b-R*(C-I)*.5,y-T*C,b-R*C,y+T*I,b+R*I,c,!1)+2:s.cap===Jt.SQUARE&&(p+=Cs(y,b,T,R,C,I,!1,c)));for(var Pt=t.indices,Ee=Je.epsilon*Je.epsilon,H=v;Hc*u}},r.arc=function(t,e,i,n,s,a,o,h,u){for(var l=o-a,f=Je._segmentsCount(Math.abs(l)*s,Math.ceil(Math.abs(l)/Mr)*40),c=l/(f*2),d=c*2,p=Math.cos(c),v=Math.sin(c),_=f-1,m=_%1/_,x=0;x<=_;++x){var E=x+m*x,w=c+a+d*E,y=Math.cos(w),b=-Math.sin(w);u.push((p*y+v*b)*s+i,(p*-b+v*y)*s+n)}},r}(),rd=function(){function r(){}return r.curveLength=function(t,e,i,n,s,a,o,h){for(var u=10,l=0,f=0,c=0,d=0,p=0,v=0,_=0,m=0,x=0,E=0,w=0,y=t,b=e,g=1;g<=u;++g)f=g/u,c=f*f,d=c*f,p=1-f,v=p*p,_=v*p,m=_*t+3*v*f*i+3*p*c*s+d*o,x=_*e+3*v*f*n+3*p*c*a+d*h,E=y-m,w=b-x,y=m,b=x,l+=Math.sqrt(E*E+w*w);return l},r.curveTo=function(t,e,i,n,s,a,o){var h=o[o.length-2],u=o[o.length-1];o.length-=2;var l=Je._segmentsCount(r.curveLength(h,u,t,e,i,n,s,a)),f=0,c=0,d=0,p=0,v=0;o.push(h,u);for(var _=1,m=0;_<=l;++_)m=_/l,f=1-m,c=f*f,d=c*f,p=m*m,v=p*m,o.push(d*h+3*c*m*t+3*f*p*i+v*s,d*u+3*c*m*e+3*f*p*n+v*a)},r}(),id=function(){function r(){}return r.curveLength=function(t,e,i,n,s,a){var o=t-2*i+s,h=e-2*n+a,u=2*i-2*t,l=2*n-2*e,f=4*(o*o+h*h),c=4*(o*u+h*l),d=u*u+l*l,p=2*Math.sqrt(f+c+d),v=Math.sqrt(f),_=2*f*v,m=2*Math.sqrt(d),x=c/v;return(_*p+v*c*(p-m)+(4*d*f-c*c)*Math.log((2*v+x+p)/(x+m)))/(4*_)},r.curveTo=function(t,e,i,n,s){for(var a=s[s.length-2],o=s[s.length-1],h=Je._segmentsCount(r.curveLength(a,o,t,e,i,n)),u=0,l=0,f=1;f<=h;++f){var c=f/h;u=a+(t-a)*c,l=o+(e-o)*c,s.push(u+(t+(i-t)*c-u)*c,l+(e+(n-e)*c-l)*c)}},r}(),nd=function(){function r(){this.reset()}return r.prototype.begin=function(t,e,i){this.reset(),this.style=t,this.start=e,this.attribStart=i},r.prototype.end=function(t,e){this.attribSize=e-this.attribStart,this.size=t-this.start},r.prototype.reset=function(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0},r}(),he,Ri=(he={},he[at.POLY]=ya,he[at.CIRC]=Wr,he[at.ELIP]=Wr,he[at.RECT]=Qc,he[at.RREC]=Jc,he),Bs=[],Ar=[],Ms=function(){function r(t,e,i,n){e===void 0&&(e=null),i===void 0&&(i=null),n===void 0&&(n=null),this.points=[],this.holes=[],this.shape=t,this.lineStyle=i,this.fillStyle=e,this.matrix=n,this.type=t.type}return r.prototype.clone=function(){return new r(this.shape,this.fillStyle,this.lineStyle,this.matrix)},r.prototype.destroy=function(){this.shape=null,this.holes.length=0,this.holes=null,this.points.length=0,this.points=null,this.lineStyle=null,this.fillStyle=null},r}(),Se=new q,sd=function(r){Sn(t,r);function t(){var e=r.call(this)||this;return e.closePointEps=1e-4,e.boundsPadding=0,e.uvsFloat32=null,e.indicesUint16=null,e.batchable=!1,e.points=[],e.colors=[],e.uvs=[],e.indices=[],e.textureIds=[],e.graphicsData=[],e.drawCalls=[],e.batchDirty=-1,e.batches=[],e.dirty=0,e.cacheDirty=-1,e.clearDirty=0,e.shapeIndex=0,e._bounds=new Lr,e.boundsDirty=-1,e}return Object.defineProperty(t.prototype,"bounds",{get:function(){return this.updateBatches(),this.boundsDirty!==this.dirty&&(this.boundsDirty=this.dirty,this.calculateBounds()),this._bounds},enumerable:!1,configurable:!0}),t.prototype.invalidate=function(){this.boundsDirty=-1,this.dirty++,this.batchDirty++,this.shapeIndex=0,this.points.length=0,this.colors.length=0,this.uvs.length=0,this.indices.length=0,this.textureIds.length=0;for(var e=0;e0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this},t.prototype.drawShape=function(e,i,n,s){i===void 0&&(i=null),n===void 0&&(n=null),s===void 0&&(s=null);var a=new Ms(e,i,n,s);return this.graphicsData.push(a),this.dirty++,this},t.prototype.drawHole=function(e,i){if(i===void 0&&(i=null),!this.graphicsData.length)return null;var n=new Ms(e,null,null,i),s=this.graphicsData[this.graphicsData.length-1];return n.lineStyle=s.lineStyle,s.holes.push(n),this.dirty++,this},t.prototype.destroy=function(){r.prototype.destroy.call(this);for(var e=0;e0&&(n=this.batches[this.batches.length-1],s=n.style);for(var a=this.shapeIndex;a65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&E===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=E?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}},t.prototype._compareStyles=function(e,i){return!(!e||!i||e.texture.baseTexture!==i.texture.baseTexture||e.color+e.alpha!==i.color+i.alpha||!!e.native!=!!i.native)},t.prototype.validateBatching=function(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(var e=0,i=this.graphicsData.length;e65535*2)return!1;for(var e=this.batches,i=0;i0&&(a=Ar.pop(),a||(a=new Ni,a.texArray=new Fi),this.drawCalls.push(a)),a.start=c,a.size=0,a.texArray.count=0,a.type=f),_.touched=1,_._batchEnabled=e,_._batchLocation=o,_.wrapMode=Be.REPEAT,a.texArray.elements[a.texArray.count++]=_,o++)),a.size+=d.size,c+=d.size,u=_._batchLocation,this.addColors(n,v.color,v.alpha,d.attribSize,d.attribStart),this.addTextureIds(s,u,d.attribSize,d.attribStart)}X._globalBatch=e,this.packAttributes()},t.prototype.packAttributes=function(){for(var e=this.points,i=this.uvs,n=this.colors,s=this.textureIds,a=new ArrayBuffer(e.length*3*4),o=new Float32Array(a),h=new Uint32Array(a),u=0,l=0;l>16)+(i&65280)+((i&255)<<16),h=Us(o,n);e.length=Math.max(e.length,a+s);for(var u=0;u0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this},t.prototype.startPoly=function(){if(this.currentPath){var e=this.currentPath.points,i=this.currentPath.points.length;i>2&&(this.drawShape(this.currentPath),this.currentPath=new Sr,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[i-2],e[i-1]))}else this.currentPath=new Sr,this.currentPath.closeStroke=!1},t.prototype.finishPoly=function(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)},t.prototype.moveTo=function(e,i){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=i,this},t.prototype.lineTo=function(e,i){this.currentPath||this.moveTo(0,0);var n=this.currentPath.points,s=n[n.length-2],a=n[n.length-1];return(s!==e||a!==i)&&n.push(e,i),this},t.prototype._initCurve=function(e,i){e===void 0&&(e=0),i===void 0&&(i=0),this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,i]):this.moveTo(e,i)},t.prototype.quadraticCurveTo=function(e,i,n,s){this._initCurve();var a=this.currentPath.points;return a.length===0&&this.moveTo(0,0),id.curveTo(e,i,n,s,a),this},t.prototype.bezierCurveTo=function(e,i,n,s,a,o){return this._initCurve(),rd.curveTo(e,i,n,s,a,o,this.currentPath.points),this},t.prototype.arcTo=function(e,i,n,s,a){this._initCurve(e,i);var o=this.currentPath.points,h=Os.curveTo(e,i,n,s,a,o);if(h){var u=h.cx,l=h.cy,f=h.radius,c=h.startAngle,d=h.endAngle,p=h.anticlockwise;this.arc(u,l,f,c,d,p)}return this},t.prototype.arc=function(e,i,n,s,a,o){if(o===void 0&&(o=!1),s===a)return this;!o&&a<=s?a+=Mr:o&&s<=a&&(s+=Mr);var h=a-s;if(h===0)return this;var u=e+Math.cos(s)*n,l=i+Math.sin(s)*n,f=this._geometry.closePointEps,c=this.currentPath?this.currentPath.points:null;if(c){var d=Math.abs(c[c.length-2]-u),p=Math.abs(c[c.length-1]-l);d0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this},t.prototype.endFill=function(){return this.finishPoly(),this._fillStyle.reset(),this},t.prototype.drawRect=function(e,i,n,s){return this.drawShape(new W(e,i,n,s))},t.prototype.drawRoundedRect=function(e,i,n,s,a){return this.drawShape(new Ou(e,i,n,s,a))},t.prototype.drawCircle=function(e,i,n){return this.drawShape(new Cu(e,i,n))},t.prototype.drawEllipse=function(e,i,n,s){return this.drawShape(new Iu(e,i,n,s))},t.prototype.drawPolygon=function(){for(var e=arguments,i=[],n=0;n>16&255)/255*a,o.tint[1]=(s>>8&255)/255*a,o.tint[2]=(s&255)/255*a,o.tint[3]=a,e.shader.bind(i),e.geometry.bind(n,i),e.state.set(this.state);for(var u=0,l=h.length;u>16)+(u&65280)+((u&255)<<16)}}},t.prototype.calculateVertices=function(){var e=this.transform._worldID;if(this._transformID!==e){this._transformID=e;for(var i=this.transform.worldTransform,n=i.a,s=i.b,a=i.c,o=i.d,h=i.tx,u=i.ty,l=this._geometry.points,f=this.vertexData,c=0,d=0;d!!n[r.toLowerCase()]:r=>!!n[r]}const _f="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",Ef=Oe(_f);function Hn(e){if(U(e)){const t={};for(let n=0;n{if(n){const s=n.split(vf);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Vn(e){let t="";if(z(e))t=e;else if(U(e))for(let n=0;ngt(n,t))}const Ff=e=>z(e)?e:e==null?"":U(e)||ie(e)&&(e.toString===Go||!W(e.toString))?JSON.stringify(e,Qo,2):String(e),Qo=(e,t)=>t&&t.__v_isRef?Qo(e,t.value):Xt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()]}:ie(t)&&!U(t)&&!el(t)?String(t):t,se={},Zt=[],ke=()=>{},ps=()=>!1,Lf=/^on[^a-z]/,Ut=e=>Lf.test(e),xr=e=>e.startsWith("onUpdate:"),te=Object.assign,Wr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Bf=Object.prototype.hasOwnProperty,X=(e,t)=>Bf.call(e,t),U=Array.isArray,Xt=e=>Un(e)==="[object Map]",Kt=e=>Un(e)==="[object Set]",Ji=e=>Un(e)==="[object Date]",W=e=>typeof e=="function",z=e=>typeof e=="string",mt=e=>typeof e=="symbol",ie=e=>e!==null&&typeof e=="object",qr=e=>ie(e)&&W(e.then)&&W(e.catch),Go=Object.prototype.toString,Un=e=>Go.call(e),Df=e=>Un(e).slice(8,-1),el=e=>Un(e)==="[object Object]",zr=e=>z(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,At=Oe(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),$f=Oe("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Ls=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Hf=/-(\w)/g,_e=Ls(e=>e.replace(Hf,(t,n)=>n?n.toUpperCase():"")),Vf=/\B([A-Z])/g,Me=Ls(e=>e.replace(Vf,"-$1").toLowerCase()),jt=Ls(e=>e.charAt(0).toUpperCase()+e.slice(1)),Qt=Ls(e=>e?`on${jt(e)}`:""),nn=(e,t)=>!Object.is(e,t),Gt=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},it=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Yi;const Uf=()=>Yi||(Yi=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Ae;class Jr{constructor(t=!1){this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Ae,!t&&Ae&&(this.index=(Ae.scopes||(Ae.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Ae;try{return Ae=this,t()}finally{Ae=n}}}on(){Ae=this}off(){Ae=this.parent}stop(t){if(this.active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},nl=e=>(e.w&yt)>0,sl=e=>(e.n&yt)>0,Wf=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(u==="length"||u>=c)&&l.push(f)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":U(e)?zr(n)&&l.push(o.get("length")):(l.push(o.get(It)),Xt(e)&&l.push(o.get(_r)));break;case"delete":U(e)||(l.push(o.get(It)),Xt(e)&&l.push(o.get(_r)));break;case"set":Xt(e)&&l.push(o.get(It));break}if(l.length===1)l[0]&&Er(l[0]);else{const c=[];for(const f of l)f&&c.push(...f);Er(Yr(c))}}function Er(e,t){const n=U(e)?e:[...e];for(const s of n)s.computed&&Xi(s);for(const s of n)s.computed||Xi(s)}function Xi(e,t){(e!==We||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Yf=Oe("__proto__,__v_isRef,__isVue"),ol=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(mt)),Zf=Bs(),Xf=Bs(!1,!0),Qf=Bs(!0),Gf=Bs(!0,!0),Qi=ea();function ea(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=Q(this);for(let i=0,o=this.length;i{e[t]=function(...n){un();const s=Q(this)[t].apply(this,n);return pn(),s}}),e}function Bs(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?dl:pl:t?ul:al).get(s))return s;const o=U(s);if(!e&&o&&X(Qi,r))return Reflect.get(Qi,r,i);const l=Reflect.get(s,r,i);return(mt(r)?ol.has(r):Yf(r))||(e||Be(s,"get",r),t)?l:ge(l)?o&&zr(r)?l:l.value:ie(l)?e?Xr(l):Hs(l):l}}const ta=ll(),na=ll(!0);function ll(e=!1){return function(n,s,r,i){let o=n[s];if(Bt(o)&&ge(o)&&!ge(r))return!1;if(!e&&(!Pn(r)&&!Bt(r)&&(o=Q(o),r=Q(r)),!U(n)&&ge(o)&&!ge(r)))return o.value=r,!0;const l=U(n)&&zr(s)?Number(s)e,Ds=e=>Reflect.getPrototypeOf(e);function Qn(e,t,n=!1,s=!1){e=e.__v_raw;const r=Q(e),i=Q(t);n||(t!==i&&Be(r,"get",t),Be(r,"get",i));const{has:o}=Ds(r),l=s?Zr:n?ei:On;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Gn(e,t=!1){const n=this.__v_raw,s=Q(n),r=Q(e);return t||(e!==r&&Be(s,"has",e),Be(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function es(e,t=!1){return e=e.__v_raw,!t&&Be(Q(e),"iterate",It),Reflect.get(e,"size",e)}function Gi(e){e=Q(e);const t=Q(this);return Ds(t).has.call(t,e)||(t.add(e),ot(t,"add",e,e)),this}function eo(e,t){t=Q(t);const n=Q(this),{has:s,get:r}=Ds(n);let i=s.call(n,e);i||(e=Q(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?nn(t,o)&&ot(n,"set",e,t):ot(n,"add",e,t),this}function to(e){const t=Q(this),{has:n,get:s}=Ds(t);let r=n.call(t,e);r||(e=Q(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&ot(t,"delete",e,void 0),i}function no(){const e=Q(this),t=e.size!==0,n=e.clear();return t&&ot(e,"clear",void 0,void 0),n}function ts(e,t){return function(s,r){const i=this,o=i.__v_raw,l=Q(o),c=t?Zr:e?ei:On;return!e&&Be(l,"iterate",It),o.forEach((f,u)=>s.call(r,c(f),c(u),i))}}function ns(e,t,n){return function(...s){const r=this.__v_raw,i=Q(r),o=Xt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),u=n?Zr:t?ei:On;return!t&&Be(i,"iterate",c?_r:It),{next(){const{value:a,done:d}=f.next();return d?{value:a,done:d}:{value:l?[u(a[0]),u(a[1])]:u(a),done:d}},[Symbol.iterator](){return this}}}}function ct(e){return function(...t){return e==="delete"?!1:this}}function ca(){const e={get(i){return Qn(this,i)},get size(){return es(this)},has:Gn,add:Gi,set:eo,delete:to,clear:no,forEach:ts(!1,!1)},t={get(i){return Qn(this,i,!1,!0)},get size(){return es(this)},has:Gn,add:Gi,set:eo,delete:to,clear:no,forEach:ts(!1,!0)},n={get(i){return Qn(this,i,!0)},get size(){return es(this,!0)},has(i){return Gn.call(this,i,!0)},add:ct("add"),set:ct("set"),delete:ct("delete"),clear:ct("clear"),forEach:ts(!0,!1)},s={get(i){return Qn(this,i,!0,!0)},get size(){return es(this,!0)},has(i){return Gn.call(this,i,!0)},add:ct("add"),set:ct("set"),delete:ct("delete"),clear:ct("clear"),forEach:ts(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=ns(i,!1,!1),n[i]=ns(i,!0,!1),t[i]=ns(i,!1,!0),s[i]=ns(i,!0,!0)}),[e,n,t,s]}const[fa,aa,ua,pa]=ca();function $s(e,t){const n=t?e?pa:ua:e?aa:fa;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(X(n,r)&&r in s?n:s,r,i)}const da={get:$s(!1,!1)},ha={get:$s(!1,!0)},ga={get:$s(!0,!1)},ma={get:$s(!0,!0)},al=new WeakMap,ul=new WeakMap,pl=new WeakMap,dl=new WeakMap;function ya(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ba(e){return e.__v_skip||!Object.isExtensible(e)?0:ya(Df(e))}function Hs(e){return Bt(e)?e:Vs(e,!1,cl,da,al)}function hl(e){return Vs(e,!1,oa,ha,ul)}function Xr(e){return Vs(e,!0,fl,ga,pl)}function _a(e){return Vs(e,!0,la,ma,dl)}function Vs(e,t,n,s,r){if(!ie(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=ba(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function Mt(e){return Bt(e)?Mt(e.__v_raw):!!(e&&e.__v_isReactive)}function Bt(e){return!!(e&&e.__v_isReadonly)}function Pn(e){return!!(e&&e.__v_isShallow)}function Qr(e){return Mt(e)||Bt(e)}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function Gr(e){return bs(e,"__v_skip",!0),e}const On=e=>ie(e)?Hs(e):e,ei=e=>ie(e)?Xr(e):e;function ti(e){dt&&We&&(e=Q(e),il(e.dep||(e.dep=Yr())))}function Us(e,t){e=Q(e),e.dep&&Er(e.dep)}function ge(e){return!!(e&&e.__v_isRef===!0)}function ds(e){return gl(e,!1)}function Ea(e){return gl(e,!0)}function gl(e,t){return ge(e)?e:new Ca(e,t)}class Ca{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Q(t),this._value=n?t:On(t)}get value(){return ti(this),this._value}set value(t){const n=this.__v_isShallow||Pn(t)||Bt(t);t=n?t:Q(t),nn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:On(t),Us(this))}}function va(e){Us(e)}function ml(e){return ge(e)?e.value:e}const Ta={get:(e,t,n)=>ml(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ge(r)&&!ge(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ni(e){return Mt(e)?e:new Proxy(e,Ta)}class Sa{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>ti(this),()=>Us(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function wa(e){return new Sa(e)}function Na(e){const t=U(e)?new Array(e.length):{};for(const n in e)t[n]=yl(e,n);return t}class Pa{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function yl(e,t,n){const s=e[t];return ge(s)?s:new Pa(e,t,n)}var bl;class Oa{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[bl]=!1,this._dirty=!0,this.effect=new Kn(t,()=>{this._dirty||(this._dirty=!0,Us(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=Q(this);return ti(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}bl="__v_isReadonly";function Ra(e,t,n=!1){let s,r;const i=W(e);return i?(s=e,r=ke):(s=e.get,r=e.set),new Oa(s,r,i||!r,n)}function Aa(e,...t){}function st(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){xt(i,t,n)}return r}function Fe(e,t,n,s){if(W(e)){const i=st(e,t,n,s);return i&&qr(i)&&i.catch(o=>{xt(o,t,n)}),i}const r=[];for(let i=0;i>>1;An(Ee[s])Ze&&Ee.splice(t,1)}function ii(e){U(e)?en.push(...e):(!tt||!tt.includes(e,e.allowRecurse?Nt+1:Nt))&&en.push(e),El()}function so(e,t=Rn?Ze+1:0){for(;tAn(n)-An(s)),Nt=0;Nte.id==null?1/0:e.id,Fa=(e,t)=>{const n=An(e)-An(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Cl(e){Cr=!1,Rn=!0,Ee.sort(Fa);const t=ke;try{for(Ze=0;ZeJt.emit(r,...i)),ss=[]):typeof window!="undefined"&&window.HTMLElement&&!(!((s=(n=window.navigator)===null||n===void 0?void 0:n.userAgent)===null||s===void 0)&&s.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(i=>{vl(i,t)}),setTimeout(()=>{Jt||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,ss=[])},3e3)):ss=[]}function La(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||se;let r=n;const i=t.startsWith("update:"),o=i&&t.slice(7);if(o&&o in s){const u=`${o==="modelValue"?"model":o}Modifiers`,{number:a,trim:d}=s[u]||se;d&&(r=n.map(m=>z(m)?m.trim():m)),a&&(r=n.map(it))}let l,c=s[l=Qt(t)]||s[l=Qt(_e(t))];!c&&i&&(c=s[l=Qt(Me(t))]),c&&Fe(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Fe(f,e,6,r)}}function Tl(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!W(e)){const c=f=>{const u=Tl(f,t,!0);u&&(l=!0,te(o,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ie(e)&&s.set(e,null),null):(U(i)?i.forEach(c=>o[c]=null):te(o,i),ie(e)&&s.set(e,o),o)}function js(e,t){return!e||!Ut(t)?!1:(t=t.slice(2).replace(/Once$/,""),X(e,t[0].toLowerCase()+t.slice(1))||X(e,Me(t))||X(e,t))}let be=null,xs=null;function In(e){const t=be;return be=e,xs=e&&e.type.__scopeId||null,t}function Ba(e){xs=e}function Da(){xs=null}const $a=e=>oi;function oi(e,t=be,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Or(-1);const i=In(t);let o;try{o=e(...r)}finally{In(i),s._d&&Or(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function hs(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:f,render:u,renderCache:a,data:d,setupState:m,ctx:E,inheritAttrs:v}=e;let A,y;const h=In(e);try{if(n.shapeFlag&4){const w=r||s;A=Ie(u.call(w,w,a,i,m,d,E)),y=c}else{const w=t;A=Ie(w.length>1?w(i,{attrs:c,slots:l,emit:f}):w(i,null)),y=t.props?c:Va(c)}}catch(w){Tn.length=0,xt(w,e,1),A=ce(ve)}let _=A;if(y&&v!==!1){const w=Object.keys(y),{shapeFlag:R}=_;w.length&&R&7&&(o&&w.some(xr)&&(y=Ua(y,o)),_=Qe(_,y))}return n.dirs&&(_=Qe(_),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&(_.transition=n.transition),A=_,In(h),A}function Ha(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||Ut(n))&&((t||(t={}))[n]=e[n]);return t},Ua=(e,t)=>{const n={};for(const s in e)(!xr(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ka(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ro(s,o,f):!!o;if(c&8){const u=t.dynamicProps;for(let a=0;ae.__isSuspense,ja={name:"Suspense",__isSuspense:!0,process(e,t,n,s,r,i,o,l,c,f){e==null?Wa(t,n,s,r,i,o,l,c,f):qa(e,t,n,s,r,o,l,c,f)},hydrate:za,create:ci,normalize:Ja},xa=ja;function Mn(e,t){const n=e.props&&e.props[t];W(n)&&n()}function Wa(e,t,n,s,r,i,o,l,c){const{p:f,o:{createElement:u}}=c,a=u("div"),d=e.suspense=ci(e,r,s,t,a,n,i,o,l,c);f(null,d.pendingBranch=e.ssContent,a,null,s,d,i,o),d.deps>0?(Mn(e,"onPending"),Mn(e,"onFallback"),f(null,e.ssFallback,t,n,s,null,i,o),tn(d,e.ssFallback)):d.resolve()}function qa(e,t,n,s,r,i,o,l,{p:c,um:f,o:{createElement:u}}){const a=t.suspense=e.suspense;a.vnode=t,t.el=e.el;const d=t.ssContent,m=t.ssFallback,{activeBranch:E,pendingBranch:v,isInFallback:A,isHydrating:y}=a;if(v)a.pendingBranch=d,Xe(d,v)?(c(v,d,a.hiddenContainer,null,r,a,i,o,l),a.deps<=0?a.resolve():A&&(c(E,m,n,s,r,null,i,o,l),tn(a,m))):(a.pendingId++,y?(a.isHydrating=!1,a.activeBranch=v):f(v,r,a),a.deps=0,a.effects.length=0,a.hiddenContainer=u("div"),A?(c(null,d,a.hiddenContainer,null,r,a,i,o,l),a.deps<=0?a.resolve():(c(E,m,n,s,r,null,i,o,l),tn(a,m))):E&&Xe(d,E)?(c(E,d,n,s,r,a,i,o,l),a.resolve(!0)):(c(null,d,a.hiddenContainer,null,r,a,i,o,l),a.deps<=0&&a.resolve()));else if(E&&Xe(d,E))c(E,d,n,s,r,a,i,o,l),tn(a,d);else if(Mn(t,"onPending"),a.pendingBranch=d,a.pendingId++,c(null,d,a.hiddenContainer,null,r,a,i,o,l),a.deps<=0)a.resolve();else{const{timeout:h,pendingId:_}=a;h>0?setTimeout(()=>{a.pendingId===_&&a.fallback(m)},h):h===0&&a.fallback(m)}}function ci(e,t,n,s,r,i,o,l,c,f,u=!1){const{p:a,m:d,um:m,n:E,o:{parentNode:v,remove:A}}=f,y=it(e.props&&e.props.timeout),h={vnode:e,parent:t,parentComponent:n,isSVG:o,container:s,hiddenContainer:r,anchor:i,deps:0,pendingId:0,timeout:typeof y=="number"?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:u,isUnmounted:!1,effects:[],resolve(_=!1){const{vnode:w,activeBranch:R,pendingBranch:H,pendingId:P,effects:b,parentComponent:M,container:F}=h;if(h.isHydrating)h.isHydrating=!1;else if(!_){const V=R&&H.transition&&H.transition.mode==="out-in";V&&(R.transition.afterLeave=()=>{P===h.pendingId&&d(H,F,B,0)});let{anchor:B}=h;R&&(B=E(R),m(R,M,h,!0)),V||d(H,F,B,0)}tn(h,H),h.pendingBranch=null,h.isInFallback=!1;let I=h.parent,O=!1;for(;I;){if(I.pendingBranch){I.effects.push(...b),O=!0;break}I=I.parent}O||ii(b),h.effects=[],Mn(w,"onResolve")},fallback(_){if(!h.pendingBranch)return;const{vnode:w,activeBranch:R,parentComponent:H,container:P,isSVG:b}=h;Mn(w,"onFallback");const M=E(R),F=()=>{!h.isInFallback||(a(null,_,P,M,H,null,b,l,c),tn(h,_))},I=_.transition&&_.transition.mode==="out-in";I&&(R.transition.afterLeave=F),h.isInFallback=!0,m(R,H,null,!0),I||F()},move(_,w,R){h.activeBranch&&d(h.activeBranch,_,w,R),h.container=_},next(){return h.activeBranch&&E(h.activeBranch)},registerDep(_,w){const R=!!h.pendingBranch;R&&h.deps++;const H=_.vnode.el;_.asyncDep.catch(P=>{xt(P,_,0)}).then(P=>{if(_.isUnmounted||h.isUnmounted||h.pendingId!==_.suspenseId)return;_.asyncResolved=!0;const{vnode:b}=_;Rr(_,P,!1),H&&(b.el=H);const M=!H&&_.subTree.el;w(_,b,v(H||_.subTree.el),H?null:E(_.subTree),h,o,c),M&&A(M),li(_,b.el),R&&--h.deps===0&&h.resolve()})},unmount(_,w){h.isUnmounted=!0,h.activeBranch&&m(h.activeBranch,n,_,w),h.pendingBranch&&m(h.pendingBranch,n,_,w)}};return h}function za(e,t,n,s,r,i,o,l,c){const f=t.suspense=ci(t,s,n,e.parentNode,document.createElement("div"),null,r,i,o,l,!0),u=c(e,f.pendingBranch=t.ssContent,n,f,i,o);return f.deps===0&&f.resolve(),u}function Ja(e){const{shapeFlag:t,children:n}=e,s=t&32;e.ssContent=io(s?n.default:n),e.ssFallback=s?io(n.fallback):ce(ve)}function io(e){let t;if(W(e)){const n=Ht&&e._c;n&&(e._d=!1,Zs()),e=e(),n&&(e._d=!0,t=Ne,Ql())}return U(e)&&(e=Ha(e)),e=Ie(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function wl(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):ii(e)}function tn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e,r=n.el=t.el;s&&s.subTree===n&&(s.vnode.el=r,li(s,r))}function Nl(e,t){if(de){let n=de.provides;const s=de.parent&&de.parent.provides;s===n&&(n=de.provides=Object.create(s)),n[e]=t}}function _n(e,t,n=!1){const s=de||be;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&W(t)?t.call(s.proxy):t}}function Ya(e,t){return jn(e,null,t)}function Pl(e,t){return jn(e,null,{flush:"post"})}function Za(e,t){return jn(e,null,{flush:"sync"})}const rs={};function En(e,t,n){return jn(e,t,n)}function jn(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=se){const l=de;let c,f=!1,u=!1;if(ge(e)?(c=()=>e.value,f=Pn(e)):Mt(e)?(c=()=>e,s=!0):U(e)?(u=!0,f=e.some(_=>Mt(_)||Pn(_)),c=()=>e.map(_=>{if(ge(_))return _.value;if(Mt(_))return Ot(_);if(W(_))return st(_,l,2)})):W(e)?t?c=()=>st(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return a&&a(),Fe(e,l,3,[d])}:c=ke,t&&s){const _=c;c=()=>Ot(_())}let a,d=_=>{a=y.onStop=()=>{st(_,l,4)}},m;if(rn)if(d=ke,t?n&&Fe(t,l,3,[c(),u?[]:void 0,d]):c(),r==="sync"){const _=pc();m=_.__watcherHandles||(_.__watcherHandles=[])}else return ke;let E=u?new Array(e.length).fill(rs):rs;const v=()=>{if(!!y.active)if(t){const _=y.run();(s||f||(u?_.some((w,R)=>nn(w,E[R])):nn(_,E)))&&(a&&a(),Fe(t,l,3,[_,E===rs?void 0:u&&E[0]===rs?[]:E,d]),E=_)}else y.run()};v.allowRecurse=!!t;let A;r==="sync"?A=v:r==="post"?A=()=>me(v,l&&l.suspense):(v.pre=!0,l&&(v.id=l.uid),A=()=>Ks(v));const y=new Kn(c,A);t?n?v():E=y.run():r==="post"?me(y.run.bind(y),l&&l.suspense):y.run();const h=()=>{y.stop(),l&&l.scope&&Wr(l.scope.effects,y)};return m&&m.push(h),h}function Xa(e,t,n){const s=this.proxy,r=z(e)?e.includes(".")?Ol(s,e):()=>s[e]:e.bind(s,s);let i;W(t)?i=t:(i=t.handler,n=t);const o=de;_t(this);const l=jn(r,i.bind(s),n);return o?_t(o):ht(),l}function Ol(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{Ot(n,t)});else if(el(e))for(const n in e)Ot(e[n],t);return e}function fi(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Wn(()=>{e.isMounted=!0}),Js(()=>{e.isUnmounting=!0}),e}const $e=[Function,Array],Qa={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:$e,onEnter:$e,onAfterEnter:$e,onEnterCancelled:$e,onBeforeLeave:$e,onLeave:$e,onAfterLeave:$e,onLeaveCancelled:$e,onBeforeAppear:$e,onAppear:$e,onAfterAppear:$e,onAppearCancelled:$e},setup(e,{slots:t}){const n=Ct(),s=fi();let r;return()=>{const i=t.default&&Ws(t.default(),!0);if(!i||!i.length)return;let o=i[0];if(i.length>1){for(const v of i)if(v.type!==ve){o=v;break}}const l=Q(e),{mode:c}=l;if(s.isLeaving)return lr(o);const f=oo(o);if(!f)return lr(o);const u=sn(f,l,s,n);Dt(f,u);const a=n.subTree,d=a&&oo(a);let m=!1;const{getTransitionKey:E}=f.type;if(E){const v=E();r===void 0?r=v:v!==r&&(r=v,m=!0)}if(d&&d.type!==ve&&(!Xe(f,d)||m)){const v=sn(d,l,s,n);if(Dt(d,v),c==="out-in")return s.isLeaving=!0,v.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},lr(o);c==="in-out"&&f.type!==ve&&(v.delayLeave=(A,y,h)=>{const _=Rl(s,d);_[String(d.key)]=d,A._leaveCb=()=>{y(),A._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=h})}return o}}},ai=Qa;function Rl(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function sn(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:f,onEnterCancelled:u,onBeforeLeave:a,onLeave:d,onAfterLeave:m,onLeaveCancelled:E,onBeforeAppear:v,onAppear:A,onAfterAppear:y,onAppearCancelled:h}=t,_=String(e.key),w=Rl(n,e),R=(b,M)=>{b&&Fe(b,s,9,M)},H=(b,M)=>{const F=M[1];R(b,M),U(b)?b.every(I=>I.length<=1)&&F():b.length<=1&&F()},P={mode:i,persisted:o,beforeEnter(b){let M=l;if(!n.isMounted)if(r)M=v||l;else return;b._leaveCb&&b._leaveCb(!0);const F=w[_];F&&Xe(e,F)&&F.el._leaveCb&&F.el._leaveCb(),R(M,[b])},enter(b){let M=c,F=f,I=u;if(!n.isMounted)if(r)M=A||c,F=y||f,I=h||u;else return;let O=!1;const V=b._enterCb=B=>{O||(O=!0,B?R(I,[b]):R(F,[b]),P.delayedLeave&&P.delayedLeave(),b._enterCb=void 0)};M?H(M,[b,V]):V()},leave(b,M){const F=String(e.key);if(b._enterCb&&b._enterCb(!0),n.isUnmounting)return M();R(a,[b]);let I=!1;const O=b._leaveCb=V=>{I||(I=!0,M(),V?R(E,[b]):R(m,[b]),b._leaveCb=void 0,w[F]===e&&delete w[F])};w[F]=e,d?H(d,[b,O]):O()},clone(b){return sn(b,t,n,s)}};return P}function lr(e){if(xn(e))return e=Qe(e),e.children=null,e}function oo(e){return xn(e)?e.children?e.children[0]:void 0:e}function Dt(e,t){e.shapeFlag&6&&e.component?Dt(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ws(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function Ga(e){W(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:i,suspensible:o=!0,onError:l}=e;let c=null,f,u=0;const a=()=>(u++,c=null,d()),d=()=>{let m;return c||(m=c=t().catch(E=>{if(E=E instanceof Error?E:new Error(String(E)),l)return new Promise((v,A)=>{l(E,()=>v(a()),()=>A(E),u+1)});throw E}).then(E=>m!==c&&c?c:(E&&(E.__esModule||E[Symbol.toStringTag]==="Module")&&(E=E.default),f=E,E)))};return ui({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return f},setup(){const m=de;if(f)return()=>cr(f,m);const E=h=>{c=null,xt(h,m,13,!s)};if(o&&m.suspense||rn)return d().then(h=>()=>cr(h,m)).catch(h=>(E(h),()=>s?ce(s,{error:h}):null));const v=ds(!1),A=ds(),y=ds(!!r);return r&&setTimeout(()=>{y.value=!1},r),i!=null&&setTimeout(()=>{if(!v.value&&!A.value){const h=new Error(`Async component timed out after ${i}ms.`);E(h),A.value=h}},i),d().then(()=>{v.value=!0,m.parent&&xn(m.parent.vnode)&&Ks(m.parent.update)}).catch(h=>{E(h),A.value=h}),()=>{if(v.value&&f)return cr(f,m);if(A.value&&s)return ce(s,{error:A.value});if(n&&!y.value)return ce(n)}}})}function cr(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const xn=e=>e.type.__isKeepAlive,eu={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Ct(),s=n.ctx;if(!s.renderer)return()=>{const h=t.default&&t.default();return h&&h.length===1?h[0]:h};const r=new Map,i=new Set;let o=null;const l=n.suspense,{renderer:{p:c,m:f,um:u,o:{createElement:a}}}=s,d=a("div");s.activate=(h,_,w,R,H)=>{const P=h.component;f(h,_,w,0,l),c(P.vnode,h,_,w,P,l,R,h.slotScopeIds,H),me(()=>{P.isDeactivated=!1,P.a&&Gt(P.a);const b=h.props&&h.props.onVnodeMounted;b&&we(b,P.parent,h)},l)},s.deactivate=h=>{const _=h.component;f(h,d,null,1,l),me(()=>{_.da&&Gt(_.da);const w=h.props&&h.props.onVnodeUnmounted;w&&we(w,_.parent,h),_.isDeactivated=!0},l)};function m(h){fr(h),u(h,n,l,!0)}function E(h){r.forEach((_,w)=>{const R=Ir(_.type);R&&(!h||!h(R))&&v(w)})}function v(h){const _=r.get(h);!o||_.type!==o.type?m(_):o&&fr(o),r.delete(h),i.delete(h)}En(()=>[e.include,e.exclude],([h,_])=>{h&&E(w=>bn(h,w)),_&&E(w=>!bn(_,w))},{flush:"post",deep:!0});let A=null;const y=()=>{A!=null&&r.set(A,ar(n.subTree))};return Wn(y),zs(y),Js(()=>{r.forEach(h=>{const{subTree:_,suspense:w}=n,R=ar(_);if(h.type===R.type){fr(R);const H=R.component.da;H&&me(H,w);return}m(h)})}),()=>{if(A=null,!t.default)return null;const h=t.default(),_=h[0];if(h.length>1)return o=null,h;if(!bt(_)||!(_.shapeFlag&4)&&!(_.shapeFlag&128))return o=null,_;let w=ar(_);const R=w.type,H=Ir(kt(w)?w.type.__asyncResolved||{}:R),{include:P,exclude:b,max:M}=e;if(P&&(!H||!bn(P,H))||b&&H&&bn(b,H))return o=w,_;const F=w.key==null?R:w.key,I=r.get(F);return w.el&&(w=Qe(w),_.shapeFlag&128&&(_.ssContent=w)),A=F,I?(w.el=I.el,w.component=I.component,w.transition&&Dt(w,w.transition),w.shapeFlag|=512,i.delete(F),i.add(F)):(i.add(F),M&&i.size>parseInt(M,10)&&v(i.values().next().value)),w.shapeFlag|=256,o=w,Sl(_.type)?_:w}}},tu=eu;function bn(e,t){return U(e)?e.some(n=>bn(n,t)):z(e)?e.split(",").includes(t):e.test?e.test(t):!1}function Al(e,t){Ml(e,"a",t)}function Il(e,t){Ml(e,"da",t)}function Ml(e,t,n=de){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(qs(t,s,n),n){let r=n.parent;for(;r&&r.parent;)xn(r.parent.vnode)&&nu(s,t,n,r),r=r.parent}}function nu(e,t,n,s){const r=qs(t,e,s,!0);Ys(()=>{Wr(s[t],r)},n)}function fr(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function ar(e){return e.shapeFlag&128?e.ssContent:e}function qs(e,t,n=de,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;un(),_t(n);const l=Fe(t,n,e,o);return ht(),pn(),l});return s?r.unshift(i):r.push(i),i}}const lt=e=>(t,n=de)=>(!rn||e==="sp")&&qs(e,(...s)=>t(...s),n),kl=lt("bm"),Wn=lt("m"),Fl=lt("bu"),zs=lt("u"),Js=lt("bum"),Ys=lt("um"),Ll=lt("sp"),Bl=lt("rtg"),Dl=lt("rtc");function $l(e,t=de){qs("ec",e,t)}function su(e,t){const n=be;if(n===null)return e;const s=Qs(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let i=0;it(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;l{const i=s.fn(...r);return i&&(i.key=s.key),i}:s.fn)}return e}function au(e,t,n={},s,r){if(be.isCE||be.parent&&kt(be.parent)&&be.parent.isCE)return t!=="default"&&(n.name=t),ce("slot",n,s&&s());let i=e[t];i&&i._c&&(i._d=!1),Zs();const o=i&&Vl(i(n)),l=yi(ye,{key:n.key||o&&o.key||`_${t}`},o||(s?s():[]),o&&e._===1?64:-2);return!r&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function Vl(e){return e.some(t=>bt(t)?!(t.type===ve||t.type===ye&&!Vl(t.children)):!0)?e:null}function uu(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:Qt(s)]=e[s];return n}const vr=e=>e?rc(e)?Qs(e)||e.proxy:vr(e.parent):null,Cn=te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>vr(e.parent),$root:e=>vr(e.root),$emit:e=>e.emit,$options:e=>hi(e),$forceUpdate:e=>e.f||(e.f=()=>Ks(e.update)),$nextTick:e=>e.n||(e.n=ri.bind(e.proxy)),$watch:e=>Xa.bind(e)}),ur=(e,t)=>e!==se&&!e.__isScriptSetup&&X(e,t),Tr={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const m=o[t];if(m!==void 0)switch(m){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ur(s,t))return o[t]=1,s[t];if(r!==se&&X(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&X(f,t))return o[t]=3,i[t];if(n!==se&&X(n,t))return o[t]=4,n[t];Sr&&(o[t]=0)}}const u=Cn[t];let a,d;if(u)return t==="$attrs"&&Be(e,"get",t),u(e);if((a=l.__cssModules)&&(a=a[t]))return a;if(n!==se&&X(n,t))return o[t]=4,n[t];if(d=c.config.globalProperties,X(d,t))return d[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ur(r,t)?(r[t]=n,!0):s!==se&&X(s,t)?(s[t]=n,!0):X(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==se&&X(e,o)||ur(t,o)||(l=i[0])&&X(l,o)||X(s,o)||X(Cn,o)||X(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:X(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},pu=te({},Tr,{get(e,t){if(t!==Symbol.unscopables)return Tr.get(e,t,e)},has(e,t){return t[0]!=="_"&&!Ef(t)}});let Sr=!0;function du(e){const t=hi(e),n=e.proxy,s=e.ctx;Sr=!1,t.beforeCreate&&co(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:u,beforeMount:a,mounted:d,beforeUpdate:m,updated:E,activated:v,deactivated:A,beforeDestroy:y,beforeUnmount:h,destroyed:_,unmounted:w,render:R,renderTracked:H,renderTriggered:P,errorCaptured:b,serverPrefetch:M,expose:F,inheritAttrs:I,components:O,directives:V,filters:B}=t;if(f&&hu(f,s,null,e.appContext.config.unwrapInjectedRef),o)for(const le in o){const ee=o[le];W(ee)&&(s[le]=ee.bind(n))}if(r){const le=r.call(n,n);ie(le)&&(e.data=Hs(le))}if(Sr=!0,i)for(const le in i){const ee=i[le],je=W(ee)?ee.bind(n,n):W(ee.get)?ee.get.bind(n,n):ke,Zn=!W(ee)&&W(ee.set)?ee.set.bind(n):ke,vt=cc({get:je,set:Zn});Object.defineProperty(s,le,{enumerable:!0,configurable:!0,get:()=>vt.value,set:ze=>vt.value=ze})}if(l)for(const le in l)Ul(l[le],s,n,le);if(c){const le=W(c)?c.call(n):c;Reflect.ownKeys(le).forEach(ee=>{Nl(ee,le[ee])})}u&&co(u,e,"c");function Z(le,ee){U(ee)?ee.forEach(je=>le(je.bind(n))):ee&&le(ee.bind(n))}if(Z(kl,a),Z(Wn,d),Z(Fl,m),Z(zs,E),Z(Al,v),Z(Il,A),Z($l,b),Z(Dl,H),Z(Bl,P),Z(Js,h),Z(Ys,w),Z(Ll,M),U(F))if(F.length){const le=e.exposed||(e.exposed={});F.forEach(ee=>{Object.defineProperty(le,ee,{get:()=>n[ee],set:je=>n[ee]=je})})}else e.exposed||(e.exposed={});R&&e.render===ke&&(e.render=R),I!=null&&(e.inheritAttrs=I),O&&(e.components=O),V&&(e.directives=V)}function hu(e,t,n=ke,s=!1){U(e)&&(e=wr(e));for(const r in e){const i=e[r];let o;ie(i)?"default"in i?o=_n(i.from||r,i.default,!0):o=_n(i.from||r):o=_n(i),ge(o)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function co(e,t,n){Fe(U(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ul(e,t,n,s){const r=s.includes(".")?Ol(n,s):()=>n[s];if(z(e)){const i=t[e];W(i)&&En(r,i)}else if(W(e))En(r,e.bind(n));else if(ie(e))if(U(e))e.forEach(i=>Ul(i,t,n,s));else{const i=W(e.handler)?e.handler.bind(n):t[e.handler];W(i)&&En(r,i,e)}}function hi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Es(c,f,o,!0)),Es(c,t,o)),ie(t)&&i.set(t,c),c}function Es(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Es(e,i,n,!0),r&&r.forEach(o=>Es(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=gu[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const gu={data:fo,props:wt,emits:wt,methods:wt,computed:wt,beforeCreate:Se,created:Se,beforeMount:Se,mounted:Se,beforeUpdate:Se,updated:Se,beforeDestroy:Se,beforeUnmount:Se,destroyed:Se,unmounted:Se,activated:Se,deactivated:Se,errorCaptured:Se,serverPrefetch:Se,components:wt,directives:wt,watch:yu,provide:fo,inject:mu};function fo(e,t){return t?e?function(){return te(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function mu(e,t){return wt(wr(e),wr(t))}function wr(e){if(U(e)){const t={};for(let n=0;n0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let a=0;a{c=!0;const[d,m]=jl(a,t,!0);te(o,d),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!c)return ie(e)&&s.set(e,Zt),Zt;if(U(i))for(let u=0;u-1,m[1]=v<0||E-1||X(m,"default"))&&l.push(a)}}}const f=[o,l];return ie(e)&&s.set(e,f),f}function ao(e){return e[0]!=="$"}function uo(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function po(e,t){return uo(e)===uo(t)}function ho(e,t){return U(t)?t.findIndex(n=>po(n,e)):W(t)&&po(t,e)?0:-1}const xl=e=>e[0]==="_"||e==="$stable",gi=e=>U(e)?e.map(Ie):[Ie(e)],Eu=(e,t,n)=>{if(t._n)return t;const s=oi((...r)=>gi(t(...r)),n);return s._c=!1,s},Wl=(e,t,n)=>{const s=e._ctx;for(const r in e){if(xl(r))continue;const i=e[r];if(W(i))t[r]=Eu(r,i,s);else if(i!=null){const o=gi(i);t[r]=()=>o}}},ql=(e,t)=>{const n=gi(t);e.slots.default=()=>n},Cu=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Q(t),bs(t,"_",n)):Wl(t,e.slots={})}else e.slots={},t&&ql(e,t);bs(e.slots,Xs,1)},vu=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=se;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(te(r,t),!n&&l===1&&delete r._):(i=!t.$stable,Wl(t,r)),o=t}else t&&(ql(e,t),o={default:1});if(i)for(const l in r)!xl(l)&&!(l in o)&&delete r[l]};function zl(){return{app:null,config:{isNativeTag:ps,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Tu=0;function Su(e,t){return function(s,r=null){W(s)||(s=Object.assign({},s)),r!=null&&!ie(r)&&(r=null);const i=zl(),o=new Set;let l=!1;const c=i.app={_uid:Tu++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:hc,get config(){return i.config},set config(f){},use(f,...u){return o.has(f)||(f&&W(f.install)?(o.add(f),f.install(c,...u)):W(f)&&(o.add(f),f(c,...u))),c},mixin(f){return i.mixins.includes(f)||i.mixins.push(f),c},component(f,u){return u?(i.components[f]=u,c):i.components[f]},directive(f,u){return u?(i.directives[f]=u,c):i.directives[f]},mount(f,u,a){if(!l){const d=ce(s,r);return d.appContext=i,u&&t?t(d,f):e(d,f,a),l=!0,c._container=f,f.__vue_app__=c,Qs(d.component)||d.component.proxy}},unmount(){l&&(e(null,c._container),delete c._container.__vue_app__)},provide(f,u){return i.provides[f]=u,c}};return c}}function Cs(e,t,n,s,r=!1){if(U(e)){e.forEach((d,m)=>Cs(d,t&&(U(t)?t[m]:t),n,s,r));return}if(kt(s)&&!r)return;const i=s.shapeFlag&4?Qs(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,u=l.refs===se?l.refs={}:l.refs,a=l.setupState;if(f!=null&&f!==c&&(z(f)?(u[f]=null,X(a,f)&&(a[f]=null)):ge(f)&&(f.value=null)),W(c))st(c,l,12,[o,u]);else{const d=z(c),m=ge(c);if(d||m){const E=()=>{if(e.f){const v=d?X(a,c)?a[c]:u[c]:c.value;r?U(v)&&Wr(v,i):U(v)?v.includes(i)||v.push(i):d?(u[c]=[i],X(a,c)&&(a[c]=u[c])):(c.value=[i],e.k&&(u[e.k]=c.value))}else d?(u[c]=o,X(a,c)&&(a[c]=o)):m&&(c.value=o,e.k&&(u[e.k]=o))};o?(E.id=-1,me(E,n)):E()}}}let ft=!1;const is=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",os=e=>e.nodeType===8;function wu(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,u=(y,h)=>{if(!h.hasChildNodes()){n(null,y,h),_s(),h._vnode=y;return}ft=!1,a(h.firstChild,y,null,null,null),_s(),h._vnode=y,ft&&console.error("Hydration completed but contains mismatches.")},a=(y,h,_,w,R,H=!1)=>{const P=os(y)&&y.data==="[",b=()=>v(y,h,_,w,R,P),{type:M,ref:F,shapeFlag:I,patchFlag:O}=h;let V=y.nodeType;h.el=y,O===-2&&(H=!1,h.dynamicChildren=null);let B=null;switch(M){case $t:V!==3?h.children===""?(c(h.el=r(""),o(y),y),B=y):B=b():(y.data!==h.children&&(ft=!0,y.data=h.children),B=i(y));break;case ve:V!==8||P?B=b():B=i(y);break;case Ft:if(P&&(y=i(y),V=y.nodeType),V===1||V===3){B=y;const G=!h.children.length;for(let Z=0;Z{H=H||!!h.dynamicChildren;const{type:P,props:b,patchFlag:M,shapeFlag:F,dirs:I}=h,O=P==="input"&&I||P==="option";if(O||M!==-1){if(I&&Ye(h,null,_,"created"),b)if(O||!H||M&48)for(const B in b)(O&&B.endsWith("value")||Ut(B)&&!At(B))&&s(y,B,null,b[B],!1,void 0,_);else b.onClick&&s(y,"onClick",null,b.onClick,!1,void 0,_);let V;if((V=b&&b.onVnodeBeforeMount)&&we(V,_,h),I&&Ye(h,null,_,"beforeMount"),((V=b&&b.onVnodeMounted)||I)&&wl(()=>{V&&we(V,_,h),I&&Ye(h,null,_,"mounted")},w),F&16&&!(b&&(b.innerHTML||b.textContent))){let B=m(y.firstChild,h,y,_,w,R,H);for(;B;){ft=!0;const G=B;B=B.nextSibling,l(G)}}else F&8&&y.textContent!==h.children&&(ft=!0,y.textContent=h.children)}return y.nextSibling},m=(y,h,_,w,R,H,P)=>{P=P||!!h.dynamicChildren;const b=h.children,M=b.length;for(let F=0;F{const{slotScopeIds:P}=h;P&&(R=R?R.concat(P):P);const b=o(y),M=m(i(y),h,b,_,w,R,H);return M&&os(M)&&M.data==="]"?i(h.anchor=M):(ft=!0,c(h.anchor=f("]"),b,M),M)},v=(y,h,_,w,R,H)=>{if(ft=!0,h.el=null,H){const M=A(y);for(;;){const F=i(y);if(F&&F!==M)l(F);else break}}const P=i(y),b=o(y);return l(y),n(null,h,b,P,_,w,is(b),R),P},A=y=>{let h=0;for(;y;)if(y=i(y),y&&os(y)&&(y.data==="["&&h++,y.data==="]")){if(h===0)return i(y);h--}return y};return[u,a]}const me=wl;function Jl(e){return Zl(e)}function Yl(e){return Zl(e,wu)}function Zl(e,t){const n=Uf();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:u,parentNode:a,nextSibling:d,setScopeId:m=ke,insertStaticContent:E}=e,v=(p,g,C,S=null,T=null,L=null,$=!1,k=null,D=!!g.dynamicChildren)=>{if(p===g)return;p&&!Xe(p,g)&&(S=Xn(p),ze(p,T,L,!0),p=null),g.patchFlag===-2&&(D=!1,g.dynamicChildren=null);const{type:N,ref:j,shapeFlag:K}=g;switch(N){case $t:A(p,g,C,S);break;case ve:y(p,g,C,S);break;case Ft:p==null&&h(g,C,S,$);break;case ye:O(p,g,C,S,T,L,$,k,D);break;default:K&1?R(p,g,C,S,T,L,$,k,D):K&6?V(p,g,C,S,T,L,$,k,D):(K&64||K&128)&&N.process(p,g,C,S,T,L,$,k,D,Wt)}j!=null&&T&&Cs(j,p&&p.ref,L,g||p,!g)},A=(p,g,C,S)=>{if(p==null)s(g.el=l(g.children),C,S);else{const T=g.el=p.el;g.children!==p.children&&f(T,g.children)}},y=(p,g,C,S)=>{p==null?s(g.el=c(g.children||""),C,S):g.el=p.el},h=(p,g,C,S)=>{[p.el,p.anchor]=E(p.children,g,C,S,p.el,p.anchor)},_=({el:p,anchor:g},C,S)=>{let T;for(;p&&p!==g;)T=d(p),s(p,C,S),p=T;s(g,C,S)},w=({el:p,anchor:g})=>{let C;for(;p&&p!==g;)C=d(p),r(p),p=C;r(g)},R=(p,g,C,S,T,L,$,k,D)=>{$=$||g.type==="svg",p==null?H(g,C,S,T,L,$,k,D):M(p,g,T,L,$,k,D)},H=(p,g,C,S,T,L,$,k)=>{let D,N;const{type:j,props:K,shapeFlag:x,transition:q,dirs:Y}=p;if(D=p.el=o(p.type,L,K&&K.is,K),x&8?u(D,p.children):x&16&&b(p.children,D,null,S,T,L&&j!=="foreignObject",$,k),Y&&Ye(p,null,S,"created"),K){for(const re in K)re!=="value"&&!At(re)&&i(D,re,null,K[re],L,p.children,S,T,Ge);"value"in K&&i(D,"value",null,K.value),(N=K.onVnodeBeforeMount)&&we(N,S,p)}P(D,p,p.scopeId,$,S),Y&&Ye(p,null,S,"beforeMount");const oe=(!T||T&&!T.pendingBranch)&&q&&!q.persisted;oe&&q.beforeEnter(D),s(D,g,C),((N=K&&K.onVnodeMounted)||oe||Y)&&me(()=>{N&&we(N,S,p),oe&&q.enter(D),Y&&Ye(p,null,S,"mounted")},T)},P=(p,g,C,S,T)=>{if(C&&m(p,C),S)for(let L=0;L{for(let N=D;N{const k=g.el=p.el;let{patchFlag:D,dynamicChildren:N,dirs:j}=g;D|=p.patchFlag&16;const K=p.props||se,x=g.props||se;let q;C&&Tt(C,!1),(q=x.onVnodeBeforeUpdate)&&we(q,C,g,p),j&&Ye(g,p,C,"beforeUpdate"),C&&Tt(C,!0);const Y=T&&g.type!=="foreignObject";if(N?F(p.dynamicChildren,N,k,C,S,Y,L):$||ee(p,g,k,null,C,S,Y,L,!1),D>0){if(D&16)I(k,g,K,x,C,S,T);else if(D&2&&K.class!==x.class&&i(k,"class",null,x.class,T),D&4&&i(k,"style",K.style,x.style,T),D&8){const oe=g.dynamicProps;for(let re=0;re{q&&we(q,C,g,p),j&&Ye(g,p,C,"updated")},S)},F=(p,g,C,S,T,L,$)=>{for(let k=0;k{if(C!==S){if(C!==se)for(const k in C)!At(k)&&!(k in S)&&i(p,k,C[k],null,$,g.children,T,L,Ge);for(const k in S){if(At(k))continue;const D=S[k],N=C[k];D!==N&&k!=="value"&&i(p,k,N,D,$,g.children,T,L,Ge)}"value"in S&&i(p,"value",C.value,S.value)}},O=(p,g,C,S,T,L,$,k,D)=>{const N=g.el=p?p.el:l(""),j=g.anchor=p?p.anchor:l("");let{patchFlag:K,dynamicChildren:x,slotScopeIds:q}=g;q&&(k=k?k.concat(q):q),p==null?(s(N,C,S),s(j,C,S),b(g.children,C,j,T,L,$,k,D)):K>0&&K&64&&x&&p.dynamicChildren?(F(p.dynamicChildren,x,C,T,L,$,k),(g.key!=null||T&&g===T.subTree)&&mi(p,g,!0)):ee(p,g,C,j,T,L,$,k,D)},V=(p,g,C,S,T,L,$,k,D)=>{g.slotScopeIds=k,p==null?g.shapeFlag&512?T.ctx.activate(g,C,S,$,D):B(g,C,S,T,L,$,D):G(p,g,D)},B=(p,g,C,S,T,L,$)=>{const k=p.component=sc(p,S,T);if(xn(p)&&(k.ctx.renderer=Wt),ic(k),k.asyncDep){if(T&&T.registerDep(k,Z),!p.el){const D=k.subTree=ce(ve);y(null,D,g,C)}return}Z(k,p,g,C,T,L,$)},G=(p,g,C)=>{const S=g.component=p.component;if(Ka(p,g,C))if(S.asyncDep&&!S.asyncResolved){le(S,g,C);return}else S.next=g,ka(S.update),S.update();else g.el=p.el,S.vnode=g},Z=(p,g,C,S,T,L,$)=>{const k=()=>{if(p.isMounted){let{next:j,bu:K,u:x,parent:q,vnode:Y}=p,oe=j,re;Tt(p,!1),j?(j.el=Y.el,le(p,j,$)):j=Y,K&&Gt(K),(re=j.props&&j.props.onVnodeBeforeUpdate)&&we(re,q,j,Y),Tt(p,!0);const ue=hs(p),xe=p.subTree;p.subTree=ue,v(xe,ue,a(xe.el),Xn(xe),p,T,L),j.el=ue.el,oe===null&&li(p,ue.el),x&&me(x,T),(re=j.props&&j.props.onVnodeUpdated)&&me(()=>we(re,q,j,Y),T)}else{let j;const{el:K,props:x}=g,{bm:q,m:Y,parent:oe}=p,re=kt(g);if(Tt(p,!1),q&&Gt(q),!re&&(j=x&&x.onVnodeBeforeMount)&&we(j,oe,g),Tt(p,!0),K&&or){const ue=()=>{p.subTree=hs(p),or(K,p.subTree,p,T,null)};re?g.type.__asyncLoader().then(()=>!p.isUnmounted&&ue()):ue()}else{const ue=p.subTree=hs(p);v(null,ue,C,S,p,T,L),g.el=ue.el}if(Y&&me(Y,T),!re&&(j=x&&x.onVnodeMounted)){const ue=g;me(()=>we(j,oe,ue),T)}(g.shapeFlag&256||oe&&kt(oe.vnode)&&oe.vnode.shapeFlag&256)&&p.a&&me(p.a,T),p.isMounted=!0,g=C=S=null}},D=p.effect=new Kn(k,()=>Ks(N),p.scope),N=p.update=()=>D.run();N.id=p.uid,Tt(p,!0),N()},le=(p,g,C)=>{g.component=p;const S=p.vnode.props;p.vnode=g,p.next=null,_u(p,g.props,S,C),vu(p,g.children,C),un(),so(),pn()},ee=(p,g,C,S,T,L,$,k,D=!1)=>{const N=p&&p.children,j=p?p.shapeFlag:0,K=g.children,{patchFlag:x,shapeFlag:q}=g;if(x>0){if(x&128){Zn(N,K,C,S,T,L,$,k,D);return}else if(x&256){je(N,K,C,S,T,L,$,k,D);return}}q&8?(j&16&&Ge(N,T,L),K!==N&&u(C,K)):j&16?q&16?Zn(N,K,C,S,T,L,$,k,D):Ge(N,T,L,!0):(j&8&&u(C,""),q&16&&b(K,C,S,T,L,$,k,D))},je=(p,g,C,S,T,L,$,k,D)=>{p=p||Zt,g=g||Zt;const N=p.length,j=g.length,K=Math.min(N,j);let x;for(x=0;xj?Ge(p,T,L,!0,!1,K):b(g,C,S,T,L,$,k,D,K)},Zn=(p,g,C,S,T,L,$,k,D)=>{let N=0;const j=g.length;let K=p.length-1,x=j-1;for(;N<=K&&N<=x;){const q=p[N],Y=g[N]=D?pt(g[N]):Ie(g[N]);if(Xe(q,Y))v(q,Y,C,null,T,L,$,k,D);else break;N++}for(;N<=K&&N<=x;){const q=p[K],Y=g[x]=D?pt(g[x]):Ie(g[x]);if(Xe(q,Y))v(q,Y,C,null,T,L,$,k,D);else break;K--,x--}if(N>K){if(N<=x){const q=x+1,Y=qx)for(;N<=K;)ze(p[N],T,L,!0),N++;else{const q=N,Y=N,oe=new Map;for(N=Y;N<=x;N++){const Re=g[N]=D?pt(g[N]):Ie(g[N]);Re.key!=null&&oe.set(Re.key,N)}let re,ue=0;const xe=x-Y+1;let qt=!1,Wi=0;const dn=new Array(xe);for(N=0;N=xe){ze(Re,T,L,!0);continue}let Je;if(Re.key!=null)Je=oe.get(Re.key);else for(re=Y;re<=x;re++)if(dn[re-Y]===0&&Xe(Re,g[re])){Je=re;break}Je===void 0?ze(Re,T,L,!0):(dn[Je-Y]=N+1,Je>=Wi?Wi=Je:qt=!0,v(Re,g[Je],C,null,T,L,$,k,D),ue++)}const qi=qt?Nu(dn):Zt;for(re=qi.length-1,N=xe-1;N>=0;N--){const Re=Y+N,Je=g[Re],zi=Re+1{const{el:L,type:$,transition:k,children:D,shapeFlag:N}=p;if(N&6){vt(p.component.subTree,g,C,S);return}if(N&128){p.suspense.move(g,C,S);return}if(N&64){$.move(p,g,C,Wt);return}if($===ye){s(L,g,C);for(let K=0;Kk.enter(L),T);else{const{leave:K,delayLeave:x,afterLeave:q}=k,Y=()=>s(L,g,C),oe=()=>{K(L,()=>{Y(),q&&q()})};x?x(L,Y,oe):oe()}else s(L,g,C)},ze=(p,g,C,S=!1,T=!1)=>{const{type:L,props:$,ref:k,children:D,dynamicChildren:N,shapeFlag:j,patchFlag:K,dirs:x}=p;if(k!=null&&Cs(k,null,C,p,!0),j&256){g.ctx.deactivate(p);return}const q=j&1&&x,Y=!kt(p);let oe;if(Y&&(oe=$&&$.onVnodeBeforeUnmount)&&we(oe,g,p),j&6)bf(p.component,C,S);else{if(j&128){p.suspense.unmount(C,S);return}q&&Ye(p,null,g,"beforeUnmount"),j&64?p.type.remove(p,g,C,T,Wt,S):N&&(L!==ye||K>0&&K&64)?Ge(N,g,C,!1,!0):(L===ye&&K&384||!T&&j&16)&&Ge(D,g,C),S&&ji(p)}(Y&&(oe=$&&$.onVnodeUnmounted)||q)&&me(()=>{oe&&we(oe,g,p),q&&Ye(p,null,g,"unmounted")},C)},ji=p=>{const{type:g,el:C,anchor:S,transition:T}=p;if(g===ye){yf(C,S);return}if(g===Ft){w(p);return}const L=()=>{r(C),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(p.shapeFlag&1&&T&&!T.persisted){const{leave:$,delayLeave:k}=T,D=()=>$(C,L);k?k(p.el,L,D):D()}else L()},yf=(p,g)=>{let C;for(;p!==g;)C=d(p),r(p),p=C;r(g)},bf=(p,g,C)=>{const{bum:S,scope:T,update:L,subTree:$,um:k}=p;S&&Gt(S),T.stop(),L&&(L.active=!1,ze($,p,g,C)),k&&me(k,g),me(()=>{p.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve())},Ge=(p,g,C,S=!1,T=!1,L=0)=>{for(let $=L;$p.shapeFlag&6?Xn(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el),xi=(p,g,C)=>{p==null?g._vnode&&ze(g._vnode,null,null,!0):v(g._vnode||null,p,g,null,null,null,C),so(),_s(),g._vnode=p},Wt={p:v,um:ze,m:vt,r:ji,mt:B,mc:b,pc:ee,pbc:F,n:Xn,o:e};let ir,or;return t&&([ir,or]=t(Wt)),{render:xi,hydrate:ir,createApp:Su(xi,ir)}}function Tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function mi(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const Pu=e=>e.__isTeleport,vn=e=>e&&(e.disabled||e.disabled===""),go=e=>typeof SVGElement!="undefined"&&e instanceof SVGElement,Pr=(e,t)=>{const n=e&&e.to;return z(n)?t?t(n):null:n},Ou={__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:u,pc:a,pbc:d,o:{insert:m,querySelector:E,createText:v,createComment:A}}=f,y=vn(t.props);let{shapeFlag:h,children:_,dynamicChildren:w}=t;if(e==null){const R=t.el=v(""),H=t.anchor=v("");m(R,n,s),m(H,n,s);const P=t.target=Pr(t.props,E),b=t.targetAnchor=v("");P&&(m(b,P),o=o||go(P));const M=(F,I)=>{h&16&&u(_,F,I,r,i,o,l,c)};y?M(n,H):P&&M(P,b)}else{t.el=e.el;const R=t.anchor=e.anchor,H=t.target=e.target,P=t.targetAnchor=e.targetAnchor,b=vn(e.props),M=b?n:H,F=b?R:P;if(o=o||go(H),w?(d(e.dynamicChildren,w,M,r,i,o,l),mi(e,t,!0)):c||a(e,t,M,F,r,i,o,l,!1),y)b||ls(t,n,R,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=Pr(t.props,E);I&&ls(t,I,null,f,0)}else b&&ls(t,H,P,f,1)}Xl(t)},remove(e,t,n,s,{um:r,o:{remove:i}},o){const{shapeFlag:l,children:c,anchor:f,targetAnchor:u,target:a,props:d}=e;if(a&&i(u),(o||!vn(d))&&(i(f),l&16))for(let m=0;m0?Ne||Zt:null,Ql(),Ht>0&&Ne&&Ne.push(e),e}function Iu(e,t,n,s,r,i){return Gl(bi(e,t,n,s,r,i,!0))}function yi(e,t,n,s,r){return Gl(ce(e,t,n,s,r,!0))}function bt(e){return e?e.__v_isVNode===!0:!1}function Xe(e,t){return e.type===t.type&&e.key===t.key}function Mu(e){}const Xs="__vInternal",ec=({key:e})=>e!=null?e:null,gs=({ref:e,ref_key:t,ref_for:n})=>e!=null?z(e)||ge(e)||W(e)?{i:be,r:e,k:t,f:!!n}:e:null;function bi(e,t=null,n=null,s=0,r=null,i=e===ye?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ec(t),ref:t&&gs(t),scopeId:xs,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:be};return l?(Ei(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=z(n)?8:16),Ht>0&&!o&&Ne&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ne.push(c),c}const ce=ku;function ku(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Hl)&&(e=ve),bt(e)){const l=Qe(e,t,!0);return n&&Ei(l,n),Ht>0&&!i&&Ne&&(l.shapeFlag&6?Ne[Ne.indexOf(e)]=l:Ne.push(l)),l.patchFlag|=-2,l}if(Ku(e)&&(e=e.__vccOpts),t){t=tc(t);let{class:l,style:c}=t;l&&!z(l)&&(t.class=Vn(l)),ie(c)&&(Qr(c)&&!U(c)&&(c=te({},c)),t.style=Hn(c))}const o=z(e)?1:Sl(e)?128:Pu(e)?64:ie(e)?4:W(e)?2:0;return bi(e,t,n,s,r,o,i,!0)}function tc(e){return e?Qr(e)||Xs in e?te({},e):e:null}function Qe(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?nc(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&ec(l),ref:t&&t.ref?n&&r?U(r)?r.concat(gs(t)):[r,gs(t)]:gs(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function _i(e=" ",t=0){return ce($t,null,e,t)}function Fu(e,t){const n=ce(Ft,null,e);return n.staticCount=t,n}function Lu(e="",t=!1){return t?(Zs(),yi(ve,null,e)):ce(ve,null,e)}function Ie(e){return e==null||typeof e=="boolean"?ce(ve):U(e)?ce(ye,null,e.slice()):typeof e=="object"?pt(e):ce($t,null,String(e))}function pt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function Ei(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ei(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Xs in t)?t._ctx=be:r===3&&be&&(be.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:be},n=32):(t=String(t),s&64?(n=16,t=[_i(t)]):n=8);e.children=t,e.shapeFlag|=n}function nc(...e){const t={};for(let n=0;nde||be,_t=e=>{de=e,e.scope.on()},ht=()=>{de&&de.scope.off(),de=null};function rc(e){return e.vnode.shapeFlag&4}let rn=!1;function ic(e,t=!1){rn=t;const{props:n,children:s}=e.vnode,r=rc(e);bu(e,n,r,t),Cu(e,s);const i=r?$u(e,t):void 0;return rn=!1,i}function $u(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Gr(new Proxy(e.ctx,Tr));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?lc(e):null;_t(e),un();const i=st(s,e,0,[e.props,r]);if(pn(),ht(),qr(i)){if(i.then(ht,ht),t)return i.then(o=>{Rr(e,o,t)}).catch(o=>{xt(o,e,0)});e.asyncDep=i}else Rr(e,i,t)}else oc(e,t)}function Rr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ie(t)&&(e.setupState=ni(t)),oc(e,n)}let vs,Ar;function Hu(e){vs=e,Ar=t=>{t.render._rc&&(t.withProxy=new Proxy(t.ctx,pu))}}const Vu=()=>!vs;function oc(e,t,n){const s=e.type;if(!e.render){if(!t&&vs&&!s.render){const r=s.template||hi(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=te(te({isCustomElement:i,delimiters:l},o),c);s.render=vs(r,f)}}e.render=s.render||ke,Ar&&Ar(e)}_t(e),un(),du(e),pn(),ht()}function Uu(e){return new Proxy(e.attrs,{get(t,n){return Be(e,"get","$attrs"),t[n]}})}function lc(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=Uu(e))},slots:e.slots,emit:e.emit,expose:t}}function Qs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ni(Gr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Cn)return Cn[n](e)},has(t,n){return n in t||n in Cn}}))}function Ir(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function Ku(e){return W(e)&&"__vccOpts"in e}const cc=(e,t)=>Ra(e,t,rn);function ju(){return null}function xu(){return null}function Wu(e){}function qu(e,t){return null}function zu(){return fc().slots}function Ju(){return fc().attrs}function fc(){const e=Ct();return e.setupContext||(e.setupContext=lc(e))}function Yu(e,t){const n=U(e)?e.reduce((s,r)=>(s[r]={},s),{}):e;for(const s in t){const r=n[s];r?U(r)||W(r)?n[s]={type:r,default:t[s]}:r.default=t[s]:r===null&&(n[s]={default:t[s]})}return n}function Zu(e,t){const n={};for(const s in e)t.includes(s)||Object.defineProperty(n,s,{enumerable:!0,get:()=>e[s]});return n}function Xu(e){const t=Ct();let n=e();return ht(),qr(n)&&(n=n.catch(s=>{throw _t(t),s})),[n,()=>_t(t)]}function ac(e,t,n){const s=arguments.length;return s===2?ie(t)&&!U(t)?bt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&bt(n)&&(n=[n]),ce(e,t,n))}const uc=Symbol(""),pc=()=>_n(uc);function Qu(){}function Gu(e,t,n,s){const r=n[s];if(r&&dc(r,e))return r;const i=t();return i.memo=e.slice(),n[s]=i}function dc(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let s=0;s0&&Ne&&Ne.push(e),!0}const hc="3.2.45",ep={createComponentInstance:sc,setupComponent:ic,renderComponentRoot:hs,setCurrentRenderingInstance:In,isVNode:bt,normalizeVNode:Ie},tp=ep,np=null,sp=null,rp="http://www.w3.org/2000/svg",Pt=typeof document!="undefined"?document:null,mo=Pt&&Pt.createElement("template"),ip={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?Pt.createElementNS(rp,e):Pt.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Pt.createTextNode(e),createComment:e=>Pt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Pt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{mo.innerHTML=s?`${e}`:e;const l=mo.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function op(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function lp(e,t,n){const s=e.style,r=z(n);if(n&&!r){for(const i in n)Mr(s,i,n[i]);if(t&&!z(t))for(const i in t)n[i]==null&&Mr(s,i,"")}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const yo=/\s*!important$/;function Mr(e,t,n){if(U(n))n.forEach(s=>Mr(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=cp(e,t);yo.test(n)?e.setProperty(Me(s),n.replace(yo,""),"important"):e[s]=n}}const bo=["Webkit","Moz","ms"],pr={};function cp(e,t){const n=pr[t];if(n)return n;let s=_e(t);if(s!=="filter"&&s in e)return pr[t]=s;s=jt(s);for(let r=0;rdr||(hp.then(()=>dr=0),dr=Date.now());function mp(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Fe(yp(s,n.value),t,5,[s])};return n.value=e,n.attached=gp(),n}function yp(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Co=/^on[a-z]/,bp=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?op(e,s,r):t==="style"?lp(e,n,s):Ut(t)?xr(t)||pp(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):_p(e,t,s,r))?ap(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),fp(e,t,s,r))};function _p(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Co.test(t)&&W(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Co.test(t)&&z(n)?!1:t in e}function gc(e,t){const n=ui(e);class s extends Gs{constructor(i){super(n,i,t)}}return s.def=n,s}const Ep=e=>gc(e,Ac),Cp=typeof HTMLElement!="undefined"?HTMLElement:class{};class Gs extends Cp{constructor(t,n={},s){super(),this._def=t,this._props=n,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this.shadowRoot&&s?s(this._createVNode(),this.shadowRoot):(this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,ri(()=>{this._connected||(Lr(null,this.shadowRoot),this._instance=null)})}_resolveDef(){this._resolved=!0;for(let s=0;s{for(const r of s)this._setAttr(r.attributeName)}).observe(this,{attributes:!0});const t=(s,r=!1)=>{const{props:i,styles:o}=s;let l;if(i&&!U(i))for(const c in i){const f=i[c];(f===Number||f&&f.type===Number)&&(c in this._props&&(this._props[c]=it(this._props[c])),(l||(l=Object.create(null)))[_e(c)]=!0)}this._numberProps=l,r&&this._resolveProps(s),this._applyStyles(o),this._update()},n=this._def.__asyncLoader;n?n().then(s=>t(s,!0)):t(this._def)}_resolveProps(t){const{props:n}=t,s=U(n)?n:Object.keys(n||{});for(const r of Object.keys(this))r[0]!=="_"&&s.includes(r)&&this._setProp(r,this[r],!0,!1);for(const r of s.map(_e))Object.defineProperty(this,r,{get(){return this._getProp(r)},set(i){this._setProp(r,i)}})}_setAttr(t){let n=this.getAttribute(t);const s=_e(t);this._numberProps&&this._numberProps[s]&&(n=it(n)),this._setProp(s,n,!1)}_getProp(t){return this._props[t]}_setProp(t,n,s=!0,r=!0){n!==this._props[t]&&(this._props[t]=n,r&&this._instance&&this._update(),s&&(n===!0?this.setAttribute(Me(t),""):typeof n=="string"||typeof n=="number"?this.setAttribute(Me(t),n+""):n||this.removeAttribute(Me(t))))}_update(){Lr(this._createVNode(),this.shadowRoot)}_createVNode(){const t=ce(this._def,te({},this._props));return this._instance||(t.ce=n=>{this._instance=n,n.isCE=!0;const s=(i,o)=>{this.dispatchEvent(new CustomEvent(i,{detail:o}))};n.emit=(i,...o)=>{s(i,o),Me(i)!==i&&s(Me(i),o)};let r=this;for(;r=r&&(r.parentNode||r.host);)if(r instanceof Gs){n.parent=r._instance,n.provides=r._instance.provides;break}}),t}_applyStyles(t){t&&t.forEach(n=>{const s=document.createElement("style");s.textContent=n,this.shadowRoot.appendChild(s)})}}function vp(e="$style"){{const t=Ct();if(!t)return se;const n=t.type.__cssModules;if(!n)return se;const s=n[e];return s||se}}function Tp(e){const t=Ct();if(!t)return;const n=t.ut=(r=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(i=>Fr(i,r))},s=()=>{const r=e(t.proxy);kr(t.subTree,r),n(r)};Pl(s),Wn(()=>{const r=new MutationObserver(s);r.observe(t.subTree.el.parentNode,{childList:!0}),Ys(()=>r.disconnect())})}function kr(e,t){if(e.shapeFlag&128){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{kr(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Fr(e.el,t);else if(e.type===ye)e.children.forEach(n=>kr(n,t));else if(e.type===Ft){let{el:n,anchor:s}=e;for(;n&&(Fr(n,t),n!==s);)n=n.nextSibling}}function Fr(e,t){if(e.nodeType===1){const n=e.style;for(const s in t)n.setProperty(`--${s}`,t[s])}}const at="transition",hn="animation",Ci=(e,{slots:t})=>ac(ai,yc(e),t);Ci.displayName="Transition";const mc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Sp=Ci.props=te({},ai.props,mc),St=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},vo=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function yc(e){const t={};for(const O in e)O in mc||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:u=l,leaveFromClass:a=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,E=wp(r),v=E&&E[0],A=E&&E[1],{onBeforeEnter:y,onEnter:h,onEnterCancelled:_,onLeave:w,onLeaveCancelled:R,onBeforeAppear:H=y,onAppear:P=h,onAppearCancelled:b=_}=t,M=(O,V,B)=>{ut(O,V?u:l),ut(O,V?f:o),B&&B()},F=(O,V)=>{O._isLeaving=!1,ut(O,a),ut(O,m),ut(O,d),V&&V()},I=O=>(V,B)=>{const G=O?P:h,Z=()=>M(V,O,B);St(G,[V,Z]),To(()=>{ut(V,O?c:i),et(V,O?u:l),vo(G)||So(V,s,v,Z)})};return te(t,{onBeforeEnter(O){St(y,[O]),et(O,i),et(O,o)},onBeforeAppear(O){St(H,[O]),et(O,c),et(O,f)},onEnter:I(!1),onAppear:I(!0),onLeave(O,V){O._isLeaving=!0;const B=()=>F(O,V);et(O,a),_c(),et(O,d),To(()=>{!O._isLeaving||(ut(O,a),et(O,m),vo(w)||So(O,s,A,B))}),St(w,[O,B])},onEnterCancelled(O){M(O,!1),St(_,[O])},onAppearCancelled(O){M(O,!0),St(b,[O])},onLeaveCancelled(O){F(O),St(R,[O])}})}function wp(e){if(e==null)return null;if(ie(e))return[hr(e.enter),hr(e.leave)];{const t=hr(e);return[t,t]}}function hr(e){return it(e)}function et(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function ut(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function To(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Np=0;function So(e,t,n,s){const r=e._endId=++Np,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=bc(e,t);if(!o)return s();const f=o+"end";let u=0;const a=()=>{e.removeEventListener(f,d),i()},d=m=>{m.target===e&&++u>=c&&a()};setTimeout(()=>{u(n[E]||"").split(", "),r=s(`${at}Delay`),i=s(`${at}Duration`),o=wo(r,i),l=s(`${hn}Delay`),c=s(`${hn}Duration`),f=wo(l,c);let u=null,a=0,d=0;t===at?o>0&&(u=at,a=o,d=i.length):t===hn?f>0&&(u=hn,a=f,d=c.length):(a=Math.max(o,f),u=a>0?o>f?at:hn:null,d=u?u===at?i.length:c.length:0);const m=u===at&&/\b(transform|all)(,|$)/.test(s(`${at}Property`).toString());return{type:u,timeout:a,propCount:d,hasTransform:m}}function wo(e,t){for(;e.lengthNo(n)+No(e[s])))}function No(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function _c(){return document.body.offsetHeight}const Ec=new WeakMap,Cc=new WeakMap,Pp={name:"TransitionGroup",props:te({},Sp,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Ct(),s=fi();let r,i;return zs(()=>{if(!r.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!Mp(r[0].el,n.vnode.el,o))return;r.forEach(Rp),r.forEach(Ap);const l=r.filter(Ip);_c(),l.forEach(c=>{const f=c.el,u=f.style;et(f,o),u.transform=u.webkitTransform=u.transitionDuration="";const a=f._moveCb=d=>{d&&d.target!==f||(!d||/transform$/.test(d.propertyName))&&(f.removeEventListener("transitionend",a),f._moveCb=null,ut(f,o))};f.addEventListener("transitionend",a)})}),()=>{const o=Q(e),l=yc(o);let c=o.tag||ye;r=i,i=t.default?Ws(t.default()):[];for(let f=0;f{o.split(/\s+/).forEach(l=>l&&s.classList.remove(l))}),n.split(/\s+/).forEach(o=>o&&s.classList.add(o)),s.style.display="none";const r=t.nodeType===1?t:t.parentNode;r.appendChild(s);const{hasTransform:i}=bc(s);return r.removeChild(s),i}const Et=e=>{const t=e.props["onUpdate:modelValue"]||!1;return U(t)?n=>Gt(t,n):t};function kp(e){e.target.composing=!0}function Po(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ts={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e._assign=Et(r);const i=s||r.props&&r.props.type==="number";nt(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=it(l)),e._assign(l)}),n&&nt(e,"change",()=>{e.value=e.value.trim()}),t||(nt(e,"compositionstart",kp),nt(e,"compositionend",Po),nt(e,"change",Po))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:s,number:r}},i){if(e._assign=Et(i),e.composing||document.activeElement===e&&e.type!=="range"&&(n||s&&e.value.trim()===t||(r||e.type==="number")&&it(e.value)===t))return;const o=t==null?"":t;e.value!==o&&(e.value=o)}},vi={deep:!0,created(e,t,n){e._assign=Et(n),nt(e,"change",()=>{const s=e._modelValue,r=on(e),i=e.checked,o=e._assign;if(U(s)){const l=Fs(s,r),c=l!==-1;if(i&&!c)o(s.concat(r));else if(!i&&c){const f=[...s];f.splice(l,1),o(f)}}else if(Kt(s)){const l=new Set(s);i?l.add(r):l.delete(r),o(l)}else o(Tc(e,i))})},mounted:Oo,beforeUpdate(e,t,n){e._assign=Et(n),Oo(e,t,n)}};function Oo(e,{value:t,oldValue:n},s){e._modelValue=t,U(t)?e.checked=Fs(t,s.props.value)>-1:Kt(t)?e.checked=t.has(s.props.value):t!==n&&(e.checked=gt(t,Tc(e,!0)))}const Ti={created(e,{value:t},n){e.checked=gt(t,n.props.value),e._assign=Et(n),nt(e,"change",()=>{e._assign(on(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e._assign=Et(s),t!==n&&(e.checked=gt(t,s.props.value))}},vc={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Kt(t);nt(e,"change",()=>{const i=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?it(on(o)):on(o));e._assign(e.multiple?r?new Set(i):i:i[0])}),e._assign=Et(s)},mounted(e,{value:t}){Ro(e,t)},beforeUpdate(e,t,n){e._assign=Et(n)},updated(e,{value:t}){Ro(e,t)}};function Ro(e,t){const n=e.multiple;if(!(n&&!U(t)&&!Kt(t))){for(let s=0,r=e.options.length;s-1:i.selected=t.has(o);else if(gt(on(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function on(e){return"_value"in e?e._value:e.value}function Tc(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Sc={created(e,t,n){cs(e,t,n,null,"created")},mounted(e,t,n){cs(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){cs(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){cs(e,t,n,s,"updated")}};function wc(e,t){switch(e){case"SELECT":return vc;case"TEXTAREA":return Ts;default:switch(t){case"checkbox":return vi;case"radio":return Ti;default:return Ts}}}function cs(e,t,n,s,r){const o=wc(e.tagName,n.props&&n.props.type)[r];o&&o(e,t,n,s)}function Fp(){Ts.getSSRProps=({value:e})=>({value:e}),Ti.getSSRProps=({value:e},t)=>{if(t.props&>(t.props.value,e))return{checked:!0}},vi.getSSRProps=({value:e},t)=>{if(U(e)){if(t.props&&Fs(e,t.props.value)>-1)return{checked:!0}}else if(Kt(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Sc.getSSRProps=(e,t)=>{if(typeof t.type!="string")return;const n=wc(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}const Lp=["ctrl","shift","alt","meta"],Bp={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Lp.some(n=>e[`${n}Key`]&&!t.includes(n))},Dp=(e,t)=>(n,...s)=>{for(let r=0;rn=>{if(!("key"in n))return;const s=Me(n.key);if(t.some(r=>r===s||$p[r]===s))return e(n)},Nc={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):gn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),gn(e,!0),s.enter(e)):s.leave(e,()=>{gn(e,!1)}):gn(e,t))},beforeUnmount(e,{value:t}){gn(e,t)}};function gn(e,t){e.style.display=t?e._vod:"none"}function Vp(){Nc.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}}}const Pc=te({patchProp:bp},ip);let Sn,Ao=!1;function Oc(){return Sn||(Sn=Jl(Pc))}function Rc(){return Sn=Ao?Sn:Yl(Pc),Ao=!0,Sn}const Lr=(...e)=>{Oc().render(...e)},Ac=(...e)=>{Rc().hydrate(...e)},Up=(...e)=>{const t=Oc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ic(s);if(!r)return;const i=t._component;!W(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const o=n(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Kp=(...e)=>{const t=Rc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ic(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Ic(e){return z(e)?document.querySelector(e):e}let Io=!1;const jp=()=>{Io||(Io=!0,Fp(),Vp())};var Dh=Object.freeze(Object.defineProperty({__proto__:null,Transition:Ci,TransitionGroup:Op,VueElement:Gs,createApp:Up,createSSRApp:Kp,defineCustomElement:gc,defineSSRCustomElement:Ep,hydrate:Ac,initDirectivesForSSR:jp,render:Lr,useCssModule:vp,useCssVars:Tp,vModelCheckbox:vi,vModelDynamic:Sc,vModelRadio:Ti,vModelSelect:vc,vModelText:Ts,vShow:Nc,withKeys:Hp,withModifiers:Dp,EffectScope:Jr,ReactiveEffect:Kn,customRef:wa,effect:zf,effectScope:Kf,getCurrentScope:jf,isProxy:Qr,isReactive:Mt,isReadonly:Bt,isRef:ge,isShallow:Pn,markRaw:Gr,onScopeDispose:xf,proxyRefs:ni,reactive:Hs,readonly:Xr,ref:ds,shallowReactive:hl,shallowReadonly:_a,shallowRef:Ea,stop:Jf,toRaw:Q,toRef:yl,toRefs:Na,triggerRef:va,unref:ml,camelize:_e,capitalize:jt,normalizeClass:Vn,normalizeProps:Sf,normalizeStyle:Hn,toDisplayString:Ff,toHandlerKey:Qt,BaseTransition:ai,Comment:ve,Fragment:ye,KeepAlive:tu,Static:Ft,Suspense:xa,Teleport:Au,Text:$t,callWithAsyncErrorHandling:Fe,callWithErrorHandling:st,cloneVNode:Qe,compatUtils:sp,computed:cc,createBlock:yi,createCommentVNode:Lu,createElementBlock:Iu,createElementVNode:bi,createHydrationRenderer:Yl,createPropsRestProxy:Zu,createRenderer:Jl,createSlots:fu,createStaticVNode:Fu,createTextVNode:_i,createVNode:ce,defineAsyncComponent:Ga,defineComponent:ui,defineEmits:xu,defineExpose:Wu,defineProps:ju,get devtools(){return Jt},getCurrentInstance:Ct,getTransitionRawChildren:Ws,guardReactiveProps:tc,h:ac,handleError:xt,initCustomFormatter:Qu,inject:_n,isMemoSame:dc,isRuntimeOnly:Vu,isVNode:bt,mergeDefaults:Yu,mergeProps:nc,nextTick:ri,onActivated:Al,onBeforeMount:kl,onBeforeUnmount:Js,onBeforeUpdate:Fl,onDeactivated:Il,onErrorCaptured:$l,onMounted:Wn,onRenderTracked:Dl,onRenderTriggered:Bl,onServerPrefetch:Ll,onUnmounted:Ys,onUpdated:zs,openBlock:Zs,popScopeId:Da,provide:Nl,pushScopeId:Ba,queuePostFlushCb:ii,registerRuntimeCompiler:Hu,renderList:cu,renderSlot:au,resolveComponent:iu,resolveDirective:lu,resolveDynamicComponent:ou,resolveFilter:np,resolveTransitionHooks:sn,setBlockTracking:Or,setDevtoolsHook:vl,setTransitionHooks:Dt,ssrContextKey:uc,ssrUtils:tp,toHandlers:uu,transformVNodeArgs:Mu,useAttrs:Ju,useSSRContext:pc,useSlots:zu,useTransitionState:fi,version:hc,warn:Aa,watch:En,watchEffect:Ya,watchPostEffect:Pl,watchSyncEffect:Za,withAsyncContext:Xu,withCtx:oi,withDefaults:qu,withDirectives:su,withMemo:Gu,withScopeId:$a},Symbol.toStringTag,{value:"Module"}));function Si(e){throw e}function Mc(e){}function fe(e,t,n,s){const r=e,i=new SyntaxError(String(r));return i.code=e,i.loc=t,i}const kn=Symbol(""),wn=Symbol(""),wi=Symbol(""),Ss=Symbol(""),kc=Symbol(""),Vt=Symbol(""),Fc=Symbol(""),Lc=Symbol(""),Ni=Symbol(""),Pi=Symbol(""),qn=Symbol(""),Oi=Symbol(""),Bc=Symbol(""),Ri=Symbol(""),ws=Symbol(""),Ai=Symbol(""),Ii=Symbol(""),Mi=Symbol(""),ki=Symbol(""),Dc=Symbol(""),$c=Symbol(""),er=Symbol(""),Ns=Symbol(""),Fi=Symbol(""),Li=Symbol(""),Fn=Symbol(""),zn=Symbol(""),Bi=Symbol(""),Br=Symbol(""),xp=Symbol(""),Dr=Symbol(""),Ps=Symbol(""),Wp=Symbol(""),qp=Symbol(""),Di=Symbol(""),zp=Symbol(""),Jp=Symbol(""),$i=Symbol(""),Hc=Symbol(""),ln={[kn]:"Fragment",[wn]:"Teleport",[wi]:"Suspense",[Ss]:"KeepAlive",[kc]:"BaseTransition",[Vt]:"openBlock",[Fc]:"createBlock",[Lc]:"createElementBlock",[Ni]:"createVNode",[Pi]:"createElementVNode",[qn]:"createCommentVNode",[Oi]:"createTextVNode",[Bc]:"createStaticVNode",[Ri]:"resolveComponent",[ws]:"resolveDynamicComponent",[Ai]:"resolveDirective",[Ii]:"resolveFilter",[Mi]:"withDirectives",[ki]:"renderList",[Dc]:"renderSlot",[$c]:"createSlots",[er]:"toDisplayString",[Ns]:"mergeProps",[Fi]:"normalizeClass",[Li]:"normalizeStyle",[Fn]:"normalizeProps",[zn]:"guardReactiveProps",[Bi]:"toHandlers",[Br]:"camelize",[xp]:"capitalize",[Dr]:"toHandlerKey",[Ps]:"setBlockTracking",[Wp]:"pushScopeId",[qp]:"popScopeId",[Di]:"withCtx",[zp]:"unref",[Jp]:"isRef",[$i]:"withMemo",[Hc]:"isMemoSame"};function Yp(e){Object.getOwnPropertySymbols(e).forEach(t=>{ln[t]=e[t]})}const De={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function Zp(e,t=De){return{type:0,children:e,helpers:[],components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:t}}function Ln(e,t,n,s,r,i,o,l=!1,c=!1,f=!1,u=De){return e&&(l?(e.helper(Vt),e.helper(an(e.inSSR,f))):e.helper(fn(e.inSSR,f)),o&&e.helper(Mi)),{type:13,tag:t,props:n,children:s,patchFlag:r,dynamicProps:i,directives:o,isBlock:l,disableTracking:c,isComponent:f,loc:u}}function Jn(e,t=De){return{type:17,loc:t,elements:e}}function Ve(e,t=De){return{type:15,loc:t,properties:e}}function ae(e,t){return{type:16,loc:De,key:z(e)?J(e,!0):e,value:t}}function J(e,t=!1,n=De,s=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:s}}function qe(e,t=De){return{type:8,loc:t,children:e}}function pe(e,t=[],n=De){return{type:14,loc:n,callee:e,arguments:t}}function cn(e,t=void 0,n=!1,s=!1,r=De){return{type:18,params:e,returns:t,newline:n,isSlot:s,loc:r}}function $r(e,t,n,s=!0){return{type:19,test:e,consequent:t,alternate:n,newline:s,loc:De}}function Xp(e,t,n=!1){return{type:20,index:e,value:t,isVNode:n,loc:De}}function Qp(e){return{type:21,body:e,loc:De}}const Pe=e=>e.type===4&&e.isStatic,Yt=(e,t)=>e===t||e===Me(t);function Vc(e){if(Yt(e,"Teleport"))return wn;if(Yt(e,"Suspense"))return wi;if(Yt(e,"KeepAlive"))return Ss;if(Yt(e,"BaseTransition"))return kc}const Gp=/^\d|[^\$\w]/,Hi=e=>!Gp.test(e),ed=/[A-Za-z_$\xA0-\uFFFF]/,td=/[\.\?\w$\xA0-\uFFFF]/,nd=/\s+[.[]\s*|\s*[.[]\s+/g,sd=e=>{e=e.trim().replace(nd,o=>o.trim());let t=0,n=[],s=0,r=0,i=null;for(let o=0;ot.type===7&&t.name==="bind"&&(!t.arg||t.arg.type!==4||!t.arg.isStatic))}function gr(e){return e.type===5||e.type===2}function id(e){return e.type===7&&e.name==="slot"}function As(e){return e.type===1&&e.tagType===3}function Is(e){return e.type===1&&e.tagType===2}function fn(e,t){return e||t?Ni:Pi}function an(e,t){return e||t?Fc:Lc}const od=new Set([Fn,zn]);function jc(e,t=[]){if(e&&!z(e)&&e.type===14){const n=e.callee;if(!z(n)&&od.has(n))return jc(e.arguments[0],t.concat(e))}return[e,t]}function Ms(e,t,n){let s,r=e.type===13?e.props:e.arguments[2],i=[],o;if(r&&!z(r)&&r.type===14){const l=jc(r);r=l[0],i=l[1],o=i[i.length-1]}if(r==null||z(r))s=Ve([t]);else if(r.type===14){const l=r.arguments[0];!z(l)&&l.type===15?Mo(t,l)||l.properties.unshift(t):r.callee===Bi?s=pe(n.helper(Ns),[Ve([t]),r]):r.arguments.unshift(Ve([t])),!s&&(s=r)}else r.type===15?(Mo(t,r)||r.properties.unshift(t),s=r):(s=pe(n.helper(Ns),[Ve([t]),r]),o&&o.callee===zn&&(o=i[i.length-2]));e.type===13?o?o.arguments[0]=s:e.props=s:o?o.arguments[0]=s:e.arguments[2]=s}function Mo(e,t){let n=!1;if(e.key.type===4){const s=e.key.content;n=t.properties.some(r=>r.key.type===4&&r.key.content===s)}return n}function Bn(e,t){return`_${t}_${e.replace(/[^\w]/g,(n,s)=>n==="-"?"_":e.charCodeAt(s).toString())}`}function ld(e){return e.type===14&&e.callee===$i?e.arguments[1].returns:e}function Vi(e,{helper:t,removeHelper:n,inSSR:s}){e.isBlock||(e.isBlock=!0,n(fn(s,e.isComponent)),t(Vt),t(an(s,e.isComponent)))}function ko(e,t){const n=t.options?t.options.compatConfig:t.compatConfig,s=n&&n[e];return e==="MODE"?s||3:s}function Lt(e,t){const n=ko("MODE",t),s=ko(e,t);return n===3?s===!0:s!==!1}function Dn(e,t,n,...s){return Lt(e,t)}const cd=/&(gt|lt|amp|apos|quot);/g,fd={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},Fo={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:ps,isPreTag:ps,isCustomElement:ps,decodeEntities:e=>e.replace(cd,(t,n)=>fd[n]),onError:Si,onWarn:Mc,comments:!1};function ad(e,t={}){const n=ud(e,t),s=Le(n);return Zp(Ui(n,0,[]),Ke(n,s))}function ud(e,t){const n=te({},Fo);let s;for(s in t)n[s]=t[s]===void 0?Fo[s]:t[s];return{options:n,column:1,line:1,offset:0,originalSource:e,source:e,inPre:!1,inVPre:!1,onWarn:n.onWarn}}function Ui(e,t,n){const s=nr(n),r=s?s.ns:0,i=[];for(;!Ed(e,t,n);){const l=e.source;let c;if(t===0||t===1){if(!e.inVPre&&Ce(l,e.options.delimiters[0]))c=bd(e,t);else if(t===0&&l[0]==="<")if(l.length===1)ne(e,5,1);else if(l[1]==="!")Ce(l,"=0;){const f=o[l];f&&f.type===9&&(c+=f.branches.length)}return()=>{if(i)s.codegenNode=Ho(r,c,n);else{const f=Wd(s.codegenNode);f.alternate=Ho(r,c+s.branches.length-1,n)}}}));function xd(e,t,n,s){if(t.name!=="else"&&(!t.exp||!t.exp.content.trim())){const r=t.exp?t.exp.loc:e.loc;n.onError(fe(28,t.loc)),t.exp=J("true",!1,r)}if(t.name==="if"){const r=$o(e,t),i={type:9,loc:e.loc,branches:[r]};if(n.replaceNode(i),s)return s(i,r,!0)}else{const r=n.parent.children;let i=r.indexOf(e);for(;i-->=-1;){const o=r[i];if(o&&o.type===3){n.removeNode(o);continue}if(o&&o.type===2&&!o.content.trim().length){n.removeNode(o);continue}if(o&&o.type===9){t.name==="else-if"&&o.branches[o.branches.length-1].condition===void 0&&n.onError(fe(30,e.loc)),n.removeNode();const l=$o(e,t);o.branches.push(l);const c=s&&s(o,l,!1);sr(l,n),c&&c(),n.currentNode=null}else n.onError(fe(30,e.loc));break}}}function $o(e,t){const n=e.tagType===3;return{type:10,loc:e.loc,condition:t.name==="else"?void 0:t.exp,children:n&&!He(e,"for")?e.children:[e],userKey:tr(e,"key"),isTemplateIf:n}}function Ho(e,t,n){return e.condition?$r(e.condition,Vo(e,t,n),pe(n.helper(qn),['""',"true"])):Vo(e,t,n)}function Vo(e,t,n){const{helper:s}=n,r=ae("key",J(`${t}`,!1,De,2)),{children:i}=e,o=i[0];if(i.length!==1||o.type!==1)if(i.length===1&&o.type===11){const c=o.codegenNode;return Ms(c,r,n),c}else{let c=64;return Ln(n,s(kn),Ve([r]),i,c+"",void 0,void 0,!0,!1,!1,e.loc)}else{const c=o.codegenNode,f=ld(c);return f.type===13&&Vi(f,n),Ms(f,r,n),c}}function Wd(e){for(;;)if(e.type===19)if(e.alternate.type===19)e=e.alternate;else return e;else e.type===20&&(e=e.value)}const qd=Zc("for",(e,t,n)=>{const{helper:s,removeHelper:r}=n;return zd(e,t,n,i=>{const o=pe(s(ki),[i.source]),l=As(e),c=He(e,"memo"),f=tr(e,"key"),u=f&&(f.type===6?J(f.value.content,!0):f.exp),a=f?ae("key",u):null,d=i.source.type===4&&i.source.constType>0,m=d?64:f?128:256;return i.codegenNode=Ln(n,s(kn),void 0,o,m+"",void 0,void 0,!0,!d,!1,e.loc),()=>{let E;const{children:v}=i,A=v.length!==1||v[0].type!==1,y=Is(e)?e:l&&e.children.length===1&&Is(e.children[0])?e.children[0]:null;if(y?(E=y.codegenNode,l&&a&&Ms(E,a,n)):A?E=Ln(n,s(kn),a?Ve([a]):void 0,e.children,64+"",void 0,void 0,!0,void 0,!1):(E=v[0].codegenNode,l&&a&&Ms(E,a,n),E.isBlock!==!d&&(E.isBlock?(r(Vt),r(an(n.inSSR,E.isComponent))):r(fn(n.inSSR,E.isComponent))),E.isBlock=!d,E.isBlock?(s(Vt),s(an(n.inSSR,E.isComponent))):s(fn(n.inSSR,E.isComponent))),c){const h=cn(Ur(i.parseResult,[J("_cached")]));h.body=Qp([qe(["const _memo = (",c.exp,")"]),qe(["if (_cached",...u?[" && _cached.key === ",u]:[],` && ${n.helperString(Hc)}(_cached, _memo)) return _cached`]),qe(["const _item = ",E]),J("_item.memo = _memo"),J("return _item")]),o.arguments.push(h,J("_cache"),J(String(n.cached++)))}else o.arguments.push(cn(Ur(i.parseResult),E,!0))}})});function zd(e,t,n,s){if(!t.exp){n.onError(fe(31,t.loc));return}const r=ef(t.exp);if(!r){n.onError(fe(32,t.loc));return}const{addIdentifiers:i,removeIdentifiers:o,scopes:l}=n,{source:c,value:f,key:u,index:a}=r,d={type:11,loc:t.loc,source:c,valueAlias:f,keyAlias:u,objectIndexAlias:a,parseResult:r,children:As(e)?e.children:[e]};n.replaceNode(d),l.vFor++;const m=s&&s(d);return()=>{l.vFor--,m&&m()}}const Jd=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Uo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Yd=/^\(|\)$/g;function ef(e,t){const n=e.loc,s=e.content,r=s.match(Jd);if(!r)return;const[,i,o]=r,l={source:fs(n,o.trim(),s.indexOf(o,i.length)),value:void 0,key:void 0,index:void 0};let c=i.trim().replace(Yd,"").trim();const f=i.indexOf(c),u=c.match(Uo);if(u){c=c.replace(Uo,"").trim();const a=u[1].trim();let d;if(a&&(d=s.indexOf(a,f+c.length),l.key=fs(n,a,d)),u[2]){const m=u[2].trim();m&&(l.index=fs(n,m,s.indexOf(m,l.key?d+a.length:f+c.length)))}}return c&&(l.value=fs(n,c,f)),l}function fs(e,t,n){return J(t,!1,Kc(e,n,t.length))}function Ur({value:e,key:t,index:n},s=[]){return Zd([e,t,n,...s])}function Zd(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map((n,s)=>n||J("_".repeat(s+1),!1))}const Ko=J("undefined",!1),Xd=(e,t)=>{if(e.type===1&&(e.tagType===1||e.tagType===3)){const n=He(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},Qd=(e,t,n)=>cn(e,t,!1,!0,t.length?t[0].loc:n);function Gd(e,t,n=Qd){t.helper(Di);const{children:s,loc:r}=e,i=[],o=[];let l=t.scopes.vSlot>0||t.scopes.vFor>0;const c=He(e,"slot",!0);if(c){const{arg:A,exp:y}=c;A&&!Pe(A)&&(l=!0),i.push(ae(A||J("default",!0),n(y,s,r)))}let f=!1,u=!1;const a=[],d=new Set;let m=0;for(let A=0;A{const _=n(y,h,r);return t.compatConfig&&(_.isNonScopedSlot=!0),ae("default",_)};f?a.length&&a.some(y=>tf(y))&&(u?t.onError(fe(39,a[0].loc)):i.push(A(void 0,a))):i.push(A(void 0,s))}const E=l?2:ys(e.children)?3:1;let v=Ve(i.concat(ae("_",J(E+"",!1))),r);return o.length&&(v=pe(t.helper($c),[v,Jn(o)])),{slots:v,hasDynamicSlots:l}}function as(e,t,n){const s=[ae("name",e),ae("fn",t)];return n!=null&&s.push(ae("key",J(String(n),!0))),Ve(s)}function ys(e){for(let t=0;tfunction(){if(e=t.currentNode,!(e.type===1&&(e.tagType===0||e.tagType===1)))return;const{tag:s,props:r}=e,i=e.tagType===1;let o=i?th(e,t):`"${s}"`;const l=ie(o)&&o.callee===ws;let c,f,u,a=0,d,m,E,v=l||o===wn||o===wi||!i&&(s==="svg"||s==="foreignObject");if(r.length>0){const A=sf(e,t,void 0,i,l);c=A.props,a=A.patchFlag,m=A.dynamicPropNames;const y=A.directives;E=y&&y.length?Jn(y.map(h=>sh(h,t))):void 0,A.shouldUseBlock&&(v=!0)}if(e.children.length>0)if(o===Ss&&(v=!0,a|=1024),i&&o!==wn&&o!==Ss){const{slots:y,hasDynamicSlots:h}=Gd(e,t);f=y,h&&(a|=1024)}else if(e.children.length===1&&o!==wn){const y=e.children[0],h=y.type,_=h===5||h===8;_&&Ue(y,t)===0&&(a|=1),_||h===2?f=y:f=e.children}else f=e.children;a!==0&&(u=String(a),m&&m.length&&(d=rh(m))),e.codegenNode=Ln(t,o,c,f,u,d,E,!!v,!1,i,e.loc)};function th(e,t,n=!1){let{tag:s}=e;const r=Kr(s),i=tr(e,"is");if(i)if(r||Lt("COMPILER_IS_ON_ELEMENT",t)){const c=i.type===6?i.value&&J(i.value.content,!0):i.exp;if(c)return pe(t.helper(ws),[c])}else i.type===6&&i.value.content.startsWith("vue:")&&(s=i.value.content.slice(4));const o=!r&&He(e,"is");if(o&&o.exp)return pe(t.helper(ws),[o.exp]);const l=Vc(s)||t.isBuiltInComponent(s);return l?(n||t.helper(l),l):(t.helper(Ri),t.components.add(s),Bn(s,"component"))}function sf(e,t,n=e.props,s,r,i=!1){const{tag:o,loc:l,children:c}=e;let f=[];const u=[],a=[],d=c.length>0;let m=!1,E=0,v=!1,A=!1,y=!1,h=!1,_=!1,w=!1;const R=[],H=M=>{f.length&&(u.push(Ve(jo(f),l)),f=[]),M&&u.push(M)},P=({key:M,value:F})=>{if(Pe(M)){const I=M.content,O=Ut(I);if(O&&(!s||r)&&I.toLowerCase()!=="onclick"&&I!=="onUpdate:modelValue"&&!At(I)&&(h=!0),O&&At(I)&&(w=!0),F.type===20||(F.type===4||F.type===8)&&Ue(F,t)>0)return;I==="ref"?v=!0:I==="class"?A=!0:I==="style"?y=!0:I!=="key"&&!R.includes(I)&&R.push(I),s&&(I==="class"||I==="style")&&!R.includes(I)&&R.push(I)}else _=!0};for(let M=0;M0&&f.push(ae(J("ref_for",!0),J("true")))),O==="is"&&(Kr(o)||V&&V.content.startsWith("vue:")||Lt("COMPILER_IS_ON_ELEMENT",t)))continue;f.push(ae(J(O,!0,Kc(I,0,O.length)),J(V?V.content:"",B,V?V.loc:I)))}else{const{name:I,arg:O,exp:V,loc:B}=F,G=I==="bind",Z=I==="on";if(I==="slot"){s||t.onError(fe(40,B));continue}if(I==="once"||I==="memo"||I==="is"||G&&Rt(O,"is")&&(Kr(o)||Lt("COMPILER_IS_ON_ELEMENT",t))||Z&&i)continue;if((G&&Rt(O,"key")||Z&&d&&Rt(O,"vue:before-update"))&&(m=!0),G&&Rt(O,"ref")&&t.scopes.vFor>0&&f.push(ae(J("ref_for",!0),J("true"))),!O&&(G||Z)){if(_=!0,V)if(G){if(H(),Lt("COMPILER_V_BIND_OBJECT_ORDER",t)){u.unshift(V);continue}u.push(V)}else H({type:14,loc:B,callee:t.helper(Bi),arguments:s?[V]:[V,"true"]});else t.onError(fe(G?34:35,B));continue}const le=t.directiveTransforms[I];if(le){const{props:ee,needRuntime:je}=le(F,e,t);!i&&ee.forEach(P),Z&&O&&!Pe(O)?H(Ve(ee,l)):f.push(...ee),je&&(a.push(F),mt(je)&&nf.set(F,je))}else $f(I)||(a.push(F),d&&(m=!0))}}let b;if(u.length?(H(),u.length>1?b=pe(t.helper(Ns),u,l):b=u[0]):f.length&&(b=Ve(jo(f),l)),_?E|=16:(A&&!s&&(E|=2),y&&!s&&(E|=4),R.length&&(E|=8),h&&(E|=32)),!m&&(E===0||E===32)&&(v||w||a.length>0)&&(E|=512),!t.inSSR&&b)switch(b.type){case 15:let M=-1,F=-1,I=!1;for(let B=0;Bae(o,i)),r))}return Jn(n,e.loc)}function rh(e){let t="[";for(let n=0,s=e.length;n{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},oh=/-(\w)/g,xo=ih(e=>e.replace(oh,(t,n)=>n?n.toUpperCase():"")),lh=(e,t)=>{if(Is(e)){const{children:n,loc:s}=e,{slotName:r,slotProps:i}=ch(e,t),o=[t.prefixIdentifiers?"_ctx.$slots":"$slots",r,"{}","undefined","true"];let l=2;i&&(o[2]=i,l=3),n.length&&(o[3]=cn([],n,!1,!1,s),l=4),t.scopeId&&!t.slotted&&(l=5),o.splice(l),e.codegenNode=pe(t.helper(Dc),o,s)}};function ch(e,t){let n='"default"',s;const r=[];for(let i=0;i0){const{props:i,directives:o}=sf(e,t,r,!1,!1);s=i,o.length&&t.onError(fe(36,o[0].loc))}return{slotName:n,slotProps:s}}const fh=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,rf=(e,t,n,s)=>{const{loc:r,modifiers:i,arg:o}=e;!e.exp&&!i.length&&n.onError(fe(35,r));let l;if(o.type===4)if(o.isStatic){let a=o.content;a.startsWith("vue:")&&(a=`vnode-${a.slice(4)}`);const d=t.tagType!==0||a.startsWith("vnode")||!/[A-Z]/.test(a)?Qt(_e(a)):`on:${a}`;l=J(d,!0,o.loc)}else l=qe([`${n.helperString(Dr)}(`,o,")"]);else l=o,l.children.unshift(`${n.helperString(Dr)}(`),l.children.push(")");let c=e.exp;c&&!c.content.trim()&&(c=void 0);let f=n.cacheHandlers&&!c&&!n.inVOnce;if(c){const a=Uc(c.content),d=!(a||fh.test(c.content)),m=c.content.includes(";");(d||f&&a)&&(c=qe([`${d?"$event":"(...args)"} => ${m?"{":"("}`,c,m?"}":")"]))}let u={props:[ae(l,c||J("() => {}",!1,r))]};return s&&(u=s(u)),f&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach(a=>a.key.isHandlerKey=!0),u},ah=(e,t,n)=>{const{exp:s,modifiers:r,loc:i}=e,o=e.arg;return o.type!==4?(o.children.unshift("("),o.children.push(') || ""')):o.isStatic||(o.content=`${o.content} || ""`),r.includes("camel")&&(o.type===4?o.isStatic?o.content=_e(o.content):o.content=`${n.helperString(Br)}(${o.content})`:(o.children.unshift(`${n.helperString(Br)}(`),o.children.push(")"))),n.inSSR||(r.includes("prop")&&Wo(o,"."),r.includes("attr")&&Wo(o,"^")),!s||s.type===4&&!s.content.trim()?(n.onError(fe(34,i)),{props:[ae(o,J("",!0,i))]}):{props:[ae(o,s)]}},Wo=(e,t)=>{e.type===4?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},uh=(e,t)=>{if(e.type===0||e.type===1||e.type===11||e.type===10)return()=>{const n=e.children;let s,r=!1;for(let i=0;ii.type===7&&!t.directiveTransforms[i.name])&&e.tag!=="template")))for(let i=0;i{if(e.type===1&&He(e,"once",!0))return qo.has(e)||t.inVOnce?void 0:(qo.add(e),t.inVOnce=!0,t.helper(Ps),()=>{t.inVOnce=!1;const n=t.currentNode;n.codegenNode&&(n.codegenNode=t.cache(n.codegenNode,!0))})},of=(e,t,n)=>{const{exp:s,arg:r}=e;if(!s)return n.onError(fe(41,e.loc)),us();const i=s.loc.source,o=s.type===4?s.content:i,l=n.bindingMetadata[i];if(l==="props"||l==="props-aliased")return n.onError(fe(44,s.loc)),us();const c=!1;if(!o.trim()||!Uc(o)&&!c)return n.onError(fe(42,s.loc)),us();const f=r||J("modelValue",!0),u=r?Pe(r)?`onUpdate:${r.content}`:qe(['"onUpdate:" + ',r]):"onUpdate:modelValue";let a;const d=n.isTS?"($event: any)":"$event";a=qe([`${d} => ((`,s,") = $event)"]);const m=[ae(f,e.exp),ae(u,a)];if(e.modifiers.length&&t.tagType===1){const E=e.modifiers.map(A=>(Hi(A)?A:JSON.stringify(A))+": true").join(", "),v=r?Pe(r)?`${r.content}Modifiers`:qe([r,' + "Modifiers"']):"modelModifiers";m.push(ae(v,J(`{ ${E} }`,!1,e.loc,2)))}return us(m)};function us(e=[]){return{props:e}}const dh=/[\w).+\-_$\]]/,hh=(e,t)=>{!Lt("COMPILER_FILTER",t)||(e.type===5&&ks(e.content,t),e.type===1&&e.props.forEach(n=>{n.type===7&&n.name!=="for"&&n.exp&&ks(n.exp,t)}))};function ks(e,t){if(e.type===4)zo(e,t);else for(let n=0;n=0&&(h=n.charAt(y),h===" ");y--);(!h||!dh.test(h))&&(o=!0)}}E===void 0?E=n.slice(0,m).trim():u!==0&&A();function A(){v.push(n.slice(u,m).trim()),u=m+1}if(v.length){for(m=0;m{if(e.type===1){const n=He(e,"memo");return!n||Jo.has(e)?void 0:(Jo.add(e),()=>{const s=e.codegenNode||t.currentNode.codegenNode;s&&s.type===13&&(e.tagType!==1&&Vi(s,t),e.codegenNode=pe(t.helper($i),[n.exp,cn(void 0,s),"_cache",String(t.cached++)]))})}};function yh(e){return[[ph,jd,mh,qd,hh,lh,eh,Xd,uh],{on:rf,bind:ah,model:of}]}function bh(e,t={}){const n=t.onError||Si,s=t.mode==="module";t.prefixIdentifiers===!0?n(fe(47)):s&&n(fe(48));const r=!1;t.cacheHandlers&&n(fe(49)),t.scopeId&&!s&&n(fe(50));const i=z(e)?ad(e,t):e,[o,l]=yh();return Sd(i,te({},t,{prefixIdentifiers:r,nodeTransforms:[...o,...t.nodeTransforms||[]],directiveTransforms:te({},l,t.directiveTransforms||{})})),Od(i,te({},t,{prefixIdentifiers:r}))}const _h=()=>({props:[]}),lf=Symbol(""),cf=Symbol(""),ff=Symbol(""),af=Symbol(""),jr=Symbol(""),uf=Symbol(""),pf=Symbol(""),df=Symbol(""),hf=Symbol(""),gf=Symbol("");Yp({[lf]:"vModelRadio",[cf]:"vModelCheckbox",[ff]:"vModelText",[af]:"vModelSelect",[jr]:"vModelDynamic",[uf]:"withModifiers",[pf]:"withKeys",[df]:"vShow",[hf]:"Transition",[gf]:"TransitionGroup"});let zt;function Eh(e,t=!1){return zt||(zt=document.createElement("div")),t?(zt.innerHTML=`
`,zt.children[0].getAttribute("foo")):(zt.innerHTML=e,zt.textContent)}const Ch=Oe("style,iframe,script,noscript",!0),vh={isVoidTag:Af,isNativeTag:e=>Of(e)||Rf(e),isPreTag:e=>e==="pre",decodeEntities:Eh,isBuiltInComponent:e=>{if(Yt(e,"Transition"))return hf;if(Yt(e,"TransitionGroup"))return gf},getNamespace(e,t){let n=t?t.ns:0;if(t&&n===2)if(t.tag==="annotation-xml"){if(e==="svg")return 1;t.props.some(s=>s.type===6&&s.name==="encoding"&&s.value!=null&&(s.value.content==="text/html"||s.value.content==="application/xhtml+xml"))&&(n=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&e!=="mglyph"&&e!=="malignmark"&&(n=0);else t&&n===1&&(t.tag==="foreignObject"||t.tag==="desc"||t.tag==="title")&&(n=0);if(n===0){if(e==="svg")return 1;if(e==="math")return 2}return n},getTextMode({tag:e,ns:t}){if(t===0){if(e==="textarea"||e==="title")return 1;if(Ch(e))return 2}return 0}},Th=e=>{e.type===1&&e.props.forEach((t,n)=>{t.type===6&&t.name==="style"&&t.value&&(e.props[n]={type:7,name:"bind",arg:J("style",!0,t.loc),exp:Sh(t.value.content,t.loc),modifiers:[],loc:t.loc})})},Sh=(e,t)=>{const n=Zo(e);return J(JSON.stringify(n),!1,t,3)};function rt(e,t){return fe(e,t)}const wh=(e,t,n)=>{const{exp:s,loc:r}=e;return s||n.onError(rt(51,r)),t.children.length&&(n.onError(rt(52,r)),t.children.length=0),{props:[ae(J("innerHTML",!0,r),s||J("",!0))]}},Nh=(e,t,n)=>{const{exp:s,loc:r}=e;return s||n.onError(rt(53,r)),t.children.length&&(n.onError(rt(54,r)),t.children.length=0),{props:[ae(J("textContent",!0),s?Ue(s,n)>0?s:pe(n.helperString(er),[s],r):J("",!0))]}},Ph=(e,t,n)=>{const s=of(e,t,n);if(!s.props.length||t.tagType===1)return s;e.arg&&n.onError(rt(56,e.arg.loc));const{tag:r}=t,i=n.isCustomElement(r);if(r==="input"||r==="textarea"||r==="select"||i){let o=ff,l=!1;if(r==="input"||i){const c=tr(t,"type");if(c){if(c.type===7)o=jr;else if(c.value)switch(c.value.content){case"radio":o=lf;break;case"checkbox":o=cf;break;case"file":l=!0,n.onError(rt(57,e.loc));break}}else rd(t)&&(o=jr)}else r==="select"&&(o=af);l||(s.needRuntime=n.helper(o))}else n.onError(rt(55,e.loc));return s.props=s.props.filter(o=>!(o.key.type===4&&o.key.content==="modelValue")),s},Oh=Oe("passive,once,capture"),Rh=Oe("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Ah=Oe("left,right"),mf=Oe("onkeyup,onkeydown,onkeypress",!0),Ih=(e,t,n,s)=>{const r=[],i=[],o=[];for(let l=0;lPe(e)&&e.content.toLowerCase()==="onclick"?J(t,!0):e.type!==4?qe(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e,Mh=(e,t,n)=>rf(e,t,n,s=>{const{modifiers:r}=e;if(!r.length)return s;let{key:i,value:o}=s.props[0];const{keyModifiers:l,nonKeyModifiers:c,eventOptionModifiers:f}=Ih(i,r,n,e.loc);if(c.includes("right")&&(i=Yo(i,"onContextmenu")),c.includes("middle")&&(i=Yo(i,"onMouseup")),c.length&&(o=pe(n.helper(uf),[o,JSON.stringify(c)])),l.length&&(!Pe(i)||mf(i.content))&&(o=pe(n.helper(pf),[o,JSON.stringify(l)])),f.length){const u=f.map(jt).join("");i=Pe(i)?J(`${i.content}${u}`,!0):qe(["(",i,`) + "${u}"`])}return{props:[ae(i,o)]}}),kh=(e,t,n)=>{const{exp:s,loc:r}=e;return s||n.onError(rt(59,r)),{props:[],needRuntime:n.helper(df)}},Fh=(e,t)=>{e.type===1&&e.tagType===0&&(e.tag==="script"||e.tag==="style")&&(t.onError(rt(61,e.loc)),t.removeNode())},Lh=[Th],Bh={cloak:_h,html:wh,text:Nh,model:Ph,on:Mh,show:kh};function $h(e,t={}){return bh(e,te({},vh,t,{nodeTransforms:[Fh,...Lh,...t.nodeTransforms||[]],directiveTransforms:te({},Bh,t.directiveTransforms||{}),transformHoist:null}))}export{Lu as $,Na as A,va as B,ml as C,_e as D,Jr as E,jt as F,Vn as G,Sf as H,Hn as I,Ff as J,Qt as K,ai as L,ve as M,ke as N,ye as O,tu as P,xa as Q,Kn as R,Ft as S,Au as T,$t as U,Fe as V,st as W,Qe as X,sp as Y,cc as Z,yi as _,Dh as a,hc as a$,Iu as a0,bi as a1,Yl as a2,Zu as a3,Jl as a4,fu as a5,Fu as a6,_i as a7,ce as a8,Ga as a9,Bl as aA,Ll as aB,Ys as aC,zs as aD,Zs as aE,Da as aF,Nl as aG,Ba as aH,ii as aI,cu as aJ,au as aK,iu as aL,lu as aM,ou as aN,np as aO,sn as aP,Or as aQ,vl as aR,Dt as aS,uc as aT,tp as aU,uu as aV,Mu as aW,Ju as aX,pc as aY,zu as aZ,fi as a_,ui as aa,xu as ab,Wu as ac,ju as ad,Jt as ae,Ct as af,Ws as ag,tc as ah,ac as ai,xt as aj,Qu as ak,_n as al,dc as am,Vu as an,bt as ao,Yu as ap,nc as aq,ri as ar,Al as as,kl as at,Js as au,Fl as av,Il as aw,$l as ax,Wn as ay,Dl as az,wa as b,Aa as b0,En as b1,Ya as b2,Pl as b3,Za as b4,Xu as b5,oi as b6,qu as b7,su as b8,Gu as b9,$a as ba,Ci as bb,Op as bc,Gs as bd,Up as be,Kp as bf,gc as bg,Ep as bh,Ac as bi,jp as bj,Lr as bk,vp as bl,Tp as bm,vi as bn,Sc as bo,Ti as bp,vc as bq,Ts as br,Nc as bs,Hp as bt,Dp as bu,U as bv,$h as c,zf as d,te as e,Kf as f,jf as g,Qr as h,z as i,Mt as j,Bt as k,ge as l,Pn as m,Gr as n,xf as o,ni as p,Hs as q,Hu as r,Xr as s,ds as t,hl as u,_a as v,Ea as w,Jf as x,Q as y,yl as z}; diff --git a/advent/assets/adventCalendarGameJamCalandar.0fdeb6b8.png b/advent/assets/adventCalendarGameJamCalandar.0fdeb6b8.png new file mode 100644 index 000000000..92cce2e06 Binary files /dev/null and b/advent/assets/adventCalendarGameJamCalandar.0fdeb6b8.png differ diff --git a/advent/assets/amator.8216e0d2.js b/advent/assets/amator.8216e0d2.js new file mode 100644 index 000000000..f8ac472bc --- /dev/null +++ b/advent/assets/amator.8216e0d2.js @@ -0,0 +1 @@ +import{s as j}from"./bezier-easing.a990b400.js";var I=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function M(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function P(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach(function(n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})}),t}var v={exports:{}},l=j,b={ease:l(.25,.1,.25,1),easeIn:l(.42,0,1,1),easeOut:l(0,0,.58,1),easeInOut:l(.42,0,.58,1),linear:l(0,0,1,1)};v.exports=F;v.exports.makeAggregateRaf=y;v.exports.sharedScheduler=y();function F(e,t,n){var a=Object.create(null),o=Object.create(null);n=n||{};var i=typeof n.easing=="function"?n.easing:b[n.easing];i||(n.easing&&console.warn("Unknown easing function in amator: "+n.easing),i=b.ease);var d=typeof n.step=="function"?n.step:h,u=typeof n.done=="function"?n.done:h,c=E(n.scheduler),w=Object.keys(t);w.forEach(function(r){a[r]=e[r],o[r]=t[r]-e[r]});var x=typeof n.duration=="number"?n.duration:400,g=Math.max(1,x*.06),f,s=0;return f=c.next(p),{cancel:O};function O(){c.cancel(f),f=0}function p(){var r=i(s/g);s+=1,A(r),s<=g?(f=c.next(p),d(e)):(f=0,setTimeout(function(){u(e)},0))}function A(r){w.forEach(function(m){e[m]=o[m]*r+a[m]})}}function h(){}function E(e){if(!e){var t=typeof window!="undefined"&&window.requestAnimationFrame;return t?S():T()}if(typeof e.next!="function")throw new Error("Scheduler is supposed to have next(cb) function");if(typeof e.cancel!="function")throw new Error("Scheduler is supposed to have cancel(handle) function");return e}function S(){return{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}}function T(){return{next:function(e){return setTimeout(e,1e3/60)},cancel:function(e){return clearTimeout(e)}}}function y(){var e=new Set,t=new Set,n=0;return{next:o,cancel:o,clearAll:a};function a(){e.clear(),t.clear(),cancelAnimationFrame(n),n=0}function o(u){t.add(u),i()}function i(){n||(n=requestAnimationFrame(d))}function d(){n=0;var u=t;t=e,e=u,e.forEach(function(c){c()}),e.clear()}}export{v as a,M as b,I as c,P as g}; diff --git a/advent/assets/bear.edf00c04.svg b/advent/assets/bear.edf00c04.svg new file mode 100644 index 000000000..282313633 --- /dev/null +++ b/advent/assets/bear.edf00c04.svg @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/bearmaker.ad80a177.svg b/advent/assets/bearmaker.ad80a177.svg new file mode 100644 index 000000000..7c10710e9 --- /dev/null +++ b/advent/assets/bearmaker.ad80a177.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/bezier-easing.a990b400.js b/advent/assets/bezier-easing.a990b400.js new file mode 100644 index 000000000..7b1ce5052 --- /dev/null +++ b/advent/assets/bezier-easing.a990b400.js @@ -0,0 +1 @@ +var y=4,z=.001,_=1e-7,d=10,l=11,S=1/(l-1),h=typeof Float32Array=="function";function N(e,r){return 1-3*r+3*e}function E(e,r){return 3*r-6*e}function O(e){return 3*e}function c(e,r,n){return((N(r,n)*e+E(r,n))*e+O(r))*e}function b(e,r,n){return 3*N(r,n)*e*e+2*E(r,n)*e+O(r)}function B(e,r,n,t,o){var i,u,I=0;do u=r+(n-r)/2,i=c(u,t,o)-e,i>0?n=u:r=u;while(Math.abs(i)>_&&++I=z?F(v,p,r,t):s===0?p:B(v,a,a+S,r,t)}return function(a){return a===0?0:a===1?1:c(I(a),n,o)}};export{M as s}; diff --git a/advent/assets/block.8b452cde.svg b/advent/assets/block.8b452cde.svg new file mode 100644 index 000000000..5c41966fc --- /dev/null +++ b/advent/assets/block.8b452cde.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + A + B + C + + + diff --git a/advent/assets/blockmaker.e21c206d.svg b/advent/assets/blockmaker.e21c206d.svg new file mode 100644 index 000000000..cb14709ba --- /dev/null +++ b/advent/assets/blockmaker.e21c206d.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + A + B + C + + + diff --git a/advent/assets/boxmaker.72c76d1f.svg b/advent/assets/boxmaker.72c76d1f.svg new file mode 100644 index 000000000..13fd7cfc1 --- /dev/null +++ b/advent/assets/boxmaker.72c76d1f.svg @@ -0,0 +1,123 @@ + + + + diff --git a/advent/assets/bucket.a4045a93.svg b/advent/assets/bucket.a4045a93.svg new file mode 100644 index 000000000..3f0fa8c44 --- /dev/null +++ b/advent/assets/bucket.a4045a93.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/bucketmaker.3b75b1e7.svg b/advent/assets/bucketmaker.3b75b1e7.svg new file mode 100644 index 000000000..0d8e2b8e3 --- /dev/null +++ b/advent/assets/bucketmaker.3b75b1e7.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/bucketshovel.229ffa15.svg b/advent/assets/bucketshovel.229ffa15.svg new file mode 100644 index 000000000..57c71c538 --- /dev/null +++ b/advent/assets/bucketshovel.229ffa15.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/bucketshovelmaker.464876b3.svg b/advent/assets/bucketshovelmaker.464876b3.svg new file mode 100644 index 000000000..8fee29b90 --- /dev/null +++ b/advent/assets/bucketshovelmaker.464876b3.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/button.35a47ce0.svg b/advent/assets/button.35a47ce0.svg new file mode 100644 index 000000000..1e11f8814 --- /dev/null +++ b/advent/assets/button.35a47ce0.svg @@ -0,0 +1,50 @@ + + + + + + + + + + diff --git a/advent/assets/buttonmaker.f149d63e.svg b/advent/assets/buttonmaker.f149d63e.svg new file mode 100644 index 000000000..3bbc888c3 --- /dev/null +++ b/advent/assets/buttonmaker.f149d63e.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + diff --git a/advent/assets/circuit.0fb4e2a7.svg b/advent/assets/circuit.0fb4e2a7.svg new file mode 100644 index 000000000..1fd0a6b09 --- /dev/null +++ b/advent/assets/circuit.0fb4e2a7.svg @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/circuitmaker.f7f9f7ce.svg b/advent/assets/circuitmaker.f7f9f7ce.svg new file mode 100644 index 000000000..fe41d8d5c --- /dev/null +++ b/advent/assets/circuitmaker.f7f9f7ce.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/cloth.7bcd7f37.png b/advent/assets/cloth.7bcd7f37.png new file mode 100644 index 000000000..6b576dede Binary files /dev/null and b/advent/assets/cloth.7bcd7f37.png differ diff --git a/advent/assets/clothes.da589bf9.svg b/advent/assets/clothes.da589bf9.svg new file mode 100644 index 000000000..8341c6ef7 --- /dev/null +++ b/advent/assets/clothes.da589bf9.svg @@ -0,0 +1,51 @@ + + + + + + + + + + diff --git a/advent/assets/clothesmaker.7e083181.svg b/advent/assets/clothesmaker.7e083181.svg new file mode 100644 index 000000000..7427a89a8 --- /dev/null +++ b/advent/assets/clothesmaker.7e083181.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + diff --git a/advent/assets/console.77f46a13.svg b/advent/assets/console.77f46a13.svg new file mode 100644 index 000000000..03141da34 --- /dev/null +++ b/advent/assets/console.77f46a13.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/consolemaker.f34ffdec.svg b/advent/assets/consolemaker.f34ffdec.svg new file mode 100644 index 000000000..daef2f4df --- /dev/null +++ b/advent/assets/consolemaker.f34ffdec.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/cursor.29168bf7.svg b/advent/assets/cursor.29168bf7.svg new file mode 100644 index 000000000..84509eda9 --- /dev/null +++ b/advent/assets/cursor.29168bf7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/advent/assets/delete.942ea48a.svg b/advent/assets/delete.942ea48a.svg new file mode 100644 index 000000000..52ae9ff31 --- /dev/null +++ b/advent/assets/delete.942ea48a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/advent/assets/earcut.03899505.js b/advent/assets/earcut.03899505.js new file mode 100644 index 000000000..507c8dc64 --- /dev/null +++ b/advent/assets/earcut.03899505.js @@ -0,0 +1 @@ +var O={exports:{}};O.exports=P;O.exports.default=P;function P(e,r,n){n=n||2;var t=r&&r.length,x=t?r[0]*n:e.length,u=G(e,0,x,n,!0),f=[];if(!u||u.next===u.prev)return f;var v,o,i,c,s,l,w;if(t&&(u=_(e,r,u,n)),e.length>80*n){v=i=e[0],o=c=e[1];for(var p=n;pi&&(i=s),l>c&&(c=l);w=Math.max(i-v,c-o),w=w!==0?32767/w:0}return k(u,f,n,v,o,w,0),f}function G(e,r,n,t,x){var u,f;if(x===D(e,r,n,t)>0)for(u=r;u=r;u-=t)f=V(u,e[u],e[u+1],f);return f&&C(f,f.next)&&(z(f),f=f.next),f}function g(e,r){if(!e)return e;r||(r=e);var n=e,t;do if(t=!1,!n.steiner&&(C(n,n.next)||Z(n.prev,n,n.next)===0)){if(z(n),n=r=n.prev,n===n.next)break;t=!0}else n=n.next;while(t||n!==r);return r}function k(e,r,n,t,x,u,f){if(!!e){!f&&u&&Y(e,t,x,u);for(var v=e,o,i;e.prev!==e.next;){if(o=e.prev,i=e.next,u?Q(e,t,x,u):N(e)){r.push(o.i/n|0),r.push(e.i/n|0),r.push(i.i/n|0),z(e),e=i.next,v=i.next;continue}if(e=i,e===v){f?f===1?(e=U(g(e),r,n),k(e,r,n,t,x,u,2)):f===2&&W(e,r,n,t,x,u):k(g(e),r,n,t,x,u,1);break}}}}function N(e){var r=e.prev,n=e,t=e.next;if(Z(r,n,t)>=0)return!1;for(var x=r.x,u=n.x,f=t.x,v=r.y,o=n.y,i=t.y,c=xu?x>f?x:f:u>f?u:f,w=v>o?v>i?v:i:o>i?o:i,p=t.next;p!==r;){if(p.x>=c&&p.x<=l&&p.y>=s&&p.y<=w&&F(x,v,u,o,f,i,p.x,p.y)&&Z(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function Q(e,r,n,t){var x=e.prev,u=e,f=e.next;if(Z(x,u,f)>=0)return!1;for(var v=x.x,o=u.x,i=f.x,c=x.y,s=u.y,l=f.y,w=vo?v>i?v:i:o>i?o:i,L=c>s?c>l?c:l:s>l?s:l,R=$(w,p,r,n,t),T=$(M,L,r,n,t),y=e.prevZ,h=e.nextZ;y&&y.z>=R&&h&&h.z<=T;){if(y.x>=w&&y.x<=M&&y.y>=p&&y.y<=L&&y!==x&&y!==f&&F(v,c,o,s,i,l,y.x,y.y)&&Z(y.prev,y,y.next)>=0||(y=y.prevZ,h.x>=w&&h.x<=M&&h.y>=p&&h.y<=L&&h!==x&&h!==f&&F(v,c,o,s,i,l,h.x,h.y)&&Z(h.prev,h,h.next)>=0))return!1;h=h.nextZ}for(;y&&y.z>=R;){if(y.x>=w&&y.x<=M&&y.y>=p&&y.y<=L&&y!==x&&y!==f&&F(v,c,o,s,i,l,y.x,y.y)&&Z(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;h&&h.z<=T;){if(h.x>=w&&h.x<=M&&h.y>=p&&h.y<=L&&h!==x&&h!==f&&F(v,c,o,s,i,l,h.x,h.y)&&Z(h.prev,h,h.next)>=0)return!1;h=h.nextZ}return!0}function U(e,r,n){var t=e;do{var x=t.prev,u=t.next.next;!C(x,u)&&J(x,t,t.next,u)&&H(x,u)&&H(u,x)&&(r.push(x.i/n|0),r.push(t.i/n|0),r.push(u.i/n|0),z(t),z(t.next),t=e=u),t=t.next}while(t!==e);return g(t)}function W(e,r,n,t,x,u){var f=e;do{for(var v=f.next.next;v!==f.prev;){if(f.i!==v.i&&b(f,v)){var o=K(f,v);f=g(f,f.next),o=g(o,o.next),k(f,r,n,t,x,u,0),k(o,r,n,t,x,u,0);return}v=v.next}f=f.next}while(f!==e)}function _(e,r,n,t){var x=[],u,f,v,o,i;for(u=0,f=r.length;u=n.next.y&&n.next.y!==n.y){var v=n.x+(x-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(v<=t&&v>u&&(u=v,f=n.x=n.x&&n.x>=i&&t!==n.x&&F(xf.x||n.x===f.x&&j(f,n)))&&(f=n,s=l)),n=n.next;while(n!==o);return f}function j(e,r){return Z(e.prev,e,r.prev)<0&&Z(r.next,e,e.next)<0}function Y(e,r,n,t){var x=e;do x.z===0&&(x.z=$(x.x,x.y,r,n,t)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next;while(x!==e);x.prevZ.nextZ=null,x.prevZ=null,q(x)}function q(e){var r,n,t,x,u,f,v,o,i=1;do{for(n=e,e=null,u=null,f=0;n;){for(f++,t=n,v=0,r=0;r0||o>0&&t;)v!==0&&(o===0||!t||n.z<=t.z)?(x=n,n=n.nextZ,v--):(x=t,t=t.nextZ,o--),u?u.nextZ=x:e=x,x.prevZ=u,u=x;n=t}u.nextZ=null,i*=2}while(f>1);return e}function $(e,r,n,t,x){return e=(e-n)*x|0,r=(r-t)*x|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e|r<<1}function a(e){var r=e,n=e;do(r.x=(e-f)*(u-v)&&(e-f)*(t-v)>=(n-f)*(r-v)&&(n-f)*(u-v)>=(x-f)*(t-v)}function b(e,r){return e.next.i!==r.i&&e.prev.i!==r.i&&!m(e,r)&&(H(e,r)&&H(r,e)&&d(e,r)&&(Z(e.prev,e,r.prev)||Z(e,r.prev,r))||C(e,r)&&Z(e.prev,e,e.next)>0&&Z(r.prev,r,r.next)>0)}function Z(e,r,n){return(r.y-e.y)*(n.x-r.x)-(r.x-e.x)*(n.y-r.y)}function C(e,r){return e.x===r.x&&e.y===r.y}function J(e,r,n,t){var x=E(Z(e,r,n)),u=E(Z(e,r,t)),f=E(Z(n,t,e)),v=E(Z(n,t,r));return!!(x!==u&&f!==v||x===0&&A(e,n,r)||u===0&&A(e,t,r)||f===0&&A(n,e,t)||v===0&&A(n,r,t))}function A(e,r,n){return r.x<=Math.max(e.x,n.x)&&r.x>=Math.min(e.x,n.x)&&r.y<=Math.max(e.y,n.y)&&r.y>=Math.min(e.y,n.y)}function E(e){return e>0?1:e<0?-1:0}function m(e,r){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==r.i&&n.next.i!==r.i&&J(n,n.next,e,r))return!0;n=n.next}while(n!==e);return!1}function H(e,r){return Z(e.prev,e,e.next)<0?Z(e,r,e.next)>=0&&Z(e,e.prev,r)>=0:Z(e,r,e.prev)<0||Z(e,e.next,r)<0}function d(e,r){var n=e,t=!1,x=(e.x+r.x)/2,u=(e.y+r.y)/2;do n.y>u!=n.next.y>u&&n.next.y!==n.y&&x<(n.next.x-n.x)*(u-n.y)/(n.next.y-n.y)+n.x&&(t=!t),n=n.next;while(n!==e);return t}function K(e,r){var n=new B(e.i,e.x,e.y),t=new B(r.i,r.x,r.y),x=e.next,u=r.prev;return e.next=r,r.prev=e,n.next=x,x.prev=n,t.next=n,n.prev=t,u.next=t,t.prev=u,t}function V(e,r,n,t){var x=new B(e,r,n);return t?(x.next=t.next,x.prev=t,t.next.prev=x,t.next=x):(x.prev=x,x.next=x),x}function z(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function B(e,r,n){this.i=e,this.x=r,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}P.deviation=function(e,r,n,t){var x=r&&r.length,u=x?r[0]*n:e.length,f=Math.abs(D(e,0,u,n));if(x)for(var v=0,o=r.length;v0&&(t+=e[x-1].length,n.holes.push(t))}return n};var ee=O.exports;export{ee as e}; diff --git a/advent/assets/elf.9fbfa563.png b/advent/assets/elf.9fbfa563.png new file mode 100644 index 000000000..094acb0ea Binary files /dev/null and b/advent/assets/elf.9fbfa563.png differ diff --git a/advent/assets/elfManagement.436c8744.png b/advent/assets/elfManagement.436c8744.png new file mode 100644 index 000000000..9e82c679d Binary files /dev/null and b/advent/assets/elfManagement.436c8744.png differ diff --git a/advent/assets/eventemitter3.dc5195d7.js b/advent/assets/eventemitter3.dc5195d7.js new file mode 100644 index 000000000..036c89353 --- /dev/null +++ b/advent/assets/eventemitter3.dc5195d7.js @@ -0,0 +1 @@ +var w={exports:{}};(function(g){var m=Object.prototype.hasOwnProperty,u="~";function h(){}Object.create&&(h.prototype=Object.create(null),new h().__proto__||(u=!1));function b(s,t,n){this.fn=s,this.context=t,this.once=n||!1}function x(s,t,n,r,l){if(typeof n!="function")throw new TypeError("The listener must be a function");var c=new b(n,r||s,l),o=u?u+t:t;return s._events[o]?s._events[o].fn?s._events[o]=[s._events[o],c]:s._events[o].push(c):(s._events[o]=c,s._eventsCount++),s}function y(s,t){--s._eventsCount===0?s._events=new h:delete s._events[t]}function f(){this._events=new h,this._eventsCount=0}f.prototype.eventNames=function(){var t=[],n,r;if(this._eventsCount===0)return t;for(r in n=this._events)m.call(n,r)&&t.push(u?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(n)):t},f.prototype.listeners=function(t){var n=u?u+t:t,r=this._events[n];if(!r)return[];if(r.fn)return[r.fn];for(var l=0,c=r.length,o=new Array(c);l10&&(n.lastTenTicks=n.lastTenTicks.slice(1)),(l==null?void 0:l.value)&&!e.keepGoing||n.hasNaN||(i=Math.max(i,0),e.devSpeed===0))return;if(c.value=!1,e.offlineTime!=null){if(r.gt(e.offlineTime,s.offlineLimit*3600)&&(e.offlineTime=s.offlineLimit*3600),r.gt(e.offlineTime,0)&&e.devSpeed!==0){const u=Math.max(e.offlineTime/10,i);e.offlineTime=e.offlineTime-u,i+=u}else e.devSpeed===0&&(e.offlineTime+=i);(!e.offlineProd||r.lt(e.offlineTime,0))&&(e.offlineTime=null)}if(i=Math.min(i,s.maxTickLength),e.devSpeed!=null&&(i*=e.devSpeed),Number.isFinite(i)||(i=1e308),r.eq(i,0))return;e.timePlayed+=i,Number.isFinite(e.timePlayed)||(e.timePlayed=1e308);let f=m;for(;f>1;)p.emit("update",i/m,1),f--;p.emit("update",i*f/m,f),d.unthrottled?(requestAnimationFrame(a),o!=null&&(clearInterval(o),o=null)):o==null&&(o=setInterval(a,50))}async function R(){l=(await T(()=>import("./index.c658358f.js").then(function(t){return t.c}),["assets/index.c658358f.js","assets/index.88096596.css","assets/@fontsource.c175eac8.css","assets/vue.dd1d82d0.js","assets/amator.8216e0d2.js","assets/bezier-easing.a990b400.js","assets/@vue.359f7754.js","assets/nanoevents.1080beb7.js","assets/lz-string.f2f3b7cf.js","assets/is-plain-object.906d88e8.js","assets/@pixi.051d1bd4.js","assets/eventemitter3.dc5195d7.js","assets/earcut.03899505.js","assets/url.1821b64b.js","assets/querystring.b35d81f8.js","assets/vue-toastification.7ec3a26c.js","assets/vue-toastification.4b5f8ac8.css","assets/vue-next-select.d15705a0.js","assets/vue-next-select.9e6f4164.css","assets/vue-panzoom.f6869ea5.js","assets/panzoom.9e1878dd.js","assets/wheel.f03080ac.js","assets/ngraph.events.083734c6.js","assets/vuedraggable.179e27ef.js","assets/sortablejs.e4e9a931.js","assets/vue-textarea-autosize.35804eaf.js"])).hasWon,v(l,t=>{t&&p.emit("gameWon")}),d.unthrottled?requestAnimationFrame(a):o=setInterval(a,50)}export{R as startGameLoop}; diff --git a/advent/assets/gears.1fab8ab6.png b/advent/assets/gears.1fab8ab6.png new file mode 100644 index 000000000..b9f84387f Binary files /dev/null and b/advent/assets/gears.1fab8ab6.png differ diff --git a/advent/assets/gps.1c9577ce.png b/advent/assets/gps.1c9577ce.png new file mode 100644 index 000000000..154b28bf6 Binary files /dev/null and b/advent/assets/gps.1c9577ce.png differ diff --git a/advent/assets/great-vibes-all-400-normal.f434a07e.woff b/advent/assets/great-vibes-all-400-normal.f434a07e.woff new file mode 100644 index 000000000..c7c097507 Binary files /dev/null and b/advent/assets/great-vibes-all-400-normal.f434a07e.woff differ diff --git a/advent/assets/great-vibes-latin-400-normal.553fd833.woff2 b/advent/assets/great-vibes-latin-400-normal.553fd833.woff2 new file mode 100644 index 000000000..d8dba8527 Binary files /dev/null and b/advent/assets/great-vibes-latin-400-normal.553fd833.woff2 differ diff --git a/advent/assets/great-vibes-latin-ext-400-normal.22f2aa42.woff2 b/advent/assets/great-vibes-latin-ext-400-normal.22f2aa42.woff2 new file mode 100644 index 000000000..063b70cdd Binary files /dev/null and b/advent/assets/great-vibes-latin-ext-400-normal.22f2aa42.woff2 differ diff --git a/advent/assets/great-vibes-vietnamese-400-normal.7c6d919c.woff2 b/advent/assets/great-vibes-vietnamese-400-normal.7c6d919c.woff2 new file mode 100644 index 000000000..c3b85da77 Binary files /dev/null and b/advent/assets/great-vibes-vietnamese-400-normal.7c6d919c.woff2 differ diff --git a/advent/assets/index.88096596.css b/advent/assets/index.88096596.css new file mode 100644 index 000000000..8aa31c415 --- /dev/null +++ b/advent/assets/index.88096596.css @@ -0,0 +1 @@ +.table{display:flex;flex-flow:column wrap;justify-content:center;align-items:center;max-width:100%;margin:0 auto}.table-grid{display:flex;flex-flow:column}.table+.table{margin-top:10px}.row{display:flex;flex-flow:row wrap;justify-content:center;align-items:stretch;max-width:100%;margin:0 10px}.row>:not(.feature){margin:0;display:flex}.col{display:flex;flex-flow:column wrap;justify-content:center;align-items:center;height:100%;margin:10px 0}.row.mergeAdjacent>.feature:not(.dontMerge),.row.mergeAdjacent>.tooltip-container>.feature:not(.dontMerge){margin-left:0;margin-right:0;border-radius:0}.row.mergeAdjacent>.feature:not(.dontMerge):first-child,.row.mergeAdjacent>.tooltip-container:first-child>.feature:not(.dontMerge){border-radius:var(--border-radius) 0 0 var(--border-radius)}.row.mergeAdjacent>.feature:not(.dontMerge):last-child,.row.mergeAdjacent>.tooltip-container:last-child>.feature:not(.dontMerge){border-radius:0 var(--border-radius) var(--border-radius) 0}.row.mergeAdjacent>.feature:not(.dontMerge):first-child:last-child,.row.mergeAdjacent>.tooltip-container:first-child:last-child>.feature:not(.dontMerge){border-radius:var(--border-radius)}.row-grid{display:flex}.row-grid.mergeAdjacent>.feature:not(.dontMerge),.row-grid.mergeAdjacent>.tooltip-container>.feature:not(.dontMerge){margin:0;border-radius:0}.row-grid.mergeAdjacent>.feature:not(.dontMerge):last-child,.row-grid.mergeAdjacent>.tooltip-container:last-child>.feature:not(.dontMerge){border-radius:0}.row-grid.mergeAdjacent>.feature:not(.dontMerge):first-child,.row-grid.mergeAdjacent>.tooltip-container:first-child>.feature:not(.dontMerge){border-radius:0}.table-grid>.row-grid.mergeAdjacent:last-child>.feature:not(.dontMerge):first-child{border-bottom-left-radius:var(--border-radius)}.table-grid>.row-grid.mergeAdjacent:first-child>.feature:not(.dontMerge):last-child{border-top-right-radius:var(--border-radius)}.table-grid>.row-grid.mergeAdjacent:first-child>.feature:not(.dontMerge):first-child{border-top-left-radius:var(--border-radius)}.table-grid>.row-grid.mergeAdjacent:last-child>.feature:not(.dontMerge):last-child{border-bottom-right-radius:var(--border-radius)}.col.mergeAdjacent .feature:not(.dontMerge){margin-top:0;margin-bottom:0;border-radius:0}.col.mergeAdjacent .feature:not(.dontMerge):first-child{border-radius:var(--border-radius) var(--border-radius) 0 0}.col.mergeAdjacent .feature:not(.dontMerge):last-child{border-radius:0 0 var(--border-radius) var(--border-radius)}.col.mergeAdjacent .feature:not(.dontMerge):first-child:last-child{border-radius:var(--border-radius)}.resize-listener[data-v-2b1dc1bc]{position:absolute;top:0px;left:0;right:-4px;bottom:5px;z-index:-10;pointer-events:none}.modal-mask{position:fixed;z-index:9998;top:0;left:0;bottom:0;right:0;background-color:#00000080;transition:opacity .3s ease}.modal-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.modal-container{min-width:640px;max-width:95vw;max-height:calc(95vh - 20px);background-color:var(--background);padding:20px;margin-top:20px;border-radius:5px;transition:all .3s ease;text-align:left;border:var(--modal-border);box-sizing:border-box;display:flex;flex-direction:column}.modal-header{width:100%;margin-top:-50px;text-align:center}.modal-header>h2{font-family:Great Vibes,cursive;font-weight:400;font-size:64px}.modal-body{margin:20px 0;width:100%;overflow-y:auto;overflow-x:hidden}.modal-footer{width:100%}.modal-default-footer{display:flex}.modal-default-flex-grow{flex-grow:1}.modal-enter-from,.modal-leave-active{opacity:0}.modal-enter-from .modal-container,.modal-leave-active .modal-container{-webkit-transform:scale(1.1);transform:scale(1.1)}.not-fullscreen[data-v-2cea0e1c],.resize-listener[data-v-2cea0e1c]{position:absolute;top:0px;left:0;right:-4px;bottom:5px;pointer-events:none}.advent{width:80%;max-width:700px;background:url(./adventCalendarGameJamCalandar.0fdeb6b8.png);background-size:contain;display:flex;flex-direction:column;padding-top:28%;padding-left:10%;padding-right:10%;background-repeat:no-repeat;aspect-ratio:3151 / 4190}.advent.decorating{filter:hue-rotate(-150deg)}.advent.decorating>*{filter:hue-rotate(150deg)}.advent>.table{width:100%}.advent>.table>.row{width:100%;margin:0 0 -5%;justify-content:space-around}.present-clickable{cursor:pointer;width:30%;text-align:center;transition:all .2s ease-in-out}.present-clickable:hover{transform:scale(1.2)}.notif[data-v-66323fd4]{position:absolute;top:0;left:5px;z-index:10;pointer-events:none;user-select:none;color:var(--accent3);font-size:x-large;animation:1s linear infinite bounce-66323fd4;border-radius:var(--border-radius);background:var(--locked)}@keyframes bounce-66323fd4{0%{animation-timing-function:cubic-bezier(.1361,.2514,.2175,.8786);transform:translate(0) scaleY(1)}37%{animation-timing-function:cubic-bezier(.7674,.1844,.8382,.7157);transform:translateY(-20px) scaleY(1)}72%{animation-timing-function:cubic-bezier(.1118,.2149,.2172,.941);transform:translate(0) scaleY(1)}87%{animation-timing-function:cubic-bezier(.7494,.2259,.8209,.6963);transform:translateY(10px) scaleY(.602)}to{transform:translate(0) scaleY(1)}}.tooltip-container[data-v-6102fa3a]{position:relative;--xoffset: 0px;--yoffset: 0px;text-shadow:none!important}.tooltip[data-v-6102fa3a],.tooltip[data-v-6102fa3a]:after{pointer-events:none;position:absolute}.tooltip[data-v-6102fa3a]{text-align:center;width:150px;font-size:14px;line-height:1.2;bottom:calc(100% + var(--yoffset));left:calc(50% + var(--xoffset));margin-bottom:5px;transform:translate(-50%);padding:7px;border-radius:3px;background-color:var(--tooltip-background);color:var(--points);z-index:100!important;word-break:break-word}.tooltip[data-v-6102fa3a] hr{margin:var(--feature-margin) 0}.shown[data-v-6102fa3a]{z-index:10}.fade-enter-from[data-v-6102fa3a],.fade-leave-to[data-v-6102fa3a]{opacity:0}.tooltip[data-v-6102fa3a]:after{content:" ";position:absolute;top:100%;bottom:100%;left:calc(50% - var(--xoffset));width:0;margin-left:-5px;border-width:5px;border-style:solid;border-color:var(--tooltip-background) transparent transparent transparent}.tooltip.left[data-v-6102fa3a],.side-nodes .tooltip[data-v-6102fa3a]:not(.right):not(.bottom):not(.top){bottom:calc(50% + var(--yoffset));left:unset;right:calc(100% + var(--xoffset));margin-bottom:unset;margin-right:5px;transform:translateY(50%)}.tooltip.left[data-v-6102fa3a]:after,.side-nodes .tooltip[data-v-6102fa3a]:not(.right):not(.bottom):not(.top):after{top:calc(50% + var(--yoffset));bottom:unset;left:100%;right:100%;margin-left:unset;margin-top:-5px;border-color:transparent transparent transparent var(--tooltip-background)}.tooltip.right[data-v-6102fa3a]{bottom:calc(50% + var(--yoffset));left:calc(100% + var(--xoffset));margin-bottom:unset;margin-left:5px;transform:translateY(50%)}.tooltip.right[data-v-6102fa3a]:after{top:calc(50% + var(--yoffset));left:0;right:100%;margin-left:-10px;margin-top:-5px;border-color:transparent var(--tooltip-background) transparent transparent}.tooltip.bottom[data-v-6102fa3a]{top:calc(100% + var(--yoffset));bottom:unset;left:calc(50% + var(--xoffset));margin-bottom:unset;margin-top:5px;transform:translate(-50%)}.tooltip.bottom[data-v-6102fa3a]:after{top:0;margin-top:-10px;border-color:transparent transparent var(--tooltip-background) transparent}.pinned[data-v-6102fa3a]{position:absolute;right:-5px;top:-5px;transform:rotate(45deg)}.collapsible-container[data-v-a72c16aa]{width:calc(100% - 10px)}.collapsible-toggle[data-v-a72c16aa]{max-width:unset;width:calc(100% + 0px);margin:0 0 0 -5px;background:var(--raised-background);padding:var(--feature-margin);color:var(--foreground);cursor:pointer;transition-duration:0s}.collapsible-toggle[data-v-a72c16aa]:last-child{margin-left:unset}[data-v-a72c16aa] .collapsible-toggle+.table{max-width:unset;width:calc(100% + 10px);margin-left:-5px}[data-v-a72c16aa] .col{margin-top:0;margin-bottom:0;width:100%}.mergeAdjacent .collapsible-toggle[data-v-a72c16aa]{border:0;border-top-left-radius:0!important;border-top-right-radius:0!important}[data-v-a72c16aa] .mergeAdjacent .feature:not(.dontMerge):first-child{border-top-left-radius:0!important;border-top-right-radius:0!important}@keyframes letters-bar{0%{background:0 0 / auto 70% no-repeat linear-gradient(white,white),0 0 / 113px 113px repeat repeating-linear-gradient(-45deg,red 0 20px,white 20px 40px,blue 40px 60px,white 60px 80px)}to{background:0 0 / auto 70% no-repeat linear-gradient(white,white),113px 0px / 113px 113px repeat repeating-linear-gradient(-45deg,red 0 20px,white 20px 40px,blue 40px 60px,white 60px 80px)}}@keyframes wrapping-paper-bar{0%{background:0 0 / 113px 113px repeat repeating-linear-gradient(-45deg,rgb(255,76,76) 0 10px,rgb(255,255,255) 10px 20px,rgb(65,255,95) 20px 30px,rgb(255,255,255) 30px 40px)}to{background:113px 0 / 113px 113px repeat repeating-linear-gradient(-45deg,rgb(255,76,76) 0 10px,rgb(255,255,255) 10px 20px,rgb(65,255,95) 20px 30px,rgb(255,255,255) 30px 40px)}}@keyframes ribbon-bar{0%{background:0 0 / 114px 114px repeat repeating-linear-gradient(-45deg,darkred 0 10px,#af0000 10px 20px)}to{background:114px 0px / 114px 114px repeat repeating-linear-gradient(-45deg,darkred 0 10px,#af0000 10px 20px)}}@keyframes toys-bar{0%{background:0 0 / 114px 114px repeat repeating-linear-gradient(-45deg,#4bdc13 0 10px,green 10px 20px)}to{background:114px 0px / 114px 114px repeat repeating-linear-gradient(-45deg,#4bdc13 0 10px,green 10px 20px)}}@keyframes factory-bar{0%{background:0 0 / 114px 114px repeat repeating-linear-gradient(-45deg,grey 0 10px,yellow 10px 20px)}to{background:114px 0px / 114px 114px repeat repeating-linear-gradient(-45deg,grey 0 10px,yellow 10px 20px)}}@keyframes packing-bar{0%{background:0 0 / 170px 170px repeat repeating-linear-gradient(-45deg,rgb(255,76,76) 0 10px,white 10px 20px,rgb(65,255,95) 20px 30px,white 30px 40px,rgb(76,76,255) 40px 50px,white 50px 60px)}to{background:170px 0 / 170px 170px repeat repeating-linear-gradient(-45deg,rgb(255,76,76) 0 10px,white 10px 20px,rgb(65,255,95) 20px 30px,white 30px 40px,rgb(76,76,255) 40px 50px,white 50px 60px)}}@keyframes reindeer-bar{0%{background:0 0 / 28px 28px repeat repeating-linear-gradient(-45deg,brown 0 10px,saddlebrown 10px 20px)}to{background:114px 0px / 28px 28px repeat repeating-linear-gradient(-45deg,brown 0 10px,saddlebrown 10px 20px)}}@keyframes sleigh-bar{0%{background:0 0 / 28px 28px repeat repeating-linear-gradient(-45deg,#D71830 0 10px,#A0A020 10px 20px)}to{background:114px 0px / 28px 28px repeat repeating-linear-gradient(-45deg,#D71830 0 10px,#A0A020 10px 20px)}}.mark[data-v-2207999f]{position:absolute;left:-25px;top:-10px;width:30px;height:30px;z-index:1;pointer-events:none;margin-left:.9em;margin-right:.9em;margin-bottom:1.2em;border-right:.3em solid transparent;border-bottom:.7em solid transparent;border-left:.3em solid transparent;font-size:10px}.star[data-v-2207999f]{left:-10px;width:0;height:0;margin-left:.9em;margin-right:.9em;margin-bottom:1.2em;border-right:.3em solid transparent;border-bottom:.7em solid #ffcc00;border-left:.3em solid transparent;font-size:10px;pointer-events:none}.star[data-v-2207999f]:before,.star[data-v-2207999f]:after{content:"";width:0;height:0;position:absolute;top:.6em;left:-1em;border-right:1em solid transparent;border-bottom:.7em solid #ffcc00;border-left:1em solid transparent;transform:rotate(-35deg)}.star[data-v-2207999f]:after{transform:rotate(35deg)}.node[data-v-a48cb382]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.bar[data-v-8dbd7dd6]{position:relative;display:table;overflow:hidden;border-radius:10px;padding-bottom:1px}.overlayTextContainer[data-v-8dbd7dd6]{position:absolute;top:0;border-radius:10px;vertical-align:middle;display:flex;justify-content:center;z-index:3}.overlayText[data-v-8dbd7dd6]{z-index:6}.border[data-v-8dbd7dd6]{border:2px solid;border-radius:10px;border-color:var(--foreground);overflow:hidden}.border[data-v-8dbd7dd6]:not(.overlayTextContainer){margin:-1px 0 -1px -1px}.fill[data-v-8dbd7dd6]{position:absolute;background-color:var(--foreground);overflow:hidden;padding:.5px;margin-left:-.5px;transition-duration:.2s;z-index:2}.feature:not(li),.feature:not(li) button{position:relative;padding:5px;border-radius:var(--border-radius);border:2px solid rgba(0,0,0,.125);margin:var(--feature-margin);box-sizing:border-box;color:var(--feature-foreground);z-index:0;transition:all .5s,z-index 0s .5s}.can,.can button{background-color:var(--layer-color);cursor:pointer}.can:hover,.can:hover button{transform:scale(1.15);box-shadow:0 0 20px var(--points);z-index:1;transition:all .5s,z-index 0s}.locked,.locked button{background-color:var(--locked);cursor:not-allowed}.bought,.bought button{background-color:var(--bought);cursor:default}.clickable[data-v-9aa40d84]{min-height:120px;width:120px;font-size:10px}.clickable.small[data-v-9aa40d84]{min-height:unset}.clickable>*[data-v-9aa40d84]{pointer-events:none}.resize-listener[data-v-063f6d6b]{position:absolute;top:0px;left:0;right:-4px;bottom:5px;z-index:-10;pointer-events:none}svg[data-v-063f6d6b]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-10;pointer-events:none}.left-side-nodes[data-v-39ca96d0]{position:absolute;left:15px;top:65px}.side-nodes[data-v-39ca96d0]{position:absolute;right:15px;top:65px}.left-side-nodes[data-v-39ca96d0] .treeNode,.side-nodes[data-v-39ca96d0] .treeNode{margin:20px auto}.small[data-v-39ca96d0] .treeNode{height:60px;width:60px}.small[data-v-39ca96d0] .treeNode>*:first-child{font-size:30px}.treeNode[data-v-1c0c107d]{height:100px;width:100px;border-radius:50%;padding:0;margin:0 10px}.treeNode>*[data-v-1c0c107d]:first-child{width:100%;height:100%;border:2px solid rgba(0,0,0,.125);border-radius:inherit;font-size:40px;color:#00000080;text-shadow:2px 2px 4px rgba(0,0,0,.25);box-shadow:-4px -4px 4px #00000040 inset,0 0 20px var(--background);text-transform:capitalize;display:flex}.treeNode>*:first-child>*[data-v-1c0c107d]{pointer-events:none}.modifier-toggle{padding-right:10px;transform:translateY(-1px);display:inline-block}.modifier-toggle.collapsed{transform:translate(-5px,-5px) rotate(-90deg)}.sticky[data-v-cccac690]{position:sticky;background:var(--background);width:calc(100% - 2px);z-index:3}.main-display-container{vertical-align:middle;margin-bottom:20px;display:flex;transition-duration:0s}.upgrade[data-v-1110c7b2]{min-height:120px;width:120px;font-size:10px}.upgrade>*[data-v-1110c7b2]{pointer-events:none}.modifier-container{display:flex;padding:1px 8px}.modifier-container:nth-child(2n){background:var(--raised-background)}.modifier-amount{flex-shrink:0;text-align:right}:not(:first-of-type,:last-of-type)>.modifier-amount:after{content:var(--unit);opacity:0}.modifier-description{flex-grow:1}.key[data-v-5e2d38ce]{display:inline-block;height:1.4em;min-width:1em;margin-block:.1em;padding-inline:.2em;vertical-align:.1em;background:var(--foreground);color:var(--feature-foreground);border:1px solid #0007;border-radius:.3em;box-shadow:0 .1em #0007,0 .1em var(--foreground);font-size:smaller;text-align:center;user-select:none;transition:transform 0s,box-shadow 0s}.key[data-v-5e2d38ce]:active{transform:translateY(.1em);box-shadow:none}.tabButton[data-v-610a2549]{background-color:transparent;color:var(--foreground);font-size:20px;cursor:pointer;padding:5px 20px;margin:5px;border-radius:5px;border:2px solid;flex-shrink:0;border-color:var(--layer-color)}.tabButton[data-v-610a2549]:hover{transform:scale(1.1);text-shadow:0 0 7px var(--foreground)}:not(.floating)>.tabButton[data-v-610a2549]{height:50px;margin:0;border-left:none;border-right:none;border-top:none;border-bottom-width:4px;border-radius:0;transform:unset}:not(.floating) .tabButton[data-v-610a2549]:not(.active){border-bottom-color:transparent}.tabButton>*[data-v-610a2549]{pointer-events:none}.tab-family-container[data-v-f12d734e]{margin:calc(50px + var(--feature-margin)) 20px var(--feature-margin) 20px;position:relative;border:solid 4px;border-color:var(--outline);overflow-y:auto}.layer-tab>.tab-family-container[data-v-f12d734e]:first-child{margin:-4px -11px var(--feature-margin) -11px;padding-bottom:50px}.layer-tab>.tab-family-container[data-v-f12d734e]:first-child:nth-last-child(3){border-bottom-style:none;border-left-style:none;border-right-style:none;height:calc(100% + 50px)}.modal-body>.tab-family-container[data-v-f12d734e]:first-child{margin:calc(10px + var(--feature-margin)) 10px 0 10px;border:none}.tab-family-container[data-v-f12d734e]>:nth-child(2){margin-top:50px}.modal-body>.tab-family-container[data-v-f12d734e]>:nth-child(2){margin-top:50px}.tab-family-container[data-v-f18896fc][data-v-f12d734e]>:last-child{margin-bottom:20px}.tab-buttons-container[data-v-f12d734e]{z-index:4}.tab-buttons-container[data-v-f12d734e]:not(.floating){border-bottom:solid 4px;border-color:inherit}:not(.layer-tab):not(.modal-body)>.tab-family-container>.tab-buttons-container[data-v-f12d734e]:not(.floating){width:calc(100% + 6px);margin-left:-3px}.tab-buttons-container:not(.floating) .tab-buttons[data-v-f12d734e]{text-align:left;margin-bottom:-4px}.tab-buttons-container.floating .tab-buttons[data-v-f12d734e]{justify-content:center;margin-top:-25px}.tab-buttons[data-v-f12d734e]{margin-bottom:24px;display:flex;flex-flow:wrap;z-index:4}.layer-tab>.tab-family-container:first-child:nth-last-child(3)>.tab-buttons-container>.tab-buttons[data-v-f12d734e]{padding-right:60px}.tab-buttons[data-v-f12d734e]:not(.floating){text-align:left;border-bottom:inherit;border-width:4px;box-sizing:border-box;height:50px}.modal-body .tab-buttons[data-v-f12d734e]{width:100%;margin-left:0;margin-right:0;padding-left:0}.showGoBack>.tab-family-container:first-child>.tab-buttons-container:not(.floating) .tab-buttons[data-v-f12d734e]{padding-left:70px}:not(.showGoBack)>.tab-family-container>.tab-buttons-container:not(.floating):first-child .tab-buttons[data-v-f12d734e]{padding-left:0}.minimizable>.tab-buttons-container[data-v-f12d734e]:not(.floating):first-child{padding-right:50px}.tab-buttons-container:not(.floating):first-child .tab-buttons[data-v-f12d734e]{margin-top:-50px}.tab-buttons-container+*[data-v-f12d734e]{margin-top:20px}.factoryDisp[data-v-573a86c3]{position:absolute;top:0;bottom:0;left:158px;right:0;touch-action:none}.field{display:flex;position:relative;min-height:2em;margin:10px 0;user-select:none;justify-content:space-between;align-items:center}.field>*{margin:0}.field[data-v-2a0854f4]{cursor:pointer;pointer-events:all}input[data-v-2a0854f4]{appearance:none;pointer-events:none}span[data-v-2a0854f4]{width:100%;padding-right:41px;position:relative}input+span[data-v-2a0854f4]:before{content:"";position:absolute;top:calc(50% - 7px);right:0px;border-radius:7px;width:36px;height:14px;background-color:var(--outline);opacity:.38;vertical-align:top;transition:background-color .2s,opacity .2s;border:solid 1px var(--feature-foreground)}input+span[data-v-2a0854f4]:after{content:"";position:absolute;top:calc(50% - 10px);right:16px;border-radius:50%;width:20px;height:20px;background-color:var(--locked);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-color .2s,transform .2s;border:solid 1px var(--feature-foreground)}input:checked+span[data-v-2a0854f4]:before{background-color:var(--link);opacity:.6}input:checked+span[data-v-2a0854f4]:after{background-color:var(--link);transform:translate(16px)}input:active+span[data-v-2a0854f4]:before{background-color:var(--link);opacity:.6}input:checked:active+span[data-v-2a0854f4]:before{background-color:var(--outline);opacity:.38}input:disabled+span[data-v-2a0854f4]{color:#000;opacity:.38;cursor:default}input:disabled+span[data-v-2a0854f4]:before{background-color:var(--outline);opacity:.38}input:checked:disabled+span[data-v-2a0854f4]:before{background-color:var(--link);opacity:.6}.vue-select{width:50%;border-radius:var(--border-radius)}.field-buttons .vue-select{width:unset}.vue-select,.vue-dropdown{border-color:var(--outline)}.vue-dropdown{background:var(--raised-background)}.vue-dropdown-item{color:var(--foreground)}.vue-dropdown-item,.vue-dropdown-item *{transition-duration:0s}.vue-dropdown-item.highlighted{background-color:var(--highlighted)}.vue-dropdown-item.selected,.vue-dropdown-item.highlighted.selected{background-color:var(--bought)}.vue-input input{font-size:inherit}.vue-input input::placeholder{color:var(--link)}.milestone[data-v-c60a4c8e]{width:calc(100% - 10px);min-width:120px;padding-left:5px;padding-right:5px;background-color:var(--locked);border-width:4px;border-radius:5px;color:#00000080}.milestone.done[data-v-c60a4c8e]{background-color:var(--bought);cursor:default}.milestone[data-v-c60a4c8e] .equal-spaced{display:flex;justify-content:center}.milestone[data-v-c60a4c8e] .equal-spaced>*{margin:auto}@keyframes focused-eating-bar{0%{background:0 0 / 28px 28px repeat repeating-linear-gradient(-45deg,brown 0 10px,saddlebrown 10px 20px)}to{background:28px 0px / 28px 28px repeat repeating-linear-gradient(-45deg,brown 0 10px,saddlebrown 10px 20px)}}.link.pulsing[data-v-e97834c2]{animation:pulsing-e97834c2 2s ease-in infinite}@keyframes pulsing-e97834c2{0%{opacity:.25}50%{opacity:1}to{opacity:.25}}.boardnode[data-v-5afee410]{cursor:pointer;transition-duration:0s}.node-title[data-v-5afee410]{text-anchor:middle;dominant-baseline:middle;font-family:monospace;font-size:200%;pointer-events:none}.progressRing[data-v-5afee410]{transform:rotate(-90deg)}.action:not(.boardnode):hover circle[data-v-5afee410],.action:not(.boardnode).selected circle[data-v-5afee410]{r:25}.action:not(.boardnode):hover text[data-v-5afee410],.action:not(.boardnode).selected text[data-v-5afee410]{font-size:187.5%}.action:not(.boardnode) text[data-v-5afee410]{text-anchor:middle;dominant-baseline:central}.fade-enter-from[data-v-5afee410],.fade-leave-to[data-v-5afee410]{opacity:0}.pulsing[data-v-5afee410]{animation:pulsing-5afee410 2s ease-in infinite}@keyframes pulsing-5afee410{0%{opacity:.25}50%{opacity:1}to{opacity:.25}}.actions-enter-from .action,.actions-leave-to .action{transform:translate(0)}.grow-enter-from .node-container,.grow-leave-to .node-container{transform:scale(0)}.vue-pan-zoom-scene{width:100%;height:100%;cursor:grab}.vue-pan-zoom-scene:active{cursor:grabbing}.g1{transition-duration:0s}.link-enter-from,.link-leave-to{opacity:0}.routes-list{width:600px;height:573px;margin-bottom:-604px;margin-top:-4px;padding-top:35px;pointer-events:none;border-radius:var(--border-radius);background:var(--raised-background);box-shadow:0 2px 10px #0000007f}.routes-list .checked{color:var(--bought)}.routes-list .processing{color:var(--layer-color)}.routes-list .redundant:not(.checked):not(.processing){color:var(--accent1)}.routes-list .skipped{text-decoration:line-through;text-decoration-thickness:5px}.routes-list>*{position:relative;--opacity: 1;flex:1 1 33%;opacity:var(--opacity);transition:all 0s}.routes-list+div{position:relative}.fraction{display:inline-block;text-align:center;font-size:smaller;vertical-align:-.6em}.fraction>*{display:block}.fraction>:last-child{border-top:1px solid}@keyframes focused-focus-bar{0%{background:0 0 / 28px 28px repeat repeating-linear-gradient(-45deg,red 0 10px,green 10px 20px)}to{background:28px 0px / 28px 28px repeat repeating-linear-gradient(-45deg,red 0 10px,green 10px 20px)}}@keyframes focused-xp-bar{0%{background:0 0 / 28px 28px repeat repeating-linear-gradient(-45deg,yellow 0 10px,lime 10px 20px)}to{background:28px 0px / 28px 28px repeat repeating-linear-gradient(-45deg,yellow 0 10px,lime 10px 20px)}}.factory-tabs{position:absolute!important;top:0;bottom:-6px;left:-12px;right:0;border:0px solid var(--outline)}.factory-tabs>:nth-child(2){margin-top:60px!important}.energy-bar .overlayText{display:block;width:100%;padding:10px;line-height:30px;height:30px}.energy-bar,.energy-bar .overlayTextContainer{overflow:visible!important}.energy-bar .overlayText>div{background:var(--raised-background);border-radius:var(--border-radius);box-shadow:0 1px 5px #000;line-height:20px;height:20px}.energy-bar .overlayText>div:first-child{padding:5px 10px;float:left}.energy-bar .overlayText>div:last-child{height:30px;float:right}.energy-bar .overlayText .tooltip-container{display:inline-block}.control-btn{background:transparent;color:var(--foreground);border:none;line-height:30px;height:30px}:not(:first-child)>.control-btn{border-left:1px solid var(--foreground)}.factory-container{width:auto;top:113px;bottom:0;left:0px;right:0px;position:absolute;background-color:snow;overflow:hidden;z-index:1}.info-container{position:absolute;width:max-content;max-width:300px;margin:20px 0 10px 10px;padding:5px 10px;background:var(--background);border-radius:var(--border-radius);box-shadow:0 1px 5px #000;text-align:left;font-size:smaller;transition:height .3s;pointer-events:none;user-select:none;z-index:2}.comp-container{position:absolute;top:0;left:0;bottom:0;width:158px;z-index:-1}.comp-container.hovered{z-index:1}.comp-info{position:absolute;top:0;right:0px;padding:5px 10px;width:max-content;max-width:320px;background:var(--background);border-radius:var(--border-radius);box-shadow:0 1px 5px #0007;text-align:left;font-size:smaller;pointer-events:none;transition:transform .3s;z-index:-2}.comp-list .comp:nth-child(2n - 1) .comp-info{right:-75px}.comp-list .comp:hover .comp-info{transform:translate(calc(20px + 100%));z-index:-1}.comp-list{width:100%;height:100%;overflow-y:overlay;overflow-x:hidden;padding-right:370px;direction:rtl;padding-left:10px}.comp-list-child{display:flex;flex-wrap:wrap;justify-content:space-evenly;align-items:flex-start;align-content:flex-start;justify-content:flex-start;width:148px;direction:ltr;text-align:left}.comp-list:after{content:"";position:absolute;border-right:solid 2px var(--locked);background:var(--raised-background);box-shadow:0 2px 10px #0007;top:0;bottom:0;left:0;right:0;z-index:-1}.comp-list .comp{position:relative;width:50px;height:50px;margin:10px;pointer-events:all}.comp-list .comp>img:first-child{width:50px;height:50px}.comp-list .comp:nth-child(3):after,.comp-list .comp:nth-child(4):after{content:"";position:absolute;top:calc(100% + 10px);height:2px;background-color:var(--foreground);left:0;right:0}.comp-list .comp:nth-child(3):after{right:-50px}.comp-list .comp:nth-child(4):after{left:-50px}.comp-list .comp img.selected,.comp-list .comp img.selected+img{transform:translate(-5px,-5px);filter:drop-shadow(2px 2px 0 var(--foreground)) drop-shadow(5px 5px 5px #0007)}.producedItem{position:absolute;pointer-events:none;width:calc(50px / 3);height:calc(50px / 3);left:10px;top:25px}.toy[data-v-9ca7cc66]{width:90px;display:flex;flex-direction:column;margin:10px!important}.toy img[data-v-9ca7cc66]{width:100%;aspect-ratio:1/1}.day[data-v-546b2825]{flex:13% 0 0;position:relative;display:flex;background-color:var(--raised-background);aspect-ratio:1;margin:5%}.mastered.day.wallpaper[data-v-546b2825]{box-shadow:#00000040 0 0 0 3px inset;background:linear-gradient(225deg,rgb(255,76,76) 11.1%,rgb(255,255,255) 11.1% 22.2%,rgb(65,255,95) 22.2% 33.3%,rgb(255,255,255) 33.3% 44.4%,rgb(255,76,76) 44.4% 55.5%,rgb(255,255,255) 55.5% 66.6%,rgb(65,255,95) 66.6% 77.7%,rgb(255,255,255) 77.7% 88.8%,rgb(255,76,76) 88.8%)}.door-enter-from[data-v-546b2825]:before,.door-enter-from[data-v-546b2825]:after,.door-close-enter-to[data-v-546b2825]:before,.door-close-enter-to[data-v-546b2825]:after{transform:perspective(150px) rotateY(0)!important}.door-enter-from .date[data-v-546b2825],.door-close-enter-to .date[data-v-546b2825]{transform:translate(-50%,-50%) perspective(150px) rotateY(0)!important}.door-enter-active[data-v-546b2825]:before,.door-enter-active[data-v-546b2825]:after,.door-close-enter-active[data-v-546b2825]:before,.door-close-enter-active[data-v-546b2825]:after{z-index:2}.door-enter-active .date[data-v-546b2825],.door-close-enter-active .date[data-v-546b2825]{z-index:3}.day .doors[data-v-546b2825]:before,.day .doors[data-v-546b2825]:after,.day .doors .date[data-v-546b2825]{transition:1s}.day.opened .doors[data-v-546b2825]:before{transform-origin:left}.day.opened .doors[data-v-546b2825]:after{transform-origin:right}.day.opened:not(.masteryLock) .doors[data-v-546b2825]:before{transform:perspective(150px) rotateY(-135deg)}.day.opened:not(.masteryLock) .doors[data-v-546b2825]:after{transform:perspective(150px) rotateY(135deg)}.day.opened .doors .date[data-v-546b2825]:first-child{transform-origin:left;clip-path:polygon(0 0,50% 0,50% 100%,0 100%)}.day.opened .doors .date[data-v-546b2825]:last-child{transform-origin:right;clip-path:polygon(100% 0,50% 0,50% 100%,100% 100%)}.day.opened:not(.masteryLock) .doors .date[data-v-546b2825]:first-child{transform:translate(-50%,-50%) perspective(150px) rotateY(-135deg)}.day.opened:not(.masteryLock) .doors .date[data-v-546b2825]:last-child{transform:translate(-50%,-50%) perspective(150px) rotateY(135deg)}.tooltip-container[data-v-546b2825],.doors[data-v-546b2825]{position:absolute;width:100%;height:100%;top:0;left:0}.day.opened .doors[data-v-546b2825]{cursor:pointer}.doors[data-v-546b2825]:before,.doors[data-v-546b2825]:after{content:"";position:absolute;background-color:var(--locked);width:50%;height:100%;pointer-events:none;z-index:1}.doors[data-v-546b2825]:before{top:0;left:0}.doors[data-v-546b2825]:after{top:0;right:0}.masteryLock[data-v-546b2825]{cursor:not-allowed}.masteryLock>*[data-v-546b2825]{pointer-events:none}.masteryLock>*[data-v-546b2825]>:not(.doors){opacity:0}.masteryLock .icon[data-v-546b2825]{transition-duration:.2s;transition-delay:.8s}.mastered.wallpaper .doors[data-v-546b2825]:before,.mastered.wallpaper .doors[data-v-546b2825]:after{background:linear-gradient(225deg,rgb(255,76,76) 11.1%,rgb(255,255,255) 11.1% 22.2%,rgb(65,255,95) 22.2% 33.3%,rgb(255,255,255) 33.3% 44.4%,rgb(255,76,76) 44.4% 55.5%,rgb(255,255,255) 55.5% 66.6%,rgb(65,255,95) 66.6% 77.7%,rgb(255,255,255) 77.7% 88.8%,rgb(255,76,76) 88.8%)}.mastered .ribbon[data-v-546b2825]{position:absolute;top:-2px;left:0px;width:calc(100% + 0px);height:calc(100% + 4px);overflow:hidden;pointer-events:none;user-select:none;z-index:11}.mastered .ribbon[data-v-546b2825]:after{content:"\1f380";color:red;position:absolute;top:-5px;left:-5px;font-size:xx-large;transform:rotate(-45deg);z-index:1}.mastered .ribbon[data-v-546b2825]:before{content:"";width:calc(100% - 24px);height:100%;border:solid darkred 8px;transform:rotate(45deg);position:absolute;top:0;left:0;border-top:none;border-bottom:none;z-index:1}.date[data-v-546b2825]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:2;font-size:large;pointer-events:none;user-select:none;backface-visibility:hidden;width:calc(100% - 14px)}.timer[data-v-546b2825]{position:absolute;bottom:-12px;left:50%;padding:0 3px;transform:translate(-50%);z-index:3;pointer-events:none;user-select:none;white-space:nowrap;font-size:small;border:2px solid rgba(0,0,0,.125);border-radius:var(--border-radius);background:var(--locked)}.icon[data-v-546b2825]{pointer-events:none;background-size:contain;width:90%;height:90%;margin:5%}.lore[data-v-546b2825]{position:absolute;top:2px;right:2px;width:20px;height:20px;z-index:1;border-radius:50%;cursor:pointer;background-color:var(--highlighted);user-select:none}.lore[data-v-546b2825]:hover{box-shadow:0 0 10px var(--points)}.lock[data-v-546b2825]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.2;font-size:400%;z-index:2}.scene[data-v-fc4db96e]{width:600px;position:relative;max-width:95%;aspect-ratio:2/1}.scene[data-v-fc4db96e]:after{content:"";position:absolute;width:100%;height:20%;border-radius:50% 50% 0 0/100% 100% 0 0;bottom:0;background:white}.scene-item[data-v-fc4db96e]{width:13.3%;height:26.6%;position:absolute;z-index:1}.scene-bubble[data-v-fc4db96e]{position:absolute;background:white;height:20%;padding:5px;border-radius:10px}.scene-bubble[data-v-fc4db96e]:after{content:"";position:absolute;width:0;height:0;top:100%;left:20px;border-left:10px solid transparent;border-right:10px solid transparent;border-top:15px solid white}.scene-bubble.left[data-v-fc4db96e]:after{left:unset;right:100%;top:30px;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:15px solid white;border-left:unset;z-index:1}.scene-bubble .scene-item[data-v-fc4db96e]{height:calc(100% - 10px);width:unset;aspect-ratio:1/1;position:static}.layer-tab[data-v-096d45c7]:not(.minimized){padding-top:20px;padding-bottom:20px;min-height:100%;flex-grow:1;text-align:center;position:relative}.inner-tab>.layer-container>.layer-tab[data-v-096d45c7]:not(.minimized){padding-top:50px}.layer-tab.minimized[data-v-096d45c7]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;padding:55px 0 0;margin:0;cursor:pointer;font-size:40px;color:var(--foreground);border:none;background-color:transparent}.layer-tab.minimized>*[data-v-096d45c7]{margin:0;writing-mode:vertical-rl;text-align:left;padding-left:10px;width:50px}.inner-tab>.layer-container>.layer-tab[data-v-096d45c7]:not(.minimized){margin:-50px -10px;padding:50px 10px}.modal-body .layer-tab[data-v-096d45c7]{padding-bottom:0}.modal-body .layer-tab[data-v-096d45c7]:not(.hasSubtabs){padding-top:0}.minimize[data-v-096d45c7]{position:sticky;top:6px;right:9px;z-index:7;line-height:30px;border:none;background:var(--background);box-shadow:var(--background) 0 2px 3px 5px;border-radius:50%;color:var(--foreground);font-size:40px;cursor:pointer;margin-top:-44px;margin-right:-30px}.minimized+.minimize[data-v-096d45c7]{transform:rotate(-90deg);top:10px;right:18px;pointer-events:none}.layer-tab.minimized>*>.desc{color:var(--accent1);font-size:30px}details[data-v-fd18bc22]{margin:10px 0;padding-left:18px}summary[data-v-fd18bc22]{cursor:pointer;margin-bottom:10px;margin-left:-18px}ul[data-v-fd18bc22]{margin:var(--feature-margin) 0;background:var(--raised-background);border:2px solid rgba(0,0,0,.125);padding:5px 5px 5px 15px;list-style:inside}li[data-v-fd18bc22]{margin:8px 0}li[data-v-fd18bc22]:before{padding:2px 8px;margin-right:8px;border-radius:var(--border-radius)}.feature[data-v-fd18bc22]:before{content:"Feature";background:var(--accent1)}.fix[data-v-fd18bc22]:before{content:"Fix";background:var(--accent2)}.balancing[data-v-fd18bc22]:before{content:"Balancing";background:var(--accent3)}.breaking[data-v-fd18bc22]:before{content:"Breaking";background:var(--danger)}.info-modal .modal-header{font-family:unset;font-weight:unset;font-size:unset;margin-top:unset}.info-modal-header{display:flex;margin:-20px -20px 0;background:var(--raised-background);align-items:center}.info-modal-header *{margin:0}.info-modal-logo{height:4em;width:4em}.info-modal-title{display:flex;flex-grow:1;flex-direction:column;padding:10px 0;text-align:center}.info-modal-title h2{font-family:Great Vibes,cursive;font-weight:400;font-size:64px;margin-top:-40px}.info-modal-discord-link{display:flex;align-items:center}.info-modal-discord{margin:0 4px 0 0}.feedback[data-v-01a1b95c]{position:relative}.feedback[data-v-01a1b95c]:after{position:absolute;left:calc(100% + 5px);top:50%;transform:translateY(-50%);content:"\2714";opacity:0;pointer-events:none;box-shadow:inset 0 0 0 35px #6f94b600;text-shadow:none}.feedback.left[data-v-01a1b95c]:after{left:unset;right:calc(100% + 5px)}.feedback.activated[data-v-01a1b95c]:after{animation:feedback-01a1b95c .5s ease-out forwards}@keyframes feedback-01a1b95c{0%{opacity:1;transform:scale3d(.4,.4,1),translateY(-50%)}80%{opacity:.1}to{opacity:0;transform:scale3d(1.2,1.2,1),translateY(-50%)}}.option-tabs{border-bottom:2px solid var(--outline)}.option-tabs button{background-color:transparent;color:var(--foreground);margin-bottom:-2px;font-size:14px;cursor:pointer;padding:5px 20px;border:none;border-bottom:2px solid var(--foreground)}.option-tabs button:not(.selected){border-bottom-color:transparent}.option-title .tooltip-container{display:inline;margin-left:5px}.option-title desc{display:block;opacity:.6;font-size:small;width:300px;margin-left:0}.save-button{text-align:right}form[data-v-90bd4994]{margin:0;width:100%}.field>*[data-v-90bd4994]{margin:0}input[data-v-90bd4994]{width:50%;outline:none;border:solid 1px var(--outline);background-color:unset;border-radius:var(--border-radius)}.fullWidth[data-v-90bd4994]{width:100%}.container[data-v-2f8ef34c]{display:flex;align-items:center;background:var(--raised-background);box-shadow:var(--raised-background) 0 2px 3px 5px}.container.confirming button[data-v-2f8ef34c]{font-size:1em}.container>*[data-v-2f8ef34c]{margin:0 4px}.danger,.button.danger{position:relative;border:solid 2px var(--danger);border-right-width:16px}.danger:after{position:absolute;content:"!";color:#fff;right:-13px}.save[data-v-0e3ab4ae]{position:relative;border:solid 4px var(--outline);padding:4px;background:var(--raised-background);margin:var(--feature-margin);display:flex;align-items:center;min-height:30px}.save.active[data-v-0e3ab4ae]{border-color:var(--bought)}.open[data-v-0e3ab4ae]{display:inline;margin:0;padding-left:0}.handle[data-v-0e3ab4ae]{flex-grow:0;margin-right:8px;margin-left:0;cursor:pointer}.details[data-v-0e3ab4ae]{margin:0 80px 0 0;flex-grow:1}.error[data-v-0e3ab4ae]{font-size:.8em;color:var(--danger)}.save-version[data-v-0e3ab4ae]{margin-left:4px;font-size:.7em;opacity:.7}.actions[data-v-0e3ab4ae]{position:absolute;top:0;bottom:0;right:4px;display:flex;padding:4px;z-index:1}.editname[data-v-0e3ab4ae]{margin:0}.save button{transition-duration:0s}.save .actions button{display:flex;font-size:1.2em}.save .actions button .material-icons{font-size:unset}.save .button.danger{display:flex;align-items:center;padding:4px}.save .field,.field form[data-v-5229ff3f],.field .field-title[data-v-5229ff3f],.field .field-buttons[data-v-5229ff3f]{margin:0}.field-buttons[data-v-5229ff3f]{display:flex}.field-buttons .field[data-v-5229ff3f]{margin:0 0 0 8px}.modal-footer[data-v-5229ff3f]{margin-top:-20px}.footer[data-v-5229ff3f]{display:flex;margin-top:20px}.importingFailed input{color:red}.field-buttons .v-select{width:220px}.presets .vue-select[aria-expanded=true] vue-dropdown{visibility:hidden}.nav[data-v-8495e562]{background-color:var(--raised-background);display:flex;left:0;right:0;top:0;height:46px;width:100%;border-bottom:4px solid var(--outline)}.nav>*[data-v-8495e562]{height:46px;width:46px;display:flex;cursor:pointer;flex-shrink:0}.nav>.banner[data-v-8495e562]{height:100%;width:unset}.overlay-nav[data-v-8495e562]{position:fixed;top:10px;left:10px;display:flex;flex-direction:column;z-index:2}.overlay-nav>*[data-v-8495e562]{height:50px;width:50px;display:flex;cursor:pointer;margin:0;align-items:center;justify-content:center}.title[data-v-8495e562]{font-family:Great Vibes,cursive;font-size:46px;text-align:left;margin-left:12px;cursor:unset}.nav>.title[data-v-8495e562]{width:unset;flex-shrink:1;padding-right:8px;overflow:hidden;white-space:nowrap}.nav .saves[data-v-8495e562],.nav .info[data-v-8495e562]{display:flex}.tooltip-container[data-v-8495e562]{width:100%;height:100%;display:flex}.overlay-nav .discord[data-v-8495e562]{position:relative}.discord img[data-v-8495e562]{width:100%;height:100%}.discord-links[data-v-8495e562]{position:fixed;top:45px;padding:20px;right:-280px;width:200px;transition:right .25s ease;background:var(--raised-background);z-index:10}.overlay-nav .discord-links[data-v-8495e562]{position:absolute;left:-280px;right:unset;transition:left .25s ease}.overlay-nav .discord:hover .discord-links[data-v-8495e562]{left:-10px}.discord-links li[data-v-8495e562]{margin-bottom:4px}.discord-links li[data-v-8495e562]:first-child{font-size:1.2em}*:not(.overlay-nav) .discord:hover .discord-links[data-v-8495e562]{right:0}.material-icons[data-v-8495e562]{font-size:36px}.material-icons[data-v-8495e562]:hover{text-shadow:5px 0 10px var(--link),-3px 0 12px var(--foreground)}.nav .version-container[data-v-8495e562]{display:flex;height:25px;margin-bottom:0;margin-left:10px}.overlay-nav .version-container[data-v-8495e562]{width:unset;height:25px}.version[data-v-8495e562]{color:var(--points)}.version:hover span[data-v-8495e562]{text-shadow:5px 0 10px var(--points),-3px 0 12px var(--points)}.nav>div>a[data-v-8495e562],.overlay-nav>div>a[data-v-8495e562]{color:var(--foreground);text-shadow:none}.tabs-container[data-v-5cccc039]{width:100vw;flex-grow:1;overflow-x:auto;overflow-y:hidden;display:flex}.tabs-container[data-v-5cccc039]:not(.useHeader){width:calc(100vw - 50px);margin-left:50px}.tab[data-v-5cccc039]{position:relative;height:100%;flex-grow:1;transition-duration:0s;overflow-y:auto;overflow-x:hidden}.inner-tab[data-v-5cccc039]{padding:50px 10px;min-height:calc(100% - 100px);display:flex;flex-direction:column;margin:0;flex-grow:1}.tab+.tab>.inner-tab[data-v-5cccc039]{border-left:solid 4px var(--outline)}.tab hr{height:4px;border:none;background:var(--outline);margin:var(--feature-margin) 0}.tab .modal-body hr{margin:7px 0}.game-over-modal-header[data-v-4a50ce42]{display:flex;margin:-20px -20px 0;background:var(--raised-background);align-items:center}.game-over-modal-header *[data-v-4a50ce42]{margin:0}.game-over-modal-logo[data-v-4a50ce42]{height:4em;width:4em}.game-over-modal-title[data-v-4a50ce42]{display:flex;flex-direction:column;padding:10px 0;margin-left:10px}.game-over-footer[data-v-4a50ce42]{display:flex;justify-content:flex-end}.game-over-footer button[data-v-4a50ce42]{margin:0 10px}.game-over-modal-discord-link[data-v-4a50ce42]{display:flex;align-items:center}.game-over-modal-discord[data-v-4a50ce42]{margin:0 4px 0 0}.nan-modal-header[data-v-7372ecde]{padding:10px 0;margin-left:10px}.nan-footer[data-v-7372ecde]{display:flex;justify-content:flex-end}.nan-footer button[data-v-7372ecde]{margin:0 10px}.nan-modal-discord-link[data-v-7372ecde]{display:flex;align-items:center}.nan-modal-discord[data-v-7372ecde]{margin:0 4px 0 0}.tpsDisplay[data-v-46a3ed5b]{position:absolute;left:10px;bottom:10px;z-index:100}.low[data-v-46a3ed5b]{color:var(--danger)}.fade-leave-to[data-v-46a3ed5b]{opacity:0}:root{color-scheme:dark}*{transition-duration:.5s;font-family:Roboto Mono,monospace;font-weight:700;margin:auto;text-size-adjust:none}*:focus{outline:none}body{overflow:hidden;transition:none;text-align:center}html,body,#app{min-height:100%;height:100%}h1,h2,h3,b,input{display:inline}button{color:#000}a,.button,.link{display:block;color:var(--link);background:none;border:none;cursor:pointer;text-decoration:none}a:hover,.button:hover,.link:hover{text-shadow:5px 0 10px var(--link),-3px 0 12px var(--link)}.button:disabled{opacity:.5;cursor:not-allowed}.button:disabled:hover{text-shadow:none}ul{list-style-type:none}.Vue-Toastification__toast{margin:unset}*{scrollbar-color:var(--accent1) #ffffff0f}::-webkit-scrollbar{appearance:none;width:16px;height:16px;background-color:#ffffff0f}::-webkit-scrollbar-thumb{--back-color: var(--accent1);background:linear-gradient(90deg,var(--back-color),var(--back-color)) no-repeat content-box;border:2px solid transparent}::-webkit-scrollbar-thumb:hover{--back-color: var(--foreground)}::-webkit-scrollbar-button:single-button{--back-color: transparent;--arrow-color: var(--accent1);width:16px;height:16px}::-webkit-scrollbar-button:single-button:hover{--back-color: #ffffff0f;--arrow-color: var(--foreground)}::-webkit-scrollbar-button:single-button:active{--back-color: var(--foreground);--arrow-color: var(--background)}::-webkit-scrollbar-button:single-button:disabled{--arrow-color: var(--foreground)}::-webkit-scrollbar-button:single-button:vertical:decrement{background:conic-gradient(#0000 37.5%,var(--arrow-color) 37.5% 62.5%,#0000 62.5%) no-repeat content-box,linear-gradient(90deg,var(--back-color),var(--back-color)) no-repeat content-box;background-size:60% 50%,100% 100%;background-position:50% 20%,0% 0%}::-webkit-scrollbar-button:single-button:vertical:increment{background:conic-gradient(var(--arrow-color) 12.5%,#0000 12.5% 87.5%,var(--arrow-color) 87.5%) no-repeat content-box,linear-gradient(90deg,var(--back-color),var(--back-color)) no-repeat content-box;background-size:60% 50%,100% 100%;background-position:50% 80%,0% 0%}::-webkit-scrollbar-button:single-button:horizontal:decrement{background:conic-gradient(#0000 12.5%,var(--arrow-color) 12.5% 37.5%,#0000 37.5%) no-repeat content-box,linear-gradient(90deg,var(--back-color),var(--back-color)) no-repeat content-box;background-size:50% 60%,100% 100%;background-position:20% 50%,0% 0%}::-webkit-scrollbar-button:single-button:horizontal:increment{background:conic-gradient(#0000 62.5%,var(--arrow-color) 62.5% 87.5%,#0000 87.5%) no-repeat content-box,linear-gradient(90deg,var(--back-color),var(--back-color)) no-repeat content-box;background-size:50% 60%,100% 100%;background-position:80% 50%,0% 0%}::-webkit-scrollbar-corner{background:#070710}.unaffordable{color:var(--danger)}.decoration-effect{border:solid 8px darkred;padding:4px;width:576px;position:relative;border-radius:10px}.decoration-effect:not(.ribbon){border-image:repeating-linear-gradient(-45deg,rgb(255,76,76) 0 10px,rgb(255,255,255) 10px 20px,rgb(65,255,95) 20px 30px,rgb(255,255,255) 30px 40px) 12/10px}.decoration-effect.ribbon:before{content:"\1f380";color:red;position:absolute;top:-20px;left:-20px;font-size:xx-large;transform:rotate(-45deg);z-index:1}.layer-container{min-width:100%;min-height:100%;margin:0;flex-grow:1;display:flex;isolation:isolate}.goBack{position:sticky;top:10px;left:10px;line-height:30px;margin-top:-43px;margin-left:-35px;border:none;background:var(--background);box-shadow:var(--background) 0 2px 3px 5px;border-radius:50%;color:var(--foreground);font-size:30px;cursor:pointer;z-index:7}.goBack:hover{transform:scale(1.1);text-shadow:0 0 7px var(--foreground)}.app[data-v-8f3af388]{background-color:var(--background);color:var(--foreground);display:flex;flex-flow:column;min-height:100%;height:100%}#modal-root[data-v-8f3af388]{position:absolute;min-height:100%;height:100%} diff --git a/advent/assets/index.c658358f.js b/advent/assets/index.c658358f.js new file mode 100644 index 000000000..6f7fd8e98 --- /dev/null +++ b/advent/assets/index.c658358f.js @@ -0,0 +1,41 @@ +/* empty css */import"./vue.dd1d82d0.js";import{Z as b,l as dl,aa as iI,t as Ji,ay as bs,ar as De,aE as h,a0 as S,aK as ie,a1 as X,O as M,aG as Ds,A as cl,C as c,_ as eI,a8 as s,b6 as Bi,b8 as zs,aq as Ne,bu as as,a7 as d,bs as wn,bb as Ae,T as jd,j as ud,bv as ts,u as en,q as xe,b1 as oe,G as LI,aC as om,w as Rl,b2 as AI,ao as Vd,I as BI,au as Jd,aN as qI,$ as oi,z as se,al as Us,aL as be,H as Wd,aJ as Zs,k as Nn,J as pI,aH as Ce,aF as he,bn as pd,bc as Tn,br as Md,be as rd}from"./@vue.359f7754.js";import{c as bm}from"./nanoevents.1080beb7.js";import{L as Ge}from"./lz-string.f2f3b7cf.js";import{i as wd}from"./is-plain-object.906d88e8.js";import{e as Nd,T as Od,B as Cd,A as ym,u as hd,E as Fn,a as Te,G as kn,C as cn,S as Js}from"./@pixi.051d1bd4.js";import{s as Yd,u as jm}from"./vue-toastification.7ec3a26c.js";import{Y as vd}from"./vue-next-select.d15705a0.js";import{P as Xd}from"./vue-panzoom.f6869ea5.js";import{D as zd}from"./vuedraggable.179e27ef.js";import{p as Rd}from"./vue-textarea-autosize.35804eaf.js";import"./amator.8216e0d2.js";import"./bezier-easing.a990b400.js";import"./eventemitter3.dc5195d7.js";import"./earcut.03899505.js";import"./url.1821b64b.js";import"./querystring.b35d81f8.js";import"./panzoom.9e1878dd.js";import"./wheel.f03080ac.js";import"./ngraph.events.083734c6.js";import"./sortablejs.e4e9a931.js";const Gd=function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const m of document.querySelectorAll('link[rel="modulepreload"]'))n(m);new MutationObserver(m=>{for(const a of m)if(a.type==="childList")for(const Z of a.addedNodes)Z.tagName==="LINK"&&Z.rel==="modulepreload"&&n(Z)}).observe(document,{childList:!0,subtree:!0});function e(m){const a={};return m.integrity&&(a.integrity=m.integrity),m.referrerpolicy&&(a.referrerPolicy=m.referrerpolicy),m.crossorigin==="use-credentials"?a.credentials="include":m.crossorigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(m){if(m.ep)return;m.ep=!0;const a=e(m);fetch(m.href,a)}};Gd();const fd="modulepreload",gn={},xd="./",Os=function(l,e){return!e||e.length===0?l():Promise.all(e.map(n=>{if(n=`${xd}${n}`,n in gn)return;gn[n]=!0;const m=n.endsWith(".css"),a=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${n}"]${a}`))return;const Z=document.createElement("link");if(Z.rel=m?"stylesheet":fd,m||(Z.as="script",Z.crossOrigin=""),Z.href=n,document.head.appendChild(Z),m)return new Promise((o,y)=>{Z.addEventListener("load",o),Z.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${n}`)))})})).then(()=>l())},Dd="./projInfo-schema.json",Sd="Advent Incremental",Ld="An incremental game you play a day at a time, leading up to Christmas!",Td="advent-incremental",Fd="thepaperpilot and friends",kd="",gd="",Qd="1.0.4",Ud="Initial Commit",Hd=!0,Ad=!1,Ed=2,Bd=!0,Pd=null,_d="",qd=["main"],$d=3600,Kd=0,ic=!0,Ic="base64";var QI={$schema:Dd,title:Sd,description:Ld,id:Td,author:Fd,discordName:kd,discordLink:gd,versionNumber:Qd,versionTitle:Ud,allowGoBack:Hd,defaultShowSmall:Ad,defaultDecimalsShown:Ed,useHeader:Bd,banner:Pd,logo:_d,initialTabs:qd,maxTickLength:$d,offlineLimit:Kd,enablePausing:ic,exportEncoding:Ic};const an=17,lc=9e15,ec=Math.log10(9e15),sc=1/9e15,nc=308,mc=-324,Qn=5,dc=function(){const i=[];for(let e=mc+1;e<=nc;e++)i.push(Number("1e"+e));const l=323;return function(e){return i[e+l]}}(),Fe=[2,Math.E,3,4,5,6,7,8,9,10],cc=[[1,1.0891168053867777,1.1789745164521264,1.2701428397304229,1.3632066654400328,1.4587804913784246,1.557523817412741,1.660158301473385,1.767487542936873,1.8804205225512542,2],[1,1.1121114330934,1.23103892493161,1.35838369631113,1.49605193039935,1.64635423375119,1.81213853570186,1.99697132461829,2.20538955455724,2.44325744833852,Math.E],[1,1.1187738849693603,1.2464963939368214,1.38527004705667,1.5376664685821402,1.7068895236551784,1.897001227148399,2.1132403089001035,2.362480153784171,2.6539010333870774,3],[1,1.1367350847096405,1.2889510672956703,1.4606478703324786,1.6570295196661111,1.8850062585672889,2.1539465047453485,2.476829779693097,2.872061932789197,3.3664204535587183,4],[1,1.1494592900767588,1.319708228183931,1.5166291280087583,1.748171114438024,2.0253263297298045,2.3636668498288547,2.7858359149579424,3.3257226212448145,4.035730287722532,5],[1,1.159225940787673,1.343712473580932,1.5611293155111927,1.8221199554561318,2.14183924486326,2.542468319282638,3.0574682501653316,3.7390572020926873,4.6719550537360774,6],[1,1.1670905356972596,1.3632807444991446,1.5979222279405536,1.8842640123816674,2.2416069644878687,2.69893426559423,3.3012632110403577,4.121250340630164,5.281493033448316,7],[1,1.1736630594087796,1.379783782386201,1.6292821855668218,1.9378971836180754,2.3289975651071977,2.8384347394720835,3.5232708454565906,4.478242031114584,5.868592169644505,8],[1,1.1793017514670474,1.394054150657457,1.65664127441059,1.985170999970283,2.4069682290577457,2.9647310119960752,3.7278665320924946,4.814462547283592,6.436522247411611,9],[1,1.18422737399915,1.4066113788546144,1.680911177655277,2.027492094355525,2.4775152854601967,3.080455730250329,3.918234505962507,5.1332705696484595,6.9878696918072905,10]],ac=[[-1,-.9194161097107025,-.8335625019330468,-.7425599821143978,-.6466611521029437,-.5462617907227869,-.4419033816638769,-.3342645487554494,-.224140440909962,-.11241087890006762,0],[-1,-.90603157029014,-.80786507256596,-.7064666939634,-.60294836853664,-.49849837513117,-.39430303318768,-.29147201034755,-.19097820800866,-.09361896280296,0],[-1,-.9021579584316141,-.8005762598234203,-.6964780623319391,-.5911906810998454,-.486050182576545,-.3823089430815083,-.28106046722897615,-.1831906535795894,-.08935809204418144,0],[-1,-.8917227442365535,-.781258746326964,-.6705130326902455,-.5612813129406509,-.4551067709033134,-.35319256652135966,-.2563741554088552,-.1651412821106526,-.0796919581982668,0],[-1,-.8843387974366064,-.7678744063886243,-.6529563724510552,-.5415870994657841,-.4352842206588936,-.33504449124791424,-.24138853420685147,-.15445285440944467,-.07409659641336663,0],[-1,-.8786709358426346,-.7577735191184886,-.6399546189952064,-.527284921869926,-.4211627631006314,-.3223479611761232,-.23107655627789858,-.1472057700818259,-.07035171210706326,0],[-1,-.8740862815291583,-.7497032990976209,-.6297119746181752,-.5161838335958787,-.41036238255751956,-.31277212146489963,-.2233976621705518,-.1418697367979619,-.06762117662323441,0],[-1,-.8702632331800649,-.7430366914122081,-.6213373075161548,-.5072025698095242,-.40171437727184167,-.30517930701410456,-.21736343968190863,-.137710238299109,-.06550774483471955,0],[-1,-.8670016295947213,-.7373984232432306,-.6143173985094293,-.49973884395492807,-.394584953527678,-.2989649949848695,-.21245647317021688,-.13434688362382652,-.0638072667348083,0],[-1,-.8641642839543857,-.732534623168535,-.6083127477059322,-.4934049257184696,-.3885773075899922,-.29376029055315767,-.2083678561173622,-.13155653399373268,-.062401588652553186,0]],k=function(l){return I.fromValue_noAlloc(l)},JI=function(i,l,e){return I.fromComponents(i,l,e)},YI=function(l,e,n){return I.fromComponents_noNormalize(l,e,n)},Xe=function(l,e){const n=e+1,m=Math.ceil(Math.log10(Math.abs(l))),a=Math.round(l*Math.pow(10,n-m))*Math.pow(10,m-n);return parseFloat(a.toFixed(Math.max(n-m,0)))},tn=function(i){return Math.sign(i)*Math.log10(Math.abs(i))},tc=function(i){if(!isFinite(i))return i;if(i<-50)return i===Math.trunc(i)?Number.NEGATIVE_INFINITY:0;let l=1;for(;i<10;)l=l*i,++i;i-=1;let e=.9189385332046727;e=e+(i+.5)*Math.log(i),e=e-i;const n=i*i;let m=i;return e=e+1/(12*m),m=m*n,e=e+1/(360*m),m=m*n,e=e+1/(1260*m),m=m*n,e=e+1/(1680*m),m=m*n,e=e+1/(1188*m),m=m*n,e=e+691/(360360*m),m=m*n,e=e+7/(1092*m),m=m*n,e=e+3617/(122400*m),Math.exp(e)/l},um=.5671432904097838,Un=function(i,l=1e-10){let e,n;if(!Number.isFinite(i)||i===0)return i;if(i===1)return um;i<10?e=0:e=Math.log(i)-Math.log(Math.log(i));for(let m=0;m<100;++m){if(n=(i*Math.exp(-e)+e*e)/(e+1),Math.abs(n-e).5?1:-1;if(Math.random()*20<1)return YI(l,0,1);const e=Math.floor(Math.random()*(i+1));let n=e===0?Math.random()*616-308:Math.random()*16;Math.random()>.9&&(n=Math.trunc(n));let m=Math.pow(10,n);return Math.random()>.9&&(m=Math.trunc(m)),JI(l,e,m)}static affordGeometricSeries_core(i,l,e,n){const m=l.mul(e.pow(n));return ci.floor(i.div(m).mul(e.sub(1)).add(1).log10().div(e.log10()))}static sumGeometricSeries_core(i,l,e,n){return l.mul(e.pow(n)).mul(ci.sub(1,e.pow(i))).div(ci.sub(1,e))}static affordArithmeticSeries_core(i,l,e,n){const a=l.add(n.mul(e)).sub(e.div(2)),Z=a.pow(2);return a.neg().add(Z.add(e.mul(i).mul(2)).sqrt()).div(e).floor()}static sumArithmeticSeries_core(i,l,e,n){const m=l.add(n.mul(e));return i.div(2).mul(m.mul(2).plus(i.sub(1).mul(e)))}static efficiencyOfPurchase_core(i,l,e){return i.div(l).add(i.div(e))}normalize(){if(this.sign===0||this.mag===0&&this.layer===0)return this.sign=0,this.mag=0,this.layer=0,this;if(this.layer===0&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),this.layer===0&&this.mag=lc)return this.layer+=1,this.mag=l*Math.log10(i),this;for(;i0;)this.layer-=1,this.layer===0?this.mag=Math.pow(10,this.mag):(this.mag=l*Math.pow(10,i),i=Math.abs(this.mag),l=Math.sign(this.mag));return this.layer===0&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):this.mag===0&&(this.sign=0)),this}fromComponents(i,l,e){return this.sign=i,this.layer=l,this.mag=e,this.normalize(),this}fromComponents_noNormalize(i,l,e){return this.sign=i,this.layer=l,this.mag=e,this}fromMantissaExponent(i,l){return this.layer=1,this.sign=Math.sign(i),i=Math.abs(i),this.mag=l+Math.log10(i),this.normalize(),this}fromMantissaExponent_noNormalize(i,l){return this.fromMantissaExponent(i,l),this}fromDecimal(i){return this.sign=i.sign,this.layer=i.layer,this.mag=i.mag,this}fromNumber(i){return this.mag=Math.abs(i),this.sign=Math.sign(i),this.layer=0,this.normalize(),this}fromString(i){i=i.replace(",","");const l=i.split("^^^");if(l.length===2){const N=parseFloat(l[0]),p=parseFloat(l[1]),f=l[1].split(";");let C=1;if(f.length===2&&(C=parseFloat(f[1]),isFinite(C)||(C=1)),isFinite(N)&&isFinite(p)){const D=ci.pentate(N,p,C);return this.sign=D.sign,this.layer=D.layer,this.mag=D.mag,this}}const e=i.split("^^");if(e.length===2){const N=parseFloat(e[0]),p=parseFloat(e[1]),f=e[1].split(";");let C=1;if(f.length===2&&(C=parseFloat(f[1]),isFinite(C)||(C=1)),isFinite(N)&&isFinite(p)){const D=ci.tetrate(N,p,C);return this.sign=D.sign,this.layer=D.layer,this.mag=D.mag,this}}const n=i.split("^");if(n.length===2){const N=parseFloat(n[0]),p=parseFloat(n[1]);if(isFinite(N)&&isFinite(p)){const f=ci.pow(N,p);return this.sign=f.sign,this.layer=f.layer,this.mag=f.mag,this}}i=i.trim().toLowerCase();let m,a,Z=i.split("pt");if(Z.length===2){m=10,a=parseFloat(Z[0]),Z[1]=Z[1].replace("(",""),Z[1]=Z[1].replace(")","");let N=parseFloat(Z[1]);if(isFinite(N)||(N=1),isFinite(m)&&isFinite(a)){const p=ci.tetrate(m,a,N);return this.sign=p.sign,this.layer=p.layer,this.mag=p.mag,this}}if(Z=i.split("p"),Z.length===2){m=10,a=parseFloat(Z[0]),Z[1]=Z[1].replace("(",""),Z[1]=Z[1].replace(")","");let N=parseFloat(Z[1]);if(isFinite(N)||(N=1),isFinite(m)&&isFinite(a)){const p=ci.tetrate(m,a,N);return this.sign=p.sign,this.layer=p.layer,this.mag=p.mag,this}}const o=i.split("e"),y=o.length-1;if(y===0){const N=parseFloat(i);if(isFinite(N))return this.fromNumber(N)}else if(y===1){const N=parseFloat(i);if(isFinite(N)&&N!==0)return this.fromNumber(N)}const u=i.split("e^");if(u.length===2){this.sign=1,u[0].charAt(0)=="-"&&(this.sign=-1);let N="";for(let p=0;p=43&&f<=57||f===101)N+=u[1].charAt(p);else return this.layer=parseFloat(N),this.mag=parseFloat(u[1].substr(p+1)),this.normalize(),this}}if(y<1)return this.sign=0,this.layer=0,this.mag=0,this;const w=parseFloat(o[0]);if(w===0)return this.sign=0,this.layer=0,this.mag=0,this;let W=parseFloat(o[o.length-1]);if(y>=2){const N=parseFloat(o[o.length-2]);isFinite(N)&&(W*=Math.sign(N),W+=tn(N))}if(!isFinite(w))this.sign=o[0]==="-"?-1:1,this.layer=y,this.mag=W;else if(y===1)this.sign=Math.sign(w),this.layer=1,this.mag=W+Math.log10(Math.abs(w));else if(this.sign=Math.sign(w),this.layer=y,y===2){const N=ci.mul(JI(1,2,W),k(w));return this.sign=N.sign,this.layer=N.layer,this.mag=N.mag,this}else this.mag=W;return this.normalize(),this}fromValue(i){return i instanceof ci||i!=null&&typeof i=="object"&&"sign"in i&&"mag"in i&&"layer"in i?this.fromDecimal(i):typeof i=="number"?this.fromNumber(i):typeof i=="string"?this.fromString(i):(this.sign=0,this.layer=0,this.mag=0,this)}toNumber(){return Number.isFinite(this.layer)?this.layer===0?this.sign*this.mag:this.layer===1?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN}mantissaWithDecimalPlaces(i){return isNaN(this.m)?Number.NaN:this.m===0?0:Xe(this.m,i)}magnitudeWithDecimalPlaces(i){return isNaN(this.mag)?Number.NaN:this.mag===0?0:Xe(this.mag,i)}toString(){return isNaN(this.layer)||isNaN(this.sign)||isNaN(this.mag)?"NaN":this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY?this.sign===1?"Infinity":"-Infinity":this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toString():this.m+"e"+this.e:this.layer===1?this.m+"e"+this.e:this.layer<=Qn?(this.sign===-1?"-":"")+"e".repeat(this.layer)+this.mag:(this.sign===-1?"-":"")+"(e^"+this.layer+")"+this.mag}toExponential(i){return this.layer===0?(this.sign*this.mag).toExponential(i):this.toStringWithDecimalPlaces(i)}toFixed(i){return this.layer===0?(this.sign*this.mag).toFixed(i):this.toStringWithDecimalPlaces(i)}toPrecision(i){return this.e<=-7?this.toExponential(i-1):i>this.e?this.toFixed(i-this.exponent-1):this.toExponential(i-1)}valueOf(){return this.toString()}toJSON(){return this.toString()}toStringWithDecimalPlaces(i){return this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toFixed(i):Xe(this.m,i)+"e"+Xe(this.e,i):this.layer===1?Xe(this.m,i)+"e"+Xe(this.e,i):this.layer<=Qn?(this.sign===-1?"-":"")+"e".repeat(this.layer)+Xe(this.mag,i):(this.sign===-1?"-":"")+"(e^"+this.layer+")"+Xe(this.mag,i)}abs(){return YI(this.sign===0?0:1,this.layer,this.mag)}neg(){return YI(-this.sign,this.layer,this.mag)}negate(){return this.neg()}negated(){return this.neg()}sgn(){return this.sign}round(){return this.mag<0?ci.dZero:this.layer===0?JI(this.sign,0,Math.round(this.mag)):this}floor(){return this.mag<0?ci.dZero:this.layer===0?JI(this.sign,0,Math.floor(this.mag)):this}ceil(){return this.mag<0?ci.dZero:this.layer===0?JI(this.sign,0,Math.ceil(this.mag)):this}trunc(){return this.mag<0?ci.dZero:this.layer===0?JI(this.sign,0,Math.trunc(this.mag)):this}add(i){const l=k(i);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(l.layer)||this.sign===0)return l;if(l.sign===0)return this;if(this.sign===-l.sign&&this.layer===l.layer&&this.mag===l.mag)return YI(0,0,0);let e,n;if(this.layer>=2||l.layer>=2)return this.maxabs(l);if(ci.cmpabs(this,l)>0?(e=this,n=l):(e=l,n=this),e.layer===0&&n.layer===0)return k(e.sign*e.mag+n.sign*n.mag);const m=e.layer*Math.sign(e.mag),a=n.layer*Math.sign(n.mag);if(m-a>=2)return e;if(m===0&&a===-1){if(Math.abs(n.mag-Math.log10(e.mag))>an)return e;{const Z=Math.pow(10,Math.log10(e.mag)-n.mag),o=n.sign+e.sign*Z;return JI(Math.sign(o),1,n.mag+Math.log10(Math.abs(o)))}}if(m===1&&a===0){if(Math.abs(e.mag-Math.log10(n.mag))>an)return e;{const Z=Math.pow(10,e.mag-Math.log10(n.mag)),o=n.sign+e.sign*Z;return JI(Math.sign(o),1,Math.log10(n.mag)+Math.log10(Math.abs(o)))}}if(Math.abs(e.mag-n.mag)>an)return e;{const Z=Math.pow(10,e.mag-n.mag),o=n.sign+e.sign*Z;return JI(Math.sign(o),1,n.mag+Math.log10(Math.abs(o)))}}plus(i){return this.add(i)}sub(i){return this.add(k(i).neg())}subtract(i){return this.sub(i)}minus(i){return this.sub(i)}mul(i){const l=k(i);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(l.layer))return l;if(this.sign===0||l.sign===0)return YI(0,0,0);if(this.layer===l.layer&&this.mag===-l.mag)return YI(this.sign*l.sign,0,1);let e,n;if(this.layer>l.layer||this.layer==l.layer&&Math.abs(this.mag)>Math.abs(l.mag)?(e=this,n=l):(e=l,n=this),e.layer===0&&n.layer===0)return k(e.sign*n.sign*e.mag*n.mag);if(e.layer>=3||e.layer-n.layer>=2)return JI(e.sign*n.sign,e.layer,e.mag);if(e.layer===1&&n.layer===0)return JI(e.sign*n.sign,1,e.mag+Math.log10(n.mag));if(e.layer===1&&n.layer===1)return JI(e.sign*n.sign,1,e.mag+n.mag);if(e.layer===2&&n.layer===1){const m=JI(Math.sign(e.mag),e.layer-1,Math.abs(e.mag)).add(JI(Math.sign(n.mag),n.layer-1,Math.abs(n.mag)));return JI(e.sign*n.sign,m.layer+1,m.sign*m.mag)}if(e.layer===2&&n.layer===2){const m=JI(Math.sign(e.mag),e.layer-1,Math.abs(e.mag)).add(JI(Math.sign(n.mag),n.layer-1,Math.abs(n.mag)));return JI(e.sign*n.sign,m.layer+1,m.sign*m.mag)}throw Error("Bad arguments to mul: "+this+", "+i)}multiply(i){return this.mul(i)}times(i){return this.mul(i)}div(i){const l=k(i);return this.mul(l.recip())}divide(i){return this.div(i)}divideBy(i){return this.div(i)}dividedBy(i){return this.div(i)}recip(){return this.mag===0?ci.dNaN:this.layer===0?JI(this.sign,0,1/this.mag):JI(this.sign,this.layer,-this.mag)}reciprocal(){return this.recip()}reciprocate(){return this.recip()}cmp(i){const l=k(i);return this.sign>l.sign?1:this.sign0?this.layer:-this.layer,n=l.mag>0?l.layer:-l.layer;return e>n?1:el.mag?1:this.mag0?l:this}clamp(i,l){return this.max(i).min(l)}clampMin(i){return this.max(i)}clampMax(i){return this.min(i)}cmp_tolerance(i,l){const e=k(i);return this.eq_tolerance(e,l)?0:this.cmp(e)}compare_tolerance(i,l){return this.cmp_tolerance(i,l)}eq_tolerance(i,l){const e=k(i);if(l==null&&(l=1e-7),this.sign!==e.sign||Math.abs(this.layer-e.layer)>1)return!1;let n=this.mag,m=e.mag;return this.layer>e.layer&&(m=tn(m)),this.layer0?JI(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):JI(1,0,Math.log10(this.mag))}log10(){return this.sign<=0?ci.dNaN:this.layer>0?JI(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):JI(this.sign,0,Math.log10(this.mag))}log(i){return i=k(i),this.sign<=0||i.sign<=0||i.sign===1&&i.layer===0&&i.mag===1?ci.dNaN:this.layer===0&&i.layer===0?JI(this.sign,0,Math.log(this.mag)/Math.log(i.mag)):ci.div(this.log10(),i.log10())}log2(){return this.sign<=0?ci.dNaN:this.layer===0?JI(this.sign,0,Math.log2(this.mag)):this.layer===1?JI(Math.sign(this.mag),0,Math.abs(this.mag)*3.321928094887362):this.layer===2?JI(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):JI(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}ln(){return this.sign<=0?ci.dNaN:this.layer===0?JI(this.sign,0,Math.log(this.mag)):this.layer===1?JI(Math.sign(this.mag),0,Math.abs(this.mag)*2.302585092994046):this.layer===2?JI(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):JI(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}logarithm(i){return this.log(i)}pow(i){const l=k(i),e=this,n=l;if(e.sign===0)return n.eq(0)?YI(1,0,1):e;if(e.sign===1&&e.layer===0&&e.mag===1)return e;if(n.sign===0)return YI(1,0,1);if(n.sign===1&&n.layer===0&&n.mag===1)return e;const m=e.absLog10().mul(n).pow10();return this.sign===-1?Math.abs(n.toNumber()%2)%2===1?m.neg():Math.abs(n.toNumber()%2)%2===0?m:ci.dNaN:m}pow10(){if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return ci.dNaN;let i=this;if(i.layer===0){const l=Math.pow(10,i.sign*i.mag);if(Number.isFinite(l)&&Math.abs(l)>=.1)return JI(1,0,l);if(i.sign===0)return ci.dOne;i=YI(i.sign,i.layer+1,Math.log10(i.mag))}return i.sign>0&&i.mag>=0?JI(i.sign,i.layer+1,i.mag):i.sign<0&&i.mag>=0?JI(-i.sign,i.layer+1,-i.mag):ci.dOne}pow_base(i){return k(i).pow(this)}root(i){const l=k(i);return this.pow(l.recip())}factorial(){return this.mag<0?this.add(1).gamma():this.layer===0?this.add(1).gamma():this.layer===1?ci.exp(ci.mul(this,ci.ln(this).sub(1))):ci.exp(this)}gamma(){if(this.mag<0)return this.recip();if(this.layer===0){if(this.lt(YI(1,0,24)))return k(tc(this.sign*this.mag));const i=this.mag-1;let l=.9189385332046727;l=l+(i+.5)*Math.log(i),l=l-i;const e=i*i;let n=i,m=12*n,a=1/m,Z=l+a;if(Z===l||(l=Z,n=n*e,m=360*n,a=1/m,Z=l-a,Z===l))return ci.exp(l);l=Z,n=n*e,m=1260*n;let o=1/m;return l=l+o,n=n*e,m=1680*n,o=1/m,l=l-o,ci.exp(l)}else return this.layer===1?ci.exp(ci.mul(this,ci.ln(this).sub(1))):ci.exp(this)}lngamma(){return this.gamma().ln()}exp(){return this.mag<0?ci.dOne:this.layer===0&&this.mag<=709.7?k(Math.exp(this.sign*this.mag)):this.layer===0?JI(1,1,this.sign*Math.log10(Math.E)*this.mag):this.layer===1?JI(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):JI(1,this.layer+1,this.sign*this.mag)}sqr(){return this.pow(2)}sqrt(){if(this.layer===0)return k(Math.sqrt(this.sign*this.mag));if(this.layer===1)return JI(1,2,Math.log10(this.mag)-.3010299956639812);{const i=ci.div(YI(this.sign,this.layer-1,this.mag),YI(1,0,2));return i.layer+=1,i.normalize(),i}}cube(){return this.pow(3)}cbrt(){return this.pow(1/3)}tetrate(i=2,l=YI(1,0,1)){if(i===1)return ci.pow(this,l);if(i===0)return new ci(l);if(this.eq(ci.dOne))return ci.dOne;if(this.eq(-1))return ci.pow(this,l);if(i===Number.POSITIVE_INFINITY){const m=this.toNumber();if(m<=1.444667861009766&&m>=.06598803584531254){if(m>1.444667861009099)return new ci(Math.E);const a=ci.ln(this).neg();return a.lambertw().div(a)}else return m>1.444667861009766?new ci(Number.POSITIVE_INFINITY):ci.dNaN}if(this.eq(ci.dZero)){let m=Math.abs((i+1)%2);return m>1&&(m=2-m),new ci(m)}if(i<0)return ci.iteratedlog(l,this,-i);l=k(l);const e=i;i=Math.trunc(i);const n=e-i;if(this.gt(ci.dZero)&&this.lte(1.444667861009766)){i=Math.min(1e4,i);for(let m=0;m3)return YI(l.sign,l.layer+(i-m-1),l.mag);if(m>1e4)return l}return l}iteratedexp(i=2,l=YI(1,0,1)){return this.tetrate(i,l)}iteratedlog(i=10,l=1){if(l<0)return ci.tetrate(i,-l,this);i=k(i);let e=k(this);const n=l;l=Math.trunc(l);const m=n-l;if(e.layer-i.layer>3){const a=Math.min(l,e.layer-i.layer-3);l-=a,e.layer-=a}for(let a=0;a1e4)return e}return m>0&&m<1&&(i.eq(10)?e=e.layeradd10(-m):e=e.layeradd(-m,i)),e}slog(i=10){if(i=k(i),i.lte(ci.dZero)||i.eq(ci.dOne))return ci.dNaN;if(i.lt(ci.dOne))return this.eq(ci.dOne)?ci.dZero:this.eq(ci.dZero)?ci.dNegOne:ci.dNaN;if(this.mag<0||this.eq(ci.dZero))return ci.dNegOne;let l=0,e=k(this);if(e.layer-i.layer>3){const n=e.layer-i.layer-3;l+=n,e.layer-=n}for(let n=0;n<100;++n)if(e.lt(ci.dZero))e=ci.pow(i,e),l-=1;else{if(e.lte(ci.dOne))return k(l+ci.slog_critical(i.toNumber(),e.toNumber()));l+=1,e=ci.log(e,i)}return k(l)}static slog_critical(i,l){return i>10?l-1:ci.critical_section(i,l,ac)}static tetrate_critical(i,l){return ci.critical_section(i,l,cc)}static critical_section(i,l,e){l*=10,l<0&&(l=0),l>10&&(l=10),i<2&&(i=2),i>10&&(i=10);let n=0,m=0;for(let o=0;oi){const y=(i-Fe[o])/(Fe[o+1]-Fe[o]);n=e[o][Math.floor(l)]*(1-y)+e[o+1][Math.floor(l)]*y,m=e[o][Math.ceil(l)]*(1-y)+e[o+1][Math.ceil(l)]*y;break}const a=l-Math.floor(l);return n*(1-a)+m*a}layeradd10(i){i=ci.fromValue_noAlloc(i).toNumber();const l=k(this);if(i>=1){l.mag<0&&l.layer>0?(l.sign=0,l.mag=0,l.layer=0):l.sign===-1&&l.layer==0&&(l.sign=1,l.mag=-l.mag);const e=Math.trunc(i);i-=e,l.layer+=e}if(i<=-1){const e=Math.trunc(i);if(i-=e,l.layer+=e,l.layer<0)for(let n=0;n<100;++n){if(l.layer++,l.mag=Math.log10(l.mag),!isFinite(l.mag))return l.sign===0&&(l.sign=1),l.layer<0&&(l.layer=0),l.normalize();if(l.layer>=0)break}}for(;l.layer<0;)l.layer++,l.mag=Math.log10(l.mag);return l.sign===0&&(l.sign=1,l.mag===0&&l.layer>=1&&(l.layer-=1,l.mag=1)),l.normalize(),i!==0?l.layeradd(i,10):l}layeradd(i,l){const n=this.slog(l).toNumber()+i;return n>=0?ci.tetrate(l,n):Number.isFinite(n)?n>=-1?ci.log(ci.tetrate(l,n+1),l):ci.log(ci.log(ci.tetrate(l,n+2),l),l):ci.dNaN}lambertw(){if(this.lt(-.3678794411710499))throw Error("lambertw is unimplemented for results less than -1, sorry!");if(this.mag<0)return k(Un(this.toNumber()));if(this.layer===0)return k(Un(this.sign*this.mag));if(this.layer===1)return Hn(this);if(this.layer===2)return Hn(this);if(this.layer>=3)return YI(this.sign,this.layer-1,this.mag);throw"Unhandled behavior in lambertw()"}ssqrt(){if(this.sign==1&&this.layer>=3)return YI(this.sign,this.layer-1,this.mag);const i=this.ln();return i.div(i.lambertw())}pentate(i=2,l=YI(1,0,1)){l=k(l);const e=i;i=Math.trunc(i);const n=e-i;n!==0&&(l.eq(ci.dOne)?(++i,l=new ci(n)):this.eq(10)?l=l.layeradd10(n):l=l.layeradd(n,this));for(let m=0;m10)return l}return l}sin(){return this.mag<0?this:this.layer===0?k(Math.sin(this.sign*this.mag)):YI(0,0,0)}cos(){return this.mag<0?ci.dOne:this.layer===0?k(Math.cos(this.sign*this.mag)):YI(0,0,0)}tan(){return this.mag<0?this:this.layer===0?k(Math.tan(this.sign*this.mag)):YI(0,0,0)}asin(){return this.mag<0?this:this.layer===0?k(Math.asin(this.sign*this.mag)):YI(Number.NaN,Number.NaN,Number.NaN)}acos(){return this.mag<0?k(Math.acos(this.toNumber())):this.layer===0?k(Math.acos(this.sign*this.mag)):YI(Number.NaN,Number.NaN,Number.NaN)}atan(){return this.mag<0?this:this.layer===0?k(Math.atan(this.sign*this.mag)):k(Math.atan(this.sign*(1/0)))}sinh(){return this.exp().sub(this.negate().exp()).div(2)}cosh(){return this.exp().add(this.negate().exp()).div(2)}tanh(){return this.sinh().div(this.cosh())}asinh(){return ci.ln(this.add(this.sqr().add(1).sqrt()))}acosh(){return ci.ln(this.add(this.sqr().sub(1).sqrt()))}atanh(){return this.abs().gte(1)?YI(Number.NaN,Number.NaN,Number.NaN):ci.ln(this.add(1).div(k(1).sub(this))).div(2)}ascensionPenalty(i){return i===0?this:this.root(ci.pow(10,i))}egg(){return this.add(9)}lessThanOrEqualTo(i){return this.cmp(i)<1}lessThan(i){return this.cmp(i)<0}greaterThanOrEqualTo(i){return this.cmp(i)>-1}greaterThan(i){return this.cmp(i)>0}};let I=ci;I.dZero=YI(0,0,0);I.dOne=YI(1,0,1);I.dNegOne=YI(-1,0,1);I.dTwo=YI(1,0,2);I.dTen=YI(1,0,10);I.dNaN=YI(Number.NaN,Number.NaN,Number.NaN);I.dInf=YI(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);I.dNegInf=YI(-1,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY);I.dNumberMax=JI(1,0,Number.MAX_VALUE);I.dNumberMin=JI(1,0,Number.MIN_VALUE);const Zc=new I(1);function rs(i,l,e=!0){let n=I.log10(i).floor(),m=I.div(i,I.pow(10,n));m.toStringWithDecimalPlaces(l)==="10"&&(m=Zc,n=n.add(1));const a=n.gte(1e9)?WI(n,Math.max(Math.max(l,3),QI.defaultDecimalsShown)):n.gte(1e4)?Hs(n,0):n.toStringWithDecimalPlaces(0);return e?m.toStringWithDecimalPlaces(l)+"e"+a:"e"+a}function Hs(i,l){if(i==null)return"NaN";if(i=new I(i),i.mag<.001)return 0 .toFixed(l);const n=i.toStringWithDecimalPlaces(l).split(".");return n[0]=n[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"),n.length==1?n[0]:n[0]+"."+n[1]}function Vm(i,l){return i==null?"NaN":(i=new I(i),i.mag<1e-4?0 .toFixed(l):(i.mag<.1&&l!==0&&(l=Math.max(Math.max(l,i.log10().negate().ceil().toNumber()),QI.defaultDecimalsShown)),i.toStringWithDecimalPlaces(l)))}const oc=new I("eeee1000"),bc=new I("e100000"),An=new I("e1000"),Jm=new I(1e9),yc=new I(1e6),jc=new I(1e3),uc=new I(.98),Vc=new I(.001),Wm=new I(0);function WI(i,l,e){if(l==null&&(l=QI.defaultDecimalsShown),e=e!=null?e:QI.defaultShowSmall,i=new I(i),isNaN(i.sign)||isNaN(i.layer)||isNaN(i.mag))return"NaN";if(i.sign<0)return"-"+WI(i.neg(),l);if(i.mag===Number.POSITIVE_INFINITY)return"Infinity";if(i.gte(oc)){const n=i.slog();return n.gte(yc)?"F"+WI(n.floor()):I.pow(10,n.sub(n.floor())).toStringWithDecimalPlaces(3)+"F"+Hs(n.floor(),0)}else{if(i.gte(bc))return rs(i,0,!1);if(i.gte(An))return rs(i,0);if(i.gte(Jm))return rs(i,l);if(i.gte(jc))return Hs(i,0);if(i.gte(Vc)||!e)return Vm(i,l);if(i.eq(Wm))return 0 .toFixed(l)}return i=pm(i),i.lt(An)?rs(i,l).replace(/([^(?:e|F)]*)$/,"-$1"):WI(i,l)+"\u207B\xB9"}function yI(i){return i=new I(i),i.sign<0?"-"+yI(i.neg()):i.gte(Jm)||i.lte(uc)&&!i.eq(Wm)?WI(i):WI(i,0)}function On(i,l){return l==null&&(l=QI.defaultDecimalsShown),I.lt(i,0)?"-"+On(I.neg(i),l):I.gt(i,2**51)?WI(I.div(i,31536e3))+"y":(i=new I(i).toNumber(),i<60?WI(i)+"s":i<3600?yI(Math.floor(i/60))+"m "+WI(i%60,l)+"s":i<86400?yI(Math.floor(i/3600))+"h "+yI(Math.floor(i/60)%60)+"m "+yI(i%60)+"s":i<31536e3?yI(Math.floor(i/84600)%365)+"d "+yI(Math.floor(i/3600)%24)+"h "+yI(Math.floor(i/60)%60)+"m":yI(Math.floor(i/31536e3))+"y "+yI(Math.floor(i/84600)%365)+"d "+yI(Math.floor(i/3600)%24)+"h")}function Jc(i,l,e){i=new I(i);let n=i.toStringWithDecimalPlaces(l);return new I(n).gte(e)&&(n=I.sub(e,Math.pow(.1,l)).toStringWithDecimalPlaces(l)),n}function Wc(i,l){return WI(i,l,!0)}function pm(i){let l=I.log10(i).ceil();const e=I.div(i,I.pow(10,l));return l=l.neg(),i=new I(10).pow(l).times(e),i}function Mm(i,l,e=I.dOne){let n=i[0][0],m=i[0][1];for(let a=1;a(i.Up="UP",i.Down="DOWN",i.Left="LEFT",i.Right="RIGHT",i.Default="UP",i))(Yi||{});const Cs=Symbol("DoNotCache");function Vi(i,l){const e=i[l];Es(e)&&e.length===0&&!e[Cs]?i[l]=b(e.bind(i)):Es(e)&&(i[l]=e.bind(i),i[l][Cs]=!0)}function nl(i){return Es(i)&&!i[Cs]&&(i=b(i)),i}const El=Symbol("Component"),me=Symbol("GatherProps");let hc=0;function ue(i="feature-"){return i+hc++}var MI=(i=>(i[i.Visible=0]="Visible",i[i.Hidden=1]="Hidden",i[i.None=2]="None",i))(MI||{});function r(i){return i[Cs]=!0,i}function j(i,l=2){return i?0:l}function kI(i,l,e){i[l]===void 0&&e!=null&&(i[l]=e)}function Cn(i,...l){const e=[],n=m=>{Object.keys(m).forEach(a=>{const Z=m[a];Z!=null&&typeof Z=="object"&&(l.includes(Z.type)?e.push(Z):!(Z instanceof I)&&!dl(Z)&&n(Z))})};return n(i),e}const ke={variables:{"--foreground":"#dfdfdf","--background":"#0f0f0f","--feature-foreground":"#0f0f0f","--tooltip-background":"rgba(0, 0, 0, 0.75)","--raised-background":"#0f0f0f","--points":"#ffffff","--locked":"#bf8f8f","--highlighted":"#333","--bought":"#77bf5f","--danger":"rgb(220, 53, 69)","--link":"#02f2f2","--outline":"#dfdfdf","--accent1":"#627a82","--accent2":"#658262","--accent3":"#7c6282","--border-radius":"15px","--modal-border":"solid 2px var(--color)","--feature-margin":"0px"},floatingTabs:!0,mergeAdjacent:!0,showPin:!0};var hn=(i=>(i.Classic="classic",i.Paper="paper",i.Nordic="nordic",i.Aqua="aqua",i))(hn||{}),ae={classic:ke,paper:{...ke,variables:{...ke.variables,"--background":"#2a323d","--feature-foreground":"#000","--raised-background":"#333c4a","--locked":"#3a3e45","--bought":"#5C8A58","--outline":"#333c4a","--border-radius":"4px","--modal-border":"","--feature-margin":"5px"},floatingTabs:!1},nordic:{...ke,variables:{...ke.variables,"--foreground":"#D8DEE9","--background":"#2E3440","--feature-foreground":"#000","--raised-background":"#3B4252","--points":"#E5E9F0","--locked":"#4c566a","--highlighted":"#434c5e","--bought":"#8FBCBB","--danger":"#D08770","--link":"#88C0D0","--outline":"#3B4252","--accent1":"#B48EAD","--accent2":"#A3BE8C","--accent3":"#EBCB8B","--border-radius":"4px","--modal-border":"solid 2px #3B4252","--feature-margin":"5px"},floatingTabs:!1},aqua:{...ke,variables:{...ke.variables,"--foreground":"#bfdfff","--background":"#001f3f","--tooltip-background":"rgba(0, 15, 31, 0.75)","--raised-background":"#001f3f","--points":"#dfefff","--locked":"#c4a7b3","--outline":"#bfdfff"}}};const NI=bm();document.fonts.onloadingdone=()=>NI.emit("fontsLoaded");var Yc=Object.freeze(Object.defineProperty({__proto__:null,globalBus:NI},Symbol.toStringTag,{value:"Module"}));var OI=(i,l)=>{const e=i.__vccOpts||i;for(const[n,m]of l)e[n]=m;return e};const vc=iI({__name:"Context",emits:["updateNodes"],setup(i,{emit:l}){var w;const e=Ji({}),n=new ResizeObserver(o),m=Ji(null);bs(()=>{const W=m.value;W!=null&&n.observe(W)});let a=!0,Z=Ji((w=m.value)==null?void 0:w.getBoundingClientRect());function o(){a&&(a=!1,De(()=>{var W;Z.value=(W=m.value)==null?void 0:W.getBoundingClientRect(),Object.values(e.value).filter(N=>N).forEach(N=>N.rect=N.element.getBoundingClientRect()),l("updateNodes",e.value),a=!0}))}NI.on("fontsLoaded",o);const y={attributes:!1,childList:!0,subtree:!1};Ds(vn,(W,N)=>{const p=new MutationObserver(()=>u(W));p.observe(N,y),e.value[W]={element:N,observer:p,rect:N.getBoundingClientRect()},o()}),Ds(Xn,W=>{var N;(N=e.value[W])==null||N.observer.disconnect(),e.value[W]=void 0,o()}),Ds(zn,e),Ds(Rn,Z);function u(W){const N=e.value[W];N!=null&&(N.rect=N.element.getBoundingClientRect(),l("updateNodes",e.value))}return(W,N)=>(h(),S(M,null,[ie(W.$slots,"default",{},void 0,!0),X("div",{ref_key:"resizeListener",ref:m,class:"resize-listener"},null,512)],64))}});var Nm=OI(vc,[["__scopeId","data-v-2b1dc1bc"]]);const Xc=["onPointerdown"],zc={class:"modal-wrapper"},Rc={class:"modal-container"},Gc={class:"modal-header"},fc={class:"modal-body"},xc={class:"modal-footer"},Dc=X("div",{class:"modal-default-flex-grow"},null,-1),EI=iI({__name:"Modal",props:{modelValue:{type:Boolean}},emits:["update:modelValue"],setup(i,{expose:l,emit:e}){const m=cl(i),a=b(()=>c(m.modelValue)||o.value);function Z(){e("update:modelValue",!1)}const o=Ji(!1),y=Ji(null),u=b(()=>{var w,W;return(W=(w=y.value)==null?void 0:w.nodes)!=null?W:null});return l({isOpen:a,nodes:u}),(w,W)=>(h(),eI(jd,{to:"#modal-root"},[s(Ae,{name:"modal",onBeforeEnter:W[0]||(W[0]=N=>o.value=!0),onAfterLeave:W[1]||(W[1]=N=>o.value=!1)},{default:Bi(()=>[zs(X("div",Ne({class:"modal-mask",onPointerdown:as(Z,["self"])},w.$attrs),[X("div",zc,[X("div",Rc,[X("div",Gc,[ie(w.$slots,"header",{shown:c(a)},()=>[d(" default header ")])]),X("div",fc,[s(Nm,{ref_key:"contextRef",ref:y},{default:Bi(()=>[ie(w.$slots,"body",{shown:c(a)},()=>[d(" default body ")])]),_:3},512)]),X("div",xc,[ie(w.$slots,"footer",{shown:c(a)},()=>[X("div",{class:"modal-default-footer"},[Dc,X("button",{class:"button modal-default-button",onClick:Z}," Close ")])])])])])],16,Xc),[[wn,i.modelValue]])]),_:3})]))}}),yl=Symbol("ProxyState"),ds=Symbol("ProxyPath");function fl(i,l={}){const e=l;let n=!1;function m(){return n||(Object.assign(e,i(e)),n=!0),e}return new Proxy(e,{get(a,Z){if(Z===yl)return m();const o=m()[Z];return o!=null&&typeof o=="object"&&hs in o?o[hs]:o},set(a,Z,o){return m()[Z]=o,!0},has(a,Z){return Z===yl?!0:Reflect.has(m(),Z)},ownKeys(){return Reflect.ownKeys(m())},getOwnPropertyDescriptor(a,Z){return n||(Object.assign(e,i(e)),n=!0),Object.getOwnPropertyDescriptor(a,Z)}})}const Yn=Symbol("PersistentState"),we=Symbol("DefaultValue"),Bs=Symbol("StackTrace"),Ps=Symbol("Deleted"),hs=Symbol("NonPersistent"),ws=Symbol("SaveDataPath");function Sc(){var i,l;return(l=(i=new Error().stack)==null?void 0:i.split(` +`).slice(3,5).map(e=>e.trim()).join(` +`))!=null?l:""}function t(i){const l=dl(i)?i:Ji(i);l[Yn]=l,l[we]=dl(i)?i.value:i,l[Bs]=Sc(),l[Ps]=!1;const e=b({get(){return l.value},set(n){l.value=n}});return e[we]=l[we],l[hs]=e,l[ws]=void 0,Tl.length===0?console.warn("Creating a persistent ref outside of a layer. This is not officially supported",l,` +Created at: +`+l[Bs]):Ee[Tl[Tl.length-1]].add(l),l}function Om(i){return i!=null&&typeof i=="object"&&Yn in i}function $(i){return i[hs]}function Lc(i){Tl.length===0?console.warn("Deleting a persistent ref outside of a layer. Ignoring...",i):Ee[Tl[Tl.length-1]].delete(i),i[Ps]=!0}NI.on("addLayer",(i,l)=>{const e=[],n=(m,a=[])=>{let Z=!1;return Object.keys(m).forEach(o=>{let y=m[o];if(y!=null&&typeof y=="object")if(yl in y&&(y=y[yl]),Om(y)){if(Z=!0,y[Ps]){console.warn("Deleted persistent ref present in returned object. Ignoring...",y,` +Created at: +`+y[Bs]);return}Ee[i.id].delete(y);const u=[i.id,...a,o];y[ws]!=null&&JSON.stringify(u)!==JSON.stringify(y[ws])&&console.error(`Persistent ref is being saved to \`${u.join(".")}\` when it's already present at \`${y[ws].join(".")}\`. This can cause unexpected behavior when loading saves between updates.`,y),y[ws]=u;const w=a.reduce((N,p)=>(p in N||(N[p]={}),N[p]),l),W=w[o];w[o]=y[Yn],ud(w)?W!=null?w[o]=W:w[o]=y[we]:W!=null?w[o].value=W:w[o].value=y[we]}else!(y instanceof I)&&!dl(y)&&!e.includes(y)&&(typeof y.type=="symbol"&&e.push(y),n(y,[...a,o])&&(ts(y)&&!ts(m)?console.warn("Found array that contains persistent values when adding layer. Keep in mind changing the order of elements in the array will mess with existing player saves.",yl in m?m[yl]:m,o):Z=!0))}),Z};n(i[yl]),Ee[i.id].forEach(m=>{m[Ps]||console.error(`Created persistent ref in ${i.id} without registering it to the layer! Make sure to include everything persistent in the returned object`,m,` +Created at: +`+m[Bs])}),Ee[i.id].clear()});var rl=window.state=en({lastTenTicks:[],hasNaN:!1,NaNPath:[]}),Kl=(i=>(i[i.AsIntended=0]="AsIntended",i[i.IgnoreMonth=1]="IgnoreMonth",i[i.IgnoreDay=2]="IgnoreDay",i))(Kl||{});const Cm=xe({id:"",devSpeed:null,name:"",tabs:[],time:-1,autosave:!0,offlineProd:!0,offlineTime:null,timePlayed:0,keepGoing:!1,modID:"",modVersion:"",layers:{},ignoreDate:0,autoPause:!0});function hm(i){return JSON.stringify(i,(l,e)=>c(e))}const Ym={get(i,l){var n;if(l===yl||l===ds)return i[l];const e=i[yl][l];if(l!=="value"&&(wd(e)||Array.isArray(e))){if(e!==((n=i[l])==null?void 0:n[yl])){const m=[...i[ds],l];i[l]=new Proxy({[yl]:e,[ds]:m},Ym)}return i[l]}return e},set(i,l,e,n){if(!rl.hasNaN&&(typeof e=="number"&&isNaN(e)||e instanceof I&&(isNaN(e.sign)||isNaN(e.layer)||isNaN(e.mag)))){const m=i[yl][l];if(!(typeof m=="number"&&isNaN(m)||m instanceof I&&(isNaN(m.sign)||isNaN(m.layer)||isNaN(m.mag))))throw Cm.autosave=!1,rl.hasNaN=!0,rl.NaNPath=[...i[ds],l],rl.NaNReceiver=n,console.error("Attempted to set NaN value",[...i[ds],l],i[yl]),"Attempted to set NaN value. See above for details"}return i[yl][l]=e,!0},ownKeys(i){return Reflect.ownKeys(i[yl])},has(i,l){return Reflect.has(i[yl],l)},getOwnPropertyDescriptor(i,l){return Object.getOwnPropertyDescriptor(i[yl],l)}};var Qi=window.player=new Proxy({[yl]:Cm,[ds]:["player"]},Ym);const vn=Symbol("RegisterNode"),Xn=Symbol("UnregisterNode"),zn=Symbol("Nodes"),Rn=Symbol("Bounds"),CI=en({});window.layers=CI;const Ee={},Tl=[];function al(i,l){return fl(()=>{const e={},n=e.emitter=bm();if(e.on=n.on.bind(n),e.emit=n.emit.bind(n),e.nodes=Ji({}),e.id=i,Tl.push(i),Ee[i]=new Set,e.minimized=t(!1),Object.assign(e,l.call(e)),Tl[Tl.length-1]==null||Tl[Tl.length-1]!==i)throw`Adding layers stack in invalid state. This should not happen +Stack: ${Tl} +Trying to pop ${e.id}`;Tl.pop(),Vi(e,"color"),Vi(e,"display"),Vi(e,"classes"),Vi(e,"style"),Vi(e,"name"),kI(e,"name",e.id),Vi(e,"minWidth"),kI(e,"minWidth",600),Vi(e,"minimizable"),kI(e,"minimizable",!0),Vi(e,"minimizedDisplay");const m=e.style;return e.style=b(()=>{var Z,o;let a=c(e.minWidth);return(typeof a=="number"||!Number.isNaN(parseInt(a)))&&(a=a+"px"),[(Z=c(m))!=null?Z:"",(o=e.minimized)!=null&&o.value?{flexGrow:"0",flexShrink:"0",width:"60px",minWidth:"",flexBasis:"",margin:"0"}:{flexGrow:"",flexShrink:"",width:"",minWidth:a,flexBasis:a,margin:""}]}),e})}function vm(i,l){if(console.info("Adding layer",i.id),CI[i.id]){console.error("Attempted to add layer with same ID as existing layer",i.id,CI[i.id]);return}kI(l,"layers",{}),l.layers[i.id]==null&&(l.layers[i.id]={}),CI[i.id]=i,NI.emit("addLayer",i,l.layers[i.id])}function Tc(i){return CI[i]}function Xm(i){console.info("Removing layer",i.id),NI.emit("removeLayer",i),CI[i.id]=void 0}function Fc(i){Xm(i),vm(i,Qi)}function kc(i){const l=Ji(!1);return{openModal:()=>l.value=!0,modal:r(()=>s(EI,{modelValue:l.value,"onUpdate:modelValue":e=>l.value=e},{header:()=>s("h2",null,[c(i.name)]),body:c(i.display)}))}}NI.on("update",function(l){Object.values(CI).forEach(e=>{e==null||e.emit("preUpdate",l)}),Object.values(CI).forEach(e=>{e==null||e.emit("update",l)}),Object.values(CI).forEach(e=>{e==null||e.emit("postUpdate",l)})});var gc=Object.freeze(Object.defineProperty({__proto__:null,RegisterNodeInjectionKey:vn,UnregisterNodeInjectionKey:Xn,NodesInjectionKey:zn,BoundsInjectionKey:Rn,layers:CI,persistentRefs:Ee,addingLayers:Tl,createLayer:al,addLayer:vm,getLayer:Tc,removeLayer:Xm,reloadLayer:Fc,setupLayerModal:kc},Symbol.toStringTag,{value:"Module"}));function zm(i={}){return Object.assign({id:`${QI.id}-0`,name:"Default Save",tabs:QI.initialTabs.slice(),time:Date.now(),autosave:!0,offlineProd:!0,offlineTime:0,timePlayed:0,keepGoing:!1,modID:QI.id,modVersion:QI.versionNumber,layers:{}},i)}function Fl(i){const l=Ge.compressToUTF16(hm(i!=null?i:Qi[yl]));return localStorage.setItem((i!=null?i:Qi[yl]).id,l),l}async function Qc(){Hc();try{let i=localStorage.getItem(UI.active);if(i==null){await He(cs());return}if(i[0]!=="{")if(i[0]==="e")i=decodeURIComponent(escape(atob(i)));else if(i[0]==="\u1BE1")i=Ge.decompressFromUTF16(i);else throw"Unable to determine save encoding";const l=JSON.parse(i);if(l.modID!==QI.id){await He(cs());return}l.id=UI.active,await He(l)}catch(i){console.error(`Failed to load save. Falling back to new save. +`,i),await He(cs())}}function cs(){const i=gs(),l=zm({id:i});return Fl(l),UI.saves.push(i),l}function gs(){let i,l=0;do i=`${QI.id}-${l++}`;while(localStorage.getItem(i)!=null);return i}const sn=Ji(!1);async function He(i){console.info("Loading save",i),sn.value=!0;const{layers:l,removeLayer:e,addLayer:n}=await Os(()=>Promise.resolve().then(function(){return gc}),void 0),{fixOldSave:m,getInitialLayers:a}=await Os(()=>Promise.resolve().then(function(){return wo}),void 0);for(const Z in l){const o=l[Z];o&&e(o)}a(i).forEach(Z=>n(Z,i)),i=zm(i),i.offlineProd&&i.time!=null&&i.time&&i.devSpeed!==0&&(i.offlineTime==null&&(i.offlineTime=0),i.offlineTime+=Math.min(i.offlineTime+(Date.now()-i.time)/1e3,QI.offlineLimit*3600)),i.time=Date.now(),i.modVersion!==QI.versionNumber&&(m(i.modVersion,i),i.modVersion=QI.versionNumber),Object.assign(Qi,i),UI.active=Qi.id,NI.emit("onLoad")}setInterval(()=>{Qi.autosave&&(CI.main.day.value>=25||CI.main.days[CI.main.day.value-1].opened.value)&&Fl()},1e3);window.onbeforeunload=()=>{Qi.autosave&&(CI.main.day.value>=25||CI.main.days[CI.main.day.value-1].opened.value||!1)&&Fl()};window.save=Fl;const Uc=window.hardReset=async()=>{await He(cs())},Ys=xe({active:"",saves:[],showTPS:!0,theme:hn.Nordic,unthrottled:!1,usingLog:!1,alignUnits:!1});oe(Ys,i=>{const l=Ge.compressToUTF16(JSON.stringify(i));localStorage.setItem(QI.id,l)},{deep:!0});var UI=window.settings=Ys;window.hardResetSettings=()=>{const i={active:"",saves:[],showTPS:!0,theme:hn.Nordic,usingLog:!1,alignUnits:!1};NI.emit("loadSettings",i),Object.assign(Ys,i),Uc()};function Hc(){try{let i=localStorage.getItem(QI.id);if(i!=null&&i!==""){if(i[0]!=="{")if(i[0]==="e")i=decodeURIComponent(escape(atob(i)));else if(i[0]==="\u1BE1")i=Ge.decompressFromUTF16(i);else{console.warn("Unable to determine settings encoding",i);return}const l=JSON.parse(i);typeof l=="object"&&Object.assign(Ys,l)}NI.emit("loadSettings",Ys)}catch{}}const Rm=xe([]);function Ac(i){Rm.push(i)}const Gm=xe([]);function Ec(i){Gm.push(i)}const Bc=xe([]),Pc={class:"table"},kl=iI({__name:"Column",setup(i){const l=b(()=>ae[UI.theme].mergeAdjacent);return(e,n)=>(h(),S("div",Pc,[X("div",{class:LI(["col",{mergeAdjacent:c(l)}])},[ie(e.$slots,"default")],2)]))}}),_c={class:"table"},Be=iI({__name:"Row",setup(i){const l=b(()=>ae[UI.theme].mergeAdjacent);return(e,n)=>(h(),S("div",_c,[X("div",{class:LI(["row",{mergeAdjacent:c(l)}])},[ie(e.$slots,"default")],2)]))}});function Gn(i){return typeof i=="function"||Object.prototype.toString.call(i)==="[object Object]"&&!Vd(i)}function GI(i,l="span"){return typeof i=="function"?iI({render:i}):typeof i=="string"?i.length>0?(i=i.trim(),i.charAt(0)!=="<"&&(i=`<${l}>${i}`),iI({template:i})):iI({render:()=>({})}):i}function hi(i){if(le(i))return typeof i=="function"?i():GI(i);const l=i[El];return s(l,i[me](),null)}function zI(...i){let l;return s(Be,null,Gn(l=i.map(hi))?l:{default:()=>[l]})}function Ie(...i){let l;return s(kl,null,Gn(l=i.map(hi))?l:{default:()=>[l]})}function xl(...i){return s("div",{class:"table-grid"},[i.map(l=>s("div",{class:{["row-grid"]:!0,mergeAdjacent:ae[UI.theme].mergeAdjacent}},[l.map(hi)]))])}function te(i){if(le(i))return typeof i=="function"?i():typeof i=="string"?s(M,null,[i]):s(i,null,null);const l=i[El];return s(l,i[me](),null)}function qc(...i){let l;return s(kl,null,Gn(l=i.map(te))?l:{default:()=>[l]})}function le(i){return typeof i=="string"?!0:typeof i=="object"?i==null?!1:"render"in i||"component"in i:typeof i=="function"&&i[Cs]===!0}function fm(i,l,e){const n=Ji(null),m=Ji(void 0);function a(y){n.value||(n.value=setInterval(o,250)),m.value=y,e&&(e.value=!0)}function Z(){n.value&&(clearInterval(n.value),n.value=null),e&&(e.value=!1)}function o(){l&&l.value?l.value():i&&i.value&&i.value(m.value)}return om(Z),{start:a,stop:Z,handleHolding:o}}function $c(i,l){const e=b(()=>i.filter(n=>c(n.visibility)===MI.Visible&&l(n)));return{firstFeature:b(()=>e.value[0]),collapsedContent:r(()=>Ie(...e.value.slice(1))),hasCollapsedContent:b(()=>e.value.length>1)}}function os(i,l="div"){const e=Rl();return AI(()=>{e.value=GI(jl(i),l)}),e}function Oe(i,l="div"){const e=Rl(null);return AI(()=>{const n=jl(i);e.value=n==""||n==null?null:GI(n,l)}),e}function jl(i){return c(c(i))}function Ti(...i){return i.includes(Object)||i.push(Object),i}const ti=iI({__name:"Spacer",props:{width:{default:"8px"},height:{default:"17px"}},setup(i){return(l,e)=>(h(),S("div",{style:BI({width:i.width,height:i.height})},null,4))}});Nd.add(Od,Cd);var Kc=iI({props:{style:Ti(String,Object,Array),classes:Ti(Object),onInit:{type:Function,required:!0},id:{type:String,required:!0},onContainerResized:Function,onHotReload:Function},setup(i){const l=Rl(null),e=new ResizeObserver(a),n=Rl(null);bs(()=>{var o,y;const Z=n.value;Z!=null&&(e.observe(Z),l.value=new ym({resizeTo:Z,backgroundAlpha:0}),(o=n.value)==null||o.appendChild(l.value.view),(y=i.onInit)==null||y.call(i,l.value)),a(),i.onHotReload&&De(i.onHotReload)}),Jd(()=>{var Z;(Z=l.value)==null||Z.destroy()});let m=!0;function a(){m&&(m=!1,De(()=>{var Z;n.value!=null&&((Z=i.onContainerResized)==null||Z.call(i,n.value.getBoundingClientRect())),m=!0}))}return NI.on("fontsLoaded",a),{unref:c,resizeListener:n}}});function ia(i,l,e,n,m,a){return h(),S("div",{ref:"resizeListener",class:LI(["resize-listener",i.unref(i.classes)]),style:BI(i.unref(i.style))},null,6)}var Ia=OI(Kc,[["render",ia],["__scopeId","data-v-2cea0e1c"]]);const la=Symbol("Particles");function ea(i){return fl(()=>{var m,a;const l=(m=i==null?void 0:i())!=null?m:{};l.id=ue("particles-"),l.type=la,l[El]=Ia,l.app=Rl(null),l.addEmitter=Z=>{const o=l;return o.app.value?Promise.resolve(new Fn(o.app.value.stage,Z)):new Promise(y=>{e.push({resolve:y,config:Z})})};let e=[];function n(Z){const o=l;o.app.value=Z,e.forEach(({resolve:y,config:u})=>y(new Fn(Z.stage,u))),e=[]}return l.onContainerResized=(a=l.onContainerResized)==null?void 0:a.bind(l),l[me]=function(){const{id:Z,style:o,classes:y,onContainerResized:u,onHotReload:w}=this;return{id:Z,style:c(o),classes:y,onContainerResized:u,onHotReload:w,onInit:n}},l})}window.upgradeConfig=hd;const sa=[{name:"Trees",creator:"thepaperpilot",help:"Jacorb, Escapee"},{name:"The Workshop",creator:"thepaperpilot",help:"Jacorb, emanresu"},{name:"Coal",creator:"Escapee",help:"Jacorb, thepaperpilot"},{name:"Elf Training",creator:"thepaperpilot",help:"incremental_gamer, emanresu"},{name:"Paper",creator:"thepaperpilot",help:"Adsaf"},{name:"Boxes",creator:"thepaperpilot",help:"ducdat0507"},{name:"Metal",creator:"Escapee",help:"ducdat0507, thepaperpilot, yhvr"},{name:"Cloth",creator:"thepaperpilot",help:"emanresu, Jacorb"},{name:"Oil",creator:"ducdat0507",help:"thepaperpilot, Jacorb, incremental_gamer"},{name:"Plastic",creator:"thepaperpilot",help:"Jacorb"},{name:"Dyes",creator:"Jacorb",help:"thepaperpilot, ducdat0507"},{name:"Management",creator:"incremental_gamer, downvoid, thepaperpilot, Escapee"},{name:"Management II",creator:"incremental_gamer, downvoid, thepaperpilot, Escapee"},{name:"Letters",creator:"thepaperpilot"},{name:"Wrapping Paper",creator:"emanresu, thepaperpilot, Escapee",fs:"28px"},{name:"Ribbons",creator:"thepaperpilot, Escapee"},{name:"Toys",creator:"downvoid",help:"thepaperpilot"},{name:"Factory",creator:"incremental_gamer",help:"thepaperpilot, ducdat, downvoid, emanresu, yhvr",other:["Art by emanresu"]},{name:"Factory II",creator:"downvoid",help:"thepaperpilot",other:["Art by emanresu"]},{name:"Presents",creator:"incremental_gamer",help:"ducdat0507",other:["Art by emanresu"]},{name:"Reindeer",creator:"thepaperpilot"},{name:"Sleigh Repair",creator:"downvoid",help:"ducdat0507"},{name:"Routing",creator:"thepaperpilot, ducdat0507"},{name:"Present Packing",creator:"Escapee, emanresu",help:"thepaperpilot",fs:"26px"}],na=r(()=>s("div",{style:"text-align: center; line-spacing: 5px; width: 700px"},[s("h1",null,[d("Advent Incremental")]),s("br",null,null),s("h2",null,[d("Created by thepaperpilot and friends")]),s(ti,null,null),sa.map(({name:i,help:l,other:e,creator:n,fs:m},a)=>hi(r(()=>{var Z,o,y;return s("div",{style:"position: relative"},[s("span",{style:"width: calc(100% - 260px); display: inline-block;"},[s("h1",{style:{color:c((y=(o=CI[(Z=V.days[a].layer)!=null?Z:""])==null?void 0:o.color)!=null?y:"white"),fontSize:m!=null?m:"30px"}},[d("Day "),a+1,d(" - "),i]),s("br",null,null),s("br",null,null),d("Created by "),n,d(" "),s("br",null,null),l!=null?s(M,null,[d("With help from "),l,s("br",null,null)]):void 0,e?e==null?void 0:e.map(u=>s(M,null,[u,s("br",null,null)])):void 0,s("br",null,null),s("br",null,null)]),s("img",{style:`position: absolute; top: 5px; ${a%2?"left":"right"}: 20px; width: 100px;`,src:V.days[a].symbol},null)])}))),s("h1",null,[d("Special Thanks")]),s("p",null,[d("Nekosity")]),s("p",null,[d("Yhvr")]),s("p",null,[d("Ducdat0507")]),s("p",null,[d("Haley")]),s("p",null,[d("emanresu")]),s("br",null,null),s("p",{style:"width: 600px"},[d("And last but not least, a massive thanks to everyone who played and provided feedback on the game.")]),s(ti,null,null),s("h1",{style:"font-family: 'Great Vibes', cursive"},[d("Thanks for playing!")]),s(ti,null,null)]));const ma={},da={class:"notif"};function ca(i,l){return h(),S("div",da,"!")}var En=OI(ma,[["render",ca],["__scopeId","data-v-66323fd4"]]),aa=iI({props:{element:Object,display:{type:Ti(Object,String,Function),required:!0},style:Ti(Object,String,Array),classes:Ti(Object),direction:Ti(String),xoffset:Ti(String),yoffset:Ti(String),pinned:Object},setup(i){const{element:l,display:e,pinned:n}=cl(i),m=Ji(!1),a=b(()=>(jl(n)||m.value)&&Z.value),Z=Oe(e),o=Rl(GI(r(()=>{const w=jl(l);return w==null?"":te(w)})));function y(w){const W=n;w.shiftKey&&W&&(W.value=!W.value,w.stopPropagation(),w.preventDefault())}const u=b(()=>jl(n)&&ae[UI.theme].showPin);return{Direction:Yi,isHovered:m,isShown:a,comp:Z,elementComp:o,unref:c,togglePinned:y,showPin:u}}});const ta={key:0,class:"material-icons pinned"};function Za(i,l,e,n,m,a){return h(),S("div",{class:LI(["tooltip-container",{shown:i.isShown}]),onMouseenter:l[0]||(l[0]=Z=>i.isHovered=!0),onMouseleave:l[1]||(l[1]=Z=>i.isHovered=!1),onClickCapture:l[2]||(l[2]=(...Z)=>i.togglePinned&&i.togglePinned(...Z))},[ie(i.$slots,"default",{},void 0,!0),i.elementComp?(h(),eI(qI(i.elementComp),{key:0})):oi("",!0),s(Ae,{name:"fade"},{default:Bi(()=>{var Z;return[i.isShown?(h(),S("div",{key:0,class:LI(["tooltip",{top:i.unref(i.direction)===i.Direction.Up,left:i.unref(i.direction)===i.Direction.Left,right:i.unref(i.direction)===i.Direction.Right,bottom:i.unref(i.direction)===i.Direction.Down,...i.unref(i.classes)}]),style:BI([{"--xoffset":i.unref(i.xoffset)||"0px","--yoffset":i.unref(i.yoffset)||"0px"},(Z=i.unref(i.style))!=null?Z:{}])},[i.showPin?(h(),S("span",ta,"push_pin")):oi("",!0),i.comp?(h(),eI(qI(i.comp),{key:1})):oi("",!0)],6)):oi("",!0)]}),_:1})],34)}var KI=OI(aa,[["render",Za],["__scopeId","data-v-6102fa3a"]]);const oa=iI({__name:"Collapsible",props:{collapsed:null,display:null,content:null},setup(i){const l=i,e=os(se(l,"display")),n=os(se(l,"content"));return(m,a)=>(h(),eI(kl,{class:"collapsible-container"},{default:Bi(()=>[X("button",{onClick:a[0]||(a[0]=Z=>i.collapsed.value=!i.collapsed.value),class:"feature collapsible-toggle"},[(h(),eI(qI(c(e))))]),i.collapsed.value?oi("",!0):(h(),eI(qI(c(n)),{key:0}))]),_:1}))}});var ba=OI(oa,[["__scopeId","data-v-a72c16aa"]]);const ya={key:0},ja={key:0,class:"mark star"},ua=["src"],Va=iI({__name:"MarkNode",props:{mark:{type:[Boolean,String]}},setup(i){return(l,e)=>i.mark?(h(),S("div",ya,[i.mark===!0?(h(),S("div",ja)):(h(),S("img",{key:1,class:"mark",src:i.mark},null,8,ua))])):oi("",!0)}});var nn=OI(Va,[["__scopeId","data-v-2207999f"]]);const Ja=iI({__name:"Node",props:{id:null},setup(i){const e=cl(i),n=Us(vn,()=>{}),m=Us(Xn,()=>{}),a=Rl(null),Z=b(()=>a.value&&a.value.parentElement);return oe([Z,e.id],([o,y],[u,w])=>{u&&m(c(w)),o&&n(y,o)}),om(()=>m(c(e.id))),(o,y)=>(h(),S("div",{class:"node",ref_key:"node",ref:a},null,512))}});var Rs=OI(Ja,[["__scopeId","data-v-a48cb382"]]);const Wa=iI({props:{progress:{type:Ti(String,Object,Number),required:!0},width:{type:Ti(Number),required:!0},height:{type:Ti(Number),required:!0},direction:{type:Ti(String),required:!0},display:Ti(Object,String,Function),visibility:{type:Ti(Number),required:!0},style:Ti(Object,String,Array),classes:Ti(Object),borderStyle:Ti(Object,String,Array),textStyle:Ti(Object,String,Array),baseStyle:Ti(Object,String,Array),fillStyle:Ti(Object,String,Array),mark:Ti(Boolean,String),id:{type:String,required:!0}},components:{MarkNode:nn,Node:Rs},setup(i){const{progress:l,width:e,height:n,direction:m,display:a}=cl(i),Z=b(()=>{let u=l.value instanceof I?l.value.toNumber():Number(l.value);return(1-Math.min(Math.max(u,0),1))*100}),o=b(()=>{const u={width:jl(e)+.5+"px",height:jl(n)+.5+"px"};switch(c(m)){case Yi.Up:u.clipPath=`inset(${Z.value}% -1px -1px -1px)`,u.width=jl(e)+1+"px";break;case Yi.Down:u.clipPath=`inset(-1px -1px ${Z.value}% -1px)`,u.width=jl(e)+1+"px";break;case Yi.Right:u.clipPath=`inset(-1px ${Z.value}% -1px -1px)`;break;case Yi.Left:u.clipPath=`inset(-1px -1px -1px ${Z.value} + '%)`;break;case Yi.Default:u.clipPath="inset(-1px 50% -1px -1px)";break}return u}),y=Oe(a);return{normalizedProgress:Z,barStyle:o,component:y,unref:c,Visibility:MI}}});function pa(i,l,e,n,m,a){var y,u,w,W,N,p,f;const Z=be("MarkNode"),o=be("Node");return i.unref(i.visibility)!==i.Visibility.None?(h(),S("div",{key:0,style:BI([{width:i.unref(i.width)+"px",height:i.unref(i.height)+"px",visibility:i.unref(i.visibility)===i.Visibility.Hidden?"hidden":void 0},(y=i.unref(i.style))!=null?y:{}]),class:LI({bar:!0,...i.unref(i.classes)})},[X("div",{class:"border",style:BI([{width:i.unref(i.width)+"px",height:i.unref(i.height)+"px"},(u=i.unref(i.style))!=null?u:{},(w=i.unref(i.baseStyle))!=null?w:{},(W=i.unref(i.borderStyle))!=null?W:{}])},[X("div",{class:"fill",style:BI([i.barStyle,(N=i.unref(i.style))!=null?N:{},(p=i.unref(i.fillStyle))!=null?p:{}])},null,4)],4),X("div",{class:"overlayTextContainer border",style:BI([{width:i.unref(i.width)-1+"px",height:i.unref(i.height)-1+"px"},(f=i.unref(i.borderStyle))!=null?f:{}])},[i.component?(h(),S("span",{key:0,class:"overlayText",style:BI(i.unref(i.textStyle))},[(h(),eI(qI(i.component)))],4)):oi("",!0)],4),s(Z,{mark:i.unref(i.mark)},null,8,["mark"]),s(o,{id:i.id},null,8,["id"])],6)):oi("",!0)}var Ma=OI(Wa,[["render",pa],["__scopeId","data-v-8dbd7dd6"]]);const ra=Symbol("Bar");function HI(i){return fl(()=>{const l=i();return l.id=ue("bar-"),l.type=ra,l[El]=Ma,Vi(l,"visibility"),kI(l,"visibility",MI.Visible),Vi(l,"width"),Vi(l,"height"),Vi(l,"direction"),Vi(l,"style"),Vi(l,"classes"),Vi(l,"borderStyle"),Vi(l,"baseStyle"),Vi(l,"textStyle"),Vi(l,"fillStyle"),Vi(l,"progress"),Vi(l,"display"),Vi(l,"mark"),l[me]=function(){const{progress:e,width:n,height:m,direction:a,display:Z,visibility:o,style:y,classes:u,borderStyle:w,textStyle:W,baseStyle:N,fillStyle:p,mark:f,id:C}=this;return{progress:e,width:n,height:m,direction:a,display:Z,visibility:o,style:c(y),classes:u,borderStyle:w,textStyle:W,baseStyle:N,fillStyle:p,mark:f,id:C}},l})}var wa=iI({props:{display:{type:Ti(Object,String,Function),required:!0},visibility:{type:Ti(Number),required:!0},style:Ti(Object,String,Array),classes:Ti(Object),onClick:Function,onHold:Function,canClick:{type:Ti(Boolean),required:!0},small:Boolean,mark:Ti(Boolean,String),id:{type:String,required:!0},isHolding:Object},components:{Node:Rs,MarkNode:nn},setup(i){const{display:l,onClick:e,onHold:n}=cl(i),m=Rl("");AI(()=>{var w;const o=jl(l);if(o==null){m.value="";return}if(le(o)){m.value=GI(o);return}const y=GI((w=o.title)!=null?w:"","h3"),u=GI(o.description,"div");m.value=GI(r(()=>s("span",null,[o.title!=null?s("div",null,[s(y,null,null)]):null,s(u,null,null)])))});const{start:a,stop:Z}=fm(e,n,i.isHolding);return{start:a,stop:Z,comp:m,Visibility:MI,unref:c}}});function Na(i,l,e,n,m,a){var y;const Z=be("MarkNode"),o=be("Node");return i.unref(i.visibility)!==i.Visibility.None?(h(),S("button",{key:0,style:BI([{visibility:i.unref(i.visibility)===i.Visibility.Hidden?"hidden":void 0},(y=i.unref(i.style))!=null?y:[]]),onClick:l[0]||(l[0]=(...u)=>i.onClick&&i.onClick(...u)),onMousedown:l[1]||(l[1]=(...u)=>i.start&&i.start(...u)),onMouseleave:l[2]||(l[2]=(...u)=>i.stop&&i.stop(...u)),onMouseup:l[3]||(l[3]=(...u)=>i.stop&&i.stop(...u)),onTouchstartPassive:l[4]||(l[4]=(...u)=>i.start&&i.start(...u)),onTouchendPassive:l[5]||(l[5]=(...u)=>i.stop&&i.stop(...u)),onTouchcancelPassive:l[6]||(l[6]=(...u)=>i.stop&&i.stop(...u)),class:LI({feature:!0,clickable:!0,can:i.unref(i.canClick),locked:!i.unref(i.canClick),small:i.small,...i.unref(i.classes)})},[i.unref(i.comp)?(h(),eI(qI(i.unref(i.comp)),{key:0})):oi("",!0),s(Z,{mark:i.unref(i.mark)},null,8,["mark"]),s(o,{id:i.id},null,8,["id"])],38)):oi("",!0)}var xm=OI(wa,[["render",Na],["__scopeId","data-v-9aa40d84"]]);const Oa=Symbol("Clickable");function il(i){return fl(()=>{var e;const l=(e=i==null?void 0:i())!=null?e:{};if(l.id=ue("clickable-"),l.type=Oa,l[El]=xm,l.isHolding=Ji(!1),Vi(l,"visibility"),kI(l,"visibility",MI.Visible),Vi(l,"canClick"),kI(l,"canClick",!0),Vi(l,"classes"),Vi(l,"style"),Vi(l,"mark"),Vi(l,"display"),l.onClick){const n=l.onClick.bind(l);l.onClick=function(m){c(l.canClick)!==!1&&n(m)}}if(l.onHold){const n=l.onHold.bind(l);l.onHold=function(){c(l.canClick)!==!1&&n()}}return l[me]=function(){const{display:n,visibility:m,style:a,classes:Z,onClick:o,onHold:y,isHolding:u,canClick:w,small:W,mark:N,id:p}=this;return{display:n,visibility:m,style:c(a),classes:Z,onClick:o,onHold:y,isHolding:u,canClick:w,small:W,mark:N,id:p}},l})}function vI(i,l="points",e=0,n=void 0){const m=dl(i)?i:t(i);if(m.displayName=l,m.precision=e,m.small=n,!dl(i)){const a=m[hs];a.displayName=l,a.precision=e,a.small=n}return m}function pn(i){const l=t(i.value);return oe(i,e=>{sn.value||I.gt(e,l.value)&&(l.value=e)}),l}function Dm(i){const l=t(i.value);return oe(i,(e,n)=>{sn.value||V.swappingMastery.value||I.gt(e,n)&&(l.value=I.add(l.value,I.sub(e,n)))}),l}new I("10^^8");new I("1e100");function Gs(i,l){const e=l!=null?l:i.value;return I.eq(i.precision,0)?_(i.small?e:I.floor(e)):di(e,i.precision,i.small)}const Ca=["x1","y1","x2","y2"],ha=iI({__name:"Link",props:{link:null,startNode:null,endNode:null,boundingRect:null},setup(i){const e=cl(i),n=b(()=>{const a=e.startNode.value.rect,Z=e.boundingRect.value,o=Z?{x:a.x+a.width/2-Z.x,y:a.y+a.height/2-Z.y}:{x:0,y:0};return e.link.value.offsetStart&&(o.x+=e.link.value.offsetStart.x,o.y+=e.link.value.offsetStart.y),o}),m=b(()=>{const a=e.endNode.value.rect,Z=e.boundingRect.value,o=Z?{x:a.x+a.width/2-Z.x,y:a.y+a.height/2-Z.y}:{x:0,y:0};return e.link.value.offsetEnd&&(o.x+=e.link.value.offsetEnd.x,o.y+=e.link.value.offsetEnd.y),o});return(a,Z)=>(h(),S("line",Ne({"stroke-width":"15px",stroke:"white"},i.link,{x1:c(n).x,y1:c(n).y,x2:c(m).x,y2:c(m).y}),null,16,Ca))}});const Ya=iI({__name:"Links",props:{links:null},setup(i){var y;const e=se(i,"links"),n=Ji(null),m=Us(zn,Ji({})),a=Us(Rn,Ji(void 0)),Z=Ji((y=n.value)==null?void 0:y.getBoundingClientRect());oe(a,()=>{var u;return Z.value=(u=n.value)==null?void 0:u.getBoundingClientRect()}),bs(()=>{var u;return Z.value=(u=n.value)==null?void 0:u.getBoundingClientRect()});const o=b(()=>{var w,W;const u=m.value;return(W=(w=e.value)==null?void 0:w.filter(N=>{var p,f;return((p=u[N.startNode.id])==null?void 0:p.rect)&&((f=u[N.startNode.id])==null?void 0:f.rect)}))!=null?W:[]});return(u,w)=>(h(),S(M,null,[c(o)?(h(),S("svg",Wd(Ne({key:0},u.$attrs)),[(h(!0),S(M,null,Zs(c(o),(W,N)=>(h(),eI(ha,{key:N,link:W,boundingRect:Z.value,startNode:c(m)[W.startNode.id],endNode:c(m)[W.endNode.id]},null,8,["link","boundingRect","startNode","endNode"]))),128))],16)):oi("",!0),X("div",{ref_key:"resizeListener",ref:n,class:"resize-listener"},null,512)],64))}});var va=OI(Ya,[["__scopeId","data-v-063f6d6b"]]);iI({props:{nodes:{type:Ti(Array),required:!0},leftSideNodes:Ti(Array),rightSideNodes:Ti(Array),branches:Ti(Array)},components:{Links:va},setup(i){const{nodes:l,leftSideNodes:e,rightSideNodes:n}=cl(i),m=Rl();AI(()=>{const o=jl(l);m.value=GI(r(()=>s(M,null,[o.map(y=>s("span",{class:"row tree-row",style:"margin: 50px auto;"},[y.map(te)]))])))});const a=Rl();AI(()=>{const o=jl(e);a.value=o?GI(r(()=>s("span",{class:"left-side-nodes small"},[o.map(te)]))):""});const Z=Rl();return AI(()=>{const o=jl(n);Z.value=o?GI(r(()=>s("span",{class:"side-nodes small"},[o.map(te)]))):""}),{unref:c,nodesComp:m,leftNodesComp:a,rightNodesComp:Z}}});iI({props:{display:Ti(Object,String,Function),visibility:{type:Ti(Number),required:!0},style:Ti(String,Object,Array),classes:Ti(Object),onClick:Function,onHold:Function,color:Ti(String),glowColor:Ti(String),canClick:{type:Ti(Boolean),required:!0},mark:Ti(Boolean,String),id:{type:String,required:!0}},components:{MarkNode:nn,Node:Rs},setup(i){const{onClick:l,onHold:e,display:n}=cl(i),m=Oe(n),{start:a,stop:Z}=fm(l,e);return{start:a,stop:Z,comp:m,unref:c,Visibility:MI,isCoercableComponent:le}}});function vl(i){const l=[],e={};let n=!1;function m(){return n||(l.push(...i()),e.base=l.map(o=>nl(o.base)),e.baseText=l.map(o=>nl(o.baseText)),e.visible=l.map(o=>nl(o.visible)),e.title=l.map(o=>nl(o.title)),e.subtitle=l.map(o=>nl(o.subtitle)),n=!0),l}const a=t({});return[r(()=>{const o=m();let y=!0;const u=o.map((w,W)=>{var C,D,L;if(c(e.visible[W])===!1)return null;const N=s("h3",{onClick:()=>a.value[W]=!a.value[W],style:"cursor: pointer"},[s("span",{class:"modifier-toggle"+(c(a.value[W])?" collapsed":"")},[d("\u25BC")]),c(e.title[W]),c(e.subtitle[W])!=null?s("span",{class:"subtitle"},[d(" ("),c(e.subtitle[W]),d(")")]):null]),p=c(a.value[W])?null:s(M,null,[s("div",{class:"modifier-container"},[s("span",{class:"modifier-description"},[te((C=c(e.baseText[W]))!=null?C:"Base")]),s("span",{class:"modifier-amount"},[di((D=c(e.base[W]))!=null?D:1),w.unit])]),te(c(w.modifier.description))]),f=!y;return y=!1,s(M,null,[f?s("br",null,null):null,s("div",{style:{"--unit":UI.alignUnits&&w.unit!=null?"'"+w.unit+"'":""}},[N,s("br",null,null),p,s("hr",null,null),s("div",{class:"modifier-container"},[s("span",{class:"modifier-description"},[d("Total")]),s("span",{class:"modifier-amount"},[Pe(w.modifier.apply((L=c(e.base[W]))!=null?L:1)),w.unit])])])])});return s(M,null,[u])}),a]}function ne(i){const l=Object.values(i).reverse(),e=t(!0),n=b(()=>l.filter(y=>y.earned.value===!1)),{firstFeature:m,collapsedContent:a,hasCollapsedContent:Z}=$c(l,y=>y.earned.value),o=r(()=>{const y=[...n.value];return m.value&&y.push(m.value),qc(...y,r(()=>zs(s(ba,{collapsed:e,content:a,display:e.value?"Show other completed milestones":"Hide other completed milestones"},null),[[wn,c(Z)]])))});return{collapseMilestones:e,display:o}}function de(i){const l=i.ignoreTotal?i.resource:Dm(i.resource),e=()=>{var y,u,w,W;const a=((y=V.currentlyMastering.value)==null?void 0:y.name)===i.name;if(V.day.value!==i.day&&!a)return 1;let Z=I.add(l.value,1),o=a&&(u=i.masteryGoal)!=null?u:i.goal;return((W=(w=i.usingLog)==null?void 0:w.value)!=null?W:UI.usingLog)&&(Z=Z.log10(),o=I.log10(o)),I.div(Z,o)},n=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:typeof i.background=="string"?{backgroundColor:i.background}:{animation:i.background.duration+" "+i.background.gradient+" linear infinite"},textStyle:i.textColor!=null?{color:i.textColor}:void 0,progress:e,display:r(()=>{var a,Z,o;return V.day.value===i.day||((a=V.currentlyMastering.value)==null?void 0:a.name)===i.name?s(M,null,[yI(l.value),d("/"),yI(((Z=V.currentlyMastering.value)==null?void 0:Z.name)===i.name&&(o=i.masteryGoal)!=null?o:i.goal)]):""})})),m=r(()=>{var a,Z;return s(M,null,[s("div",null,[V.day.value===i.day?s(M,null,[d("Reach "),yI(i.goal),d(" "),i.ignoreTotal?"":"total ",i.resource.displayName,d(" to complete the day")]):((a=V.currentlyMastering.value)==null?void 0:a.name)===i.name?s(M,null,[d("Reach "),yI((Z=i.masteryGoal)!=null?Z:i.goal)," ",i.ignoreTotal?"":"total ",i.resource.displayName,d(" to decorate the day")]):s(M,null,[i.name,d(" Complete!")]),i.modal?s(M,null,[" ",d("-")," ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>i.modal.show.value=!0},[d("Check Modifiers")])]):void 0]),hi(n),i.modal?hi(i.modal.display):void 0])});return AI(()=>{var a,Z;V.day.value===i.day&&I.gte(l.value,i.goal)?V.completeDay():((a=V.currentlyMastering.value)==null?void 0:a.name)===i.name&&I.gte(l.value,(Z=i.masteryGoal)!=null?Z:i.goal)&&V.completeMastery()}),{total:l,trackerDisplay:m}}function ce(i){var Z;const l=(Z=i.style)!=null?Z:{minHeight:"20px",width:"40px",color:"var(--foreground)"},e=il(()=>({display:"0",style:l,canClick(){return I.gt(i.active.value,0)},onClick(){i.active.value=0}})),n=il(()=>({display:"-",style:l,canClick(){return I.gt(i.active.value,0)},onClick(){i.active.value=I.sub(i.active.value,1)}})),m=il(()=>({display:"+",style:l,canClick(){return I.lt(i.active.value,i.buyable.amount.value)},onClick(){i.active.value=I.add(i.active.value,1)}})),a=il(()=>({display:"Max",style:l,canClick(){return I.lt(i.active.value,i.buyable.amount.value)},onClick(){i.active.value=i.buyable.amount.value}}));return{min:e,remove:n,add:m,max:a}}const Xa=Symbol("Buyable");function Ai(i){const l=t(0);return fl(()=>{var a,Z,o;const e=i();if(e.canPurchase==null&&(e.resource==null||e.cost==null))throw console.warn("Cannot create buyable without a canPurchase property or a resource and cost property",e),"Cannot create buyable without a canPurchase property or a resource and cost property";e.id=ue("buyable-"),e.type=Xa,e[El]=xm,e.amount=l,e.amount[we]=(a=e.initialValue)!=null?a:0,e.canAfford=b(()=>{const y=e,u=c(y.cost);return y.resource!=null&&u!=null&&I.gte(y.resource.value,u)}),e.canPurchase==null&&(e.canPurchase=b(()=>c(e.visibility)===MI.Visible&&c(e.canAfford)&&I.lt(e.amount.value,c(e.purchaseLimit)))),e.maxed=b(()=>I.gte(e.amount.value,c(e.purchaseLimit))),Vi(e,"classes");const n=e.classes;e.classes=b(()=>{const y=c(n)||{};return e.maxed.value&&(y.bought=!0),y}),Vi(e,"canPurchase"),e.canClick=e.canPurchase,e.onClick=e.purchase=(o=(Z=e.onClick)!=null?Z:e.purchase)!=null?o:function(){var w;const y=e;if(!c(y.canPurchase))return;const u=c(y.cost);y.cost!=null&&y.resource!=null&&!Nn(y.resource)&&(y.resource.value=I.sub(y.resource.value,u)),y.amount.value=I.add(y.amount.value,1),(w=y.onPurchase)==null||w.call(y,u)},Vi(e,"display");const m=e.display;return e.display=r(()=>{var u,w,W;const y=c(m);if(le(y)){const N=GI(y);return s(N,null,null)}if(y!=null&&e.cost!=null&&e.resource!=null){const N=e,p=GI((u=y.title)!=null?u:"","h3"),f=GI((w=y.description)!=null?w:""),C=GI((W=y.effectDisplay)!=null?W:"");return s("span",null,[y.title==null?null:s("div",null,[s(p,null,null)]),y.description==null?null:s(f,null,null),y.showAmount===!1?null:s("div",null,[s("br",null,null),c(N.purchaseLimit)===I.dInf?s(M,null,[d("Amount: "),_(N.amount.value)]):s(M,null,[d("Amount: "),_(N.amount.value),d(" /")," ",_(c(N.purchaseLimit))])]),y.effectDisplay==null?null:s("div",null,[s("br",null,null),d("Currently: "),s(C,null,null)]),N.cost!=null&&!N.maxed.value?s("div",null,[d("Cost: "),di(c(N.cost))," ",e.resource.displayName]):null])}return""}),Vi(e,"visibility"),kI(e,"visibility",MI.Visible),Vi(e,"cost"),Vi(e,"resource"),Vi(e,"purchaseLimit"),kI(e,"purchaseLimit",I.dInf),Vi(e,"style"),Vi(e,"mark"),Vi(e,"small"),e[me]=function(){const{display:y,visibility:u,style:w,classes:W,onClick:N,canClick:p,small:f,mark:C,id:D}=this;return{display:y,visibility:u,style:c(w),classes:W,onClick:N,canClick:p,small:f,mark:C,id:D}},e})}const za=iI({__name:"Sticky",setup(i){const l=Ji("0"),e=new ResizeObserver(m),n=Rl(null);function m(){let a=n.value;if(a==null)return;let Z=0;for(;a.previousSibling;){const o=a.previousSibling;o.dataset&&"vSticky"in o.dataset&&(Z+=o.offsetHeight),a=o}l.value=Z+"px"}return De(m),document.fonts.ready.then(m),bs(()=>{var Z;const a=(Z=n.value)==null?void 0:Z.parentElement;a&&e.observe(a)}),(a,Z)=>(h(),S("div",{class:"sticky",style:BI({top:l.value}),ref_key:"element",ref:n,"data-v-sticky":""},[ie(a.$slots,"default",{},void 0,!0)],4))}});var Sm=OI(za,[["__scopeId","data-v-cccac690"]]);const _s=iI({__name:"Resource",props:{resource:null,color:null,shadowColor:null,style:null},setup(i){const l=i,e=b(()=>Gs(l.resource));return(n,m)=>{var a,Z;return h(),S("h2",{style:BI([{color:i.color,"text-shadow":"0px 0px 10px "+((a=i.shadowColor)!=null?a:i.color)},(Z=i.style)!=null?Z:{}])},pI(c(e)),5)}}});const Ra={class:"main-display"},Ga={key:0},fa={key:1},xa={key:2},Da=X("br",null,null,-1),Sa={class:"main-display"},La={key:0},Ta={key:1},Fa={key:2},ka=X("br",null,null,-1),sl=iI({__name:"MainDisplay",props:{resource:null,color:null,shadowColor:null,classes:null,style:null,resourceStyle:null,effectDisplay:null,productionDisplay:null,sticky:{type:Boolean,default:!0}},setup(i){const e=cl(i),n=Ji(null),m=Oe(e.effectDisplay),a=Ji(null),Z=Oe(e.productionDisplay),o=b(()=>I.lt(e.resource.value,"1e1000"));return(y,u)=>{var w,W;return i.sticky?(h(),eI(Sm,{key:0},{default:Bi(()=>{var N,p,f,C;return[X("div",{class:LI(["main-display-container",(N=i.classes)!=null?N:{}]),style:BI([{"min-height":`${((f=(p=n.value)==null?void 0:p.$el.clientHeight)!=null?f:0)+50}px`},(C=i.style)!=null?C:{}])},[X("div",Ra,[c(o)?(h(),S("span",Ga,"You have ")):oi("",!0),s(_s,{resource:i.resource,color:i.color||"white","shadow-color":i.shadowColor,style:BI(i.resourceStyle)},null,8,["resource","color","shadow-color","style"]),d(" "+pI(i.resource.displayName),1),c(m)?(h(),S("span",fa,[d(", "),(h(),eI(qI(c(m)),{ref_key:"effectRef",ref:n},null,512))])):oi("",!0),c(Z)?(h(),S("span",xa,[Da,(h(),eI(qI(c(Z)),{ref_key:"productionRef",ref:a},null,512))])):oi("",!0)])],6)]}),_:1})):(h(),S("div",{key:1,class:LI(["main-display-container",(w=i.classes)!=null?w:{}]),style:BI([{"min-height":"50px"},(W=i.style)!=null?W:{}])},[X("div",Sa,[c(o)?(h(),S("span",La,"You have ")):oi("",!0),s(_s,{resource:i.resource,color:i.color||"white","shadow-color":i.shadowColor,style:BI(i.resourceStyle)},null,8,["resource","color","shadow-color","style"]),d(" "+pI(i.resource.displayName),1),c(m)?(h(),S("span",Ta,[d(", "),(h(),eI(qI(c(m)),{ref_key:"effectRef",ref:n},null,512))])):oi("",!0),c(Z)?(h(),S("span",Fa,[ka,(h(),eI(qI(c(Z)),{ref_key:"productionRef",ref:a},null,512))])):oi("",!0)])],6))}}});var ga=iI({props:{display:{type:Ti(String,Object,Function),required:!0},visibility:{type:Ti(Number),required:!0},style:Ti(String,Object,Array),classes:Ti(Object),resource:Object,cost:Ti(String,Object,Number),canPurchase:{type:Ti(Boolean),required:!0},bought:{type:Ti(Boolean),required:!0},mark:Ti(Boolean,String),id:{type:String,required:!0},purchase:{type:Function,required:!0}},components:{Node:Rs,MarkNode:nn},setup(i){const{display:l,cost:e}=cl(i),n=Rl("");return AI(()=>{const m=jl(l);if(m==null){n.value="";return}if(le(m)){n.value=GI(m);return}const a=jl(e),Z=GI(m.title||"","h3"),o=GI(m.description,"div"),y=GI(m.effectDisplay||"");n.value=GI(r(()=>{var u;return s("span",null,[m.title!=null?s("div",null,[s(Z,null,null)]):null,s(o,null,null),m.effectDisplay!=null?s("div",null,[d("Currently: "),s(y,null,null)]):null,i.resource!=null&&m.showCost!==!1?s(M,null,[s("br",null,null),d("Cost: "),i.resource&&Gs(i.resource,a)," ",(u=i.resource)==null?void 0:u.displayName]):null])}))}),{component:n,unref:c,Visibility:MI}}});const Qa=["disabled"];function Ua(i,l,e,n,m,a){var y;const Z=be("MarkNode"),o=be("Node");return i.unref(i.visibility)!==i.Visibility.None?(h(),S("button",{key:0,style:BI([{visibility:i.unref(i.visibility)===i.Visibility.Hidden?"hidden":void 0},(y=i.unref(i.style))!=null?y:{}]),onClick:l[0]||(l[0]=(...u)=>i.purchase&&i.purchase(...u)),class:LI({feature:!0,upgrade:!0,can:i.unref(i.canPurchase),locked:!i.unref(i.canPurchase),bought:i.unref(i.bought),...i.unref(i.classes)}),disabled:!i.unref(i.canPurchase)},[i.unref(i.component)?(h(),eI(qI(i.unref(i.component)),{key:0})):oi("",!0),s(Z,{mark:i.unref(i.mark)},null,8,["mark"]),s(o,{id:i.id},null,8,["id"])],14,Qa)):oi("",!0)}var Ha=OI(ga,[["render",Ua],["__scopeId","data-v-1110c7b2"]]);const Aa=Symbol("Upgrade");function U(i){const l=t(!1);return fl(()=>{const e=i();return e.id=ue("upgrade-"),e.type=Aa,e[El]=Ha,e.canAfford==null&&(e.resource==null||e.cost==null)&&console.warn("Error: can't create upgrade without a canAfford property or a resource and cost property",e),e.bought=l,e.canAfford==null?e.canAfford=b(()=>{const n=e;return n.resource!=null&&n.cost!=null&&I.gte(n.resource.value,c(n.cost))}):Vi(e,"canAfford"),e.canPurchase=b(()=>c(e.visibility)===MI.Visible&&c(e.canAfford)&&!c(e.bought)),e.purchase=function(){var m;const n=e;!c(n.canPurchase)||(n.resource!=null&&!Nn(n.resource)&&n.cost!=null&&(n.resource.value=I.sub(n.resource.value,c(n.cost))),l.value=!0,(m=n.onPurchase)==null||m.call(n))},Vi(e,"visibility"),kI(e,"visibility",MI.Visible),Vi(e,"classes"),Vi(e,"style"),Vi(e,"display"),Vi(e,"mark"),Vi(e,"cost"),Vi(e,"resource"),e[me]=function(){const{display:n,visibility:m,style:a,classes:Z,resource:o,cost:y,canPurchase:u,bought:w,mark:W,id:N,purchase:p}=this;return{display:n,visibility:m,style:c(a),classes:Z,resource:o,cost:y,canPurchase:u,bought:w,mark:W,id:N,purchase:p}},e})}function Si(i){return fl(()=>{const{addend:l,description:e,enabled:n}=i(),m=nl(l),a=nl(e),Z=n==null?void 0:nl(n);return{apply:o=>I.add(o,c(m)),revert:o=>I.sub(o,c(m)),enabled:Z,description:e==null?void 0:r(()=>s("div",{class:"modifier-container"},[c(a)!=null?s("span",{class:"modifier-description"},[te(c(a))]):null,s("span",{class:"modifier-amount"},[I.gte(c(m),0)?"+":"",Pe(c(m))])]))}})}function J(i){return fl(()=>{const{multiplier:l,description:e,enabled:n}=i(),m=nl(l),a=nl(e),Z=n==null?void 0:nl(n);return{apply:o=>I.times(o,c(m)),revert:o=>I.div(o,c(m)),enabled:Z,description:e==null?void 0:r(()=>s("div",{class:"modifier-container"},[c(a)!=null?s("span",{class:"modifier-description"},[te(c(a))]):null,s("span",{class:"modifier-amount"},[d("\xD7"),Pe(c(m))])]))}})}function Yl(i){return fl(()=>{const{exponent:l,description:e,enabled:n,supportLowNumbers:m}=i(),a=nl(l),Z=nl(e),o=n==null?void 0:nl(n);return{apply:y=>{let u=y;return m&&(u=I.add(u,1)),u=I.pow(u,c(a)),m&&(u=I.sub(u,1)),u},revert:y=>{let u=y;return m&&(u=I.add(u,1)),u=I.root(u,c(a)),m&&(u=I.sub(u,1)),u},enabled:o,description:e==null?void 0:r(()=>s("div",{class:"modifier-container"},[c(Z)!=null?s("span",{class:"modifier-description"},[te(c(Z)),m?" (+1 effective)":null]):null,s("span",{class:"modifier-amount"},[d("^"),Pe(c(a))])]))}})}function Ci(i){return fl(()=>{const l=i();return{apply:e=>l.filter(n=>c(n.enabled)!==!1).reduce((n,m)=>m.apply(n),e),revert:l.every(e=>e.revert!=null)?e=>l.filter(n=>c(n.enabled)!==!1).reduceRight((n,m)=>m.revert(n),e):void 0,enabled:b(()=>l.filter(e=>c(e.enabled)!==!1).length>0),description:r(()=>s(M,null,[l.filter(e=>c(e.enabled)!==!1).map(e=>c(e.description)).filter(e=>e).map(te)]))}})}function Lm(i){return fl(()=>{const l=i();return l.currentGain==null&&(l.currentGain=b(()=>{let e=l.gainModifier?l.gainModifier.apply(l.scaling.currentGain(l)):l.scaling.currentGain(l);return e=I.floor(e).max(0),c(l.buyMax)===!1&&(e=e.min(1)),e})),l.actualGain==null&&(l.actualGain=l.currentGain),l.currentAt==null&&(l.currentAt=b(()=>{let e=l.scaling.currentAt(l);return c(l.roundUpCost)&&(e=I.ceil(e)),e})),l.nextAt==null&&(l.nextAt=b(()=>{let e=l.scaling.nextAt(l);return c(l.roundUpCost)&&(e=I.ceil(e)),e})),l.convert==null&&(l.convert=function(){var m;const e=c(l.currentGain),n=c(l.currentAt);l.gainResource.value=I.add(l.gainResource.value,e),l.spend(e,n),(m=l.onConvert)==null||m.call(l,e)}),l.spend==null&&(l.spend=function(){l.baseResource.value=0}),Vi(l,"currentGain"),Vi(l,"actualGain"),Vi(l,"currentAt"),Vi(l,"nextAt"),Vi(l,"buyMax"),kI(l,"buyMax",!0),Vi(l,"roundUpCost"),kI(l,"roundUpCost",!0),l})}function fn(i,l){const e=nl(i),n=nl(l);return{currentGain(m){let a=c(m.baseResource.value);if(m.costModifier&&(a=m.costModifier.apply(a)),I.lt(a,c(e)))return 0;const Z=I.div(a,c(e)).pow(c(n));return Z.isNan()?new I(0):Z},currentAt(m){let a=c(m.currentGain);return m.gainModifier&&(a=m.gainModifier.revert(a)),a=I.max(0,a).root(c(n)).times(c(e)),m.costModifier&&(a=m.costModifier.revert(a)),a},nextAt(m){let a=I.add(c(m.currentGain),1).floor();return m.gainModifier&&(a=m.gainModifier.revert(a)),a=I.max(0,a).root(c(n)).times(c(e)).max(c(e)),m.costModifier&&(a=m.costModifier.revert(a)),a}}}function Tm(i){return Lm(i)}function Ea(i){return Lm(()=>{const l=i();return kI(l,"buyMax",!1),l.currentGain==null&&(l.currentGain=b(()=>{let e=l.gainModifier?l.gainModifier.apply(l.scaling.currentGain(l)):l.scaling.currentGain(l);return e=I.floor(e).max(l.gainResource.value),c(l.buyMax)===!1&&(e=e.min(I.add(l.gainResource.value,1))),e})),l.actualGain==null&&(l.actualGain=b(()=>{let e=I.sub(I.floor(l.scaling.currentGain(l)),l.gainResource.value).max(0);return c(l.buyMax)===!1&&(e=e.min(1)),e})),kI(l,"convert",function(){var m;const e=c(l.actualGain),n=c(l.currentAt);l.gainResource.value=l.gainModifier?l.gainModifier.apply(c(l.currentGain)):c(l.currentGain),l.spend(e,n),(m=l.onConvert)==null||m.call(l,e)}),l})}function Qs(i,l,e=.5){return I.lte(i,l)?i:I.pow(i,e).times(I.pow(l,I.sub(1,e)))}function Bn(i,l,e=.5){return{...i,currentAt:n=>Qs(i.currentAt(n),c(l),I.recip(c(e))),nextAt:n=>Qs(i.nextAt(n),c(l),I.recip(c(e))),currentGain:n=>Qs(i.currentGain(n),c(l),c(e))}}function Ba(i,l){return{...i,currentGain:e=>I.min(i.currentGain(e),c(l))}}const Fm=i=>(Ce("data-v-5e2d38ce"),i=i(),he(),i),Pa=Fm(()=>X("div",{class:"key"},"Ctrl",-1)),_a=Fm(()=>X("div",{class:"key"},"Shift",-1)),qa={class:"key"},$a=iI({__name:"Hotkey",props:{hotkey:null},setup(i){const l=i;let e="",n=!1,m=!1,a=!1;return AI(()=>{e=l.hotkey.key,n=e.startsWith("ctrl+"),n&&(e=e.slice(5)),m=e.startsWith("shift+"),m&&(e=e.slice(6)),a=e.length==1&&e.toLowerCase()!=e.toUpperCase(),a&&(e=e.toUpperCase())}),(Z,o)=>(h(),S(M,null,[c(n)?(h(),S(M,{key:0},[Pa,d("+")],64)):oi("",!0),c(m)?(h(),S(M,{key:1},[_a,d("+")],64)):oi("",!0),X("div",qa,pI(c(e)),1)],64))}});var Ze=OI($a,[["__scopeId","data-v-5e2d38ce"]]);const Ka={},it={style:{"white-space":"nowrap"}},It=X("span",{style:{"font-size":"larger","font-family":"initial","font-weight":"bold"}},"\u221A",-1),lt={style:{display:"inline-block","border-top":"1px solid","padding-left":"0.2em"}};function et(i,l){return h(),S("span",it,[It,X("div",lt,[ie(i.$slots,"default")])])}var ql=OI(Ka,[["render",et]]);const vs=en({}),xn=Symbol("Hotkey"),Pn=[")","!","@","#","$","%","^","&","*","("];function je(i){return fl(()=>{const l=i();return l.type=xn,Vi(l,"enabled"),kI(l,"enabled",!0),Vi(l,"description"),l})}NI.on("addLayer",i=>{Cn(i,xn).forEach(l=>{vs[l.key]=l})});NI.on("removeLayer",i=>{Cn(i,xn).forEach(l=>{vs[l.key]=void 0})});document.onkeydown=function(i){var n;if(((n=i.target)==null?void 0:n.tagName)==="INPUT"||Sn.value&&!Qi.keepGoing)return;let l=i.key;Pn.includes(l)?l="shift+"+Pn.indexOf(l):i.shiftKey&&(l="shift+"+l),i.ctrlKey&&(l="ctrl+"+l),i.code.startsWith("Numpad")&&`Numpad ${l}`in vs&&(l="Numpad "+l);const e=vs[l];e&&c(e.enabled)&&(i.preventDefault(),e.onPress())};Ec(r(()=>{const i=Object.values(vs).filter(l=>c(l==null?void 0:l.enabled));return i.length===0?"":s("div",null,[s("br",null,null),s("h4",null,[d("Hotkeys")]),s("div",{style:"column-count: 2"},[i.map(l=>s("div",null,[s(Ze,{hotkey:l},null),d(" "),l==null?void 0:l.description]))])])}));const st=iI({__name:"Tab",props:{display:null},setup(i){const l=i,{display:e}=cl(l),n=os(e);return(m,a)=>(h(),eI(qI(c(n))))}}),nt=Symbol("Tab");function _n(i){return fl(()=>{const l=i();return l.id=ue("tab-"),l.type=nt,l[El]=st,l[me]=function(){const{display:e}=this;return{display:e}},l})}NI.on("setupVue",i=>i.use(Yd));function mt(i="white",l="8px"){return{transform:"scale(1.05, 1.05)",borderColor:"rgba(0, 0, 0, 0.125)",boxShadow:`-4px -4px 4px rgba(0, 0, 0, 0.25) inset, 0 0 ${l} ${i}`,zIndex:1}}const dt=iI({props:{visibility:{type:Ti(Number),required:!0},display:{type:Ti(Object,String,Function),required:!0},style:Ti(String,Object,Array),classes:Ti(Object),glowColor:Ti(String),active:Boolean,floating:Boolean},emits:["selectTab"],setup(i,{emit:l}){const{display:e,glowColor:n,floating:m}=cl(i),a=os(e),Z=b(()=>{const y=jl(n);return y?c(m)?mt(y):{boxShadow:`0px 9px 5px -6px ${y}`}:{}});function o(){l("selectTab")}return{selectTab:o,component:a,glowColorStyle:Z,unref:c,Visibility:MI}}});function ct(i,l,e,n,m,a){var Z;return i.unref(i.visibility)!==i.Visibility.None?(h(),S("button",{key:0,onClick:l[0]||(l[0]=(...o)=>i.selectTab&&i.selectTab(...o)),class:LI(["tabButton",{active:i.active,...i.unref(i.classes)}]),style:BI([{visibility:i.unref(i.visibility)===i.Visibility.Hidden?"hidden":void 0},i.glowColorStyle,(Z=i.unref(i.style))!=null?Z:{}])},[(h(),eI(qI(i.component)))],6)):oi("",!0)}var km=OI(dt,[["render",ct],["__scopeId","data-v-610a2549"]]);const at=iI({props:{visibility:{type:Ti(Number),required:!0},activeTab:{type:Ti(Object),required:!0},selected:{type:Object,required:!0},tabs:{type:Ti(Object),required:!0},style:Ti(String,Object,Array),classes:Ti(Object),buttonContainerStyle:Ti(String,Object,Array),buttonContainerClasses:Ti(Object)},components:{Sticky:Sm,TabButton:km},setup(i){const{activeTab:l}=cl(i),e=b(()=>ae[UI.theme].floatingTabs),n=Rl("");AI(()=>{const o=jl(l);if(o==null){n.value="";return}if(le(o)){n.value=GI(o);return}n.value=GI(c(o.display))});const m=b(()=>{const o=jl(l);return le(o)||!o?void 0:c(o.classes)}),a=b(()=>{const o=jl(l);return le(o)||!o?void 0:c(o.style)});function Z(o){const{display:y,style:u,classes:w,glowColor:W,visibility:N}=o;return{display:y,style:c(u),classes:w,glowColor:W,visibility:N}}return{floating:e,tabClasses:m,tabStyle:a,Visibility:MI,component:n,gatherButtonProps:Z,unref:c}}});function tt(i,l,e,n,m,a){var y,u;const Z=be("TabButton"),o=be("Sticky");return i.unref(i.visibility)!==i.Visibility.None?(h(),S("div",{key:0,class:LI(["tab-family-container",{...i.unref(i.classes),...i.tabClasses}]),style:BI([{visibility:i.unref(i.visibility)===i.Visibility.Hidden?"hidden":void 0},(y=i.unref(i.style))!=null?y:[],(u=i.tabStyle)!=null?u:[]])},[s(o,{class:LI(["tab-buttons-container",i.unref(i.buttonContainerClasses)]),style:BI(i.unref(i.buttonContainerStyle))},{default:Bi(()=>[X("div",{class:LI(["tab-buttons",{floating:i.floating}])},[(h(!0),S(M,null,Zs(i.unref(i.tabs),(w,W)=>(h(),eI(Z,Ne({onSelectTab:N=>i.selected.value=W,floating:i.floating,key:W,active:i.unref(w.tab)===i.unref(i.activeTab)},i.gatherButtonProps(w)),null,16,["onSelectTab","floating","active"]))),128))],2)]),_:1},8,["class","style"]),i.unref(i.activeTab)?(h(),eI(qI(i.unref(i.component)),{key:0})):oi("",!0)],6)):oi("",!0)}var Zt=OI(at,[["render",tt],["__scopeId","data-v-f12d734e"]]);const ot=Symbol("TabButton"),bt=Symbol("TabFamily");function yt(i,l){if(Object.keys(i).length===0)throw console.warn("Cannot create tab family with 0 tabs"),"Cannot create tab family with 0 tabs";const e=t(Object.keys(i)[0]);return fl(()=>{var a;const n=(a=l==null?void 0:l())!=null?a:{};n.id=ue("tabFamily-"),n.type=bt,n[El]=Zt,n.tabs=Object.keys(i).reduce((Z,o)=>{const y=i[o]();return y.type=ot,y[El]=km,Vi(y,"visibility"),kI(y,"visibility",MI.Visible),Vi(y,"tab"),Vi(y,"display"),Vi(y,"classes"),Vi(y,"style"),Vi(y,"glowColor"),Z[o]=y,Z},{}),n.selected=e,n.activeTab=b(()=>{const Z=c(m.tabs);if(e.value in Z&&c(Z[e.value].visibility)===MI.Visible)return c(Z[e.value].tab);const o=Object.values(Z).find(y=>c(y.visibility)===MI.Visible);return o?c(o.tab):null}),Vi(n,"visibility"),kI(n,"visibility",MI.Visible),Vi(n,"classes"),Vi(n,"style"),Vi(n,"buttonContainerClasses"),Vi(n,"buttonContainerStyle"),n[me]=function(){const{visibility:Z,activeTab:o,selected:y,tabs:u,style:w,classes:W,buttonContainerClasses:N,buttonContainerStyle:p}=this;return{visibility:Z,activeTab:o,selected:y,tabs:u,style:c(w),classes:W,buttonContainerClasses:N,buttonContainerStyle:p}};const m=n;return m})}var qs="./assets/cloth.7bcd7f37.png",$s="data:image/png;base64,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",Ks="./assets/metal.7407f5d1.png",In="./assets/plastic.b8ac74ff.png",Dn="data:image/png;base64,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",qn="./assets/bear.edf00c04.svg",jt="./assets/bearmaker.ad80a177.svg",$n="./assets/block.8b452cde.svg",ut="./assets/boxmaker.72c76d1f.svg",Vt="./assets/blockmaker.e21c206d.svg",Jt="./assets/bucket.a4045a93.svg",Wt="./assets/bucketmaker.3b75b1e7.svg",Kn="./assets/bucketshovel.229ffa15.svg",pt="./assets/bucketshovelmaker.464876b3.svg",Mt="./assets/button.35a47ce0.svg",rt="./assets/buttonmaker.f149d63e.svg",wt="./assets/circuit.0fb4e2a7.svg",Nt="./assets/circuitmaker.f7f9f7ce.svg",im="./assets/clothes.da589bf9.svg",Ot="./assets/clothesmaker.7e083181.svg",Im="./assets/console.77f46a13.svg",Ct="./assets/consolemaker.f34ffdec.svg",ht="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAA4klEQVRoge2ZwQ3DMAwDmSKjeS8v5p8HaxdogeYhkpB5zzwSX2QzEgKEEELw5ZpzvtWLYPJSL4BNhLsT4e5ce++kdGci3J276sZrra/XxxhVj/wLeoV/vQgWki2tlJadYZW0NLQU0vKUZkuXCT9JY6Z0aYUdpcu3tJs05Qw7SdNCy0WamtIO0vTP0nG9NKCVljcebDI8VHPUePhEtuqc04QdZAGSsIssQBB2kgWKhd1kgUJhR1nAoPFgd11SYUWLKRNW9dMZHqpRj4f5P9ydCHfnVs+nbI6rcIS7E+EQQghBxwf67keiZKP7NgAAAABJRU5ErkJggg==",Yt="./assets/cursor.29168bf7.svg",vt="./assets/delete.942ea48a.svg",lm="./assets/log.b9641ef8.svg",Xt="./assets/plank.ed803f01.svg",zt="./assets/rotateLeft.c8791063.svg",Rt="./assets/rotateRight.fc51781c.svg",Gt="./assets/sawmill.5767d66f.svg",Ws="./assets/shed.7dd96184.svg",ft="./assets/shovel.1ca1dbea.svg",xt="./assets/shovelmaker.422bcdb1.svg",Dt="./assets/stuffing.21738d78.svg",St="./assets/stuffingmaker.15225150.svg",Lt="./assets/thread.ebec2bc0.svg",Tt="./assets/threadmaker.5e4b05d5.svg",em="./assets/truck.2cfdba76.svg",Ft="./assets/truckmaker.7375630d.svg",kt="./assets/wheel.6b5ab7f1.svg",gt="./assets/wheelmaker.e51cb13a.svg",gm="./assets/present.7062e549.svg",Qt="./assets/presentmaker.3f610bc0.svg";const Ut=iI({__name:"Factory",props:{application:null},setup(i){const l=i,e=Rl(null);return bs(()=>{var n;if(e.value!==null)(n=e.value)==null||n.append(l.application.view),l.application.resizeTo=e.value,l.application.resize();else throw new TypeError("This should not occur")}),(n,m)=>(h(),S("div",{ref_key:"element",ref:e,class:"factoryDisp"},null,512))}});var Ht=OI(Ut,[["__scopeId","data-v-573a86c3"]]);const At={class:"field"},Et=iI({__name:"Toggle",props:{title:null,modelValue:{type:Boolean}},emits:["update:modelValue"],setup(i,{emit:l}){const e=i,n=b(()=>{var a;return GI((a=c(e.title))!=null?a:"","span")}),m=b({get(){return!!e.modelValue},set(a){l("update:modelValue",a)}});return(a,Z)=>(h(),S("label",At,[zs(X("input",{type:"checkbox",class:"toggle","onUpdate:modelValue":Z[0]||(Z[0]=o=>dl(m)?m.value=o:null)},null,512),[[pd,c(m)]]),(h(),eI(qI(c(n))))]))}});var ye=OI(Et,[["__scopeId","data-v-2a0854f4"]]);const Bt={class:"field"},Pt={key:0,class:"field-title"},Xs=iI({__name:"Select",props:{title:null,modelValue:null,options:null,placeholder:null,closeOnSelect:{type:Boolean}},emits:["update:modelValue"],setup(i,{emit:l}){var Z;const e=i,n=Oe(se(e,"title"),"span"),m=Ji((Z=e.options.find(o=>o.value===e.modelValue))!=null?Z:null);oe(se(e,"modelValue"),o=>{var y;jl(m)!==o&&(m.value=(y=e.options.find(u=>u.value===o))!=null?y:null)});function a(o){l("update:modelValue",o.value)}return(o,y)=>(h(),S("div",Bt,[c(n)?(h(),S("span",Pt,[(h(),eI(qI(c(n))))])):oi("",!0),s(c(vd),{options:i.options,modelValue:m.value,"onUpdate:modelValue":[y[0]||(y[0]=u=>m.value=u),a],min:1,"label-by":"label",placeholder:i.placeholder,"close-on-select":i.closeOnSelect},null,8,["options","modelValue","placeholder","close-on-select"])]))}});var _t=iI({props:{visibility:{type:Ti(Number),required:!0},display:{type:Ti(String,Object,Function),required:!0},style:Ti(String,Object,Array),classes:Ti(Object),earned:{type:Ti(Boolean),required:!0},id:{type:String,required:!0}},components:{Node:Rs},setup(i){const{display:l}=cl(i),e=Rl("");return AI(()=>{const n=jl(l);if(n==null){e.value="";return}if(le(n)){e.value=GI(n);return}const m=GI(n.requirement,"h3"),a=GI(n.effectDisplay||"","b"),Z=GI(n.optionsDisplay||"","span");e.value=GI(r(()=>s("span",null,[s(m,null,null),n.effectDisplay!=null?s("div",null,[s(a,null,null)]):null,n.optionsDisplay!=null?s("div",{class:"equal-spaced"},[s(Z,null,null)]):null])))}),{comp:e,unref:c,Visibility:MI}}});function qt(i,l,e,n,m,a){var o;const Z=be("Node");return i.unref(i.visibility)!==i.Visibility.None?(h(),S("div",{key:0,style:BI([{visibility:i.unref(i.visibility)===i.Visibility.Hidden?"hidden":void 0},(o=i.unref(i.style))!=null?o:{}]),class:LI({feature:!0,milestone:!0,done:i.unref(i.earned),...i.unref(i.classes)})},[(h(),eI(qI(i.unref(i.comp)))),s(Z,{id:i.id},null,8,["id"])],6)):oi("",!0)}var $t=OI(_t,[["render",qt],["__scopeId","data-v-c60a4c8e"]]);const sm=jm(),Kt=Symbol("Milestone");let fe;(function(i){i.All="all",i.Configurable="configurable",i.Incomplete="incomplete",i.None="none"})(fe||(fe={}));function z(i){const l=t(!1);return fl(()=>{var m;const e=(m=i==null?void 0:i())!=null?m:{};e.id=ue("milestone-"),e.type=Kt,e[El]=$t,e.earned=l,e.complete=function(){var Z;const a=e;if(l.value=!0,(Z=a.onComplete)==null||Z.call(a),a.display!=null&&c(a.showPopups)===!0){const o=c(a.display),y=GI(le(o)?o:o.requirement);sm(s(M,null,[s("h3",null,[d("Milestone earned!")]),s("div",null,[s(y,null,null)])]))}},Vi(e,"visibility"),kI(e,"visibility",MI.Visible);const n=e.visibility;if(e.visibility=b(()=>{const a=c(e.display);switch(UI.msDisplay){default:case fe.All:return c(n);case fe.Configurable:return c(e.earned)&&!(a!=null&&typeof a=="object"&&"optionsDisplay"in a)?MI.None:c(n);case fe.Incomplete:return c(e.earned)?MI.None:c(n);case fe.None:return MI.None}}),Vi(e,"style"),Vi(e,"classes"),Vi(e,"display"),Vi(e,"showPopups"),e[me]=function(){const{visibility:a,display:Z,style:o,classes:y,earned:u,id:w}=this;return{visibility:a,display:Z,style:c(o),classes:y,earned:u,id:w}},e.shouldEarn){const a=e;AI(()=>{var Z,o;if(UI.active===Qi.id&&!a.earned.value&&c(a.visibility)===MI.Visible&&((Z=a.shouldEarn)==null?void 0:Z.call(a))&&(a.earned.value=!0,(o=a.onComplete)==null||o.call(a),a.display!=null&&c(a.showPopups)===!0)){const y=c(a.display),u=GI(le(y)?y:y.requirement);sm(s(M,null,[s("h3",null,[d("Milestone earned!")]),s("div",null,[s(u,null,null)])]))}})}return e})}NI.on("loadSettings",i=>{kI(i,"msDisplay",fe.All)});const iZ=Object.values(fe).map(i=>({label:wm(i),value:i}));Ac(r(()=>s(Xs,{title:r(()=>s("span",{class:"option-title"},[d("Show milestones"),s("desc",null,[d("Select which milestones to display based on criterias.")])])),options:iZ,"onUpdate:modelValue":i=>UI.msDisplay=i,modelValue:UI.msDisplay},null)));const IZ=Symbol("Reset");function Qm(i){return fl(()=>{const l=i();return l.id=ue("reset-"),l.type=IZ,l.reset=function(){var n;const e=m=>{if(m!=null&&typeof m=="object")if(we in m){const a=m;a.value=a[we]}else!(m instanceof I)&&!dl(m)&&Object.values(m).forEach(a=>e(a))};c(l.thingsToReset).forEach(e),NI.emit("reset",l),(n=l.onReset)==null||n.call(l)},Vi(l,"thingsToReset"),l})}const Ss={};NI.on("removeLayer",i=>{var l;(l=Ss[i.id])==null||l.call(Ss),Ss[i.id]=void 0});const lZ="ribbon",ge=16,fs=al(lZ,()=>{const i="Ribbon",l="darkred",e=vI(0,"Ribbon"),n=b(()=>I.times(Qs(e.value,10,2),[Ri.dyes.orange,Ri.dyes.green,Ri.dyes.purple].includes(m.value)?2e6:1e13).mul(gI.packingMilestones.ribbonBoost.earned.value?.5:1)),m=b(()=>Object.values(Ri.dyes).filter(G=>G!==Ri.dyes.black&&G!==Ri.dyes.white)[new I(e.value).toNumber()%6]),a=t(0),Z=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(a.value,u.value)})),o=il(()=>({display:{title:"Make Ribbon",description:r(()=>s(M,null,[d("Create another ribbon with")," ",s("span",{class:I.lt(m.value.amount.value,n.value)?"unaffordable":""},[di(n.value),d(" "),m.value.name])," ",d("and")," ",s("span",{class:I.lt(fI.cloth.value,1e9)?"unaffordable":""},[di(1e9),d(" "),fI.cloth.displayName]),s("br",null,null),hi(Z)]))},style:{minHeight:"80px"},canClick:()=>I.gte(a.value,u.value)&&I.gte(m.value.amount.value,n.value)&&I.gte(fI.cloth.value,1e9),onClick(){!c(o.canClick)||(m.value.buyable.amount.value=0,fI.cloth.value=I.sub(fI.cloth.value,1e9),e.value=I.add(e.value,1),a.value=0)}})),y=Ci(()=>[]),u=b(()=>y.apply(10)),[w,W]=vl(()=>[{title:"Ribbon Cooldown",modifier:y,base:10}]),N=Ji(!1),p=r(()=>s(EI,{modelValue:N.value,"onUpdate:modelValue":G=>N.value=G},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:w})),f=z(()=>({display:{requirement:"5 Ribbons",effectDisplay:"Carol will now mix secondary dyes for you"},shouldEarn:()=>I.gte(e.value,5)})),C=z(()=>({display:{requirement:"10 Ribbons",effectDisplay:"Unlock a new book"},shouldEarn:()=>I.gte(e.value,10),visibility:()=>j(f.earned.value)})),D={secondaryDyeElf:f,dyeBook:C},{collapseMilestones:L,display:O}=ne(D),v=b(()=>I.sub(V.masteredDays.value,5).times(I.sub(V.masteredDays.value,4).div(2))),H=il(()=>({display:()=>{var G;return{title:`${V.isMastery.value?"Stop Decorating":"Begin Decorating"} ${(G=Object.values(CI).find(x=>{var K;return c(x.mastered)===!1&&!["Elves","Management"].includes(c((K=x==null?void 0:x.name)!=null?K:""))}))==null?void 0:G.name}`,description:r(()=>s(M,null,[s("br",null,null),d("Decorating brings you to a separate version of each day that only allows layers that are decorated or being decorated to work. These days will have a new decoration effect that applies outside of decorating as well."),s("br",null,null),d("You can safely start and stop decorating without losing progress"),V.isMastery.value?null:s(M,null,[s("br",null,null),s("br",null,null),d("Requires "),_(v.value),d(" total ribbons")])]))}},visibility:()=>j(V.day.value===ge),canClick(){return V.isMastery.value||I.gte(e.value,v.value)},onClick(){var x,K;if(!c(H.canClick))return;V.toggleMastery();const G=(K=(x=V.currentlyMastering.value)==null?void 0:x.id)!=null?K:"trees";Qi.tabs.includes(G)||V.openDay(G),G==="cloth"?Fi.elves.plasticElf.bought.value=!0:G==="letters"&&(Fi.elves.coalDrillElf.bought.value=!0,Fi.elves.heavyDrillElf.bought.value=!0,Fi.elves.oilElf.bought.value=!0,Fi.elves.metalElf.bought.value=!0)},style:{width:"300px",minHeight:"160px"}})),mi=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:"animation: 15s ribbon-bar linear infinite",progress:()=>V.day.value===ge?I.div(V.masteredDays.value-6,5):1,display:r(()=>V.day.value===ge?s(M,null,[V.masteredDays.value-6,d("/5 days decorated")]):"")}));return AI(()=>{V.day.value===ge&&I.gte(V.masteredDays.value,11)&&V.showLoreModal.value===!1&&V.completeDay()}),NI.on("update",G=>{I.lt(V.day.value,ge)||(I.gte(a.value,u.value)?a.value=u.value:(a.value=I.add(a.value,G),o.isHolding.value&&o.onClick()))}),{name:i,day:ge,color:l,ribbon:e,ribbonProgress:a,milestones:D,collapseMilestones:L,generalTabCollapsed:W,display:r(()=>s("div",{style:"width: 620px"},[s("div",null,[V.day.value===ge?"Decorate 5 previous days to complete the day":`${i} Complete!`," ",d("-")," ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>N.value=!0},[d("Check Modifiers")])]),hi(mi),hi(p),s(ti,null,null),s(sl,{resource:e,color:l},null),hi(o),s(ti,null,null),hi(H),s(ti,null,null),hi(O)])),minWidth:700}}),eZ="packing",Ls=24,gI=al(eZ,function(){const i="Packing the Sleigh",l="lightblue",e=vI(0,"packed presents"),n=pn(e),m=Dm(e),a=vI(b(()=>m.value),"total packed presents"),Z=64e6,o=t(0),y=Qm(()=>({thingsToReset:[G,x,e],onReset(){o.value=Math.min(3,o.value+1)}})),u=il(()=>({display:{description:"Oh no! You've run out of space! You'll need to take all the presents out and repack them more tightly..."},visibility:()=>j(I.lt(e.value,8e9)&&I.lte(L.value,0)),onClick(){c(this.canClick)&&y.reset()}})),w=t(0),W=HI(()=>({direction:Yi.Right,width:100,height:10,fillStyle:{animation:"15s packing-bar linear infinite"},progress:()=>w.value})),N=b(()=>I.add(I.times(v.value,G.amount.value),I.times(mi.value,x.amount.value)).times(2)),p=il(()=>({display:{description:r(()=>s(M,null,[Ii.manual.bought.value?s("h3",null,[d("Pack "),di(N.value),d(" presents")]):s("h3",null,[d("Pack a present")]),s("br",null,null),hi(W)]))},style:"min-height: 60px; width: 200px",visibility:()=>j(I.gt(L.value,0)),canClick:()=>I.gte(w.value,1),onClick(){if(I.lt(w.value,1))return;const q=Ii.manual.bought.value?N.value:1;e.value=I.add(e.value,q).min(D.value),w.value=0}})),f=b(()=>{switch(o.value){default:return .6;case 1:return .7;case 2:return .85;case 3:return 1}}),C=b(()=>I.times(e.value,.008).dividedBy(f.value)),D=b(()=>I.times(Z,f.value).div(.008)),L=b(()=>I.sub(Z,C.value)),O=Ci(()=>[J(()=>({multiplier:()=>I.pow(.5,o.value),description:"Better Organization",enabled:()=>o.value>=1})),J(()=>({multiplier:2,description:"Jingle Level 1",enabled:Y.elfTraining.packingElfTraining.milestones[0].earned})),J(()=>({multiplier:()=>I.times(K.elf.amount.value,.005).plus(1),description:"Jingle Level 2",enabled:Y.elfTraining.packingElfTraining.milestones[1].earned})),J(()=>({multiplier:()=>1+Object.values(R).filter(q=>q.earned).length,description:"Jingle Level 3",enabled:Y.elfTraining.packingElfTraining.milestones[2].earned})),J(()=>({multiplier:()=>I.log10(e.value).plus(1),description:"10,000 Presents Packed",enabled:()=>I.gte(e.value,1e4)})),J(()=>({multiplier:()=>I.times(Y.totalElfLevels.value,.05).add(1),description:"Communal Assistance",enabled:bi.elfLevel.bought})),J(()=>({multiplier:()=>I.pow(1.02,fs.ribbon.value),description:"Spare Bows",enabled:Ii.ribbons.bought}))]),v=b(()=>O.apply(1)),H=Ci(()=>[Si(()=>({addend:()=>I.times(G.amount.value,5),description:"Loading Assistants",enabled:Ii.assistantSynergy.bought})),J(()=>({multiplier:()=>I.pow(.5,o.value),description:"Better Organization",enabled:()=>o.value>=1})),J(()=>({multiplier:()=>I.sqrt(v.value).max(1),description:"Jingle Level 5",enabled:Y.elfTraining.packingElfTraining.milestones[4].earned}))]),mi=b(()=>H.apply(1e3)),G=Ai(()=>({visibility:()=>j(I.gte(m.value,10)),cost(){let q=this.amount.value;return q=I.pow(.98,g.books.packingBook.totalAmount.value).times(q),I.pow(1.2,q).times(10).floor()},inverseCost(q){let Wi=I.div(q,10).log(1.2);return Wi=Wi.div(I.pow(.98,g.books.packingBook.totalAmount.value)),I.isNaN(Wi)?I.dZero:Wi.floor().max(0)},resource:a,display:r(()=>s(M,null,[s("div",null,[s("h3",null,[d("Hire an elf assistant")])]),d("Packs "),di(v.value),d(" presents per second"),s("div",null,[s("br",null,null),d("Amount: "),_(K.elf.amount.value)]),s("div",null,[s("br",null,null),d("Currently packing")," ",di(I.times(K.elf.amount.value,v.value))," ",d("presents per second")]),s("div",null,[d("Requires: "),_(c(K.elf.cost))," ",K.elf.resource.displayName])])),style:{width:"200px"}})),x=Ai(()=>({visibility:()=>j(bi.loaderUnlock.bought.value),metalCost:b(()=>I.pow(1.2,K.loader.amount.value).times(1e70)),oilCost:b(()=>I.pow(1.2,K.loader.amount.value).times(1e25)),canPurchase(){return I.gte(tI.metal.value,this.metalCost.value)&&I.gte(xi.oil.value,this.oilCost.value)},onPurchase(){const q=I.pow(1.2,I.sub(K.loader.amount.value,1)).times(1e70),Wi=I.pow(1.2,I.sub(K.loader.amount.value,1)).times(1e25);tI.metal.value=I.sub(tI.metal.value,q),xi.oil.value=I.sub(xi.oil.value,Wi)},inverseCost(){const q=I.div(tI.metal.value,1e70).log(1.2),Wi=I.div(xi.oil.value,1e25).log(1.2);return I.isNaN(q)||I.isNaN(Wi)?I.dZero:I.min(q,Wi).floor().max(0)},display:r(()=>s(M,null,[s("div",null,[s("h3",null,[d("Build a loader")])]),d("Loads "),di(mi.value),d(" presents per second"),s("div",null,[s("br",null,null),d("Amount: "),_(K.loader.amount.value)]),s("div",null,[s("br",null,null),d("Currently packing")," ",di(I.times(K.loader.amount.value,mi.value))," ",d("persents per second")]),s("div",null,[d("Cost:")," ",nm(tI.metal,K.loader.metalCost.value,tI.metal.displayName),d(","),nm(xi.oil,K.loader.oilCost.value,xi.oil.displayName)])])),style:{width:"200px"}})),K={elf:G,loader:x},bi={packingElf:U(()=>({display:{title:"An Elf's Elf",description:"Train an Elf to help you hire more Elves."},cost:1e3,resource:a,style:{width:"200px"},visibility(){return j(I.gte(e.value,10)||this.bought.value)},onPurchase(){V.days[12].recentlyUpdated.value=!0,Fi.elves.packingElf.bought.value=!0}})),loaderUnlock:U(()=>({display:{title:"Heavy Machinery",description:"Those construction vehicles you have from building the workshop should be useful for loading presents too."},cost:1e6,resource:a,style:{width:"200px"},visibility(){return j(I.gte(m.value,1e4)||this.bought.value)}})),elfLevel:U(()=>({display:{title:"Communal Assistance",description:"Each elf level increases elf packing speed by 5%"},cost:1e8,resource:a,style:{width:"200px"},visibility(){return j(I.gte(m.value,1e7)||this.bought.value)}}))},Ii={ribbons:U(()=>({display:{title:"Spare Bows",description:"Each ribbon multiplies elf packing speed by 1.02x"},cost:2e9,resource:a,style:{width:"200px"},visibility(){return j(I.gte(m.value,1e9)||this.bought.value)}})),assistantSynergy:U(()=>({display:{title:"Loading Assistants",description:"Each elf assistant increases how much the loader can load per second by 5"},cost:5e9,resource:a,style:{width:"200px"},visibility(){return j(I.gte(m.value,48e8)||this.bought.value)}})),manual:U(()=>({display:{title:"DIY",description:"Each present manually packed gives 2 seconds of automatic present packing production"},cost:1e10,resource:a,style:{width:"200px"},visibility(){return j(I.gte(m.value,5e9)||this.bought.value)}}))},R={logBoost:z(()=>({display:{requirement:`25 ${e.displayName}`,effectDisplay:"Trees size is raised to the 1.25th power"},shouldEarn:()=>I.gte(e.value,25)})),boxBoost:z(()=>({display:{requirement:`120 ${e.displayName}`,effectDisplay:"Create 10% more boxes"},shouldEarn:()=>I.gte(e.value,120),visibility:()=>j(R.logBoost.earned.value)})),clothBoost:z(()=>({display:{requirement:`600 ${e.displayName}`,effectDisplay:"Sheep grow 10x as much wool"},shouldEarn:()=>I.gte(e.value,600),visibility:()=>j(R.boxBoost.earned.value)})),oilBoost:z(()=>({display:{requirement:`2,800 ${e.displayName}`,effectDisplay:"Triple drill power"},shouldEarn:()=>I.gte(e.value,2800),visibility:()=>j(R.clothBoost.earned.value)})),packingBoost:z(()=>({display:{requirement:`10,000 ${e.displayName}`,effectDisplay:"Multiply packing speed by log(presents)"},shouldEarn:()=>I.gte(e.value,2800),visibility:()=>j(R.clothBoost.earned.value)})),coalBoost:z(()=>({display:{requirement:`14,000 ${e.displayName}`,effectDisplay:"Coal producer costs grow half as fast"},shouldEarn:()=>I.gte(e.value,14e3),visibility:()=>j(R.oilBoost.earned.value)})),metalBoost:z(()=>({display:{requirement:`69,200 ${e.displayName}`,effectDisplay:"Raise ore purity to the 1.5th power"},shouldEarn:()=>I.gte(e.value,69200),visibility:()=>j(R.coalBoost.earned.value)})),wrappingPaperBoost:z(()=>({display:{requirement:`340,000 ${e.displayName}`,effectDisplay:"Double the strength of wrapping paper bonuses"},shouldEarn:()=>I.gte(e.value,34e4),visibility:()=>j(R.metalBoost.earned.value)})),oreBoost:z(()=>({display:{requirement:`1,670,000 ${e.displayName}`,effectDisplay:"Ore mining speed multiplies ore gain"},shouldEarn:()=>I.gte(e.value,167e4),visibility:()=>j(R.wrappingPaperBoost.earned.value)})),ribbonBoost:z(()=>({display:{requirement:`8,230,000 ${e.displayName}`,effectDisplay:"Halve ribbon's dye cost"},shouldEarn:()=>I.gte(e.value,823e4),visibility:()=>j(R.oreBoost.earned.value)})),secondaryDyeBoost:z(()=>({display:{requirement:`40,400,000 ${e.displayName}`,effectDisplay:"Double the second effect of each secondary dye"},shouldEarn:()=>I.gte(e.value,404e5),visibility:()=>j(R.ribbonBoost.earned.value)})),paperBoost:z(()=>({display:{requirement:`199,000,000 ${e.displayName}`,effectDisplay:"Produce 10x as much paper"},shouldEarn:()=>I.gte(e.value,199e6),visibility:()=>j(R.secondaryDyeBoost.earned.value)})),primaryDyeBoost:z(()=>({display:{requirement:`977,000,000 ${e.displayName}`,effectDisplay:"Quintuple primary dye gain"},shouldEarn:()=>I.gte(e.value,977e6),visibility:()=>j(R.paperBoost.earned.value)})),focusSelected:z(()=>({display:{requirement:`${di(42e8)} ${e.displayName}`,effectDisplay:"Focusing elves always chooses the selected elf"},shouldEarn:()=>I.gte(e.value,42e8),visibility:()=>j(R.primaryDyeBoost.earned.value)})),moreFocus:z(()=>({display:{requirement:`${di(64e8)} ${e.displayName}`,effectDisplay:"Each packing reset doubles the max elf focus multiplier"},shouldEarn:()=>I.gte(e.value,64e8),visibility:()=>j(R.focusSelected.earned.value)}))},{collapseMilestones:li,display:A}=ne(R),[B,Mi]=vl(()=>[{title:"Elf Packing Speed",modifier:O,base:1,unit:"/s"},{title:"Loader Packing Speed",modifier:H,base:1e3,unit:"/s"}]),Li=Ji(!1),zi=r(()=>s(EI,{modelValue:Li.value,"onUpdate:modelValue":q=>Li.value=q},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:B})),{trackerDisplay:si}=de({resource:e,ignoreTotal:!0,goal:8e9,name:i,day:Ls,background:{gradient:"packing-bar",duration:"15s"},textColor:"var(--bought)",modal:{show:Li,display:zi}});return NI.on("update",q=>{I.lt(V.day.value,Ls)||(I.gte(w.value,1)?w.value=1:(w.value=I.add(w.value,q),p.isHolding.value&&p.onClick()),!I.lt(L.value,0)&&(e.value=I.add(I.times(K.elf.amount.value,v.value),I.times(K.loader.amount.value,mi.value)).times(q).plus(e.value).min(D.value)))}),{name:i,day:Ls,color:l,packedPresents:e,bestPresents:n,totalPresents:m,packingResets:o,packingProgress:w,helpers:K,upgrades:bi,upgrades2:Ii,packingMilestones:R,collapseMilestones:li,generalTabCollapsed:Mi,minWidth:700,display:r(()=>s(M,null,[hi(si),s(ti,null,null),s(sl,{resource:e,color:l,style:"margin-bottom: 0"},null),o.value===0?null:s("div",null,[s(ti,null,null),d("You've restarted packing "),_(o.value),d(" times,"),s("br",null,null),d("packing a total of")," ",s(_s,{resource:a,color:l},null),d(" presents")]),s(ti,null,null),s("p",null,[d("The bag has "),di(L.value),d(" m"),s("sup",null,[d("3")]),d(" empty room")]),s(ti,null,null),hi(u),hi(p),V.day.value===Ls-1?s(ti,null,null):null,zI(...Object.values(K)),s(ti,null,null),xl(Object.values(bi),Object.values(Ii)),s(ti,null,null),A()])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[_(e.value),d(" "),e.displayName])]))}});function nm(i,l,e){const n=(ts(i)?i:[i]).every(m=>I.gte(m.value,l));return s("span",{class:n?"":"unaffordable"},[di(l),d(" "),e])}const sZ="toys",mm=17,lI=al(sZ,function(){const i="Toys",l="cornflowerblue",e=vI(0,"clothes"),n=vI(0," wooden blocks"),m=vI(0,"trucks"),a=Ci(()=>[]),Z=vI(b(()=>I.add(e.value,n.value).add(m.value)),"toys"),o=b(()=>{let q=I.add(1,y.amount.value);return Ii.milestone1.earned.value&&(q=q.div(I.div(XI.foundationProgress.value,100).floor())),{cloth:q.mul(1e13),dye:q.mul(2e14)}}),y=Ai(()=>({display:r(()=>s(M,null,[s("h3",null,[d("Make Clothes")]),s("div",null,[d("Click this buyable to make some clothes!")]),s("div",null,[d("You have "),_(e.value),d(" clothes.")]),s("div",null,[d("Costs")," ",s("span",{class:I.lt(fI.cloth.value,o.value.cloth)?"unaffordable":""},[di(o.value.cloth),d(" cloth")])," ",d("and requires")," ",s("span",{class:[Ri.dyes.red,Ri.dyes.yellow,Ri.dyes.blue].some(q=>I.lt(q.amount.value,o.value.dye))?"unaffordable":""},[di(o.value.dye),d(" of red, yellow, and blue dye")])])])),canPurchase(){return o.value.cloth.lte(fI.cloth.value)&&o.value.dye.lte(Ri.dyes.blue.amount.value)&&o.value.dye.lte(Ri.dyes.red.amount.value)&&o.value.dye.lte(Ri.dyes.yellow.amount.value)},onPurchase(){this.amount.value=I.add(this.amount.value,-1),fI.cloth.value=I.sub(fI.cloth.value,o.value.cloth),this.amount.value=I.add(this.amount.value,1),e.value=I.add(e.value,1)}})),u=b(()=>{let q=I.add(1,w.amount.value).pow(5);return Ii.milestone1.earned.value&&(q=q.div(I.div(XI.foundationProgress.value,100).floor())),{wood:q.mul(1e63)}}),w=Ai(()=>({display:r(()=>s(M,null,[s("h3",null,[d("Make Wooden Blocks")]),s("div",null,[d("Click this buyable to make some wooden blocks!")]),s("div",null,[d("You have "),_(n.value),d(" wooden blocks.")]),s("div",null,[d("Costs "),di(u.value.wood),d(" logs")])])),canPurchase(){return u.value.wood.lte(ki.logs.value)},onPurchase(){this.amount.value=I.add(this.amount.value,-1),ki.logs.value=I.sub(ki.logs.value,u.value.wood),this.amount.value=I.add(this.amount.value,1),n.value=I.add(n.value,1)}})),W=b(()=>{let q=I.add(1,N.amount.value).pow(3),Wi=I.add(1,N.amount.value);return Ii.milestone1.earned.value&&(q=q.div(I.div(XI.foundationProgress.value,100).floor()),Wi=Wi.div(I.div(XI.foundationProgress.value,100).floor())),{metal:q.mul(1e43),plastic:Wi.mul(1e14)}}),N=Ai(()=>({display:r(()=>s(M,null,[s("h3",null,[d("Make Trucks")]),s("div",null,[d("Click this buyable to make some trucks!")]),s("div",null,[d("You have "),_(m.value),d(" trucks.")]),s("div",null,[d("Costs")," ",s("span",{class:I.lt(tI.metal.value,W.value.metal)?"unaffordable":""},[di(W.value.metal),d(" metal")])," ",d("and")," ",s("span",{class:I.lt(jI.plastic.value,W.value.plastic)?"unaffordable":""},[di(W.value.plastic),d(" plastic")])])])),canPurchase(){return W.value.metal.lte(tI.metal.value)&&W.value.plastic.lte(jI.plastic.value)},onPurchase(){this.amount.value=I.add(this.amount.value,-1),tI.metal.value=I.sub(tI.metal.value,W.value.metal),jI.plastic.value=I.sub(jI.plastic.value,W.value.plastic),this.amount.value=I.add(this.amount.value,1),m.value=I.add(m.value,1)}})),p=[y,w,N],f=U(()=>({resource:$(m),cost:10,display:{title:"Load logs onto trucks",description:"Log gain is doubled."}})),C=U(()=>({resource:$(e),cost:30,display:{title:"Give elves clothes to wear",description:"Multiply ore per mining operation and auto-smelt purity by the number of clothes you have."}})),D=U(()=>({resource:$(n),cost:15,display:{title:"Build wooden towers",description:"You can now build 2 extra tall workshops!"}})),L=[f,C,D],O=z(()=>({display:{requirement:"10 toys",effectDisplay:"The cost of making toys is divided by the number of complete workshops you have"},shouldEarn:()=>I.gte(Z.value,10)})),v=z(()=>({display:{requirement:"100 toys",effectDisplay:"Unlock black dyes"},shouldEarn:()=>I.gte(Z.value,100),visibility:()=>j(O.earned.value)})),H=z(()=>({display:{requirement:"200 toys",effectDisplay:"Beach wrapping paper is much more powerful"},shouldEarn:()=>I.gte(Z.value,200),visibility:()=>j(v.earned.value)})),mi=z(()=>({display:{requirement:"350 toys",effectDisplay:"Gain 50x oil and plastic"},shouldEarn:()=>I.gte(Z.value,350),visibility:()=>j(H.earned.value)})),G=z(()=>({display:{requirement:"750 toys",effectDisplay:"The wheel crafter now makes 2 wheels instead of 1! Now you should be able to fit everything in the factory."},shouldEarn:()=>I.gte(Z.value,750),visibility:()=>j(mi.earned.value&&V.days[Gl.day-1].opened.value)})),x=z(()=>({display:{requirement:"1500 toys",effectDisplay:"Running out of energy? Let's increase the limit! Multiply energy capacity by 1.4"},shouldEarn:()=>I.gte(Z.value,1500),visibility:()=>j(G.earned.value)})),K=z(()=>({display:{requirement:"3000 toys",effectDisplay:"Multiply log gain by the amount of clothes you have"},shouldEarn:()=>I.gte(Z.value,3e3),visibility:()=>j(x.earned.value&&V.days[Gl.advancedDay-1].opened.value)})),bi=z(()=>({display:{requirement:"6000 toys",effectDisplay:"Running out of energy? Let's increase the limit! Multiply energy capacity by 1.4"},shouldEarn:()=>I.gte(Z.value,6e3),visibility:()=>j(x.earned.value&&V.days[Gl.advancedDay-1].opened.value)})),Ii={milestone1:O,milestone2:v,milestone3:H,milestone4:mi,milestone5:G,milestone6:x,milestone7:K,milestone8:bi},{collapseMilestones:R,display:li}=ne(Ii),[A,B]=vl(()=>[{title:"Toy Gain",modifier:a,base:1,visible:!0}]),Mi=Ji(!1),Li=r(()=>s(EI,{modelValue:Mi.value,"onUpdate:modelValue":q=>Mi.value=q},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:A})),{total:zi,trackerDisplay:si}=de({resource:Z,goal:500,name:i,day:mm,textColor:"var(--feature-foreground)",background:{gradient:"toys-bar",duration:"15s"},modal:{show:Mi,display:Li}});return{name:i,day:mm,color:l,clothes:e,woodenBlocks:n,trucks:m,toySum:Z,totalToys:zi,buyables:p,row1Upgrades:L,milestones:Ii,generalTabCollapsed:B,collapseMilestones:R,minWidth:700,display:r(()=>s(M,null,[hi(si),s(ti,null,null),s(sl,{resource:e,color:"lightblue",style:"margin-bottom: 0",productionDisplay:void 0},null),s(sl,{resource:n,color:"cornflowerblue",style:"margin-bottom: 0",productionDisplay:void 0},null),s(sl,{resource:m,color:"cadetblue",style:"margin-bottom: 0",productionDisplay:void 0},null),s(ti,null,null),zI(...p),s(ti,null,null),xl(L),s(ti,null,null),s("div",null,[d("You have "),_(Z.value),d(" toys")]),li()])),minimizedDisplay:r(()=>s("div",null,[i,d(" "),s("span",{class:"desc"},[_(Z.value),d(" total toys")])]))}}),nZ="wrappingPaper",is=15,Je=1e5,We=100,pe=1.5,Me=1.2,pl=al(nZ,()=>{const i="Wrapping Paper",l="gold",e=W=>{const N=b(()=>{const C=[];for(const[D,L]of Object.entries(W.ratio))C.push({resource:Ri.dyes[D].amount,cost:I.mul(L.base,I.pow(L.exponent,p.amount.value))});return C}),p=Ai(()=>({style:()=>({background:c(p.canPurchase)?W.background:"#545454",minWidth:"200px",boxShadow:"0 3px 0 #00000022 inset, 3px 0 0 #00000022 inset, 0 0 3px #00000022 inset, 0 0 0 3px #00000022 inset",border:"none"}),display:r(()=>s("span",null,[s("h3",null,[W.name]),s("br",null,null),d("Create "),W.name,d("."),s("br",null,null),d("Requirement:")," ",N.value.map(({resource:C,cost:D})=>hi(r(()=>s("div",{class:I.lt(C.value,D)?"unaffordable":""},[di(D),d(" "),C.displayName,d(" "),s("br",null,null)])))),s("br",null,null),d("Currently:")," ",W.listedBoosts.map(({desc:C})=>hi(r(()=>s("div",null,[c(C)]))))])),canPurchase(){for(const{resource:C,cost:D}of N.value)if(I.lt(C.value,D))return!1;return!0}})),f=vI(p.amount,W.name);return{resource:f,buyable:p,name:W.name,display:r(()=>s(sl,{resource:f,style:"margin: 0; width: 200px; width: 180px; padding: 10px;",sticky:!1},null))}},n={christmas:e({name:"Christmas Wrapping Paper",id:"christmas",ratio:{red:{base:Je*3,exponent:pe},green:{base:We*3,exponent:Me}},background:"linear-gradient(225deg, rgba(255,76,76,1) 10.8%, rgba(255,255,255,1) 11.1%, rgba(255,255,255,1) 21.9%, rgba(65,255,95,1) 22.2%, rgba(65,255,95,1) 33.0%, rgba(255,255,255,1) 33.3%, rgba(255,255,255,1) 44.1%, rgba(255,76,76,1) 44.4%, rgba(255,76,76,1) 55.2%, rgba(255,255,255,1) 55.5%, rgba(255,255,255,1) 66.3%, rgba(65,255,95,1) 66.6%, rgba(65,255,95,1) 77.4%, rgba(255,255,255,1) 77.7%, rgba(255,255,255,1) 88.5%, rgba(255,76,76,1) 88.8%)",listedBoosts:[{desc:b(()=>` + x${di(c(a.christmas1))} to wood production + `)}]}),rainbow:e({name:"Rainbow Wrapping Paper",id:"rainbow",ratio:{red:{base:Je,exponent:pe+.2},green:{base:We,exponent:Me+.1},blue:{base:Je,exponent:pe+.2},yellow:{base:Je,exponent:pe+.2},purple:{base:We,exponent:Me+.1},orange:{base:We,exponent:Me+.1}},background:"linear-gradient(135deg, rgba(255,0,0,1) 0%, rgba(255,0,0,1) 2%, rgba(255,155,0,1) 14%, rgba(255,155,0,1) 18%, rgba(255,254,0,1) 31%, rgba(255,254,0,1) 35%, rgba(100,244,61,1) 48%, rgba(100,244,61,1) 52%, rgba(70,218,234,1) 64%, rgba(70,218,234,1) 68%, rgba(205,0,210,1) 81%, rgba(205,0,210,1) 85%, rgba(255,0,0,1) 98%, rgba(255,0,0,1) 100%)",listedBoosts:[{desc:b(()=>` + /${di(c(a.rainbow1))} to coal buyable cost + `)}]}),jazzy:e({name:"Jazzy Wrapping Paper",id:"jazzy",ratio:{purple:{base:We*3,exponent:Me},orange:{base:We*3,exponent:Me}},background:"linear-gradient(90deg, rgba(255,177,0,1) 10.8%, rgba(189,69,255,1) 11.1%, rgba(189,69,255,1) 21.9%, rgba(255,177,0,1) 22.2%, rgba(255,177,0,1) 33.0%, rgba(189,69,255,1) 33.3%, rgba(189,69,255,1) 44.1%, rgba(255,177,0,1) 44.4%, rgba(255,177,0,1) 55.2%, rgba(189,69,255,1) 55.5%, rgba(189,69,255,1) 66.3%, rgba(255,177,0,1) 66.6%, rgba(255,177,0,1) 77.4%, rgba(189,69,255,1) 77.7%, rgba(189,69,255,1) 88.5%, rgba(255,177,0,1) 88.8%)",listedBoosts:[{desc:b(()=>` + x${di(c(a.jazzy1))} to auto-smelting speed + `)}]}),sunshine:e({name:"Sunshine Wrapping Paper",id:"sunshine",ratio:{red:{base:Je*2,exponent:pe+.1},yellow:{base:Je*2,exponent:pe+.1},orange:{base:We*2,exponent:Me+.05}},background:"radial-gradient(circle, rgba(238,250,0,1) 16%, rgba(250,157,0,1) 50%, rgba(255,76,76,1) 83%)",listedBoosts:[{desc:b(()=>` + x${di(c(a.sunshine1))} to paper production + `)}]}),ocean:e({name:"Ocean Wrapping Paper",id:"ocean",ratio:{blue:{base:Je*2,exponent:pe+.1},green:{base:We*2,exponent:Me+.05},purple:{base:We*2,exponent:Me+.05}},background:"linear-gradient(20deg, rgba(0,183,250,0.6) 8%, rgba(0,223,62,0.6) 12%, rgba(0,183,250,0.6) 17%, rgba(0,183,250,0.6) 27%, rgba(124,109,230,0.6) 38%, rgba(0,183,250,0.6) 46%, rgba(0,183,250,0.6) 50%, rgba(0,223,62,0.6) 53%, rgba(0,183,250,0.6) 60%, rgba(124,109,230,0.6) 67%, rgba(0,183,250,0.6) 73%, rgba(0,183,250,0.6) 84%, rgba(0,223,62,0.6) 88%, rgba(0,183,250,0.6) 91%), linear-gradient(340deg, rgba(0,183,250,0.6) 8%, rgba(0,223,62,0.6) 12%, rgba(0,183,250,0.6) 17%, rgba(0,183,250,0.6) 27%, rgba(124,109,230,0.6) 38%, rgba(0,183,250,0.6) 46%, rgba(0,183,250,0.6) 50%, rgba(0,223,62,0.6) 53%, rgba(0,183,250,0.6) 60%, rgba(124,109,230,0.6) 67%, rgba(0,183,250,0.6) 73%, rgba(0,183,250,0.6) 84%, rgba(0,223,62,0.6) 88%, rgba(0,183,250,0.6) 91%)",listedBoosts:[{desc:b(()=>` + /${di(c(a.ocean1))} to box buyable cost + `)}]}),beach:e({name:"Beach Wrapping Paper",id:"beach",ratio:{yellow:{base:Je*3,exponent:pe},blue:{base:Je*3,exponent:pe}},background:"radial-gradient(circle at 80% 10%, rgba(255,255,76,1) 8%, rgba(0,0,0,0) 21%), linear-gradient(180deg, rgba(0,255,246,1) 60%, rgba(0,255,246,0) 61%), linear-gradient(215deg, rgba(0,93,255,0) 0%, rgba(0,93,255,0) 66%, rgba(255,255,76,1) 68%), linear-gradient(180deg, rgba(0,0,0,0) 68%, rgba(0,93,255,1) 70%), linear-gradient(205deg, rgba(0,255,246,1) 0%, rgba(0,255,246,1) 100%)",listedBoosts:[{desc:b(()=>` + /${di(c(a.beach1))} to workshop cost + `)}]})},m=b(()=>gI.packingMilestones.wrappingPaperBoost.earned.value?2:1),a={christmas1:b(()=>V.isMastery.value?1:I.add(n.christmas.buyable.amount.value,1).mul(m.value)),rainbow1:b(()=>V.isMastery.value?1:I.pow(2,n.rainbow.buyable.amount.value).mul(m.value)),jazzy1:b(()=>V.isMastery.value?1:I.add(n.jazzy.buyable.amount.value,1).mul(m.value)),sunshine1:b(()=>V.isMastery.value?1:I.add(n.sunshine.buyable.amount.value,1).mul(m.value)),ocean1:b(()=>V.isMastery.value?1:I.pow(1.5,n.ocean.buyable.amount.value).mul(m.value)),beach1:b(()=>V.isMastery.value?1:I.add(n.beach.buyable.amount.value,1).log10().add(1).mul(m.value).pow(lI.milestones.milestone3.earned.value?1.6:1))},Z=vI(b(()=>Object.values(n).map(W=>W.buyable.amount.value).reduce(I.add,0)),"Total Wrapping Paper"),o=z(()=>({display:{requirement:"80 Total Wrapping Paper",effectDisplay:"Unlock a new elf to help with dyes"},shouldEarn:()=>I.gte(Z.value,80),onComplete(){V.days[3].recentlyUpdated.value=!0}})),y=b(()=>I.add(V.masteredDays.value,1).times(20).add(140).ceil()),u=il(()=>({display:()=>{var W;return{title:`${V.isMastery.value?"Stop Decorating":"Begin Decorating"} ${(W=Object.values(CI).find(N=>{var p;return c(N.mastered)===!1&&!["Elves","Management"].includes(c((p=N==null?void 0:N.name)!=null?p:""))}))==null?void 0:W.name}`,description:r(()=>s(M,null,[s("br",null,null),d("Decorating brings you to a separate version of each day that only allows layers that are decorated or being decorated to work. These days will have a new decoration effect that applies outside of decorating as well."),s("br",null,null),d("You can safely start and stop decorating without losing progress"),V.isMastery.value?null:s(M,null,[s("br",null,null),s("br",null,null),d("Requires "),_(y.value),d(" total wrapping paper")])]))}},visibility:()=>j(V.day.value===is),canClick(){return V.isMastery.value||I.gte(Z.value,y.value)},onClick(){var N,p;if(!c(u.canClick))return;V.toggleMastery();const W=(p=(N=V.currentlyMastering.value)==null?void 0:N.id)!=null?p:"trees";Qi.tabs.includes(W)||V.openDay(W),W==="paper"&&(Fi.elves.cuttersElf.bought.value=!0,Fi.elves.plantersElf.bought.value=!0,Fi.elves.expandersElf.bought.value=!0,Fi.elves.heatedCuttersElf.bought.value=!0,Fi.elves.heatedPlantersElf.bought.value=!0,Fi.elves.fertilizerElf.bought.value=!0)},style:{width:"300px",minHeight:"160px"}})),w=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:"animation: 15s wrapping-paper-bar linear infinite",textStyle:"color: var(--feature-foreground)",progress:()=>V.day.value===is?I.div(V.masteredDays.value,6):1,display:r(()=>V.day.value===is?s(M,null,[V.masteredDays.value,d("/6 days decorated")]):"")}));return AI(()=>{V.day.value===is&&I.gte(V.masteredDays.value,6)&&V.showLoreModal.value===!1&&V.completeDay()}),{name:i,day:is,color:l,display:r(()=>s("div",{style:"width: 620px"},[s("div",null,[V.day.value===is?"Decorate 6 previous days to complete the day":`${i} Complete!`]),hi(w),s(ti,null,null),s(sl,{resource:Z},null),zI(n.christmas.display,n.rainbow.display,n.jazzy.display),zI(n.christmas.buyable,n.rainbow.buyable,n.jazzy.buyable),s(ti,null,null),zI(n.sunshine.display,n.ocean.display,n.beach.display),zI(n.sunshine.buyable,n.ocean.buyable,n.beach.buyable),s(ti,null,null),hi(u),s(ti,null,null),hi(o)])),wrappingPaper:n,boosts:a,unlockDyeElfMilestone:o,minWidth:700}}),mZ="workshop",Is=2,XI=al(mZ,function(){const i="Workshop",l="#D66B02",e="#D66B02",n=vI(0,"foundation progress"),m=Ci(()=>[Si(()=>({addend:900,description:"Hope Level 3",enabled:Y.elfTraining.expandersElfTraining.milestones[2].earned})),Si(()=>({addend:200,description:"Build wooden towers",enabled:lI.row1Upgrades[2].bought})),Si(()=>({addend:()=>I.times(Gl.factoryBuyables.expandFactory.amount.value,100),description:"Expand Factory",enabled:()=>I.gt(Gl.factoryBuyables.expandFactory.amount.value,0)}))]),a=b(()=>m.apply(100)),Z=Ea(()=>({scaling:Ba(Bn(Bn(fn(250,1.5),5423,1/1e10),1e20,3e8),a),baseResource:ki.logs,gainResource:$(n),roundUpCost:!0,spend(Wi,E){q.value||(ki.logs.value=I.sub(ki.logs.value,E))},costModifier:Ci(()=>[J(()=>({multiplier:pl.boosts.beach1,description:"Beach Wrapping Paper",enabled:b(()=>I.gt(pl.boosts.beach1.value,1))})),Yl(()=>({exponent:1/.99,description:"Holly Level 5",enabled:Y.elfTraining.cutterElfTraining.milestones[4].earned})),Yl(()=>({exponent:.1,description:"Scaling Jump at 1000%",enabled:b(()=>I.gte(n.value,1e3))})),J(()=>({multiplier:6969,description:"Scaling Jump at 1000%",enabled:b(()=>I.gte(n.value,1e3))}))])})),o=il(()=>({display:r(()=>s(M,null,[s("b",{style:"font-size: x-large"},[d("Build "),_(Z.actualGain.value),d("% of the foundation")," ",s(Ze,{hotkey:y},null)]),s("br",null,null),s("br",null,null),s("span",{style:"font-size: large"},[q.value?"Requirement":"Cost",d(":")," ",Gs(ki.logs,Z.nextAt.value)," ",ki.logs.displayName])])),visibility:()=>j(I.lt(n.value,a.value)),canClick:()=>{var Wi;return!(I.lt(ki.logs.value,Z.nextAt.value)||V.isMastery.value&&((Wi=V.currentlyMastering.value)==null?void 0:Wi.name)==="Trees"||I.gte(n.value,a.value))},onClick(){!c(this.canClick)||Z.convert()},style:"width: 600px; min-height: unset"}));AI(()=>{!sn.value&&I.lt(a.value,n.value)&&(n.value=I.min(0,a.value))});const y=je(()=>({key:"w",description:"Build foundation",onPress:()=>{o.canClick.value&&o.onClick()},enabled:$(V.days[Is-1].opened)})),u=b(()=>!Fi.milestones[6].earned.value),w=z(()=>({display:{requirement:"1% Foundation Completed",effectDisplay:"Trees give 5% more logs for each % of foundation completed"},shouldEarn:()=>I.gte(n.value,1),showPopups:u})),W=z(()=>({display:{requirement:"10% Foundation Completed",effectDisplay:"Cut an additional tree per second for each 5% of foundation completed"},shouldEarn:()=>I.gte(n.value,10),visibility:()=>j(w.earned.value),showPopups:u})),N=z(()=>({display:{requirement:"20% Foundation Completed",effectDisplay:"Plant an additional tree per second for each 10% of foundation completed"},shouldEarn:()=>I.gte(n.value,20),visibility:()=>j(W.earned.value),showPopups:u})),p=z(()=>({display:{requirement:"30% Foundation Completed",effectDisplay:"All automatic tree cutting is doubled"},shouldEarn:()=>I.gte(n.value,30),visibility:()=>j(N.earned.value),showPopups:u})),f=z(()=>({display:{requirement:"40% Foundation Completed",effectDisplay:"All automatic tree planting is doubled"},shouldEarn:()=>I.gte(n.value,40),visibility:()=>j(p.earned.value),showPopups:u})),C=z(()=>({display:{requirement:"50% Foundation Completed",effectDisplay:"Trees give twice as many logs"},shouldEarn:()=>I.gte(n.value,50),visibility:()=>j(f.earned.value),showPopups:u})),D=z(()=>({display:{requirement:"75% Foundation Completed",effectDisplay:"The forest gains an extra tree for every 2% of foundation completed"},shouldEarn:()=>I.gte(n.value,75),visibility:()=>j(C.earned.value),showPopups:u})),L=z(()=>({display:{requirement:"100% Foundation Completed",effectDisplay:"Log per tree is raised to the 1.2th power"},shouldEarn:()=>I.gte(n.value,100),visibility:()=>j(D.earned.value),showPopups:u})),O=z(()=>({display:{requirement:"200% Foundation Completed",effectDisplay:"The 1% milestone is now +2% and multiplicative"},shouldEarn:()=>I.gte(n.value,200),visibility:()=>j(L.earned.value&&Y.elfTraining.expandersElfTraining.milestones[2].earned.value),showPopups:u})),v=z(()=>({display:{requirement:"400% Foundation Completed",effectDisplay:"Gain +10% metal for every 10% foundation completed"},shouldEarn:()=>I.gte(n.value,400),visibility:()=>j(O.earned.value&&Y.elfTraining.expandersElfTraining.milestones[2].earned.value),showPopups:u})),H=z(()=>({display:{requirement:"600% Foundation Completed",effectDisplay:"Gain +10% oil for every 10% foundation completed"},shouldEarn:()=>I.gte(n.value,600),visibility:()=>j(v.earned.value&&Y.elfTraining.expandersElfTraining.milestones[2].earned.value),showPopups:u})),mi=z(()=>({display:{requirement:"800% Foundation Completed",effectDisplay:"Gain +10% plastic for every 10% foundation completed"},shouldEarn:()=>I.gte(n.value,800),visibility:()=>j(H.earned.value&&Y.elfTraining.expandersElfTraining.milestones[2].earned.value),showPopups:u})),G=z(()=>({display:{requirement:"1000% Foundation Completed",effectDisplay:"Double paper, boxes, and all cloth actions"},shouldEarn:()=>I.gte(n.value,1e3),visibility:()=>j(mi.earned.value&&Y.elfTraining.expandersElfTraining.milestones[2].earned.value),showPopups:u})),x=z(()=>({display:{requirement:"1200% Foundation Completed",effectDisplay:"Quadruple drill power"},shouldEarn:()=>I.gte(n.value,1200),visibility:()=>j(G.earned.value&&lI.row1Upgrades[2].bought.value),showPopups:u})),K=z(()=>({display:{requirement:"1400% Foundation Completed",effectDisplay:"Coal has a greater effect on energy gain"},shouldEarn:()=>I.gte(n.value,1400),visibility:()=>j(x.earned.value&&lI.row1Upgrades[2].bought.value),showPopups:u})),bi={logGainMilestone1:w,autoCutMilestone1:W,autoPlantMilestone1:N,autoCutMilestone2:p,autoPlantMilestone2:f,logGainMilestone2:C,morePlantsMilestone1:D,logGainMilestone3:L,extraExpansionMilestone1:O,extraExpansionMilestone2:v,extraExpansionMilestone3:H,extraExpansionMilestone4:mi,extraExpansionMilestone5:G,extraExpansionMilestone6:x,extraExpansionMilestone7:K},{collapseMilestones:Ii,display:R}=ne(bi),li=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:`backgroundColor: ${e}`,progress:()=>{var Wi;return V.day.value===Is||((Wi=V.currentlyMastering.value)==null?void 0:Wi.name)===i?I.div(n.value,100):1},display:r(()=>{var Wi;return V.day.value===Is||((Wi=V.currentlyMastering.value)==null?void 0:Wi.name)===i?s(M,null,[_(n.value),d("%")]):""})})),[A,B]=vl(()=>[{title:"Max Foundation",modifier:m,base:100}]),Mi=Ji(!1),Li=r(()=>s(EI,{modelValue:Mi.value,"onUpdate:modelValue":Wi=>Mi.value=Wi},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:A}));AI(()=>{var Wi;V.day.value===Is&&I.gte(n.value,100)?V.completeDay():((Wi=V.currentlyMastering.value)==null?void 0:Wi.name)===i&&I.gte(n.value,100)&&V.completeMastery()});const zi={foundationProgress:t(0),milestones:{logGainMilestone1:{earned:t(!1)},autoCutMilestone1:{earned:t(!1)},autoPlantMilestone1:{earned:t(!1)},autoCutMilestone2:{earned:t(!1)},autoPlantMilestone2:{earned:t(!1)},logGainMilestone2:{earned:t(!1)},morePlantsMilestone1:{earned:t(!1)},logGainMilestone3:{earned:t(!1)},extraExpansionMilestone1:{earned:t(!1)},extraExpansionMilestone2:{earned:t(!1)},extraExpansionMilestone3:{earned:t(!1)},extraExpansionMilestone4:{earned:t(!1)},extraExpansionMilestone5:{earned:t(!1)}}},si=t(!1),q=b(()=>{var Wi;return si.value||((Wi=V.currentlyMastering.value)==null?void 0:Wi.name)===i});return{name:i,day:Is,color:l,foundationProgress:n,foundationConversion:Z,milestones:bi,collapseMilestones:Ii,minWidth:700,buildFoundationHK:y,generalTabCollapsed:B,display:r(()=>{var Wi;return s(M,null,[s("div",null,[V.day.value===Is?"Complete the foundation to complete the day":((Wi=V.currentlyMastering.value)==null?void 0:Wi.name)===i?"Complete the foundation to decorate the day":`${i} Complete!`,I.gt(a.value,100)?s(M,null,[" - ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>Mi.value=!0},[d("Check Modifiers")])]):null]),hi(li),hi(Li),s(ti,null,null),q.value?s(M,null,[s("div",{class:"decoration-effect"},[d("Decoration effect:"),s("br",null,null),d("Logs are just a requirement instead of a cost")]),s(ti,null,null)]):null,s("div",null,[s("span",null,[d("The foundation is ")]),s("h2",{style:`color: ${l}; text-shadow: 0 0 10px ${l}`},[_(n.value)]),d("% completed")]),I.lt(n.value,100)||Y.elfTraining.expandersElfTraining.milestones[2].earned.value?s(ti,null,null):null,hi(o),s(ti,null,null),R()])}),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[_(n.value),d("% "),n.displayName])])),mastery:zi,mastered:si}}),dZ="sleigh",ps=22,$l=al(dZ,function(){const i="Sleigh",l="#D71830";function e(v,H,mi){const G=(ts(v)?v:[v]).every(x=>I.gte(x.value,H));return s("span",{class:G?"":"unaffordable"},[di(H),d(" "),mi])}const n=b(()=>a.amount),m=b(()=>{const v=n.value.value;return{wood:I.mul(1e97,I.pow(1.2,v)),metal:I.mul(1e67,I.pow(1.1,v)),plastic:I.mul(1e22,I.pow(1.05,v))}}),a=Ai(()=>({display:r(()=>s(M,null,[s("b",{style:"font-size: x-large"},[d("Fix 1% of the sleigh")]),s("br",null,null),s("br",null,null),s("span",{style:"font-size: large"},[d("Requires: "),e(ki.logs,m.value.wood,"logs"),d(","),e(tI.metal,m.value.metal,"metal"),d(","),e(jI.plastic,m.value.plastic,"plastic")])])),canPurchase(){return m.value.wood.lte(ki.logs.value)&&m.value.metal.lte(tI.metal.value)&&m.value.plastic.lte(jI.plastic.value)},onPurchase(){this.amount.value=I.add(this.amount.value,1)},visibility:()=>j(I.lt(n.value.value,100)),style:"width: 600px"})),Z=b(()=>!0),o=z(()=>({display:{requirement:"1% Sleigh Fixed",effectDisplay:"Ore gives 5% more metal for each % of sleigh fixed"},shouldEarn:()=>I.gte(n.value.value,1),showPopups:Z})),y=z(()=>({display:{requirement:"10% Sleigh Fixed",effectDisplay:"Gain an additional 5% more wood for each 5% of sleigh fixed"},shouldEarn:()=>I.gte(n.value.value,10),showPopups:Z})),u=z(()=>({display:{requirement:"20% Sleigh Fixed",effectDisplay:"Gain an additional 5% more plastic for each 5% of sleigh fixed"},shouldEarn:()=>I.gte(n.value.value,20),showPopups:Z})),w=z(()=>({display:{requirement:"30% Sleigh Fixed",effectDisplay:"All automatic metal actions are doubled"},shouldEarn:()=>I.gte(n.value.value,30),showPopups:Z})),W=z(()=>({display:{requirement:"40% Sleigh Fixed",effectDisplay:"Plastic gain is quadrupled"},shouldEarn:()=>I.gte(n.value.value,40),showPopups:Z})),N=z(()=>({display:{requirement:"50% Sleigh Fixed",effectDisplay:"Trees give 10x as many logs"},shouldEarn:()=>I.gte(n.value.value,50),showPopups:Z})),p=z(()=>({display:{requirement:"75% Sleigh Fixed",effectDisplay:"Gain 40 extra refineries for every 2% of sleigh fixed"},shouldEarn:()=>I.gte(n.value.value,75),showPopups:Z})),f=z(()=>({display:{requirement:"100% Sleigh Fixed",effectDisplay:"Metal per ore is raised to the 1.2th power"},shouldEarn:()=>I.gte(n.value.value,100),showPopups:Z})),C={milestone1:o,milestone2:y,milestone3:u,milestone4:w,milestone5:W,milestone6:N,milestone7:p,milestone8:f},{collapseMilestones:D,display:L}=ne(C),O=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:"animation: 15s sleigh-bar linear infinite",progress:()=>{var v;return V.day.value===ps||((v=V.currentlyMastering.value)==null?void 0:v.name)===i?I.div(n.value.value,100):1},display:r(()=>{var v;return V.day.value===ps||((v=V.currentlyMastering.value)==null?void 0:v.name)===i?s(M,null,[_(n.value.value),d("%")]):""})}));return AI(()=>{V.day.value===ps&&I.gte(n.value.value,100)&&V.completeDay()}),{name:i,day:ps,color:l,sleighProgress:n,milestones:C,collapseMilestones:D,minWidth:700,sleigh:a,display:r(()=>s(M,null,[s("div",null,[V.day.value===ps?"Fix the sleigh to complete the day":`${i} Complete!`]),hi(O),s(ti,null,null),s("div",null,[s("span",null,[d("The sleigh is ")]),s("h2",{style:`color: ${l}; text-shadow: 0 0 10px ${l}`},[_(n.value.value)]),d("% fixed")]),I.lt(n.value.value,100)||Y.elfTraining.expandersElfTraining.milestones[2].earned.value?s(ti,null,null):null,hi(a),s(ti,null,null),L()])),minimizedDisplay:r(()=>s("div",null,[i,d(" "),s("span",{class:"desc"},[_(n.value.value),d("% sleigh")])]))}});const cZ=["x1","y1","x2","y2"],aZ=["x","y"],tZ=iI({__name:"BoardLink",props:{link:null},setup(i){const e=cl(i),n=b(()=>{const a=e.link.value.startNode.position;return e.link.value.offsetStart&&(a.x+=c(e.link.value.offsetStart).x,a.y+=c(e.link.value.offsetStart).y),a}),m=b(()=>{const a=e.link.value.endNode.position;return e.link.value.offsetEnd&&(a.x+=c(e.link.value.offsetEnd).x,a.y+=c(e.link.value.offsetEnd).y),a});return(a,Z)=>(h(),S(M,null,[X("line",Ne({class:"link"},i.link,{class:{pulsing:i.link.pulsing},x1:c(n).x,y1:c(n).y,x2:c(m).x,y2:c(m).y}),null,16,cZ),i.link.weight?(h(),S("text",{key:0,x:(c(n).x+c(m).x)/2,y:(c(n).y+c(m).y)/2+4,style:{"text-anchor":"middle",fill:"var(--foreground)"}},pI(i.link.weight),9,aZ)):oi("",!0)],64))}});var ZZ=OI(tZ,[["__scopeId","data-v-e97834c2"]]);const oZ=["transform"],bZ={key:0},yZ=["transform","onMousedown","onTouchstart","onMouseup","onTouchend"],jZ=["fill","stroke-width","stroke"],uZ=["fill"],VZ={key:0},JZ=["r","fill","stroke"],WZ=["r","fill","stroke"],pZ=["r","fill"],MZ=["r","stroke-dasharray","stroke-dashoffset","stroke"],rZ={key:1,transform:"rotate(45, 0, 0)"},wZ=["width","height","transform","fill","stroke"],NZ=["width","height","transform","fill","stroke"],OZ=["width","height","transform","fill"],CZ=["width","height","transform","stroke-dasharray","stroke-dashoffset","stroke"],hZ=["fill"],YZ={key:0},vZ=["fill","y"],XZ=["fill","y"],zZ=iI({__name:"BoardNode",props:{node:null,nodeType:null,dragging:null,dragged:null,hasDragged:{type:Boolean},receivingNode:{type:Boolean},selectedNode:null,selectedAction:null},emits:["mouseDown","endDragging"],setup(i,{emit:l}){const e=i,n=Math.sqrt(2),m=cl(e),a=Ji(!1),Z=b(()=>c(m.selectedNode)===c(m.node)),o=b(()=>Wl(m.nodeType.value.draggable,c(m.node)));oe(o,R=>{const li=c(m.node);c(m.dragging)===li&&!R&&l("endDragging",li.id)});const y=b(()=>{var li;const R=c(m.node);return(li=Wl(m.nodeType.value.actions,R))==null?void 0:li.filter(A=>Wl(A.visibility,R)!==MI.None)}),u=b(()=>{var A;const R=c(m.node),li=c(m.dragged);return Wl(m.nodeType.value.draggable,R)&&((A=c(m.dragging))==null?void 0:A.id)===R.id&&li?{x:R.position.x+Math.round(li.x/25)*25,y:R.position.y+Math.round(li.y/25)*25}:R.position}),w=b(()=>Wl(m.nodeType.value.shape,c(m.node))),W=b(()=>Wl(m.nodeType.value.title,c(m.node))),N=b(()=>Wl(m.nodeType.value.label,c(m.node))),p=b(()=>Wl(m.nodeType.value.size,c(m.node))),f=b(()=>{var R;return(R=Wl(m.nodeType.value.progress,c(m.node)))!=null?R:0}),C=b(()=>ae[UI.theme].variables["--background"]),D=b(()=>{var R;return(R=Wl(m.nodeType.value.outlineColor,c(m.node)))!=null?R:ae[UI.theme].variables["--outline"]}),L=b(()=>{var R;return(R=Wl(m.nodeType.value.fillColor,c(m.node)))!=null?R:ae[UI.theme].variables["--raised-background"]}),O=b(()=>Wl(m.nodeType.value.progressColor,c(m.node))),v=b(()=>{var R;return(R=Wl(m.nodeType.value.titleColor,c(m.node)))!=null?R:ae[UI.theme].variables["--foreground"]}),H=b(()=>Wl(m.nodeType.value.progressDisplay,c(m.node))),mi=b(()=>c(m.dragging)!=null&&c(m.hasDragged)&&Wl(m.nodeType.value.canAccept,c(m.node))),G=b(()=>Wl(m.nodeType.value.actionDistance,c(m.node)));function x(R){l("mouseDown",R,m.node.value.id,o.value)}function K(){var R,li,A;(R=m.hasDragged)!=null&&R.value||(A=(li=m.nodeType.value).onClick)==null||A.call(li,m.node.value)}function bi(R,li){var A;(li.onClick(c(m.node))||((A=c(m.selectedAction))==null?void 0:A.id)===li.id)&&(R.preventDefault(),R.stopPropagation())}function Ii(R,li){var A;((A=c(m.selectedAction))==null?void 0:A.id)===li.id&&(R.preventDefault(),R.stopPropagation())}return(R,li)=>{var A;return h(),S("g",{class:LI(["boardnode",i.node.type]),style:BI({opacity:((A=i.dragging)==null?void 0:A.id)===i.node.id&&i.hasDragged?.5:1}),transform:`translate(${c(u).x},${c(u).y})`},[s(Ae,{name:"actions",appear:""},{default:Bi(()=>[c(Z)&&c(y)?(h(),S("g",bZ,[(h(!0),S(M,null,Zs(c(y),(B,Mi)=>{var Li,zi;return h(),S("g",{key:B.id,class:LI(["action",{selected:((Li=i.selectedAction)==null?void 0:Li.id)===B.id}]),transform:`translate( + ${(-c(p)-30)*Math.sin(((c(y).length-1)/2-Mi)*c(G))}, + ${(c(p)+30)*Math.cos(((c(y).length-1)/2-Mi)*c(G))} + )`,onMousedown:si=>bi(si,B),onTouchstart:si=>bi(si,B),onMouseup:si=>Ii(si,B),onTouchend:as(si=>Ii(si,B),["stop"])},[X("circle",{fill:c(Wl)(B.fillColor,i.node),r:"20","stroke-width":((zi=i.selectedAction)==null?void 0:zi.id)===B.id?4:0,stroke:c(D)},null,8,jZ),X("text",{fill:c(v),class:"material-icons"},pI(c(Wl)(B.icon,i.node)),9,uZ)],42,yZ)}),128))])):oi("",!0)]),_:1}),X("g",{class:"node-container",onMouseenter:li[0]||(li[0]=B=>a.value=!0),onMouseleave:li[1]||(li[1]=B=>a.value=!1),onMousedown:x,onTouchstartPassive:x,onMouseup:K,onTouchendPassive:K},[c(w)===c(ln).Circle?(h(),S("g",VZ,[c(mi)?(h(),S("circle",{key:0,class:"receiver",r:c(p)+8,fill:c(C),stroke:i.receivingNode?"#0F0":"#0F03","stroke-width":2},null,8,JZ)):oi("",!0),X("circle",{class:"body",r:c(p),fill:c(L),stroke:c(D),"stroke-width":4},null,8,WZ),c(H)===c(Mn).Fill?(h(),S("circle",{key:1,class:"progressFill",r:Math.max(c(p)*c(f)-2,0),fill:c(O)},null,8,pZ)):(h(),S("circle",{key:2,r:c(p)+4.5,class:"progressRing",fill:"transparent","stroke-dasharray":(c(p)+4.5)*2*Math.PI,"stroke-width":5,"stroke-dashoffset":(c(p)+4.5)*2*Math.PI-c(f)*(c(p)+4.5)*2*Math.PI,stroke:c(O)},null,8,MZ))])):c(w)===c(ln).Diamond?(h(),S("g",rZ,[c(mi)?(h(),S("rect",{key:0,class:"receiver",width:c(p)*c(n)+16,height:c(p)*c(n)+16,transform:`translate(${-(c(p)*c(n)+16)/2}, ${-(c(p)*c(n)+16)/2})`,fill:c(C),stroke:i.receivingNode?"#0F0":"#0F03","stroke-width":2},null,8,wZ)):oi("",!0),X("rect",{class:"body",width:c(p)*c(n),height:c(p)*c(n),transform:`translate(${-c(p)*c(n)/2}, ${-c(p)*c(n)/2})`,fill:c(L),stroke:c(D),"stroke-width":4},null,8,NZ),c(H)===c(Mn).Fill?(h(),S("rect",{key:1,class:"progressFill",width:Math.max(c(p)*c(n)*c(f)-2,0),height:Math.max(c(p)*c(n)*c(f)-2,0),transform:`translate(${-Math.max(c(p)*c(n)*c(f)-2,0)/2}, ${-Math.max(c(p)*c(n)*c(f)-2,0)/2})`,fill:c(O)},null,8,OZ)):(h(),S("rect",{key:2,class:"progressDiamond",width:c(p)*c(n)+9,height:c(p)*c(n)+9,transform:`translate(${-(c(p)*c(n)+9)/2}, ${-(c(p)*c(n)+9)/2})`,fill:"transparent","stroke-dasharray":(c(p)*c(n)+9)*4,"stroke-width":5,"stroke-dashoffset":(c(p)*c(n)+9)*4-c(f)*(c(p)*c(n)+9)*4,stroke:c(O)},null,8,CZ))])):oi("",!0),X("text",{fill:c(v),class:"node-title"},pI(c(W)),9,hZ)],32),s(Ae,{name:"fade",appear:""},{default:Bi(()=>[c(N)?(h(),S("g",YZ,[X("text",{fill:c(N).color||c(v),class:LI(["node-title",{pulsing:c(N).pulsing}]),y:-c(p)-20},pI(c(N).text),11,vZ)])):oi("",!0)]),_:1}),s(Ae,{name:"fade",appear:""},{default:Bi(()=>[c(Z)&&i.selectedAction?(h(),S("text",{key:0,fill:c(v),class:"node-title",y:c(p)+75},"Tap again to confirm",8,XZ)):oi("",!0)]),_:1})],14,oZ)}}});var RZ=OI(zZ,[["__scopeId","data-v-5afee410"]]);const GZ={class:"stage",width:"100%",height:"100%"},fZ={class:"g1"},xZ=iI({__name:"Board",props:{nodes:null,types:null,state:null,visibility:null,width:null,height:null,style:null,classes:null,links:null,selectedAction:null,selectedNode:null,mousePosition:null},setup(i){const e=cl(i),n=Ji({x:0,y:0}),m=Ji({x:0,y:0}),a=Ji(null),Z=Ji(!1),o=Ji(null),y=b(()=>a.value==null?void 0:e.nodes.value.find(C=>C.id===a.value)),u=b(()=>{const C=e.nodes.value.slice();if(y.value){const D=C.splice(C.indexOf(y.value),1)[0];C.push(D)}return C}),w=b(()=>{const C=y.value;if(C==null)return null;const D={x:C.position.x+m.value.x,y:C.position.y+m.value.y};let L=Number.MAX_VALUE;return e.nodes.value.reduce((O,v)=>{if(v.id===C.id)return O;const H=e.types.value[v.type];if(!Wl(H.canAccept,v))return O;const G=Math.pow(D.x-v.position.x,2)+Math.pow(D.y-v.position.y,2);let x=Wl(H.size,v);return G>L||G>x*x?O:(L=G,v)},null)});function W(C){C.setTransformOrigin(null)}function N(C,D=null,L=!1){if(a.value==null){C.preventDefault(),C.stopPropagation();let O,v;if("touches"in C)if(C.touches.length===1)O=C.touches[0].clientX,v=C.touches[0].clientY;else return;else O=C.clientX,v=C.clientY;n.value={x:O,y:v},m.value={x:0,y:0},Z.value=!1,L&&(a.value=D)}D!=null&&(e.state.value.selectedNode=null,e.state.value.selectedAction=null)}function p(C){const{x:D,y:L,scale:O}=o.value.panZoomInstance.getTransform();let v,H;if("touches"in C)if(C.touches.length===1)v=C.touches[0].clientX,H=C.touches[0].clientY;else{f(a.value),e.mousePosition.value=null;return}else v=C.clientX,H=C.clientY;e.mousePosition.value={x:(v-D)/O,y:(H-L)/O},m.value={x:m.value.x+(v-n.value.x)/O,y:m.value.y+(H-n.value.y)/O},n.value={x:v,y:H},(Math.abs(m.value.x)>10||Math.abs(m.value.y)>10)&&(Z.value=!0),a.value!=null&&(C.preventDefault(),C.stopPropagation())}function f(C){var D,L;if(a.value!=null&&a.value===C&&y.value!=null){y.value.position.x+=Math.round(m.value.x/25)*25,y.value.position.y+=Math.round(m.value.y/25)*25;const O=e.nodes.value;O.splice(O.indexOf(y.value),1),O.push(y.value),w.value&&((L=(D=e.types.value[w.value.type]).onDrop)==null||L.call(D,w.value,y.value)),a.value=null}else Z.value||(e.state.value.selectedNode=null,e.state.value.selectedAction=null)}return(C,D)=>{const L=be("panZoom");return c(i.visibility)!==c(MI).None?zs((h(),eI(L,{key:0,style:BI([{width:i.width,height:i.height},i.style]),class:LI(i.classes),selector:".g1",options:{initialZoom:1,minZoom:.1,maxZoom:10,zoomDoubleClickSpeed:1},ref_key:"stage",ref:o,onInit:W,onMousemove:p,onTouchmove:p,onMousedown:D[0]||(D[0]=O=>N(O)),onTouchstart:D[1]||(D[1]=O=>N(O)),onMouseup:D[2]||(D[2]=()=>f(a.value)),onTouchendPassive:D[3]||(D[3]=()=>f(a.value)),onMouseleave:D[4]||(D[4]=()=>f(a.value))},{default:Bi(()=>[(h(),S("svg",GZ,[X("g",fZ,[s(Tn,{name:"link",appear:""},{default:Bi(()=>[(h(!0),S(M,null,Zs(c(i.links)||[],(O,v)=>(h(),S("g",{key:v},[s(ZZ,{link:O},null,8,["link"])]))),128))]),_:1}),s(Tn,{name:"grow",duration:500,appear:""},{default:Bi(()=>[(h(!0),S(M,null,Zs(c(u),O=>{var v;return h(),S("g",{key:O.id,style:{"transition-duration":"0s"}},[s(RZ,{node:O,nodeType:i.types[O.type],dragging:c(y),dragged:m.value,hasDragged:Z.value,receivingNode:((v=c(w))==null?void 0:v.id)===O.id,selectedNode:c(i.selectedNode),selectedAction:c(i.selectedAction),onMouseDown:N,onEndDragging:f},null,8,["node","nodeType","dragging","dragged","hasDragged","receivingNode","selectedNode","selectedAction"])])}),128))]),_:1})])]))]),_:1},8,["style","class","options"])),[[wn,c(i.visibility)===c(MI).Visible]]):oi("",!0)}}});NI.on("setupVue",i=>Xd.install(i));const Um=Symbol("Board");var Mn=(i=>(i.Outline="Outline",i.Fill="Fill",i))(Mn||{}),ln=(i=>(i.Circle="Circle",i.Diamond="Triangle",i))(ln||{});function DZ(i){const l=t({nodes:[],selectedNode:null,selectedAction:null});return fl(()=>{const e=i();e.id=ue("board-"),e.type=Um,e[El]=xZ,e.state?(Lc(l),Vi(e,"state")):(l[we]={nodes:e.startNodes().map((m,a)=>(m.id=a,m)),selectedNode:null,selectedAction:null},e.state=l),e.nodes=b(()=>c(n.state).nodes),e.selectedNode=b(()=>n.nodes.value.find(m=>m.id===c(n.state).selectedNode)||null),e.selectedAction=b(()=>{const m=n.selectedNode.value;if(m==null)return null;const a=n.types[m.type];return a.actions==null?null:a.actions.find(Z=>Z.id===c(n.state).selectedAction)||null}),e.mousePosition=Ji(null),e.links?Vi(e,"links"):e.links=b(()=>n.selectedAction.value==null?null:n.selectedAction.value.links&&n.selectedNode.value?Wl(n.selectedAction.value.links,n.selectedNode.value):null),Vi(e,"visibility"),kI(e,"visibility",MI.Visible),Vi(e,"width"),kI(e,"width","100%"),Vi(e,"height"),kI(e,"height","400px"),Vi(e,"classes"),Vi(e,"style");for(const m in e.types){const a=e.types[m];if(Vi(a,"title"),Vi(a,"label"),Vi(a,"size"),kI(a,"size",50),Vi(a,"draggable"),kI(a,"draggable",!1),Vi(a,"shape"),kI(a,"shape","Circle"),Vi(a,"canAccept"),kI(a,"canAccept",!1),Vi(a,"progress"),Vi(a,"progressDisplay"),kI(a,"progressDisplay","Fill"),Vi(a,"progressColor"),kI(a,"progressColor","none"),Vi(a,"fillColor"),Vi(a,"outlineColor"),Vi(a,"titleColor"),Vi(a,"actionDistance"),kI(a,"actionDistance",Math.PI/6),a.nodes=b(()=>c(n.state).nodes.filter(Z=>Z.type===m)),kI(a,"onClick",function(Z){c(n.state).selectedNode=Z.id}),a.actions)for(const Z of a.actions)Vi(Z,"visibility"),kI(Z,"visibility",MI.Visible),Vi(Z,"icon"),Vi(Z,"fillColor"),Vi(Z,"tooltip"),Vi(Z,"links")}e[me]=function(){const{nodes:m,types:a,state:Z,visibility:o,width:y,height:u,style:w,classes:W,links:N,selectedAction:p,selectedNode:f,mousePosition:C}=this;return{nodes:m,types:a,state:Z,visibility:o,width:y,height:u,style:c(w),classes:W,links:N,selectedAction:p,selectedNode:f,mousePosition:C}};const n=e;return n})}function Wl(i,l){return Es(i)?i(l):c(i)}const Ns={};NI.on("addLayer",i=>{const l=Cn(i,Um);Ns[i.id]=i.on("postUpdate",e=>{l.forEach(n=>{Object.values(n.types).forEach(m=>m.nodes.value.forEach(a=>{var Z;return(Z=m.update)==null?void 0:Z.call(m,a,e)}))})})});NI.on("removeLayer",i=>{var l;(l=Ns[i.id])==null||l.call(Ns),Ns[i.id]=void 0});const SZ={},LZ={class:"fraction"};function TZ(i,l){return h(),S("div",LZ,[ie(i.$slots,"default")])}var FZ=OI(SZ,[["render",TZ]]);const dm=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],kZ="routing",ls=23,Dl=al(kZ,function(){const i="Routing",l="navajowhite",n=vI(0,"cities solved"),m=t([]),a=t(0),Z=t(0),o=t(0),y=b(()=>{if(I.gte(n.value,7)||m.value.length>=12)return I.factorial(m.value.length).div(2).toNumber();const ii=m.value.length,Zi=new Array(ii).fill(0).map((qi,dI)=>dI),Ui=[Zi.slice()],ZI=new Array(ii).fill(0);let Ki=1;for(;Ki{const ii=y.value;if(typeof ii=="number")return[];const Zi=[];for(let Ui=0;Uiii[Ui][1]&&Zi.push(Ui);return Zi}),w=t([]),W=b(()=>typeof y.value=="number"?m.value.length:y.value[a.value]),N=b(()=>{const ii=W.value;if(ii==null)return 0;if(typeof ii=="number")return I.times(ii,Ei.value).floor().toNumber();let Zi=0;for(let Ui=0;Ui{m.value.length===0&&f()});function p(ii){return ii.map(Zi=>bi.types.house.title(bi.nodes.value[Zi])).join(" > ")}function f(){if(I.lte(n.value,50)){const ii=new I(aI.value).clampMin(3).toNumber(),Zi=Ei.value,Ui=zi.earned.value?Zi:Hi.value,ZI=I.sub(Ui,Zi),Ki=[];for(let qi=0;qi=ii?(n.value=I.add(n.value,1),f()):(u.value.includes(a.value)&&(w.value=[...w.value,a.value]),Z.value=0)}const D=t(0),L=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(D.value,10)})),O=il(()=>({display:{description:r(()=>s(M,null,[d("Generate New City"),s("br",null,null),hi(L)]))},style:{minHeight:"40px","--layer-color":"var(--danger)"},canClick:()=>I.gte(D.value,10),onClick(){!c(O.canClick)||(f(),D.value=0)}})),v=t(0),H=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(v.value,gi.value)})),mi=il(()=>({display:{description:r(()=>s(M,null,[d("Perform "),_(P.value),d(" units of work"),s("br",null,null),hi(H)]))},style:{minHeight:"40px"},canClick:()=>I.gte(v.value,gi.value),onClick(){!c(mi.canClick)||(Z.value=I.add(Z.value,P.value).toNumber(),v.value=0)}})),G=t(0),x=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(G.value,Gi.value)})),K=il(()=>({display:{description:r(()=>s(M,null,[d("Remove a redundant route from the list to check"),s("br",null,null),hi(x)]))},style:{minHeight:"40px"},visibility:()=>j(!si.earned.value),canClick:()=>I.gte(G.value,Gi.value)&&w.value.length({startNodes:()=>[],types:{house:{shape:ln.Circle,fillColor:"var(--highlighted)",outlineColor:"var(--accent1)",size:20,title(ii){let Zi=ii.state,Ui="";for(;;){if(Zi<26){Ui+=dm[Zi];break}let ZI=Zi,Ki=0;for(;Math.floor(ZI/26)-1>=0;)ZI=Math.floor(ZI/26)-1,Ki++;Ui+=dm[ZI];let qi=ZI+1;for(let dI=0;dI{if(I.gte(n.value,50))return{nodes:[],selectedNode:null,selectedAction:null};const ii=[],Zi=m.value,Ui=Math.ceil(Math.sqrt(Zi.length)),ZI=Math.ceil(Zi.length/Ui);for(let Ki=0;KioI)ZI++,Ki=oI;else break}qi=(Z.value-Ki)/m.value[Zi[ZI]][Zi[ZI+1]]}for(let dI=0;dI=0&&Xl>=0&&(Zi[Zl+1]===oI||Zi[Xl+1]===dI)&&(Xlj(I.lt(n.value,50))})),Ii=HI(()=>({direction:Yi.Right,width:597,height:24,style:{borderRadius:"var(--border-radius) var(--border-radius) 0 0",background:"var(--raised-background)",marginBottom:"-24px"},borderStyle:{borderRadius:"var(--border-radius) var(--border-radius) 0 0",borderColor:"transparent",marginBottom:"unset"},fillStyle:{background:"black",marginBottom:"unset"},progress(){return I.div(a.value,typeof y.value=="number"?Math.floor(y.value):y.value.length)},display:r(()=>s(M,null,[_(Math.floor(a.value)),d(" /")," ",_(typeof y.value=="number"?Math.floor(y.value):y.value.length)]))})),R=HI(()=>({direction:Yi.Right,width:597,height:24,style:{borderRadius:"0 0 var(--border-radius) var(--border-radius)",background:"var(--raised-background)",marginTop:"-24px"},borderStyle:{borderRadius:"0 0 var(--border-radius) var(--border-radius)",borderColor:"transparent",marginTop:"unset"},fillStyle:{background:"black",marginTop:"unset"},progress(){return I.div(Z.value,N.value)},display:r(()=>s(M,null,[_(Math.floor(Z.value)),d(" /")," ",_(N.value)]))})),li=z(()=>({display:{requirement:"1 City Solved",effectDisplay:"Each city solved doubles manual and auto processing speed"},shouldEarn(){return I.gte(n.value,1)}})),A=z(()=>({display:{requirement:"2 Cities Solved",effectDisplay:"Manually checking routes does additional work based on number of routes checked in this city"},shouldEarn(){return I.gte(n.value,2)},visibility:()=>j(li.earned.value)})),B=z(()=>({display:{requirement:"3 Cities Solved",effectDisplay:"Each city solved makes the cooldown for removing a redundant route 25% shorter"},shouldEarn(){return I.gte(n.value,3)},visibility:()=>j(A.earned.value)})),Mi=z(()=>({display:{requirement:"4 Cities Solved",effectDisplay:"Automatic processing speed is multiplied by the amount of redundant routes removed from this city"},shouldEarn(){return I.gte(n.value,4)},visibility:()=>j(B.earned.value)})),Li=z(()=>({display:{requirement:"5 Cities Solved",effectDisplay:"Remove 1 house from the map"},shouldEarn(){return I.gte(n.value,5)},onComplete(){f()},visibility:()=>j(Mi.earned.value)})),zi=z(()=>({display:{requirement:"6 Cities Solved",effectDisplay:"Lower max weight to the min weight, and uncap amount of routes that can be checked per tick"},shouldEarn(){return I.gte(n.value,6)},visibility:()=>j(Li.earned.value)})),si=z(()=>({display:{requirement:"7 Cities Solved",effectDisplay:"All redundancies are removed"},shouldEarn(){return I.gte(n.value,7)},visibility:()=>j(zi.earned.value)})),q={milestone1:li,milestone2:A,milestone3:B,milestone4:Mi,milestone5:Li,milestone6:zi,milestone7:si},{collapseMilestones:Wi,display:E}=ne(q),ji={metal:Ai(()=>({resName:"Metal",resource:tI.metal,cost(){const ii=I.mul(this.amount.value,1.05);return I.pow(5,ii).mul(1e83).div(I.max(n.value,1))},display:r(()=>{var ii;return s(M,null,[d("Upgrade computer"),s("br",null,null),d("for "),_(c((ii=ji.metal.cost)!=null?ii:0)),d(" metal"),s("br",null,null),d("Currently +"),_(I.mul(ji.metal.amount.value,10)),d("%")])}),style:"width: 150px; min-height: 60px"})),console:Ai(()=>({resName:"Game Console",resource:Gl.consoles,cost(){const ii=I.mul(this.amount.value,1.15);return I.pow(1.2,ii).mul(1e11).div(I.max(n.value,1))},display:r(()=>{var ii;return s(M,null,[d("Upgrade computer"),s("br",null,null),d("for "),_(c((ii=ji.console.cost)!=null?ii:0)),d(" game consoles"),s("br",null,null),d("Currently +"),_(I.mul(ji.console.amount.value,10)),d("%")])}),style:"width: 150px; min-height: 60px"})),classroom:Ai(()=>({resName:"Classroom",cost(){const ii=I.mul(this.amount.value,1.25);return I.pow(1.2,ii).mul(1e6).div(I.max(n.value,1).pow(.5))},canPurchase(){var ii;return I.gte(Y.classrooms.amount.value,c((ii=ji.classroom.cost)!=null?ii:0))},onPurchase(){var ii;this.amount.value=I.add(this.amount.value,-1),Y.classrooms.amount.value=I.sub(Y.classrooms.amount.value,c((ii=ji.classroom.cost)!=null?ii:0)),this.amount.value=I.add(this.amount.value,1)},display:r(()=>{var ii;return s(M,null,[d("Upgrade computer"),s("br",null,null),d("for "),_(c((ii=ji.classroom.cost)!=null?ii:0)),d(" classrooms"),s("br",null,null),d("Currently +"),_(I.mul(ji.classroom.amount.value,10)),d("%")])}),style:"width: 150px; min-height: 60px"})),tick:Ai(()=>({resName:"Factory Tick Rate",cost(){const ii=I.mul(this.amount.value,1.15);return I.pow(1.5,ii).mul(5e6).div(I.max(n.value,1).pow(.5))},canPurchase(){var ii;return I.gte(Gl.computedTickRate.value,c((ii=ji.tick.cost)!=null?ii:0))},display:r(()=>{var ii;return s(M,null,[d("Upgrade computer"),s("br",null,null),d("for "),_(c((ii=ji.tick.cost)!=null?ii:0)),d(" factory tick rate"),s("br",null,null),d("Currently +"),_(I.mul(ji.tick.amount.value,10)),d("%")])}),style:"width: 150px; min-height: 60px"}))},vi={0:z(()=>({display:{requirement:"1000 Cities Solved",effectDisplay:"Each city generates 1 classroom per minute"},shouldEarn(){return I.gte(n.value,1e3)}})),1:z(()=>({display:{requirement:"5000 Cities Solved",effectDisplay:"Elves can learn past level 5 and gain 0.5 base city solved per second for each level elves learnt"},shouldEarn(){return I.gte(n.value,5e3)},visibility:()=>j(vi[0].earned.value)})),2:z(()=>({display:{requirement:"25,000 Cities Solved",effectDisplay:r(()=>s(M,null,[d("Multiply factory tick rate by log"),s("sub",null,[d("10")]),d("(cities solved) - 3")]))},shouldEarn(){return I.gte(n.value,25e3)},visibility:()=>j(vi[1].earned.value)})),3:z(()=>({display:{requirement:"80,000 Cities Solved",effectDisplay:"Multiply game console production by 6"},shouldEarn(){return I.gte(n.value,8e4)},visibility:()=>j(vi[2].earned.value)})),4:z(()=>({display:{requirement:"300,000 Cities Solved",effectDisplay:"Multiply the amount of factory input resources by the amount of their corresponding warehouses appeared in the factory, plus 1. Also unlocks a button to fill your factory with warehouses."},shouldEarn(){return I.gte(n.value,3e5)},visibility:()=>j(vi[3].earned.value)})),5:z(()=>({display:{requirement:"600,000 Cities Solved",effectDisplay:"Quadruple oil gain"},shouldEarn(){return I.gte(n.value,6e5)},visibility:()=>j(vi[4].earned.value)})),6:z(()=>({display:{requirement:"1,000,000 Cities Solved",effectDisplay:r(()=>s(M,null,[d("Increases base city solving speed by")," ",s(FZ,null,{default:()=>[s("div",null,[d("factory tick rate")]),s("div",null,[d("100")])]})]))},shouldEarn(){return I.gte(n.value,1e6)},visibility:()=>j(vi[5].earned.value)}))},{collapseMilestones:uI,display:Pi}=ne(vi),II=Ci(()=>[Si(()=>({addend:n,description:"Cities Completed"})),Si(()=>({addend:-1,description:"5 Cities Completed",enabled:Li.earned}))]),aI=b(()=>II.apply(3)),nI=Ci(()=>[Si(()=>({addend:()=>I.pow(n.value,1.1),description:"Cities Completed"}))]),Hi=b(()=>nI.apply(10)),_i=Ci(()=>[Si(()=>({addend:n,description:"Cities Completed"})),Yl(()=>({exponent:3,description:"Cities Completed",enabled:si.earned}))]),Ei=b(()=>_i.apply(2)),$i=Ci(()=>[Si(()=>({addend:()=>I.add(a.value,1).sqrt(),description:"2 Cities Solved",enabled:A.earned}))]),P=b(()=>$i.apply(1)),ri=Ci(()=>[J(()=>({multiplier:()=>I.pow(.5,n.value),description:"1 City Solved",enabled:li.earned}))]),gi=b(()=>ri.apply(1)),mI=Ci(()=>[J(()=>({multiplier:()=>I.pow(.75,n.value),description:"3 Cities Solved",enabled:B.earned}))]),Gi=b(()=>mI.apply(10)),xI=Ci(()=>[J(()=>({multiplier:()=>I.pow(2,n.value),description:"1 City Solved",enabled:li.earned})),J(()=>({multiplier:()=>I.add(o.value,1),description:"4 Cities Solved",enabled:Mi.earned}))]),PI=b(()=>xI.apply(1)),RI=Ci(()=>[Si(()=>({addend:()=>I.div(Y.totalElfLevels.value,2),description:"5000 Cities Solved",enabled:vi[1].earned})),Si(()=>({addend:()=>I.div(Gl.computedTickRate.value,100),description:"1,000,000 Cities Solved",enabled:vi[6].earned})),...Object.values(ji).map(ii=>J(()=>({multiplier:()=>I.div(ii.amount.value,10).add(1),description:ii.resName+" Upgrade",enabled:()=>I.gte(ii.amount.value,1)})))]),rI=b(()=>RI.apply(50)),[wi,yi]=vl(()=>[{title:"Houses per City",modifier:II,base:3,visible:()=>I.lte(n.value,50)},{title:()=>zi.earned.value?"Weight":"Minimum Weight",modifier:_i,base:2,visible:()=>I.lte(n.value,50)},{title:"Maximum Weight",modifier:nI,base:10,visible:()=>!zi.earned.value&&I.lte(n.value,50)},{title:"Manual Processing Amount",modifier:$i,base:1,visible:()=>I.lte(n.value,50)},{title:"Manual Processing Cooldown",modifier:ri,base:1,unit:"s",visible:()=>I.lte(n.value,50)},{title:"Remove Redundant Route Cooldown",modifier:mI,base:10,unit:"s",visible:()=>I.lte(n.value,50)},{title:"Auto Processing Speed",modifier:xI,base:1,unit:"/s",visible:()=>I.lte(n.value,50)},{title:"Post-Inflation Solving Speed",modifier:RI,base:50,unit:"/s",visible:()=>I.gt(n.value,50)}]),ui=Ji(!1),pi=r(()=>s(EI,{modelValue:ui.value,"onUpdate:modelValue":ii=>ui.value=ii},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:wi}));NI.on("update",ii=>{if(!I.lt(V.day.value,ls))if(I.lte(n.value,50)){if(I.gte(D.value,10)?D.value=10:(D.value=I.add(D.value,ii),O.isHolding.value&&O.onClick()),I.gte(v.value,gi.value)?v.value=gi.value:(v.value=I.add(v.value,ii),mi.isHolding.value&&mi.onClick()),I.gte(G.value,Gi.value)?G.value=Gi.value:(G.value=I.add(G.value,ii),K.isHolding.value&&K.onClick()),Z.value=I.times(ii,PI.value).add(Z.value).toNumber(),Z.value>N.value){const Zi=Z.value-N.value;if(a.value++,zi.earned.value&&W.value!=null){const Ui=typeof W.value=="number"?W.value:W.value.length,ZI=I.div(Zi,I.times(Ui,Ei.value)).floor().toNumber();a.value+=ZI}C()}}else n.value=I.add(n.value,I.times(rI.value,ii)).min(5e6),vi[0].earned.value&&(Y.classrooms.amount.value=I.add(Y.classrooms.amount.value,I.times(n.value,ii).div(60)))});const _I=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:`backgroundColor: ${l}`,textStyle:{color:"var(--feature-foreground)"},progress:()=>V.day.value===ls?I.div(n.value,5e6):1,display:r(()=>V.day.value===ls?s(M,null,[_(n.value),d("/"),_(5e6)]):"")}));AI(()=>{V.day.value===ls&&I.gte(n.value,5e6)&&V.completeDay()});function hI(){if(W.value==null)return"";if(typeof y.value=="number")return s("div",{class:"routes-list"},[d("\xA0")]);if(typeof y.value=="number"){console.error("Something went horribly wrong");return}const ii=y.value.slice();let Zi=!1;return ii.length>25&&(ii.splice(0,Math.max(a.value-12,0)),Zi=!0,ii.length>25&&ii.splice(25)),s("div",{class:"routes-list"},[ii.map((Ui,ZI)=>{const Ki=ZI+(Zi?Math.max(a.value-12,0):0);return s("div",{class:{redundant:Ui[0]>Ui[1],checked:a.value>Ki,processing:a.value===Ki,skipped:a.values(M,null,[s("div",null,[V.day.value===ls?`Solve ${_(5e6)} cities to complete the day`:`${i} Complete!`," ",d("-")," ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>ui.value=!0},[d("Check Modifiers")])]),hi(_I),hi(pi),s(ti,null,null),s(sl,{resource:n,color:l},null),I.lte(n.value,50)?s(M,null,[zI(mi,K),hi(Ii),hI(),hi(bi),hi(R),s(ti,null,null),E()]):s(M,null,[I.lt(n.value,5e6)?s(M,null,[d("You're solving "),_(rI.value),d(" cities per second"),s(ti,null,null),zI(...Object.values(ji))]):s(M,null,[d("You've solved all cities on Earth!"),s("br",null,null),s("span",{style:"text-decoration: line-through; font-size: smaller"},[d("(and proved the travelling salesman problem to be O(1))")])]),s(ti,null,null),Pi()])])),minimizedDisplay:r(()=>s("div",null,[i,d(" "),s("span",{class:"desc"},[_(n.value),d(" cities solved")])]))}}),gZ="trees",Ms=1,cm=.1,ki=al(gZ,function(){const i="Trees",l="#4BDC13",e="green",n=vI(0,"logs"),m=vI(0,"saplings"),a=t(0),Z=Ji(0),o=Ji(0),y=Ji(0),u=Ci(()=>[Si(()=>({addend:()=>I.times(Ii.amount.value,10),description:"Expand Forest",enabled:G.bought})),Si(()=>({addend:()=>I.div(XI.foundationProgress.value,2),description:"75% Foundation Completed",enabled:XI.milestones.morePlantsMilestone1.earned})),J(()=>({multiplier:2,description:"5 Elves Trained",enabled:Fi.milestones[4].earned})),J(()=>({multiplier:2,description:"8 Elves Trained",enabled:Fi.milestones[7].earned})),J(()=>({multiplier:4,description:"Lumberjack Boots",enabled:fI.treesUpgrades.treesUpgrade1.bought})),Si(()=>({addend:Ri.boosts.blue1,description:"Blue Dye Boost 1",enabled:()=>I.gte(Ri.dyes.blue.amount.value,1)})),Si(()=>({addend:()=>I.pow(A.value,.99),description:"Hope Level 1",enabled:Y.elfTraining.expandersElfTraining.milestones[0].earned})),Si(()=>({addend:a,description:"Trees Decoration",enabled:yi}))]),w=vI(b(()=>I.sub(u.apply(10),m.value)),"trees"),W=b(()=>u.apply(10)),N=U(()=>({resource:$(n),cost:10,display:{title:"Wooden Fingers",description:"Cut down an additional tree per click"}})),p=U(()=>({resource:$(n),cost:10,display:{title:"Leafy Fingers",description:"Plant an additional tree per click"}})),f=U(()=>({resource:$(n),cost:25,display:{title:"Automated Knives",description:"Cut down a tree every second"}})),C=U(()=>({resource:$(n),cost:25,display:{title:"Automated Spade",description:"Plant a tree every second"}})),D=U(()=>({resource:$(n),cost:40,display:{title:"Research I",description:"Trees give 25% more logs, and unlock more upgrades"}})),L=[N,p,f,C,D],O=U(()=>({resource:$(n),cost:50,visibility:()=>j(D.bought.value),display:{title:"Sharper Fingers",description:"Manually cut trees twice as often"}})),v=U(()=>({resource:$(n),cost:50,visibility:()=>j(D.bought.value),display:{title:"Greener Fingers",description:"Manually Plant trees twice as often"}})),H=U(()=>({resource:$(n),cost:150,visibility:()=>j(D.bought.value),display:{title:"Smart Knives",description:"Each time you manually chop trees, gain 1s of automatic tree chopping production"}})),mi=U(()=>({resource:$(n),cost:150,visibility:()=>j(D.bought.value),display:{title:"Smart Spades",description:"Each time you manually plant trees, gain 1s of automatic tree planting production"}})),G=U(()=>({resource:$(n),cost:300,visibility:()=>j(D.bought.value),display:{title:"Research II",description:"Trees give 25% more logs, and unlock repeatable purchases"}})),x=[O,v,H,mi,G],K=Ai(()=>({resource:$(n),cost(){let ui=this.amount.value;return I.gte(ui,50)&&(ui=I.pow(ui,2).div(50)),I.gte(ui,200)&&(ui=I.pow(ui,2).div(200)),I.gte(ui,2e6)&&(ui=I.pow(ui,2).div(2e6)),I.gte(ui,2e30)&&(ui=I.pow(ui,10).div(I.pow(2e30,9))),ui=I.pow(.95,g.books.cuttersBook.totalAmount.value).times(ui),I.times(100,ui).add(200)},inverseCost(ui){let pi=I.sub(ui,200).div(100);return pi=pi.div(I.pow(.95,g.books.cuttersBook.totalAmount.value)),I.gte(pi,2e30)&&(pi=I.mul(pi,I.pow(2e30,9)).root(10)),I.gte(pi,2e6)&&(pi=I.mul(pi,2e6).root(2)),I.gte(pi,200)&&(pi=I.mul(pi,200).root(2)),I.gte(pi,50)&&(pi=I.mul(pi,50).root(2)),I.isNaN(pi)?I.dZero:pi.floor().max(0)},display:{title:"Generic Cutters",description:"Each cutter cuts down 1 tree/s"},visibility:()=>j(G.bought.value)})),bi=Ai(()=>({resource:$(n),cost(){let ui=this.amount.value;I.gte(ui,50)&&(ui=I.pow(ui,2).div(50)),I.gte(ui,200)&&(ui=I.pow(ui,2).div(200)),I.gte(ui,2e6)&&(ui=I.pow(ui,2).div(2e6)),I.gte(ui,2e30)&&(ui=I.pow(ui,10).div(I.pow(2e30,9))),ui=I.pow(.95,g.books.plantersBook.totalAmount.value).times(ui);let pi=I.times(100,ui).add(200);return Y.elfTraining.planterElfTraining.milestones[3].earned.value&&(pi=I.div(pi,10)),pi},inverseCost(ui){Y.elfTraining.planterElfTraining.milestones[3].earned.value&&(ui=I.mul(ui,10));let pi=I.sub(ui,200).div(100);return pi=pi.div(I.pow(.95,g.books.plantersBook.totalAmount.value)),I.gte(pi,2e30)&&(pi=I.mul(pi,I.pow(2e30,9)).root(10)),I.gte(pi,2e6)&&(pi=I.mul(pi,2e6).root(2)),I.gte(pi,200)&&(pi=I.mul(pi,200).root(2)),I.gte(pi,50)&&(pi=I.mul(pi,50).root(2)),I.isNaN(pi)?I.dZero:pi.floor().max(0)},display:{title:"Generic Planters",description:"Each planter plants 0.5 trees/s"},visibility:()=>j(G.bought.value)})),Ii=Ai(()=>({resource:$(n),cost(){let ui=this.amount.value;return I.gte(ui,100)&&(ui=I.pow(ui,2).div(100)),I.gte(ui,1e5)&&(ui=I.pow(ui,2).div(1e5)),I.gte(ui,1e15)&&(ui=I.pow(ui,10).div(1e135)),ui=I.pow(.95,g.books.expandersBook.totalAmount.value).times(ui),I.pow(I.add(ui,1),1.5).times(500)},inverseCost(ui){let pi=I.div(ui,500).root(1.5).sub(1);return pi=pi.div(I.pow(.95,g.books.expandersBook.totalAmount.value)),I.gte(pi,1e15)&&(pi=I.mul(pi,1e135).root(10)),I.gte(pi,1e5)&&(pi=I.mul(pi,1e5).root(2)),I.gte(pi,100)&&(pi=I.mul(pi,100).root(2)),I.isNaN(pi)?I.dZero:pi.floor().max(0)},display:{title:"Expand Forest",description:"Add 10 trees to the forest"},visibility:()=>j(G.bought.value)})),R=[K,bi,Ii],li=Ci(()=>[Si(()=>({addend:1,description:"Wooden Fingers",enabled:N.bought})),Si(()=>({addend:zi,description:"Smart Knives",enabled:H.bought}))]),A=b(()=>li.apply(1)),B=Ci(()=>[J(()=>({multiplier:.5,description:"Sharper Fingers",enabled:O.bought})),J(()=>({multiplier:()=>I.pow(.5,Fi.totalElves.value),description:"1 Elf Trained",enabled:Fi.milestones[0].earned}))]),Mi=b(()=>B.apply(1)),Li=Ci(()=>[Si(()=>({addend:1,description:"Automated Knives",enabled:f.bought})),Si(()=>({addend:K.amount,description:"Generic Cutters",enabled:G.bought})),Si(()=>({addend:()=>I.div(XI.foundationProgress.value,5).floor(),description:"10% Foundation Completed",enabled:XI.milestones.autoCutMilestone1.earned})),J(()=>({multiplier:2,description:"30% Foundation Completed",enabled:XI.milestones.autoCutMilestone2.earned})),J(()=>({multiplier:2,description:"Warmer Cutters",enabled:Oi.warmerCutters.bought})),J(()=>({multiplier:Oi.computedHeatedCutterEffect,description:"Heated Cutters",enabled:()=>I.gt(Oi.heatedCutters.amount.value,0)})),J(()=>({multiplier:4,description:"Lumberjack Jeans",enabled:fI.treesUpgrades.treesUpgrade2.bought})),J(()=>({multiplier:()=>I.pow(1.1,V.day.value),description:"Holly Level 4",enabled:Y.elfTraining.cutterElfTraining.milestones[3].earned})),Si(()=>({addend:()=>I.sub(y.value,o.value).max(0),description:"Ivy Level 5",enabled:Y.elfTraining.planterElfTraining.milestones[4].earned}))]),zi=b(()=>Li.apply(0)),si=Ci(()=>[Si(()=>({addend:1,description:"Leafy Fingers",enabled:p.bought})),Si(()=>({addend:vi,description:"Smart Spades",enabled:mi.bought}))]),q=b(()=>si.apply(1)),Wi=Ci(()=>[J(()=>({multiplier:.5,description:"Greener Fingers",enabled:v.bought})),J(()=>({multiplier:()=>I.pow(.5,Fi.totalElves.value),description:"1 Elf Trained",enabled:Fi.milestones[0].earned}))]),E=b(()=>Wi.apply(1)),ji=Ci(()=>[Si(()=>({addend:1,description:"Automated Spade",enabled:C.bought})),Si(()=>({addend:()=>I.div(bi.amount.value,2),description:"Generic Planters",enabled:G.bought})),Si(()=>({addend:()=>I.div(XI.foundationProgress.value,10).floor(),description:"20% Foundation Completed",enabled:XI.milestones.autoPlantMilestone1.earned})),J(()=>({multiplier:2,description:"40% Foundation Completed",enabled:XI.milestones.autoPlantMilestone2.earned})),J(()=>({multiplier:2,description:"Warmer Planters",enabled:Oi.warmerPlanters.bought})),J(()=>({multiplier:Oi.computedHeatedPlanterEffect,description:"Heated Planters",enabled:()=>I.gt(Oi.heatedPlanters.amount.value,0)})),J(()=>({multiplier:4,description:"Lumberjack Plaid",enabled:fI.treesUpgrades.treesUpgrade3.bought})),J(()=>({multiplier:2,description:"Ivy Level 1",enabled:Y.elfTraining.planterElfTraining.milestones[0].earned})),J(()=>({multiplier:()=>I.pow(w.value,.2).max(1).log10().pow_base(2),description:"Ivy Level 3",enabled:Y.elfTraining.planterElfTraining.milestones[2].earned})),J(()=>({multiplier:2,description:"Mary Level 4",enabled:Y.elfTraining.heatedPlanterElfTraining.milestones[3].earned})),Si(()=>({addend:()=>I.sub(o.value,y.value).max(0),description:"Ivy Level 5",enabled:Y.elfTraining.planterElfTraining.milestones[4].earned}))]),vi=b(()=>ji.apply(0)),uI=Ci(()=>[J(()=>({multiplier:1.25,description:"Research I",enabled:D.bought})),J(()=>({multiplier:1.25,description:"Research II",enabled:G.bought})),J(()=>({multiplier:()=>XI.milestones.extraExpansionMilestone1.earned.value?I.pow(1.02,XI.foundationProgress.value):I.div(XI.foundationProgress.value,20).add(1),description:"1% Foundation Completed",enabled:XI.milestones.logGainMilestone1.earned})),J(()=>({multiplier:2,description:"50% Foundation Completed",enabled:XI.milestones.logGainMilestone2.earned})),J(()=>({multiplier:1.25,description:"Ashy Soil",enabled:Oi.basicFertilizer.bought})),J(()=>({multiplier:Oi.computedFertilizerEffect,description:"Fertilized Soil",enabled:()=>I.gt(Oi.moreFertilizer.amount.value,0)})),J(()=>({multiplier:2,description:"4 Elves Trained",enabled:Fi.milestones[3].earned})),J(()=>({multiplier:2,description:"Carry logs in boxes",enabled:wI.upgrades.logsUpgrade.bought})),J(()=>({multiplier:()=>I.div(wI.buyables.logBoxesBuyable.amount.value,2).add(1),description:"Carry more logs",enabled:wI.upgrades.logsUpgrade.bought})),J(()=>({multiplier:10,description:"Felt-Gripped Axe",enabled:fI.treesUpgrades.treesUpgrade4.bought})),J(()=>({multiplier:b(()=>I.add(zi.value,1).log10().plus(1)),description:"Is Blue Dye just Water?",enabled:Ri.upgrades.blueDyeUpg.bought})),J(()=>({multiplier:b(()=>I.add(zi.value,1).root(9)),description:"Holly Level 1",enabled:Y.elfTraining.cutterElfTraining.milestones[0].earned})),J(()=>({multiplier:()=>I.sqrt(Y.totalElfLevels.value),description:"Noel Level 1",enabled:Y.elfTraining.fertilizerElfTraining.milestones[0].earned})),J(()=>({multiplier:pl.boosts.christmas1,description:"Christmas Wrapping Paper",enabled:b(()=>I.gt(pl.boosts.christmas1.value,1))})),J(()=>({multiplier:()=>I.add(W.value,1).log10(),description:"Trees Decoration",enabled:yi})),J(()=>({multiplier:2,description:"Load logs onto trucks",enabled:lI.row1Upgrades[0].bought})),J(()=>({multiplier:()=>I.add(lI.clothes.value,1).pow(.75),description:"3000 Toys",enabled:lI.milestones.milestone7.earned})),J(()=>({multiplier:()=>I.add(lI.trucks.value,1),description:"Haul wood in trucks",enabled:Gl.upgrades[0][2].bought})),J(()=>({multiplier:()=>I.div($l.sleighProgress.value.value,5).floor().mul(.05).add(1),description:"10% Sleigh Fixed",enabled:$l.milestones.milestone2.earned})),J(()=>({multiplier:10,description:"50% Sleigh Fixed",enabled:$l.milestones.milestone6.earned})),J(()=>({multiplier:()=>Object.values(Gl.components).reduce((ui,pi)=>pi+(ui.type=="wood"?1:0),1),description:"300,000 Cities Solved",enabled:Dl.metaMilestones[4].earned})),ee.reindeer.dasher.modifier,Yl(()=>({exponent:1.2,description:"100% Foundation Completed",enabled:XI.milestones.logGainMilestone3.earned})),Yl(()=>({exponent:1.05,description:"Un-Processing",enabled:g.upgrades2.treeUpgrade.bought})),Yl(()=>({exponent:1.25,description:"25 Presents Packed",enabled:gI.packingMilestones.logBoost.earned}))]),Pi=t(0),II=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s",progress:()=>I.div(Pi.value,Mi.value)})),aI=il(()=>({display:{title:r(()=>s("h3",null,[d("Cut trees "),s(Ze,{hotkey:Gi},null)])),description:r(()=>s(M,null,[d("Cut down up to "),_(I.floor(A.value))," ",d("tree"),I.eq(A.value,1)?"":"s",d(" at once!"),s("br",null,null),hi(II)]))},style:{minHeight:"80px"},canClick:()=>I.gte(w.value,1)&&I.gte(Pi.value,Mi.value),onClick(){if(I.lt(Pi.value,Mi.value))return;const ui=I.floor(I.min(w.value,I.times(A.value,I.div(Pi.value,Mi.value).floor()))).max(0);yi.value&&(a.value=I.add(a.value,ui).max(0)),n.value=I.add(n.value,I.times(uI.apply(1),ui)),m.value=I.mul(ui,yi.value?2:1).add(m.value),Pi.value=0}})),nI=t(0),Hi=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s",progress:()=>I.div(nI.value,E.value)})),_i=il(()=>({display:{title:r(()=>s("h3",null,[d("Plant trees "),s(Ze,{hotkey:xI},null)])),description:r(()=>s(M,null,[d("Plant up to "),_(I.floor(q.value))," ",d("tree"),I.eq(q.value,1)?"":"s",d(" at once!"),s("br",null,null),hi(Hi)]))},style:{minHeight:"80px"},canClick:()=>I.gte(m.value,1)&&I.gte(nI.value,E.value),onClick(){if(I.lt(nI.value,E.value))return;const ui=I.floor(I.min(m.value,I.times(q.value,I.div(nI.value,E.value).floor()))).max(0);m.value=I.sub(m.value,ui),nI.value=0}})),[Ei,$i]=vl(()=>[{title:"Logs per Tree",modifier:uI,base:1,visible:D.bought},{title:"Manual Cutting Amount",modifier:li,base:1,visible:N.bought,unit:"/click"},{title:"Manual Cutting Cooldown",modifier:B,base:1,visible:N.bought,unit:"s"},{title:"Manual Planting Amount",modifier:si,base:1,visible:p.bought,unit:"/click"},{title:"Manual Planting Cooldown",modifier:Wi,base:1,visible:p.bought,unit:"s"},{title:"Auto Cutting Amount",modifier:Li,base:0,visible:f.bought,unit:"/s"},{title:"Auto Planting Amount",modifier:ji,base:0,visible:f.bought,unit:"/s"},{title:"Forest Size",modifier:u,base:10,visible:()=>G.bought.value||yi.value}]),P=Ji(!1),ri=r(()=>s(EI,{modelValue:P.value,"onUpdate:modelValue":ui=>P.value=ui},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:Ei}));NI.on("update",ui=>{if(I.lt(V.day.value,Ms))return;I.gte(Pi.value,Mi.value)?Pi.value=Mi.value:(Pi.value=I.add(Pi.value,ui),aI.isHolding.value&&aI.onClick()),I.gte(nI.value,E.value)?nI.value=E.value:(nI.value=I.add(nI.value,ui),_i.isHolding.value&&_i.onClick());const pi=I.sub(vi.value,I.sub(o.value,y.value).max(0)),_I=I.sub(zi.value,I.sub(y.value,o.value).max(0));y.value=I.isNaN(pi)?0:pi,o.value=I.isNaN(_I)?0:_I;const hI=I.min(w.value,I.times(zi.value,ui)).max(0),ii=I.mul(uI.apply(1),hI),Zi=I.div(ii,ui);Z.value=I.mul(Zi,cm).add(I.mul(Z.value,I.dOne.sub(cm))),n.value=I.add(n.value,ii),m.value=I.mul(hI,yi.value?2:1).add(m.value),yi.value&&(a.value=I.add(a.value,hI));const Ui=I.min(m.value,I.times(vi.value,ui)).max(0);m.value=I.sub(m.value,Ui)});const gi=b(()=>I.sub(I.mul(zi.value,wi.value?2:1),vi.value)),mI=b(()=>I.sub(vi.value,zi.value)),Gi=je(()=>({key:"c",description:"Cut trees",onPress:()=>{aI.canClick.value&&aI.onClick()},enabled:$(V.days[Ms-1].opened)})),xI=je(()=>({key:"p",description:"Plant trees",onPress:()=>{_i.canClick.value&&_i.onClick()},enabled:$(V.days[Ms-1].opened)})),{total:PI,trackerDisplay:RI}=de({resource:n,goal:1e4,name:i,day:Ms,background:e,modal:{show:P,display:ri}}),rI={logs:t(0),totalLogs:t(0),saplings:t(0),createdSaplings:t(0),row1Upgrades:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}],row2Upgrades:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}],row1Buyables:[{amount:t(0)},{amount:t(0)},{amount:t(0)}]},wi=t(!1),yi=b(()=>{var ui;return wi.value||((ui=V.currentlyMastering.value)==null?void 0:ui.name)===i});return{name:i,day:Ms,color:l,logs:n,totalLogs:PI,trees:w,saplings:m,createdSaplings:a,cutTree:aI,plantTree:_i,cutTreeHK:Gi,plantTreeHK:xI,row1Upgrades:L,row2Upgrades:x,row1Buyables:R,manualCutProgress:Pi,manualPlantProgress:nI,generalTabCollapsed:$i,computedAutoCuttingAmount:zi,minWidth:700,display:r(()=>s(M,null,[hi(RI),s(ti,null,null),yi.value?s(M,null,[s("div",{class:"decoration-effect"},[d("Decoration effect:"),s("br",null,null),d("Trees drop 2 saplings, and forest size increases log gain")]),s(ti,null,null)]):null,s(sl,{resource:n,color:l,style:"margin-bottom: 0",productionDisplay:I.gt(zi.value,0)?`+${di(Z.value)}/s average
equilibrium: +${Y.elfTraining.planterElfTraining.milestones[4].earned.value?di(uI.apply(zi.value))+"/s":rm([[zi.value,"cutting speed"],[vi.value,"planting speed"],[I.mul(W.value,20),"forest cap"]],"/s",uI.apply(1))}`:void 0},null),s(sl,{resource:m,color:e,style:"margin-bottom: 0",productionDisplay:As(gi.value)},null),s(sl,{resource:w,color:e,style:"margin-bottom: 0",productionDisplay:As(mI.value)},null),s(ti,null,null),zI(aI,_i),s("div",null,[d("Tip: You can hold down on actions to perform them automatically")]),s(ti,null,null),xl(L,x),s(ti,null,null),zI(...R)])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(n.value),d(" "),n.displayName])])),mastery:rI,mastered:wi}}),QZ="reindeer",Qe=21,ee=al(QZ,function(){const i="Reindeer",l="saddlebrown",n=t(0),m=t(1),a=t({}),Z=t(0),o=t(0),y=Ci(()=>[J(()=>({multiplier:2,description:"Carry food in boxes",enabled:zi.bought}))]),u=b(()=>y.apply(2)),w=Ci(()=>[Si(()=>({addend:1,description:"Guide to Reindeer Handling",enabled:Li.bought})),Si(()=>({addend:o,description:"Metal clapper",enabled:si.bought}))]),W=b(()=>w.apply(1)),N=b(()=>10);function p(){var _i;Z.value=I.fromValue(N.value).toNumber();let Hi=0;for(a.value={},n.value=0;I.gt(W.value,Hi);){const Ei=Object.values(li)[Math.floor(Math.random()*Object.values(li).length)],$i=(_i=Ei==null?void 0:Ei.name)!=null?_i:"";a.value[$i]||(a.value[$i]=!0,Hi++,E.bought.value&&Ei.onClick())}}const f=HI(()=>({direction:Yi.Right,width:476,height:50,style:"border-radius: 0",borderStyle:"border-radius: 0",fillStyle:()=>({background:Z.value>0?l:"#7f7f00",animation:Z.value>0?"1s focused-eating-bar linear infinite":"",opacity:Z.value>0?Z.value/10:1,transition:"none"}),progress:()=>I.sub(m.value,1).div(I.sub(u.value,1)).toNumber(),display:r(()=>s(M,null,[di(m.value),d("x"),Z.value>0?s(M,null,[" ",d("to "),Object.keys(a.value).join(", "),d(" for")," ",Se(Z.value)]):""]))})),C=il(()=>({display:{title:"Focus",description:r(()=>s(M,null,[d("Motivate reindeer to eat, multiplying "),_(W.value)," ",d("random reindeer's eating rate by up to "),di(u.value),d("x for "),Se(N.value),d(", equal to the focus bar's effect.")]))},style:{width:"480px",minHeight:"80px",zIndex:4},canClick:()=>I.eq(Z.value,0),onClick:p})),D=Ci(()=>[J(()=>({multiplier:.5,description:"Pile of coal",enabled:Mi.bought}))]),L=b(()=>D.apply(10));function O(Hi){const _i=t(0),Ei=t(0),$i=je(()=>({key:"Numpad "+Hi.key,description:"Feed "+Hi.name,enabled:V.days[Qe-1].opened,onPress:P.onClick})),P=il(()=>{const ri=HI(()=>({direction:Yi.Right,width:140,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:()=>({marginTop:"-1px",transitionDuration:"0s",background:"black",animation:a.value[Hi.name]&&Z.value>0?".5s focused-eating-bar linear infinite":""}),progress:()=>I.div(Ei.value,L.value)})),gi=J(()=>({multiplier:mI,description:Hi.name,enabled:()=>I.gt(_i.value,0)})),mI=b(()=>I.times(Hi.boostAmount,_i.value).add(1).pow(ji.bought.value?1.1:1));return{...Hi,hotkey:$i,timesFed:_i,progress:Ei,effect:mI,modifier:gi,display:{title:r(()=>s("h3",null,[d("Feed "),Hi.name,d(" "),s(Ze,{hotkey:$i},null)])),description:r(()=>s(M,null,[s("br",null,null),d("Each time you feed "),Hi.name,d(" will increase your")," ",Hi.boostDescription,d(" by +"),di(Hi.boostAmount),d("x"),s(ti,null,null),d("Currently "),di(mI.value),d("x"),s("br",null,null),hi(ri)]))},style:{width:"160px",height:"160px"},canClick(){return I.gte(Ei.value,L.value)},onClick(){if(!c(P.canClick))return;let Gi=I.div(Ei.value,L.value).floor();B.bought.value&&(Gi=I.times(Gi,2)),_i.value=I.add(_i.value,Gi),Ei.value=0},update(Gi){if(I.gte(Ei.value,L.value))Ei.value=L.value;else{let xI=Gi;const PI=a.value[Hi.name]&&Z.value>0;PI&&(xI=I.times(xI,m.value)),Ei.value=I.add(Ei.value,xI),(P.isHolding.value||E.bought.value&&PI)&&P.onClick()}}}});return P}const v=O({name:"Dasher",key:"7",boostDescription:"log gain",boostAmount:1}),H=O({name:"Dancer",key:"8",boostDescription:"coal gain",boostAmount:.1}),mi=O({name:"Prancer",key:"9",boostDescription:"paper gain",boostAmount:.1}),G=O({name:"Vixen",key:"4",boostDescription:"boxes gain",boostAmount:.1}),x=O({name:"Comet",key:"5",boostDescription:"metal gain",boostAmount:.1}),K=O({name:"Cupid",key:"6",boostDescription:"cloth actions",boostAmount:.1}),bi=O({name:"Donner",key:"1",boostDescription:"oil gain",boostAmount:.01}),Ii=O({name:"Blitzen",key:"2",boostDescription:"plastic gain",boostAmount:.1}),R=O({name:"Rudolph",key:"3",boostDescription:"dye gain",boostAmount:.01}),li={donner:bi,blitzen:Ii,rudolph:R,vixen:G,comet:x,cupid:K,dasher:v,dancer:H,prancer:mi},A=b(()=>Object.values(li).map(Hi=>Hi.timesFed.value).reduce(I.add,I.dZero)),B=U(()=>({resource:ki.logs,cost:1e97,style:{width:"160px"},display:{title:"Sawdust?",description:"Adding some sawdust to the feed allows you to make more of it. Each feed action counts twice"}})),Mi=U(()=>({resource:Oi.coal,cost:1e167,style:{width:"160px"},display:{title:"Pile of coal",description:"Building a threatening pile of coal encourages the reindeer to behave. Each reindeer eats twice as fast"}})),Li=U(()=>({resource:g.paper,cost:1e117,style:{width:"160px"},display:{title:"Guide to Reindeer Handling",description:"Written reindeer handling instructions allow you to help more focus at once. Increase focus targets by one"}})),zi=U(()=>({resource:wI.boxes,cost:1e102,style:{width:"160px"},display:{title:"Carry food in boxes",description:"Carrying reindeer food in boxes allows you to distribute it faster. Double the maximum focus multiplier"}})),si=U(()=>({resource:tI.metal,cost:1e67,style:{width:"160px"},display:{title:"Metal clapper",description:`Striking two rods of metal can help get more reindeer's attention when done right. "Critical" focuses now affect up to two additional reindeer`}})),q=U(()=>({resource:fI.cloth,cost:1e20,style:{width:"160px"},display:{title:"Focus bar padding",description:"Adding padding to the focus bar lets you slow it down when it's closer to the max value"}})),Wi=U(()=>({resource:xi.oil,cost:4e25,style:{width:"160px"},display:{title:"Oil can do that?",description:"Using a lot of oil somehow let's reindeers focus themselves with a random value when left un-focused for 10s"}})),E=U(()=>({resource:jI.plastic,cost:1e22,style:{width:"160px"},display:{title:"Automated feeder",description:"An automated feeder lets focused reindeer eat automatically"}})),ji=U(()=>({resource:Ri.dyes.white.amount,cost:75e6,style:{width:"160px"},display:{title:"Colorful food",description:"Adding some non-toxic dyes to the food makes them more powerful. Raise each reindeer's effect to the ^1.1"}})),vi={upgrade1:B,upgrade2:Mi,upgrade3:Li,upgrade4:zi,upgrade5:si,upgrade6:q,upgrade7:Wi,upgrade8:E,upgrade9:ji},[uI,Pi]=vl(()=>[{title:"Max Focus Multiplier",modifier:y,base:2},{title:"Focus Targets",modifier:w,base:1},{title:"Eating duration",modifier:D,base:10}]),II=Ji(!1),aI=r(()=>s(EI,{modelValue:II.value,"onUpdate:modelValue":Hi=>II.value=Hi},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:uI}));NI.on("update",Hi=>{if(I.lt(V.day.value,Qe))return;Object.values(li).forEach(Ei=>Ei.update(Hi)),Z.value=Math.max(Z.value-Hi,0);let _i=!1;if(Wi.bought.value&&(n.value+=Hi,n.value>20&&(_i=!0)),I.eq(Z.value,0)){let Ei=1e3;_i&&(Ei=Math.random()*1e3);let $i=1-Math.abs(Math.sin(Date.now()/Ei*2));q.bought.value&&($i=1-(1-$i)**2),o.value=$i>.975?2:$i>.9?1:0,m.value=I.pow(u.value,$i),_i&&p()}});const nI=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:"animation: 15s reindeer-bar linear infinite",progress:()=>V.day.value===Qe?I.div(A.value,1500):1,display:r(()=>V.day.value===Qe?s(M,null,[_(A.value),d("/"),_(1500)]):"")}));return AI(()=>{V.day.value===Qe&&I.gte(A.value,1500)&&V.completeDay()}),{name:i,day:Qe,color:l,reindeer:li,generalTabCollapsed:Pi,timeSinceFocus:n,currMultiplier:m,currTargets:a,currCooldown:Z,upgrades:vi,crit:o,minWidth:700,display:r(()=>s(M,null,[s("div",null,[V.day.value===Qe?`Feed reindeer ${_(1500)} times to complete the day`:`${i} Complete!`," ",d("-")," ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>II.value=!0},[d("Check Modifiers")])]),hi(nI),hi(aI),s(ti,null,null),s("div",null,[d("You have fed reindeer "),_(A.value),d(" times")]),s(ti,null,null),xl([C],[f],[v,H,mi],[G,x,K],[bi,Ii,R]),s(ti,null,null),xl([B,Mi,Li],[zi,si,q],[Wi,E,ji])])),minimizedDisplay:r(()=>s("div",null,[i,d(" "),s("span",{class:"desc"},[di(A.value),d(" times fed")])]))}}),UZ="paper",Zn=5,g=al(UZ,function(){const i="Paper",l="#E8DCB8",e=vI(0,"paper"),n=vI(b(()=>I.min(I.div(ki.logs.value,1e9),I.div(Oi.ash.value,vi.value))),"pulp"),m=Tm(()=>({scaling:fn(1,1.2),baseResource:n,gainResource:$(e),roundUpCost:!0,spend(P,ri){ki.logs.value=I.sub(ki.logs.value,I.times(ri,1e9)),Oi.ash.value=I.sub(Oi.ash.value,I.times(ri,vi.value))},gainModifier:E})),a=il(()=>({display:r(()=>{const P=I.gte(m.actualGain.value,1)?m.currentAt.value:m.nextAt.value;return s(M,null,[s("span",{style:"font-size: large"},[d("Create "),_(m.currentGain.value),d(" "),e.displayName]),s("br",null,null),s("span",{style:"font-size: large"},[d("Cost: "),Gs(ki.logs,P),d(" "),n.displayName,d(" ("),_(I.times(P,1e9)),d(" "),ki.logs.displayName,d(";")," ",_(I.times(P,vi.value))," ",Oi.ash.displayName,d(")")])])}),canClick:()=>I.gte(m.actualGain.value,1),onClick(){!c(this.canClick)||m.convert()},style:"width: 600px; min-height: unset",visibility:()=>j(!V.isMastery.value||$i.value)}));function Z(P){const ri=Ai(()=>({...P,display:{title:P.name,description:`Print a copy of "${P.name}", which ${P.elfName} will use to improve their skills! Each copy printed will reduce the "${P.buyableName}" price scaling by 0.95x and make ${P.elfName} purchase +10% faster!`,effectDisplay:r(()=>s(M,null,[Pe(I.pow(.95,ri.totalAmount.value)),d("x price scaling,")," ",di(I.div(ri.totalAmount.value,10).add(1)),d("x auto-purchase speed")])),showAmount:!1},resource:$(e),cost(){let gi=ri.amount.value;P.elfName==="Star"&&I.gte(gi,10)&&(gi=I.pow(10,I.div(gi,10))),(P.elfName==="Star"||P.elfName==="Bell")&&(gi=I.pow(gi,2)),I.gte(gi,100)&&(gi=I.pow(gi,2).div(100)),I.gte(gi,1e4)&&(gi=I.pow(gi,2).div(1e4)),gi=I.pow(.95,D.totalAmount.value).times(gi);let mI=5;Y.elfTraining.paperElfTraining.milestones[2].earned.value&&mI--;let Gi=I.pow(mI,gi).times(10);return["Peppermint","Twinkle","Cocoa","Frosty"].includes(P.elfName)&&(Gi=Gi.mul(1e31)),["Jingle"].includes(P.elfName)&&(Gi=Gi.mul(1e123)),Y.elfTraining.paperElfTraining.milestones[0].earned.value&&(Gi=I.div(Gi,li.value.max(1))),si.bought.value&&(Gi=Gi.div(10)),Gi},inverseCost(gi){si.bought.value&&(gi=I.mul(gi,10)),Y.elfTraining.paperElfTraining.milestones[0].earned.value&&(gi=I.mul(gi,li.value.max(1)));let mI=5;Y.elfTraining.paperElfTraining.milestones[2].earned.value&&mI--;let Gi=I.div(gi,10);return["Peppermint","Twinkle","Cocoa","Frosty"].includes(P.elfName)&&(Gi=Gi.div(1e31)),["Jingle"].includes(P.elfName)&&(Gi=Gi.div(1e123)),Gi=Gi.log(mI),Gi=Gi.div(I.pow(.95,D.totalAmount.value)),I.gte(Gi,1e4)&&(Gi=I.mul(Gi,1e4).root(2)),I.gte(Gi,100)&&(Gi=I.mul(Gi,100).root(2)),(P.elfName==="Star"||P.elfName==="Bell")&&(Gi=I.root(Gi,2)),P.elfName==="Star"&&I.gte(Gi,10)&&(Gi=Gi.log10().mul(10)),I.isNaN(Gi)?I.dZero:Gi.floor().max(0)},style:"width: 600px",freeLevels:b(()=>{var gi,mI;return Y.elfTraining.paperElfTraining.milestones[4].earned.value&&I.gte((mI=(gi=Object.values(Y.elfTraining).find(Gi=>Gi.name===P.elfName))==null?void 0:gi.level.value)!=null?mI:0,5)&&!["Star","Bell","Gingersnap","Peppermint","Twinkle","Cocoa","Frosty"].includes(P.elfName)?5:0}),totalAmount:b(()=>I.add(ri.amount.value,ri.freeLevels.value))}));return ri}const o=Z({name:"Now You're Logging!",elfName:"Holly",buyableName:"Generic Cutters"}),y=Z({name:"The Man Who Planted Trees",elfName:"Ivy",buyableName:"Generic Planters"}),u=Z({name:"Logjam",elfName:"Hope",buyableName:"Expand Forest"}),w=Z({name:"Fahrenheit 451",elfName:"Jack",buyableName:"Heated Cutters"}),W=Z({name:"Tillamook Burn Country",elfName:"Mary",buyableName:"Heated Planters"}),N=Z({name:"The Garden Tree's Handbook",elfName:"Noel",buyableName:"Fertilized Soil"}),p=Z({name:"Firestarter",elfName:"Joy",buyableName:"Small Fire",visibility:()=>j(Fi.elves.smallFireElf.bought.value)}),f=Z({name:"An Arsonist's Guide to Writer's Homes in New England",elfName:"Faith",buyableName:"Bonfire",visibility:()=>j(Fi.elves.bonfireElf.bought.value)}),C=Z({name:"Little Fires Everywhere",elfName:"Snowball",buyableName:"Kiln",visibility:()=>j(Fi.elves.kilnElf.bought.value)}),D=Z({name:"The Book Thief",elfName:"Star",buyableName:"Books",visibility:()=>j(Fi.elves.paperElf.bought.value)}),L=Z({name:"Not a box",elfName:"Bell",buyableName:"Box Buyables",visibility:()=>j(Fi.elves.boxElf.bought.value)}),O=Z({name:"Fuzzy Bee and Friends",elfName:"Gingersnap",buyableName:"Cloth Buyables",visibility:()=>j(Fi.elves.clothElf.bought.value)}),v=Z({name:"Drills and Mills",elfName:"Peppermint",buyableName:"Coal Drill",visibility:()=>j(Fi.elves.coalDrillElf.bought.value)}),H=Z({name:"Deep in the Earth",elfName:"Frosty",buyableName:"Oil Drills",visibility:()=>j(Fi.elves.heavyDrillElf.bought.value)}),mi=Z({name:"Burning the Midnight Oil",elfName:"Cocoa",buyableName:"Oil-Consuming Machines",visibility:()=>j(Fi.elves.oilElf.bought.value)}),G=Z({name:"Physical Metallurgy",elfName:"Twinkle",buyableName:"Metal Machines",visibility:()=>j(Fi.elves.metalElf.bought.value)}),x=Z({name:"Arts and Crafts",elfName:"Carol",buyableName:"Primary Dyes",visibility:()=>j(Fi.elves.dyeElf.bought.value)}),K=Z({name:"Natural Dyeing",elfName:"Carol",buyableName:"Secondary Dyes",visibility:()=>j(Fi.elves.dyeElf.bought.value&&fs.milestones.dyeBook.earned.value)}),bi=Z({name:"One Plastic Bag",elfName:"Tinsel",buyableName:"Plastic Buyables",visibility:()=>j(jI.masteryEffectActive.value)}),Ii=Z({name:"The Tetris Effect",elfName:"Jingle",buyableName:"Elf Assistants",visibility:()=>j(gI.upgrades.packingElf.bought.value)}),R={cuttersBook:o,plantersBook:y,expandersBook:u,heatedCuttersBook:w,heatedPlantersBook:W,fertilizerBook:N,smallFireBook:p,bonfireBook:f,kilnBook:C,paperBook:D,boxBook:L,clothBook:O,coalDrillBook:v,heavyDrillBook:H,oilBook:mi,metalBook:G,primaryDyeBook:x,secondaryDyeBook:K,plasticBook:bi,packingBook:Ii},li=b(()=>Object.values(R).reduce((P,ri)=>P.add(ri.amount.value),new I(0))),A=U(()=>({resource:$(e),cost:1e8,visibility:()=>j(jI.upgrades.paperTools.bought.value),display:{title:"Shepherding for Dummies",description:"Double effectiveness of all cloth actions"}})),B=U(()=>({resource:$(e),cost:1e9,visibility:()=>j(jI.upgrades.paperTools.bought.value),display:{title:"Guide to drilling",description:"Double drilling power"}})),Mi=U(()=>({resource:$(e),cost:1e10,visibility:()=>j(jI.upgrades.paperTools.bought.value),display:{title:"Oil and where to find it",description:"Double oil gain"}})),Li={clothUpgrade:A,drillingUpgrade:B,oilUpgrade:Mi},zi=U(()=>({resource:$(e),cost:1e36,visibility:()=>j(Y.elfTraining.heavyDrillElfTraining.milestones[4].earned.value),display:{title:"Paper Burning",description:"Paper adds to ash gain after all other modifiers"}})),si=U(()=>({resource:$(e),cost:1e38,visibility:()=>j(Y.elfTraining.heavyDrillElfTraining.milestones[4].earned.value),display:{title:"Book Cheapener",description:"Books are less expensive"}})),q=U(()=>({resource:$(e),cost:1e40,visibility:()=>j(Y.elfTraining.heavyDrillElfTraining.milestones[4].earned.value),display:{title:"Un-Processing",description:"Log gain is raised to the ^1.05"}})),Wi={ashUpgrade:zi,bookUpgrade:si,treeUpgrade:q},E=Ci(()=>[J(()=>({multiplier:2,description:"Scholar's shoes",enabled:fI.paperUpgrades.paperUpgrade1.bought})),J(()=>({multiplier:2,description:"Scholar's slacks",enabled:fI.paperUpgrades.paperUpgrade2.bought})),J(()=>({multiplier:2,description:"Scholar's jacket",enabled:fI.paperUpgrades.paperUpgrade3.bought})),J(()=>({multiplier:10,description:"Felt Elbow Pads",enabled:fI.paperUpgrades.paperUpgrade4.bought})),J(()=>({multiplier:Ri.boosts.yellow1,description:"Yellow Dye Boost 1",enabled:()=>I.gte(Ri.dyes.yellow.amount.value,1)})),J(()=>({multiplier:2,description:"1000% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone5.earned})),J(()=>({multiplier:pl.boosts.sunshine1,description:"Sunshine Wrapping Paper",enabled:()=>I.gte(pl.boosts.sunshine1.value,2)})),J(()=>({multiplier:10,description:"199,000,000 Presents Packed",enabled:gI.packingMilestones.paperBoost.earned})),ee.reindeer.prancer.modifier]),ji=Ci(()=>[J(()=>({multiplier:.1,description:"Star Level 2",enabled:Y.elfTraining.paperElfTraining.milestones[1].earned})),J(()=>({multiplier:0,description:"Coal Decoration",enabled:$i}))]),vi=b(()=>ji.apply(1e6)),[uI,Pi]=vl(()=>[{title:"Paper Gain",modifier:E,base:1},{title:"Ash Cost",modifier:ji,base:1e6,unit:" ash/pulp"}]),II=Ji(!1),aI=r(()=>s(EI,{modelValue:II.value,"onUpdate:modelValue":P=>II.value=P},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:uI}));NI.on("update",P=>{I.lt(V.day.value,Zn)||(e.value=I.times(P,jI.buyables.passivePaper.amount.value).times(m.currentGain.value).div(100).add(e.value))});const{total:nI,trackerDisplay:Hi}=de({resource:e,goal:5e3,masteryGoal:5e7,name:i,day:Zn,background:l,textColor:"var(--feature-foreground)",modal:{show:II,display:aI}}),_i={paper:t(0),totalPaper:t(0),books:{cuttersBook:{amount:t(0)},plantersBook:{amount:t(0)},expandersBook:{amount:t(0)},heatedCuttersBook:{amount:t(0)},heatedPlantersBook:{amount:t(0)},fertilizerBook:{amount:t(0)},smallFireBook:{amount:t(0)},bonfireBook:{amount:t(0)},kilnBook:{amount:t(0)},paperBook:{amount:t(0)},boxBook:{amount:t(0)},clothBook:{amount:t(0)},coalDrillBook:{amount:t(0)},heavyDrillBook:{amount:t(0)},oilBook:{amount:t(0)},metalBook:{amount:t(0)},primaryDyeBook:{amount:t(0)},secondaryDyeBook:{amount:t(0)},plasticBook:{amount:t(0)},packingBook:{amount:t(0)}},upgrades:{clothUpgrade:{bought:t(!1)},drillingUpgrade:{bought:t(!1)},oilUpgrade:{bought:t(!1)}},upgrades2:{ashUpgrade:{bought:t(!1)},bookUpgrade:{bought:t(!1)},treeUpgrade:{bought:t(!1)}}},Ei=t(!1),$i=b(()=>{var P;return Ei.value||((P=V.currentlyMastering.value)==null?void 0:P.name)===i});return{name:i,day:Zn,color:l,paper:e,totalPaper:nI,paperConversion:m,books:R,upgrades:Li,upgrades2:Wi,generalTabCollapsed:Pi,minWidth:700,display:r(()=>s(M,null,[hi(Hi),s(ti,null,null),$i.value?s(M,null,[s("div",{class:"decoration-effect"},[d("Decoration effect:"),s("br",null,null),d("Pulp no longer requires ash")]),s(ti,null,null)]):null,s(sl,{resource:e,color:l,style:"margin-bottom: 0"},null),s(ti,null,null),!V.isMastery.value||$i.value?s(M,null,[hi(a),s(ti,null,null),xl(Object.values(Li),Object.values(Wi)),s(ti,null,null),Ie(...Object.values(R))]):null])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(e.value),d(" "),e.displayName])])),mastery:_i,mastered:Ei}}),HZ="oil",on=9,xi=al(HZ,function(){const i="Oil",l="#000000",e="var(--foreground)",n=vI(0,"oil"),m=vI(0,"depth"),a=t(0),Z=b(()=>I.lt(m.value,990)?I.add(10,m.value):I.pow(1.001,I.sub(m.value,990)).mul(1e3));function o(){if(I.lt(m.value,990)){const ei=I.min(I.affordArithmeticSeries(a.value,10,1,m.value),I.sub(990,m.value)),F=I.sumArithmeticSeries(ei,10,1,m.value);a.value=I.sub(a.value,F),m.value=I.add(m.value,ei)}if(I.gte(m.value,990)){const ei=I.affordGeometricSeries(a.value,1e3,1.001,I.sub(m.value,990)),F=I.sumGeometricSeries(ei,1e3,1.001,I.sub(m.value,990));a.value=I.sub(a.value,F),m.value=I.add(m.value,ei)}}const y=t(0),u=b(()=>wl.value?0:I.times(I.pow(y.value,L.value).pow(Y.elfTraining.coalDrillElfTraining.milestones[0].earned.value?2.5:2),1e14)),w=b(()=>I.times(I.pow(y.value,L.value),1)),W=Ai(()=>({resource:tI.metal,cost(){let ei=new I(this.amount.value);return I.gte(ei,100)&&(ei=I.pow(ei,4).div(100**3)),ei=I.pow(.95,g.books.heavyDrillBook.totalAmount.value).times(ei),I.pow(1.3,ei).times(25e3)},inverseCost(ei){let F=I.div(ei,25e3).log(1.3);return F=F.div(I.pow(.95,g.books.heavyDrillBook.totalAmount.value)),I.gte(F,100)&&(F=I.mul(F,100**3).root(4)),I.isNaN(F)?I.dZero:F.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Heavy Drill")]),s("br",null,null),d("A large drill specialized at deep mining."),s("br",null,null),d("Consumes 1e14*(Heavy Drills amount)"),s("sup",null,[Y.elfTraining.coalDrillElfTraining.milestones[0].earned.value?2.5:2])," ",d("coal/sec for (Heavy Drills amount) drill power."),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),WI(u.value),d(" coal/sec"),s("br",null,null),d("+"),WI(w.value),d(" drill power"),s("br",null,null),s("br",null,null),d("Cost: "),yI(c(W.cost)),d(" "),W.resource.displayName])),onPurchase(){y.value=I.add(y.value,1)},style:{color:e,width:"160px",flexGrow:1},visibility:()=>j(!V.isMastery.value||wl.value)})),{min:N,max:p,add:f,remove:C}=ce({buyable:W,active:y}),D=t(0),L=b(()=>{let ei=I.add(D.value,Math.E);return Y.elfTraining.heavyDrillElfTraining.milestones[3].earned.value?ei=ei.log(2.5):ei=ei.ln(),ei}),O=Ai(()=>({resource:tI.metal,cost(){let ei=new I(this.amount.value);return I.gte(ei,50)&&(ei=I.pow(ei,4).div(50**3)),ei=I.pow(.95,g.books.heavyDrillBook.totalAmount.value).times(ei),I.pow(2,ei).times(1e5)},inverseCost(ei){let F=I.div(ei,1e5).log(2);return F=F.div(I.pow(.95,g.books.heavyDrillBook.totalAmount.value)),I.gte(F,50)&&(F=I.mul(F,50**3).root(4)),I.isNaN(F)?I.dZero:F.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Heavy Drill Drill")]),s("br",null,null),d("Attach extra drills to Heavy Drills to make them faster"),s("br",null,null),d("Raise amount of effective Heavy Drills by ^"),Y.elfTraining.heavyDrillElfTraining.milestones[3].earned.value?s(M,null,[d("log"),s("sub",null,[d("2.5")])]):s(M,null,[d("ln")]),d("(Heavy Drill Drill amount + e)."),s("br",null,null),d("(also affects coal consumption)."),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("^"),WI(L.value),d(" Heavy Drill amount"),s("br",null,null),s("br",null,null),d("Cost: "),yI(c(O.cost)),d(" "),O.resource.displayName])),onPurchase(){D.value=I.add(D.value,1)},style:{color:e,width:"160px",flexGrow:1}})),{min:v,max:H,add:mi,remove:G}=ce({buyable:O,active:D}),x=t(0),K=b(()=>wl.value?1:I.pow(1/3,x.value)),bi=b(()=>I.pow(2,x.value)),Ii=b(()=>I.pow(1.2,x.value)),R=Ai(()=>({resource:tI.metal,cost(){let ei=new I(this.amount.value);return I.gte(ei,10)&&(ei=I.pow(ei,4).div(10**3)),ei=I.pow(.95,g.books.heavyDrillBook.totalAmount.value).times(ei),I.pow(8,ei).times(2e5)},inverseCost(ei){let F=I.div(ei,2e5).log(8);return F=F.div(I.pow(.95,g.books.heavyDrillBook.totalAmount.value)),I.gte(F,10)&&(F=I.mul(F,10**3).root(4)),I.isNaN(F)?I.dZero:F.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Heavy Extractor")]),s("br",null,null),d("Attach extractors to the drill to mine coal and ore, but with a price."),s("br",null,null),d("Divides drill power by 3 to multiply coal gain by 2 and ore gain by 1.2."),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("\xD7"),Pe(K.value),d(" drill power"),s("br",null,null),d("\xD7"),WI(bi.value),d(" coal/sec"),s("br",null,null),d("\xD7"),WI(Ii.value),d(" ore/sec"),s("br",null,null),s("br",null,null),d("Cost: "),yI(c(R.cost))," ",R.resource.displayName])),onPurchase(){x.value=I.add(x.value,1)},style:{color:e,width:"160px",flexGrow:1}})),{min:li,max:A,add:B,remove:Mi}=ce({buyable:R,active:x}),Li=t(0),zi=b(()=>wl.value?1:I.pow(Ui[3].bought.value?4:5,Li.value)),si=b(()=>I.add(Li.value,T.value).pow(2).mul(y.value).mul(I.add(D.value,1)).mul(x.value).mul(I.pow(m.value,Y.elfTraining.oilElfTraining.milestones[0].earned.value?1.2:1)).div(1e5)),q=Ai(()=>({resource:tI.metal,cost(){let ei=new I(this.amount.value);I.gte(ei,10)&&(ei=I.pow(ei,4).div(10**3)),ei=I.pow(.95,g.books.oilBook.totalAmount.value).times(ei);let F=I.pow(16,ei).times(2e6);return Ui[4].bought.value&&(F=F.div(I.add(Vl.value,1).root(6))),Y.elfTraining.heavyDrillElfTraining.milestones[1].earned.value&&(F=F.div(10)),F},inverseCost(ei){Y.elfTraining.heavyDrillElfTraining.milestones[1].earned.value&&(ei=I.mul(ei,10)),Ui[4].bought.value&&(ei=I.mul(ei,I.add(Vl.value,1).root(6)));let F=I.div(ei,2e6).log(16);return F=F.div(I.pow(.95,g.books.oilBook.totalAmount.value)),I.gte(F,10)&&(F=I.mul(F,10**3).root(4)),I.isNaN(F)?I.dZero:F.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Oil Pump")]),s("br",null,null),d("Pump that oil from the ground."),s("br",null,null),d("Gain oil based on the number of Heavy buildings active and well depth, but coal usage is multiplied by "),Ui[3].bought.value?4:5,d("\xD7."),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("\xD7"),WI(zi.value),d(" coal usage"),s("br",null,null),d("+"),WI(si.value),d(" oil/sec"),s("br",null,null),s("br",null,null),d("Cost: "),yI(c(q.cost)),d(" "),q.resource.displayName])),onPurchase(){Li.value=I.add(Li.value,1)},style:{color:e,width:"160px",flexGrow:1}})),{max:Wi,min:E,add:ji,remove:vi}=ce({buyable:q,active:Li}),uI=t(0),Pi=b(()=>{let ei=uI.value;return Y.elfTraining.heavyDrillElfTraining.milestones[2].earned.value&&(ei=I.pow(ei,1.5)),ei}),II=b(()=>wl.value?0:I.pow(Pi.value,2)),aI=b(()=>I.pow(Pi.value,3).mul(1e19)),nI=b(()=>I.add(Pi.value,1)),Hi=Ai(()=>({resource:$(n),cost(){let ei=new I(this.amount.value);return I.gte(ei,100)&&(ei=I.pow(ei,4).div(100**3)),ei=I.pow(.95,g.books.oilBook.totalAmount.value).times(ei),I.pow(2,ei).times(50)},inverseCost(ei){let F=I.div(ei,50).log(2);return F=F.div(I.pow(.95,g.books.oilBook.totalAmount.value)),I.gte(F,100)&&(F=I.mul(F,100**3).root(4)),I.isNaN(F)?I.dZero:F.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Oil Burner")]),s("br",null,null),d("Burn oil as fuel."),s("br",null,null),d("(Oil Burner Amount)"),s("sup",null,[d("2")]),d(" unit of oil can give 1e19*(Oil Burner Amount)"),s("sup",null,[d("3")]),d(" units of coal."),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),WI(II.value),d(" oil/sec"),s("br",null,null),d("-"),WI(aI.value),d(" coal consumption"),Ui[2].bought.value?s(M,null,[s("br",null,null),d("\xD7"),WI(nI.value),d(" to auto smelting multi")]):"",s("br",null,null),s("br",null,null),d("Cost: "),yI(c(Hi.cost)),d(" "),Hi.resource.displayName])),onPurchase(){uI.value=I.add(uI.value,1)},style:{color:e,width:"160px",flexGrow:1}})),{max:_i,min:Ei,add:$i,remove:P}=ce({buyable:Hi,active:uI}),ri=t(0),gi=b(()=>wl.value?0:I.pow(ri.value,2).mul(100)),mI=b(()=>I.add(ri.value,1)),Gi=Ai(()=>({resource:tI.metal,cost(){let ei=new I(this.amount.value);I.gte(ei,50)&&(ei=I.pow(ei,2).div(50)),I.gte(ei,200)&&(ei=I.pow(ei,2).div(200)),I.gte(ei,1e4)&&(ei=I.pow(ei,2).div(1e4)),ei=I.pow(.95,g.books.oilBook.totalAmount.value).times(ei);let F=I.pow(10,ei).times(1e7);return Ui[4].bought.value&&(F=F.div(I.add(Vl.value,1).root(6))),F},inverseCost(ei){Ui[4].bought.value&&(ei=I.mul(ei,I.add(Vl.value,1).root(6)));let F=I.div(ei,1e7).log(10);return F=F.div(I.pow(.95,g.books.oilBook.totalAmount.value)),I.gte(F,1e4)&&(F=I.mul(F,1e4).root(2)),I.gte(F,200)&&(F=I.mul(F,200).root(2)),I.gte(F,50)&&(F=I.mul(F,50).root(2)),I.isNaN(F)?I.dZero:F.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Oil Smelter")]),s("br",null,null),d("Use oil as a crucible fuel."),s("br",null,null),d("Burn 100*(Oil Smelter amount)"),s("sup",null,[d("2")]),d(" oil to smelt +100% faster."),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),WI(gi.value),d(" oil/sec"),s("br",null,null),d("\xD7"),WI(mI.value),d(" smelting speed"),s("br",null,null),s("br",null,null),d("Cost: "),yI(c(Gi.cost)),d(" "),Gi.resource.displayName])),onPurchase(){ri.value=I.add(ri.value,1)},style:{color:e,width:"160px",flexGrow:1}})),{max:xI,min:PI,add:RI,remove:rI}=ce({buyable:Gi,active:ri}),wi=[z(()=>({display:{requirement:"5m Well Depth",effectDisplay:"Gain 25% more coal for each metre of well depth (after the 3 elf milestone)"},shouldEarn:()=>I.gte(m.value,5)})),z(()=>({display:{requirement:"10m Well Depth",effectDisplay:"Drill too slow? Unlock some drill upgrades!"},shouldEarn:()=>I.gte(m.value,10),visibility:()=>j(wi[0].earned.value)})),z(()=>({display:{requirement:"25m Well Depth",effectDisplay:"Gain 5% more ore for each metre of well depth"},shouldEarn:()=>I.gte(m.value,25),visibility:()=>j(wi[1].earned.value)})),z(()=>({display:{requirement:"60m Well Depth",effectDisplay:"Drill still too slow? Try unlocking another drill!"},shouldEarn:()=>I.gte(m.value,60),visibility:()=>j(wi[2].earned.value)})),z(()=>({display:{requirement:"150m Well Depth",effectDisplay:"It appears that coal and metal appear a lot more when you go this deep! Unlock an upgrade apiece for coal and metal!"},shouldEarn:()=>I.gte(m.value,150),visibility:()=>j(wi[3].earned.value)})),z(()=>({display:{requirement:"350m Well Depth",effectDisplay:"There is even more coal and metal than you thought. Why don't you utilize your heavy drill to mine them? Unlock a new drill upgrade!"},shouldEarn:()=>I.gte(m.value,350),visibility:()=>j(wi[4].earned.value)})),z(()=>({display:{requirement:"1,000m Well Depth",effectDisplay:"You've finally found oil! Maybe it's time to make those oil useful! Unfortunately extracting them would use more coal, and also it's becoming much harder to mine deeper due to the thermal heat and pressure."},shouldEarn:()=>I.gte(m.value,1e3),visibility:()=>j(I.gte(m.value,1e3))})),z(()=>({display:{requirement:"3,000m Well Depth",effectDisplay:"You found a large oil spot! Double oil gain!"},shouldEarn:()=>I.gte(m.value,3e3),visibility:()=>j(I.gte(m.value,2e3))}))],{collapseMilestones:yi,display:ui}=ne(wi),pi=[z(()=>({display:{requirement:"100 total oil",effectDisplay:"Hmm, these oil pumps are really expensive. Maybe you should find a way to solve this problem... maybe you can use oil as fuel instead of coal?"},shouldEarn:()=>I.gte(Vl.value,100)})),z(()=>({display:{requirement:"500 total oil",effectDisplay:"Unlocks oil upgrades! These can be bought with oil."},shouldEarn:()=>I.gte(Vl.value,500),visibility:()=>j(pi[0].earned.value)})),z(()=>({display:{requirement:"10,000 total oil",effectDisplay:"Wow, this is really bright when you burn it. Maybe it can be helpful to use them to smelt metal?"},shouldEarn:()=>I.gte(Vl.value,1e4),visibility:()=>j(pi[1].earned.value)}))],{collapseMilestones:_I,display:hI}=ne(pi),ii=[U(()=>({resource:Oi.coal,cost:1e18,display:{title:"Coal Drill Synergy",description:"Increase drill power by +4% per Coal Drill owned.",effectDisplay:r(()=>s(M,null,[d("x"),WI(Zi[0].value)]))},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:tI.metal,cost:15e4,display:{title:"Metal Drill Synergy",description:"Increase drill power by +4% per Metal Drill owned.",effectDisplay:r(()=>s(M,null,[d("x"),WI(Zi[1].value)]))},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:Oi.coal,cost:1e20,display:{title:"Coal Drill Upgrade",description:"Increase drill power by +6% per OoM of coal owned.",effectDisplay:r(()=>s(M,null,[d("x"),WI(Zi[2].value)]))},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:tI.metal,cost:15e5,display:{title:"Metal Drill Upgrade",description:"Increase drill power by +10% per OoM of metal ingot owned.",effectDisplay:r(()=>s(M,null,[d("x"),WI(Zi[3].value)]))},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:100,display:{title:"Drill Oil",description:"Increase previous upgrades' effect by +0.1% per Heavy Drill owned.",effectDisplay:r(()=>s(M,null,[d("+"),WI(I.mul(Zi[4].value,100)),d("%")]))},style(){return this.bought.value?"":{color:e}}}))],Zi=[b(()=>I.mul(Oi.buildDrill.amount.value,I.add(.04,Zl.value)).add(1)),b(()=>I.mul(tI.oreDrill.amount.value,I.add(.04,Zl.value)).add(1)),b(()=>I.mul(I.max(Oi.coal.value,1).log10().floor(),I.add(.06,Zl.value)).add(1)),b(()=>I.mul(I.max(tI.metal.value,1).log10().floor(),I.add(.1,Zl.value)).add(1)),b(()=>I.mul(W.amount.value,.001))],Ui=[U(()=>({resource:$(n),cost:100,display:{title:"Oil the Oil Pump",description:"Double oil gain."},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:500,display:{title:"Oil the Metal Drills",description:"Double ore mining speed and square the coal drill amount in its effect."},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:1500,display:{title:"Blaster Burner",description:"The Oil Burner can now increase your auto smelting multi."},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:25e3,display:{title:"Oil Integration",description:"Reduce Oil Pump's coal consumption multipler from 5 to 4"},style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:5e4,display:{title:"Be One with the Oil",description:r(()=>s(M,null,[d("Divide metal ingot prices of oil buildings by "),s("sup",null,[d("6")]),s(ql,null,{default:()=>[d("total oil + 1")]})]))},style(){return this.bought.value?"":{color:e}}}))],ZI=[U(()=>({resource:$(n),cost:1e13,display:{title:"Dye Synergy I",description:"Red dye boosts yellow dye gain by (log(x)^0.75)"},visibility:()=>j(Y.elfTraining.oilElfTraining.milestones[4].earned.value),style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:1e14,display:{title:"Orange-colored boxes",description:"Orange dye's 2nd effect is raised to the 2.5"},visibility:()=>j(Y.elfTraining.oilElfTraining.milestones[4].earned.value),style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:1e15,display:{title:"Colorful Plastic",description:r(()=>s(M,null,[d("Sum of secondary dyes increases plastic gain by "),s("sup",null,[d("3")]),s(ql,null,{default:()=>[d("x")]})]))},visibility:()=>j(Y.elfTraining.oilElfTraining.milestones[4].earned.value),style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:1e16,display:{title:"Dye Synergy II",description:"Blue dye boosts red dye gain by log(x)"},visibility:()=>j(Y.elfTraining.oilElfTraining.milestones[4].earned.value),style(){return this.bought.value?"":{color:e}}})),U(()=>({resource:$(n),cost:1e17,display:{title:"The Ultimate Metal Dye",description:"Sum of primary dyes boosts auto smelt speed"},visibility:()=>j(Y.elfTraining.oilElfTraining.milestones[4].earned.value),style(){return this.bought.value?"":{color:e}}}))],Ki=Ci(()=>[Si(()=>({addend:()=>I.negate(u.value),description:"Heavy Drill",enabled:()=>I.gt(y.value,0)})),J(()=>({multiplier:zi,description:"Oil Pump",enabled:()=>I.gt(Li.value,0)})),Si(()=>({addend:Il,description:"Oil to Coal Substitution",enabled:()=>I.gt(Il.value,0)}))]),qi=b(()=>Ki.apply(0)),dI=Ci(()=>[Si(()=>({addend:w,description:"Heavy Drill",enabled:()=>I.gt(y.value,0)})),J(()=>({multiplier:K,description:"Heavy Extractor",enabled:()=>I.gt(x.value,0)})),J(()=>({multiplier:Zi[0],description:"Coal Drill Synergy",enabled:ii[0].bought})),J(()=>({multiplier:Zi[1],description:"Metal Drill Synergy",enabled:ii[1].bought})),J(()=>({multiplier:Zi[2],description:"Coal Drill Upgrade",enabled:ii[2].bought})),J(()=>({multiplier:Zi[3],description:"Metal Drill Upgrade",enabled:ii[3].bought})),J(()=>({multiplier:2,description:"Guide to drilling",enabled:g.upgrades.drillingUpgrade.bought})),J(()=>({multiplier:()=>I.add(Vl.value,1).log10().add(1),description:"Cocoa Level 2",enabled:Y.elfTraining.oilElfTraining.milestones[1].earned})),J(()=>({multiplier:2,description:"Cocoa Level 3",enabled:Y.elfTraining.oilElfTraining.milestones[2].earned})),J(()=>({multiplier:4,description:"Workshop 1200%",enabled:XI.milestones.extraExpansionMilestone6.earned})),J(()=>({multiplier:()=>FI.value,description:"Effectiveness",enabled:()=>I.lt(FI.value,1)})),J(()=>({multiplier:Ri.boosts.red2,description:"Red Dye",enabled:Ri.masteryEffectActive})),J(()=>({multiplier:3,description:"2,800 Presents Packaged",enabled:gI.packingMilestones.oilBoost.earned})),Yl(()=>({exponent:1.2,description:"Diamond-tipped drills",enabled:Gl.upgrades[0][3].bought}))]),oI=b(()=>dI.apply(0)),tl=Ci(()=>[Si(()=>({addend:Zi[4],description:"Drill Oil",enabled:ii[4].bought}))]),Zl=b(()=>tl.apply(0)),Xl=Ci(()=>[Si(()=>({addend:si,description:"Oil Pump",enabled:()=>I.gt(Li.value,0)})),J(()=>({multiplier:2,description:"Oil the Oil Pump",enabled:Ui[0].bought})),J(()=>({multiplier:2,description:"3000m Well Depth",enabled:wi[7].earned})),J(()=>({multiplier:2,description:"Oil and where to find it",enabled:g.upgrades.oilUpgrade.bought})),J(()=>({multiplier:()=>FI.value,description:"Effectiveness",enabled:()=>I.lt(FI.value,1)})),J(()=>({multiplier:()=>I.div(XI.foundationProgress.value,10).floor().div(10).add(1),description:"600% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone3.earned})),J(()=>({multiplier:()=>I.sqrt(Y.totalElfLevels.value),description:"Jack Level 4",enabled:Y.elfTraining.heatedCutterElfTraining.milestones[3].earned})),J(()=>({multiplier:()=>I.add(O.amount.value,1).sqrt(),description:"Faith Level 4",enabled:Y.elfTraining.bonfireElfTraining.milestones[3].earned})),J(()=>({multiplier:2,description:"Cocoa Level 3",enabled:Y.elfTraining.oilElfTraining.milestones[2].earned})),J(()=>({multiplier:()=>Ri.boosts.black1.value,description:"Black Dye Boost"})),J(()=>({multiplier:50,description:"350 toys",enabled:lI.milestones.milestone4.earned})),ee.reindeer.donner.modifier,J(()=>({multiplier:4,description:"600,000 Cities Solved",enabled:Dl.metaMilestones[5].earned}))]),gl=b(()=>Xl.apply(0)),Pl=Ci(()=>[Si(()=>({addend:()=>I.negate(II.value),description:"Oil Burner",enabled:()=>I.gt(uI.value,0)})),Si(()=>({addend:()=>I.negate(gi.value),description:"Oil Smelter",enabled:()=>I.gt(ri.value,0)})),Si(()=>({addend:()=>I.negate(jI.oilCost.value),description:"Oil Refinery",enabled:()=>I.gt(jI.activeRefinery.value,0)}))]),Di=b(()=>Pl.apply(0)),VI=Ci(()=>[Si(()=>({addend:aI,description:"Oil Burner",enabled:()=>I.gt(uI.value,0)})),J(()=>({multiplier:()=>zl.value,description:"Effectiveness",enabled:()=>I.lt(zl.value,1)}))]),Il=b(()=>VI.apply(0)),ul=Ci(()=>[Si(()=>({addend:Ri.boosts.red1,description:"Red Dye Boost 1",enabled:()=>I.gte(Ri.dyes.red.amount.value,1)}))]),T=b(()=>ul.apply(0)),[ni,TI]=vl(()=>[{title:"Coal Consumption",modifier:Ki,unit:"/s",base:0},{title:"Drill Power",modifier:dI,base:0},{title:"Upgrade Bonus",modifier:tl,base:0,visible(){return I.gt(Zl.value,0)}},{title:"Oil Speed",modifier:Xl,unit:"/s",base:0,visible(){return I.gt(gl.value,0)}},{title:"Oil Consumption",modifier:Pl,unit:"/s",base:0,visible(){return I.lt(Di.value,0)}},{title:"Oil to Coal Substitution",modifier:VI,unit:"/s",base:0,visible(){return I.gt(Il.value,0)}},{title:"Extra Oil Pumps",modifier:ul,base:0,visible(){return I.gt(T.value,0)}}]),Ml=Ji(!1),$I=r(()=>s(EI,{modelValue:Ml.value,"onUpdate:modelValue":ei=>Ml.value=ei},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:ni})),FI=Ji(I.dOne),zl=Ji(I.dOne);NI.on("update",ei=>{if(I.lt(V.day.value,on))return;const F=I.negate(qi.value);I.gt(F,0)?(FI.value=I.min(I.div(Oi.coal.value,F),1),Oi.coal.value=I.sub(Oi.coal.value,I.mul(F,FI.value).mul(ei))):FI.value=I.dOne,a.value=I.add(a.value,I.mul(oI.value,ei)),n.value=I.add(n.value,I.mul(gl.value,ei)),o();const bI=I.negate(Di.value);I.gt(bI,0)?(zl.value=I.min(I.div(n.value,bI),1),n.value=I.sub(n.value,I.mul(bI,zl.value).mul(ei)).max(0)):zl.value=I.dOne});const{total:Vl,trackerDisplay:Ve}=de({resource:n,goal:25e4,name:i,day:on,background:l,modal:{show:Ml,display:$I}}),Ql={oil:t(0),totalOil:t(0),depth:t(0),drillProgress:t(0),activeHeavy:t(0),buildHeavy:{amount:t(0)},activeHeavy2:t(0),buildHeavy2:{amount:t(0)},activeExtractor:t(0),buildExtractor:{amount:t(0)},activePump:t(0),buildPump:{amount:t(0)},activeBurner:t(0),buildBurner:{amount:t(0)},activeSmelter:t(0),buildSmelter:{amount:t(0)},depthMilestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}],oilMilestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}],row1Upgrades:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}],row2Upgrades:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}],row3Upgrades:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}]},Ul=t(!1),wl=b(()=>{var ei;return Ul.value||((ei=V.currentlyMastering.value)==null?void 0:ei.name)===i});return{name:i,day:on,color:l,oil:n,totalOil:Vl,depth:m,drillProgress:a,activeHeavy:y,buildHeavy:W,activeHeavy2:D,buildHeavy2:O,activeExtractor:x,buildExtractor:R,activePump:Li,buildPump:q,burnerCoal:aI,activeBurner:uI,effectiveBurners:Pi,buildBurner:Hi,activeSmelter:ri,buildSmelter:Gi,extractorCoal:bi,extractorOre:Ii,coalEffectiveness:FI,oilEffectiveness:zl,depthMilestones:wi,collapsedDepthMilestones:yi,row1Upgrades:ii,row2Upgrades:Ui,row3Upgrades:ZI,minWidth:700,oilMilestones:pi,collapsedOilMilestones:_I,generalTabCollapsed:TI,display:r(()=>{const ei=[];return wi[1].earned.value&&ei.push(ii),pi[1].earned.value&&ei.push(Ui),Y.elfTraining.oilElfTraining.milestones[4].earned.value&&ei.push(ZI),s(M,null,[hi(Ve),s(ti,null,null),wl.value?s(M,null,[s("div",{class:"decoration-effect ribbon"},[d("Decoration effect:"),s("br",null,null),d("Remove all negative effects of mining drills and oil machines, and oil burner produces coal")]),s(ti,null,null)]):null,I.lt(FI.value,1)?s("div",null,[d("Coal efficiency: "),WI(I.mul(FI.value,100)),d("%")]):null,I.lt(zl.value,1)?s("div",null,[d("Oil efficiency: "),WI(I.mul(zl.value,100)),d("%")]):null,s(sl,{resource:n,color:l,resourceStyle:{textShadow:"grey 0px 0px 10px"},sticky:!0,productionDisplay:r(()=>s(M,null,[I.lt(m.value,1e3)?"Reach 1000m to start gaining oil":s(M,null,[As(I.add(gl.value,Di.value))])]))},null),I.eq(gl.value,0)?s(M,null,[d("(Need at least 1 Oil Pump, 1 Heavy Drill and 1 Heavy Extractor active to gain oil)"),s("br",null,null)]):"",s(Be,null,{default:()=>[wi[6].earned.value?s(kl,null,{default:()=>[hi(q),s("div",null,[yI(I.floor(Li.value)),d("/"),yI(I.floor(q.amount.value))]),zI(E,vi,ji,Wi)]}):null,pi[0].earned.value?s(kl,null,{default:()=>[hi(Hi),s("div",null,[yI(I.floor(uI.value)),d("/"),yI(I.floor(Hi.amount.value))]),zI(Ei,P,$i,_i)]}):null,pi[2].earned.value?s(kl,null,{default:()=>[hi(Gi),s("div",null,[yI(I.floor(ri.value)),d("/"),yI(I.floor(Gi.amount.value))]),zI(PI,rI,RI,xI)]}):null]}),s("br",null,null),s("div",null,[s("span",null,[d("The well is ")]),s("h2",{style:"color: #6f767f; text-shadow: 0 0 10px #6f767f"},[yI(m.value)]),d("m deep"),s("br",null,null),d("Next at "),WI(I.sub(Z.value,a.value))," ",d("drill power seconds")]),s("div",null,[s("span",null,[d("Your drill power is ")]),s("h2",{style:"color: #6f767f; text-shadow: 0 0 10px #6f767f"},[WI(oI.value)])]),s(ti,null,null),s(Be,null,{default:()=>[s(kl,null,{default:()=>[hi(W),s("div",null,[yI(I.floor(y.value)),d("/"),yI(I.floor(W.amount.value))]),zI(N,C,f,p)]}),wi[3].earned.value?s(kl,null,{default:()=>[hi(O),s("div",null,[yI(I.floor(D.value)),d("/"),yI(I.floor(O.amount.value))]),zI(v,G,mi,H)]}):null,wi[5].earned.value?s(kl,null,{default:()=>[hi(R),s("div",null,[yI(I.floor(x.value)),d("/"),yI(I.floor(R.amount.value))]),zI(li,Mi,B,A)]}):null]}),s(ti,null,null),xl(...ei),s(ti,null,null),ui(),I.gte(Vl.value,50)?hI():""])}),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[WI(n.value),d(" "),n.displayName])])),mastery:Ql,mastered:Ul,masteryEffectActive:wl}});const AZ="management",es=12,Al=13,Y=al(AZ,()=>{const i="Management",l="green",e=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:`backgroundColor: ${l}`,progress:()=>V.day.value===es?ui.reduce((F,bI)=>F+Math.min(1,bI.level.value/3),0)/ui.length:V.day.value===Al&&V.days[Al-1].opened.value?pi.reduce((F,bI)=>F+Math.min(1,bI.level.value/5),0)/pi.length:1,display:r(()=>V.day.value===es||V.day.value===Al&&V.days[Al-1].opened.value?s(M,null,[_(I.times(c(e.progress),V.day.value===Al?80:36)),d("/"),V.day.value===Al?80:36,d(" elf levels")]):"")})),n=b(()=>{let F=0;for(const bI of Object.values(yi))F+=bI.level.value;return F}),m=b(()=>Object.values(yi).reduce((F,bI)=>F.add(bI.exp.value),new I(0))),a=b(()=>Object.values(yi).filter(F=>F.level.value>=5).length),Z=U(()=>({display:{title:"Teach the Elves",description:"The Elves probably need to be taught if they're to do better. Maybe you'll build a school so you can teach them?"},resource:ki.logs,cost:1e21,visibility:()=>j(!V.isMastery.value)})),o=U(()=>({display:{title:"Add a Classroom?",description:"Yay, you have a school. Too bad it has pretty much nothing in it. Maybe you could add some classrooms to make it less boring and more enticing to the Elves?"},visibility:()=>j(Z.bought.value),resource:wI.boxes,style:"width: 150px",cost:1e13})),y=U(()=>({display:{title:"Advanced Training",description:"Time for some advanced training! Now that all the elves know the basics, you have a foundation you can truly build off of. Everyone seems to be learning twice as quickly!"},visibility:()=>j(!V.isMastery.value&&V.day.value>=Al&&V.days[Al-1].opened.value),resource:wI.boxes,style:"width: 150px",cost:1e25})),u=Ci(()=>[J(()=>({multiplier:zl,description:"Classroom Effect",enabled:o.bought})),J(()=>({multiplier:2,description:"Advanced Training",enabled:y.bought})),J(()=>({multiplier:2,description:"Star Level 4",enabled:mi[3].earned})),J(()=>({multiplier:2,description:"Carry experience in boxes???",enabled:wI.row3Upgrades.xpUpgrade.bought}))]),w=b(()=>u.apply(1));function W(F,bI,...ll){const Q=t(0);let ai=["Holly","Ivy","Hope","Jack","Mary","Noel","Joy","Faith","Snowball","Star","Bell","Gingersnap","Peppermint","Frosty","Cocoa","Twinkle","Carol","Tinsel","Jingle"].indexOf(F.name)+1;(F.name=="Star"||F.name=="Bell")&&(ai/=3),F.name=="Jingle"&&(ai*=1e5);const Xi=4e3*ai,Ni=b(()=>I.pow(5,fi.value).mul(Xi)),fi=b(()=>I.affordGeometricSeries(Q.value,Xi,5,0).min(Dl.metaMilestones[1].earned.value?1/0:$I.amount.value).toNumber()),cI=b(()=>I.sub(Q.value,I.sumGeometricSeries(fi.value,Xi,5,0))),ol=HI(()=>({direction:Yi.Right,width:160,height:14,style:()=>({"margin-top":"8px",background:l,"box-shadow":Mi.value==F.name?"0 0 12px black":hI.value[F.name]?"0 0 12px white":""}),baseStyle:"margin-top: -1px",fillStyle:()=>({"margin-top":"-1px","transition-duration":"0s",background:"white",animation:hI.value[F.name]?".5s focused-xp-bar linear infinite":""}),borderStyle:()=>!Dl.metaMilestones[1].earned.value&&I.gte(fi.value,$I.amount.value)?"border-color: red":"",progress:()=>I.div(cI.value,Ni.value),display:r(()=>!Dl.metaMilestones[1].earned.value&&I.gte(fi.value,$I.amount.value)?s(M,null,[d("Limit reached")]):s(M,null,[di(cI.value),d("/"),di(Ni.value),d(" XP")]))})),{collapseMilestones:Nl,display:Sl}=ne(bI),el=Ci(()=>[J(()=>({multiplier:w,description:"Global XP Multiplier"})),J(()=>({multiplier:_I,description:"Focus Multiplier",enabled:()=>I.gt(Zi.value,0)&&hI.value[F.name]==!0})),...ll]),DI=b(()=>el.apply(.1));return il(()=>({display:{title:r(()=>s(M,null,[F.name,d(" - LV "),_(fi.value)])),description:r(()=>s(M,null,[F.name,d(" can buy buyables "),_(F.computedAutoBuyCooldown.value)," ",d("times per second, gaining")," ",!Dl.metaMilestones[1].earned.value&&I.gte(fi.value,$I.amount.value)?0:di(I.mul(DI.value,F.computedAutoBuyCooldown.value))," ",d("XP/sec."),hi(ol)]))},style:()=>({width:"190px",background:Mi.value==F.name?"var(--accent2)":""}),onClick(){Mi.value=F.name},canClick(){return Mi.value!==F.name},visibility:()=>j(F.bought.value),name:F.name,state:Nl,displayMilestone:Sl,level:fi,exp:Q,milestones:bI,timeForExp:F.computedAutoBuyCooldown,amountOfTimesDone:F.amountOfTimesDone,elfXPGainComputed:DI,elfXPGain:el}))}const N=[z(()=>({display:{requirement:"Holly Level 1",effectDisplay:r(()=>s(M,null,[d("Multiply log gain by "),s("sup",null,[d("9")]),s(ql,null,{default:()=>[d("Cutter amount")]})]))},shouldEarn:()=>zi.level.value>=1})),z(()=>({display:{requirement:"Holly Level 2",effectDisplay:"Holly now buys max"},visibility:()=>j(N[0].earned.value),shouldEarn:()=>zi.level.value>=2})),z(()=>({display:{requirement:"Holly Level 3",effectDisplay:r(()=>s(M,null,[d("Multiply all cloth actions' effectiveness by log"),s("sub",null,[d("10")]),d("(Cutter amount)")]))},visibility:()=>j(N[1].earned.value),shouldEarn:()=>zi.level.value>=3})),z(()=>({display:{requirement:"Holly Level 4",effectDisplay:"Multiply auto cutting amount by 1.1 per day completed"},visibility:()=>j(N[2].earned.value&&V.day.value>=13),shouldEarn:()=>zi.level.value>=4})),z(()=>({display:{requirement:"Holly Level 5",effectDisplay:"Unlock an elf that autobuys oil drills and extractors"},visibility:()=>j(N[3].earned.value&&V.day.value>=13),shouldEarn:()=>zi.level.value>=5,onComplete(){V.days[3].recentlyUpdated.value=!0}}))],p=[z(()=>({display:{requirement:"Ivy Level 1",effectDisplay:"Planters are now twice as efficent"},shouldEarn:()=>si.level.value>=1})),z(()=>({display:{requirement:"Ivy Level 2",effectDisplay:"Ivy now buys max"},visibility:()=>j(p[0].earned.value),shouldEarn:()=>si.level.value>=2})),z(()=>({display:{requirement:"Ivy Level 3",effectDisplay:r(()=>s(M,null,[d("Auto planting speed is multiplied by 2"),s("sup",null,[d("(log"),s("sub",null,[d("10")]),d("(trees"),s("sup",null,[d("0.2")]),d("))")])]))},visibility:()=>j(p[1].earned.value),shouldEarn:()=>si.level.value>=3})),z(()=>({display:{requirement:"Ivy Level 4",effectDisplay:"Divide planter cost by 10"},visibility:()=>j(p[2].earned.value&&V.day.value>=13),shouldEarn:()=>si.level.value>=4})),z(()=>({display:{requirement:"Ivy Level 5",effectDisplay:"The lesser of auto planting and cutting amounts is increased to match the greater"},visibility:()=>j(p[3].earned.value&&V.day.value>=13),shouldEarn:()=>si.level.value>=5}))],f=[z(()=>({display:{requirement:"Hope Level 1",effectDisplay:"Forest size grows by trees planted per second raised to ^0.99"},shouldEarn:()=>q.level.value>=1})),z(()=>({display:{requirement:"Hope Level 2",effectDisplay:"Hope now buys max"},visibility:()=>j(f[0].earned.value),shouldEarn:()=>q.level.value>=2})),z(()=>({display:{requirement:"Hope Level 3",effectDisplay:"The workshop can be expanded past 100%, but costs scale faster"},visibility:()=>j(f[1].earned.value),shouldEarn:()=>q.level.value>=3})),z(()=>({display:{requirement:"Hope Level 4",effectDisplay:"Unlock an elf that autobuys coal drills"},visibility:()=>j(f[2].earned.value&&V.day.value>=13),shouldEarn:()=>q.level.value>=4,onComplete(){V.days[3].recentlyUpdated.value=!0}})),z(()=>({display:{requirement:"Hope Level 5",effectDisplay:"Raise workshop expansion cost by 0.99"},visibility:()=>j(f[3].earned.value&&V.day.value>=13),shouldEarn:()=>q.level.value>=5}))],C=[z(()=>({display:{requirement:"Jack Level 1",effectDisplay:'"Fahrenheit 451" affects "Heated Cutters" twice'},shouldEarn:()=>E.level.value>=1})),z(()=>({display:{requirement:"Jack Level 2",effectDisplay:"Coal gain is raised to the ^1.05"},visibility:()=>j(C[0].earned.value),shouldEarn:()=>E.level.value>=2})),z(()=>({display:{requirement:"Jack Level 3",effectDisplay:"Jack and Joy now buy max"},visibility:()=>j(C[1].earned.value),shouldEarn:()=>E.level.value>=3})),z(()=>({display:{requirement:"Jack Level 4",effectDisplay:r(()=>s(M,null,[d("Oil gain is multiplied by "),s(ql,null,{default:()=>[d("total elf levels")]})]))},visibility:()=>j(C[2].earned.value&&V.day.value>=13),shouldEarn:()=>E.level.value>=4})),z(()=>({display:{requirement:"Jack Level 5",effectDisplay:"Unlock an elf that autobuys oil-using machines"},visibility:()=>j(C[3].earned.value&&V.day.value>=13),shouldEarn:()=>E.level.value>=5,onComplete(){V.days[3].recentlyUpdated.value=!0}}))],D=[z(()=>({display:{requirement:"Mary Level 1",effectDisplay:'"Tillamook Burn Country" affects "Heated Planters" twice'},shouldEarn:()=>ji.level.value>=1})),z(()=>({display:{requirement:"Mary Level 2",effectDisplay:"Metal gain is raised to the 1.1"},visibility:()=>j(D[0].earned.value),shouldEarn:()=>ji.level.value>=2})),z(()=>({display:{requirement:"Mary Level 3",effectDisplay:"Mary, Noel, and Faith now buy max"},visibility:()=>j(D[1].earned.value),shouldEarn:()=>ji.level.value>=3})),z(()=>({display:{requirement:"Mary Level 4",effectDisplay:"Double automatic tree planting speed"},visibility:()=>j(D[2].earned.value&&V.day.value>=13),shouldEarn:()=>ji.level.value>=4})),z(()=>({display:{requirement:"Mary Level 5",effectDisplay:r(()=>s(M,null,[d("Auto smelting speed is multiplied by "),s(ql,null,{default:()=>[d("total XP/1e6")]})]))},visibility:()=>j(D[3].earned.value&&V.day.value>=13),shouldEarn:()=>ji.level.value>=5}))],L=[z(()=>({display:{requirement:"Noel Level 1",effectDisplay:r(()=>s(M,null,[d("Log gain is multiplied by "),s(ql,null,{default:()=>[d("total elf levels")]})]))},shouldEarn:()=>vi.level.value>=1})),z(()=>({display:{requirement:"Noel Level 2",effectDisplay:`"The Garden Tree's Handbook" affects "Fertilized Soil" twice`},visibility:()=>j(L[0].earned.value),shouldEarn:()=>vi.level.value>=2})),z(()=>({display:{requirement:"Noel Level 3",effectDisplay:"Divide the coal drill cost by ln(Total logs + e)"},visibility:()=>j(L[1].earned.value),shouldEarn:()=>vi.level.value>=3})),z(()=>({display:{requirement:"Noel Level 4",effectDisplay:r(()=>s(M,null,[d("Reduce oil refinery cost by (Plastic amount)"),s("sup",null,[d("2")])]))},visibility:()=>j(L[2].earned.value&&V.day.value>=13),shouldEarn:()=>vi.level.value>=4})),z(()=>({display:{requirement:"Noel Level 5",effectDisplay:"Unlock an elf that autobuys metal machines"},visibility:()=>j(L[3].earned.value&&V.day.value>=13),shouldEarn:()=>vi.level.value>=5,onComplete(){V.days[3].recentlyUpdated.value=!0}}))],O=[z(()=>({display:{requirement:"Joy Level 1",effectDisplay:"Small Fire synergy counts bonfires at reduced rate"},shouldEarn:()=>Pi.level.value>=1})),z(()=>({display:{requirement:"Joy Level 2",effectDisplay:"Raise ash gain to the 1.1"},visibility:()=>j(O[0].earned.value),shouldEarn:()=>Pi.level.value>=2})),z(()=>({display:{requirement:"Joy Level 3",effectDisplay:"Coal drill is 2x more powerful"},visibility:()=>j(O[1].earned.value),shouldEarn:()=>Pi.level.value>=3})),z(()=>({display:{requirement:"Joy Level 4",effectDisplay:"Metal gain is boosted by heavy drills"},visibility:()=>j(O[2].earned.value&&V.day.value>=13),shouldEarn:()=>Pi.level.value>=4})),z(()=>({display:{requirement:"Joy Level 5",effectDisplay:"Raise Industrial Crucible's effect to the 1.1"},visibility:()=>j(O[3].earned.value&&V.day.value>=13),shouldEarn:()=>Pi.level.value>=5}))],v=[z(()=>({display:{requirement:"Faith Level 1",effectDisplay:"Multiply bonfire efficiency by 5"},shouldEarn:()=>II.level.value>=1})),z(()=>({display:{requirement:"Faith Level 2",effectDisplay:"Raise ash gain to the 1.1"},visibility:()=>j(v[0].earned.value),shouldEarn:()=>II.level.value>=2})),z(()=>({display:{requirement:"Faith Level 3",effectDisplay:"Coal drill is 2x more powerful"},visibility:()=>j(v[1].earned.value),shouldEarn:()=>II.level.value>=3})),z(()=>({display:{requirement:"Faith Level 4",effectDisplay:"Oil gain is boosted by heavy drill drills"},visibility:()=>j(v[2].earned.value&&V.day.value>=13),shouldEarn:()=>II.level.value>=4})),z(()=>({display:{requirement:"Faith Level 5",effectDisplay:"Raise Industrial Crucible's effect to the 1.1"},visibility:()=>j(v[3].earned.value&&V.day.value>=13),shouldEarn:()=>II.level.value>=5}))],H=[z(()=>({display:{requirement:"Snowball Level 1",effectDisplay:"Multiply kiln efficiency by 5"},shouldEarn:()=>aI.level.value>=1})),z(()=>({display:{requirement:"Snowball Level 2",effectDisplay:"Raise ash gain to the 1.1"},visibility:()=>j(H[0].earned.value),shouldEarn:()=>aI.level.value>=2})),z(()=>({display:{requirement:"Snowball Level 3",effectDisplay:"Coal drill is 2x more powerful"},visibility:()=>j(H[1].earned.value),shouldEarn:()=>aI.level.value>=3})),z(()=>({display:{requirement:"Snowball Level 4",effectDisplay:"Plastic gain is boosted by heavy extractors"},visibility:()=>j(H[2].earned.value&&V.day.value>=13),shouldEarn:()=>aI.level.value>=4})),z(()=>({display:{requirement:"Snowball Level 5",effectDisplay:"Raise Industrial Crucible's effect to the 1.1"},visibility:()=>j(H[3].earned.value&&V.day.value>=13),shouldEarn:()=>aI.level.value>=5}))],mi=[z(()=>({display:{requirement:"Star Level 1",effectDisplay:"Book cost is divided by total books bought"},shouldEarn:()=>Hi.level.value>=1})),z(()=>({display:{requirement:"Star Level 2",effectDisplay:"Pulp requires 10x less ash"},visibility:()=>j(mi[0].earned.value),shouldEarn:()=>Hi.level.value>=2})),z(()=>({display:{requirement:"Star Level 3",effectDisplay:"Book cost scaling 5x -> 4x"},visibility:()=>j(mi[1].earned.value),shouldEarn:()=>Hi.level.value>=3})),z(()=>({display:{requirement:"Star Level 4",effectDisplay:"Double all elf xp gain"},visibility:()=>j(mi[2].earned.value&&V.day.value>=13),shouldEarn:()=>Hi.level.value>=4})),z(()=>({display:{requirement:"Star Level 5",effectDisplay:"Gain 5 free books for all prior elves that are at level 5 or above"},visibility:()=>j(mi[3].earned.value&&V.day.value>=13),shouldEarn:()=>Hi.level.value>=5}))],G=[z(()=>({display:{requirement:"Bell Level 1",effectDisplay:r(()=>s(M,null,[d("Every box buyable adds "),s(ql,null,{default:()=>[d("level")]}),d(" levels to same-row box buyables")]))},shouldEarn:()=>_i.level.value>=1})),z(()=>({display:{requirement:"Bell Level 2",effectDisplay:"Box gain ^1.1"},visibility:()=>j(G[0].earned.value),shouldEarn:()=>_i.level.value>=2})),z(()=>({display:{requirement:"Bell Level 3",effectDisplay:"All box buyables scaling bases -1"},visibility:()=>j(G[1].earned.value),shouldEarn:()=>_i.level.value>=3})),z(()=>({display:{requirement:"Bell Level 4",effectDisplay:"Unlock a second row of box buyables"},visibility:()=>j(G[2].earned.value&&V.day.value>=13),shouldEarn:()=>_i.level.value>=4,onComplete(){V.days[5].recentlyUpdated.value=!0}})),z(()=>({display:{requirement:"Bell Level 5",effectDisplay:"Unlock another row of box upgrades"},visibility:()=>j(G[3].earned.value&&V.day.value>=13),shouldEarn:()=>_i.level.value>=5,onComplete(){V.days[5].recentlyUpdated.value=!0}}))],x=[z(()=>({display:{requirement:"Gingersnap Level 1",effectDisplay:"Multiply all primary dye colors by ln(cloth + e)"},shouldEarn:()=>Ei.level.value>=1})),z(()=>({display:{requirement:"Gingersnap Level 2",effectDisplay:r(()=>s(M,null,[d("Multiply all cloth actions' effectiveness by log"),s("sub",null,[d("10")]),d("(dye sum + 10)")]))},visibility:()=>j(x[0].earned.value),shouldEarn:()=>Ei.level.value>=2})),z(()=>({display:{requirement:"Gingersnap Level 3",effectDisplay:"Double all dye colors and cloth actions"},visibility:()=>j(x[1].earned.value),shouldEarn:()=>Ei.level.value>=3})),z(()=>({display:{requirement:"Gingersnap Level 4",effectDisplay:"Raise secondary dyes' first effects to the 1.1"},visibility:()=>j(x[2].earned.value&&V.day.value>=13),shouldEarn:()=>Ei.level.value>=4})),z(()=>({display:{requirement:"Gingersnap Level 5",effectDisplay:"Unlock another row of focus upgrades"},visibility:()=>j(x[3].earned.value&&V.day.value>=13),shouldEarn:()=>Ei.level.value>=5,onComplete(){V.days[12].recentlyUpdated.value=!0}}))],K=[z(()=>({display:{requirement:"Peppermint Level 1",effectDisplay:"The coal drill exponent is increased from 2 to 2.5"},shouldEarn:()=>P.level.value>=1})),z(()=>({display:{requirement:"Peppermint Level 2",effectDisplay:"Coal boosts its own gain"},visibility:()=>j(K[0].earned.value),shouldEarn:()=>P.level.value>=2})),z(()=>({display:{requirement:"Peppermint Level 3",effectDisplay:"The coal drill cost is 10x cheaper"},visibility:()=>j(K[1].earned.value),shouldEarn:()=>P.level.value>=3})),z(()=>({display:{requirement:"Peppermint Level 4",effectDisplay:"Unlock 3 coal upgrades"},visibility:()=>j(K[2].earned.value&&V.day.value>=13),shouldEarn:()=>P.level.value>=4,onComplete(){V.days[2].recentlyUpdated.value=!0}})),z(()=>({display:{requirement:"Peppermint Level 5",effectDisplay:"Well depth boosts coal gain an additional half time"},visibility:()=>j(K[3].earned.value&&V.day.value>=13),shouldEarn:()=>P.level.value>=5}))],bi=[z(()=>({display:{requirement:"Twinkle Level 1",effectDisplay:"Schools multiply metal gain per ore"},shouldEarn:()=>ri.level.value>=1})),z(()=>({display:{requirement:"Twinkle Level 2",effectDisplay:"Each Twinkle level multiplies auto smelting speed by 1.25"},visibility:()=>j(bi[0].earned.value),shouldEarn:()=>ri.level.value>=2})),z(()=>({display:{requirement:"Twinkle Level 3",effectDisplay:"Auto smelting multi is tripled"},visibility:()=>j(bi[1].earned.value),shouldEarn:()=>ri.level.value>=3})),z(()=>({display:{requirement:"Twinkle Level 4",effectDisplay:"All metal machines are 10x cheaper"},visibility:()=>j(bi[2].earned.value&&V.day.value>=13),shouldEarn:()=>ri.level.value>=4})),z(()=>({display:{requirement:"Twinkle Level 5",effectDisplay:r(()=>s(M,null,[s(ql,null,{default:()=>[d("Well depth")]}),d(" divides metal machine costs")]))},visibility:()=>j(bi[3].earned.value&&V.day.value>=13),shouldEarn:()=>ri.level.value>=5}))],Ii=[z(()=>({display:{requirement:"Cocoa Level 1",effectDisplay:"The depth boost to oil gain is better"},shouldEarn:()=>gi.level.value>=1})),z(()=>({display:{requirement:"Cocoa Level 2",effectDisplay:"Total oil gained boosts drill power"},visibility:()=>j(Ii[0].earned.value),shouldEarn:()=>gi.level.value>=2})),z(()=>({display:{requirement:"Cocoa Level 3",effectDisplay:"Double drill power and oil gain"},visibility:()=>j(Ii[1].earned.value),shouldEarn:()=>gi.level.value>=3})),z(()=>({display:{requirement:"Cocoa Level 4",effectDisplay:"Plastics are produced 5x faster but cost 5x as much oil"},visibility:()=>j(Ii[2].earned.value&&V.day.value>=13),shouldEarn:()=>gi.level.value>=4})),z(()=>({display:{requirement:"Cocoa Level 5",effectDisplay:"Unlock another row of oil upgrades"},visibility:()=>j(Ii[3].earned.value&&V.day.value>=13),shouldEarn:()=>gi.level.value>=5,onComplete(){V.days[8].recentlyUpdated.value=!0}}))],R=[z(()=>({display:{requirement:"Frosty Level 1",effectDisplay:"Oil boosts Star and Bell's xp gain"},shouldEarn:()=>mI.level.value>=1})),z(()=>({display:{requirement:"Frosty Level 2",effectDisplay:"Oil pumps are 10x cheaper"},visibility:()=>j(R[0].earned.value),shouldEarn:()=>mI.level.value>=2})),z(()=>({display:{requirement:"Frosty Level 3",effectDisplay:"Oil burners act like there are ^1.5 of them"},visibility:()=>j(R[1].earned.value),shouldEarn:()=>mI.level.value>=3})),z(()=>({display:{requirement:"Frosty Level 4",effectDisplay:r(()=>s(M,null,[d("Heavy drill drill's ln is now log"),s("sub",null,[d("2.5")])]))},visibility:()=>j(R[2].earned.value&&V.day.value>=13),shouldEarn:()=>mI.level.value>=4})),z(()=>({display:{requirement:"Frosty Level 5",effectDisplay:"Unlock another row of paper upgrades"},visibility:()=>j(R[3].earned.value&&V.day.value>=13),shouldEarn:()=>mI.level.value>=5,onComplete(){V.days[4].recentlyUpdated.value=!0}}))],li=[z(()=>({display:{requirement:"Carol Level 1",effectDisplay:"Double primary dye gain"},shouldEarn:()=>Gi.level.value>=1})),z(()=>({display:{requirement:"Carol Level 2",effectDisplay:"Double secondary dye gain"},shouldEarn:()=>Gi.level.value>=2,visibility:()=>j(li[0].earned.value)})),z(()=>({display:{requirement:"Carol Level 3",effectDisplay:"Buy maximum primary dyes"},shouldEarn:()=>Gi.level.value>=3,visibility:()=>j(li[1].earned.value)})),z(()=>({display:{requirement:"Carol Level 4",effectDisplay:"Secondary dyes don't spend primary dyes"},shouldEarn:()=>Gi.level.value>=4,visibility:()=>j(li[2].earned.value&&V.day.value>=16)})),z(()=>({display:{requirement:"Carol Level 5",effectDisplay:"Buy maximum secondary dyes"},shouldEarn:()=>Gi.level.value>=5,visibility:()=>j(li[3].earned.value&&V.day.value>=16)}))],A=[z(()=>({display:{requirement:"Tinsel Level 1",effectDisplay:"Double plastic gain"},shouldEarn:()=>xI.level.value>=1})),z(()=>({display:{requirement:"Tinsel Level 2",effectDisplay:r(()=>s(M,null,[d("Every plastic buyable adds "),s(ql,null,{default:()=>[d("level")]}),d(" levels to the other plastic buyables")]))},shouldEarn:()=>xI.level.value>=2,visibility:()=>j(A[0].earned.value)})),z(()=>({display:{requirement:"Tinsel Level 3",effectDisplay:"Refineries don't spend oil"},shouldEarn:()=>xI.level.value>=3,visibility:()=>j(A[1].earned.value)})),z(()=>({display:{requirement:"Tinsel Level 4",effectDisplay:"Increase plastic gain by +1% for each refinery"},shouldEarn:()=>xI.level.value>=4,visibility:()=>j(A[2].earned.value&&V.day.value>=16)})),z(()=>({display:{requirement:"Tinsel Level 5",effectDisplay:"Buy maximum plastic buyables"},shouldEarn:()=>xI.level.value>=5,visibility:()=>j(A[3].earned.value&&V.day.value>=16)}))],B=[z(()=>({display:{requirement:"Jingle Level 1",effectDisplay:"Double elf packing speed"},shouldEarn:()=>PI.level.value>=1})),z(()=>({display:{requirement:"Jingle Level 2",effectDisplay:r(()=>s(M,null,[d("Each elf assistant increases packing speed by 10%"),s("br",null,null),d("Currently: +"),_(I.times(gI.helpers.elf.amount.value,.1).times(100)),d("%")]))},shouldEarn:()=>PI.level.value>=2,visibility:()=>j(B[0].earned.value)})),z(()=>({display:{requirement:"Jingle Level 3",effectDisplay:r(()=>s(M,null,[d("Multiply packing speed by the number of completed packing milestones"),s("br",null,null),d("Currently:")," ",_(Object.values(gI.packingMilestones).filter(F=>F.earned.value).length+1),d("x")]))},shouldEarn:()=>PI.level.value>=3,visibility:()=>j(B[1].earned.value)})),z(()=>({display:{requirement:"Jingle Level 4",effectDisplay:"Jingle will now also buy loaders"},shouldEarn:()=>PI.level.value>=4,visibility:()=>j(B[2].earned.value&&V.day.value>=16)})),z(()=>({display:{requirement:"Jingle Level 5",effectDisplay:"Multipliers to elf packing speed also apply to loaders at reduced rate"},shouldEarn:()=>PI.level.value>=5,visibility:()=>j(B[3].earned.value&&V.day.value>=16)}))],Mi=t("Holly"),Li=r(()=>{const F=Object.values(yi).find(bI=>bI.name===Mi.value);return F==null?(console.warn("This should not happen.",Mi.value),""):s(M,null,[Mi.value,d("'s milestones: "),F.displayMilestone()])}),zi=W(Fi.elves.cuttersElf,N),si=W(Fi.elves.plantersElf,p),q=W(Fi.elves.expandersElf,f),Wi=[zi,si,q],E=W(Fi.elves.heatedCuttersElf,C),ji=W(Fi.elves.heatedPlantersElf,D),vi=W(Fi.elves.fertilizerElf,L),uI=[E,ji,vi],Pi=W(Fi.elves.smallFireElf,O),II=W(Fi.elves.bonfireElf,v),aI=W(Fi.elves.kilnElf,H),nI=[Pi,II,aI],Hi=W(Fi.elves.paperElf,mi,J(()=>({multiplier:()=>I.add(xi.oil.value,1).log10(),description:"Frosty Level 1",enabled:R[0].earned}))),_i=W(Fi.elves.boxElf,G,J(()=>({multiplier:()=>I.add(xi.oil.value,1).log10(),description:"Frosty Level 1",enabled:R[0].earned}))),Ei=W(Fi.elves.clothElf,x),$i=[Hi,_i,Ei],P=W(Fi.elves.coalDrillElf,K),ri=W(Fi.elves.metalElf,bi),gi=W(Fi.elves.oilElf,Ii),mI=W(Fi.elves.heavyDrillElf,R),Gi=W(Fi.elves.dyeElf,li),xI=W(Fi.elves.plasticElf,A),PI=W(Fi.elves.packingElf,B),RI=[P,mI,gi],rI=[ri,Gi,xI],wi=[PI],yi={cutterElfTraining:zi,planterElfTraining:si,expandersElfTraining:q,heatedCutterElfTraining:E,heatedPlanterElfTraining:ji,fertilizerElfTraining:vi,smallfireElfTraining:Pi,bonfireElfTraining:II,kilnElfTraining:aI,paperElfTraining:Hi,boxElfTraining:_i,clothElfTraining:Ei,coalDrillElfTraining:P,metalElfTraining:ri,oilElfTraining:gi,heavyDrillElfTraining:mI,dyeElfTraining:Gi,plasticElfTraining:xI,packingElfTraining:PI},ui=[zi,si,q,E,ji,vi,Pi,II,aI,Hi,_i,Ei],pi=[zi,si,q,E,ji,vi,Pi,II,aI,Hi,_i,Ei,P,ri,gi,mI];NI.on("update",F=>{if(!(V.day.value=1&&(bI.amountOfTimesDone.value-=ll,(Dl.metaMilestones[1].earned.value||I.lt(bI.level.value,$I.amount.value))&&(bI.exp.value=I.mul(bI.elfXPGainComputed.value,ll).add(bI.exp.value)))}if(Zi.value=Math.max(Zi.value-F,0),ii.value=Math.max(ii.value-F,0),I.eq(Zi.value,0)){hI.value={};const bI=ul.bought.value?2e3:1e3;let ll=1-Math.abs(Math.sin(Date.now()/bI*2));Il.bought.value&&(ll=1-(1-ll)**2),_I.value=I.pow(qi.value,ll)}}});const _I=t(1),hI=t({}),ii=t(0),Zi=t(0),Ui=Ci(()=>[J(()=>({multiplier:2,description:"Focus Upgrade 1",enabled:gl.bought})),J(()=>({multiplier:()=>I.pow(2,gI.packingResets.value),description:`${di(64e8)} ${gI.packedPresents.displayName}`,enabled:gI.packingMilestones.moreFocus.earned}))]),ZI=Ci(()=>[Si(()=>({addend:1,description:"Focus Upgrade 2",enabled:Pl.bought})),Si(()=>({addend:1,description:"Focus Upgrade 6",enabled:T.bought}))]),Ki=Ci(()=>[Si(()=>({addend:-5,description:"Focus Upgrade 3",enabled:Di.bought}))]),qi=b(()=>Ui.apply(10)),dI=b(()=>ZI.apply(3)),oI=b(()=>Ki.apply(15)),tl=HI(()=>({direction:Yi.Right,width:566,height:50,style:"border-radius: 0",borderStyle:"border-radius: 0",fillStyle:()=>({background:Zi.value>0?l:"#7f7f00",animation:Zi.value>0?"1s focused-focus-bar linear infinite":"",opacity:Zi.value>0?Zi.value/10:1,transition:"none"}),progress:()=>I.sub(_I.value,1).div(I.sub(qi.value,1)).toNumber(),display:r(()=>s(M,null,[di(_I.value),d("x"),Zi.value>0?s(M,null,[" ",d("to "),Object.keys(hI.value).join(", "),d(" for")," ",Se(Zi.value)]):""]))})),Zl=il(()=>({display:{title:"Focus",description:r(()=>s(M,null,[d("Motivate elves to focus, multiplying "),_(dI.value),d(" random elves' XP gain by up to "),di(qi.value),d("x for 10 seconds, equal to the focus bar's effect."),I.gte(ii.value,0)?s(M,null,[s("br",null,null),d("Reroll cooldown: "),Se(ii.value)]):""]))},style:{width:"570px",minHeight:"80px",zIndex:4},canClick:()=>I.eq(ii.value,0),onClick(){ii.value=I.fromValue(oI.value).toNumber(),Zi.value=10,Xl(Object.values(yi).filter(F=>c(F.visibility)===MI.Visible).length,dI.value)}}));function Xl(F,bI){var ai,Xi;let ll=0;hI.value={};const Q=I.min(bI,F);if(gI.packingMilestones.focusSelected.earned.value){const Ni=Object.values(yi).find(cI=>cI.name===Mi.value),fi=(ai=Ni==null?void 0:Ni.name)!=null?ai:"";!hI.value[fi]&&c(Ni==null?void 0:Ni.visibility)===MI.Visible&&(hI.value[fi]=!0,ll++)}for(;Q.gt(ll);){const Ni=Object.values(yi)[Math.floor(Math.random()*F)],fi=(Xi=Ni==null?void 0:Ni.name)!=null?Xi:"";!hI.value[fi]&&c(Ni==null?void 0:Ni.visibility)===MI.Visible&&(hI.value[fi]=!0,ll++)}}const gl=U(()=>({display:{title:"Focus Booster",description:"Multiplies the maximum experience multiplier from focus by 2"},resource:ki.logs,cost:1e25})),Pl=U(()=>({display:{title:"Focus Buffer",description:"Increase elves affected by focus by 1"},resource:ki.logs,cost:1e28})),Di=U(()=>({display:{title:"Focus Upgrader",description:"Focus can now be rerolled every 10 seconds"},resource:ki.logs,cost:1e31})),VI=[gl,Pl,Di],Il=U(()=>({display:{title:"Focus Improver",description:"The bar moves slower when it's closer to the right and faster when it's closer to the left"},resource:ki.logs,visibility:()=>j(yi.clothElfTraining.milestones[4].earned.value),cost:1e34})),ul=U(()=>({display:{title:"Focus Focuser",description:"The bar moves 2x slower"},resource:ki.logs,visibility:()=>j(yi.clothElfTraining.milestones[4].earned.value),cost:1e35})),T=U(()=>({display:{title:"Focus Doubler",description:"Focus applies to an additional elf."},resource:ki.logs,visibility:()=>j(yi.clothElfTraining.milestones[4].earned.value),cost:1e36})),ni=[Il,ul,T],TI=b(()=>{const F=I.pow(10,$I.amount.value),bI=I.pow(4,$I.amount.value);let ll=I.pow(2e4,I.pow($I.amount.value,.75));I.gte($I.amount.value,4)&&(ll=ll.div(1e3));const Q=I.pow(2e3,$I.amount.value);return{wood:ll.mul(1e21),coal:Q.mul(1e32),paper:Q.mul(1e18),boxes:ll.mul(1e13),metalIngots:bI.mul(1e12),cloth:F.mul(1e4),plastic:bI.mul(1e6),dye:I.add($I.amount.value,1).mul(1e4)}});function Ml(F,bI,ll){const Q=(ts(F)?F:[F]).every(ai=>I.gte(ai.value,bI));return s("span",{class:Q?"":"unaffordable"},[di(bI),d(" "),ll])}const $I=Ai(()=>({display:r(()=>s(M,null,[s("h3",null,[d("Build a School")]),s("div",null,[d("You gotta start somewhere, right? Each school increases the maximum level for elves by 1, maximum of "),V.days[Al-1].opened.value?5:3," ",d("schools.")]),s("div",null,[d("You have "),_($I.amount.value),d(" schools, which are currently letting elves learn up to level "),_($I.amount.value),d(".")]),I.lt($I.amount.value,c($I.purchaseLimit))?s("div",null,[d("Costs "),Ml(ki.logs,TI.value.wood,"logs"),d(",")," ",Ml(Oi.coal,TI.value.coal,"coal"),d(",")," ",Ml(g.paper,TI.value.paper,"paper"),d(",")," ",Ml(wI.boxes,TI.value.boxes,"boxes"),d(",")," ",Ml(tI.metal,TI.value.metalIngots,"metal ingots"),d(",")," ",Ml(fI.cloth,TI.value.cloth,"cloth"),d(",")," ",Ml(jI.plastic,TI.value.plastic,"plastic"),d(", and requires")," ",Ml([Ri.dyes.red.amount,Ri.dyes.yellow.amount,Ri.dyes.blue.amount],TI.value.dye,"red, yellow, and blue dye")]):null])),canPurchase(){return TI.value.wood.lte(ki.logs.value)&&TI.value.coal.lte(Oi.coal.value)&&TI.value.paper.lte(g.paper.value)&&TI.value.boxes.lte(wI.boxes.value)&&TI.value.metalIngots.lte(tI.metal.value)&&TI.value.cloth.lte(fI.cloth.value)&&TI.value.plastic.lte(jI.plastic.value)&&TI.value.dye.lte(Ri.dyes.blue.amount.value)&&TI.value.dye.lte(Ri.dyes.red.amount.value)&&TI.value.dye.lte(Ri.dyes.yellow.amount.value)&&I.lt($I.amount.value,c($I.purchaseLimit))},onPurchase(){this.amount.value=I.add(this.amount.value,-1),ki.logs.value=I.sub(ki.logs.value,TI.value.wood),Oi.coal.value=I.sub(Oi.coal.value,TI.value.coal),g.paper.value=I.sub(g.paper.value,TI.value.paper),wI.boxes.value=I.sub(wI.boxes.value,TI.value.boxes),tI.metal.value=I.sub(tI.metal.value,TI.value.metalIngots),fI.cloth.value=I.sub(fI.cloth.value,TI.value.cloth),jI.plastic.value=I.sub(jI.plastic.value,TI.value.plastic),this.amount.value=I.add(this.amount.value,1)},purchaseLimit(){return V.days[Al-1].opened.value?5:3},visibility:b(()=>j(Z.bought.value)),style:"width: 600px"})),FI=b(()=>{let F=Vl.amount.value;I.gte(F,50)&&(F=I.pow(F,2).div(50)),I.gte(F,200)&&(F=I.pow(F,2).div(200));const bI=I.add(F,1).pow(1.5);return{wood:bI.mul(1e21),paper:bI.mul(1e18),boxes:bI.mul(1e13),metalIngots:bI.mul(1e12)}}),zl=b(()=>I.add(Vl.amount.value,1).pow(.9)),Vl=Ai(()=>({display:r(()=>s(M,null,[s("h3",null,[d("Build a Classroom")]),s("div",null,[d("Hopefully it makes the school a bit less boring. Multiplies elves' XP gain by")," ",d("(Classrooms + 1)"),s("sup",null,[d("0.9")]),d(".")]),s("div",null,[d("You have "),_(Vl.amount.value),d(" classrooms, which are currently multiplying elves' XP gain by "),di(zl.value)]),s("div",null,[d("Costs "),Ml(ki.logs,FI.value.wood,"logs"),d(","),Ml(g.paper,FI.value.paper,"paper"),d(",")," ",Ml(wI.boxes,FI.value.boxes,"boxes"),d(",")," ",Ml(tI.metal,FI.value.metalIngots,"metal ingots")])])),canPurchase(){return FI.value.wood.lte(ki.logs.value)&&FI.value.paper.lte(g.paper.value)&&FI.value.boxes.lte(wI.boxes.value)&&FI.value.metalIngots.lte(tI.metal.value)},onPurchase(){this.amount.value=I.add(this.amount.value,-1),ki.logs.value=I.sub(ki.logs.value,FI.value.wood),g.paper.value=I.sub(g.paper.value,FI.value.paper),wI.boxes.value=I.sub(wI.boxes.value,FI.value.boxes),tI.metal.value=I.sub(tI.metal.value,FI.value.metalIngots),this.amount.value=I.add(this.amount.value,1)},visibility:b(()=>j(o.bought.value)),style:"width: 600px"})),[Ve,Ql]=vl(()=>[{title:"Elves affected by Focus",modifier:ZI,base:3},{title:"Maximum Focus Effect",modifier:Ui,base:10},{title:"Focus Cooldown",modifier:Ki,unit:" secs",base:15},{title:"Global XP Gain",modifier:u,unit:" XP"},{title:"Holly XP Gain per Action",modifier:zi.elfXPGain,base:.1,unit:" XP"},{title:"Ivy XP Gain per Action",modifier:si.elfXPGain,base:.1,unit:" XP"},{title:"Hope XP Gain per Action",modifier:q.elfXPGain,base:.1,unit:" XP"},{title:"Jack XP Gain per Action",modifier:E.elfXPGain,base:.1,unit:" XP"},{title:"Mary XP Gain per Action",modifier:ji.elfXPGain,base:.1,unit:" XP"},{title:"Noel XP Gain per Action",modifier:vi.elfXPGain,base:.1,unit:" XP"},{title:"Joy XP Gain per Action",modifier:Pi.elfXPGain,base:.1,unit:" XP"},{title:"Faith XP Gain per Action",modifier:II.elfXPGain,base:.1,unit:" XP"},{title:"Snowball XP Gain per Action",modifier:aI.elfXPGain,base:.1,unit:" XP"},{title:"Star XP Gain per Action",modifier:Hi.elfXPGain,base:.1,unit:" XP"},{title:"Bell XP Gain per Action",modifier:_i.elfXPGain,base:.1,unit:" XP"},{title:"Gingersnap XP Gain per Action",modifier:Ei.elfXPGain,base:.1,unit:" XP"},{title:"Peppermint XP Gain per Action",modifier:P.elfXPGain,base:.1,unit:" XP"},{title:"Frosty XP Gain per Action",modifier:mI.elfXPGain,base:.1,unit:" XP"},{title:"Cocoa XP Gain per Action",modifier:gi.elfXPGain,base:.1,unit:" XP"},{title:"Twinkle XP Gain per Action",modifier:ri.elfXPGain,base:.1,unit:" XP"},{title:"Carol XP Gain per Action",modifier:Gi.elfXPGain,base:.1,unit:" XP"},{title:"Tinsel XP Gain per Action",modifier:xI.elfXPGain,base:.1,unit:" XP"},{title:"Jingle XP Gain per Action",modifier:PI.elfXPGain,base:.1,unit:" XP"}]),Ul=Ji(!1),wl=r(()=>s(EI,{modelValue:Ul.value,"onUpdate:modelValue":F=>Ul.value=F},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:Ve}));AI(()=>{(V.day.value===es&&ui.every(F=>F.level.value>=3)||V.day.value===Al&&ui.every(F=>F.level.value>=5)&&pi.every(F=>F.level.value>=5))&&V.completeDay()});const ei={elfTraining:{bonfireElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},boxElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},clothElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},coalDrillElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},cutterElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},expandersElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},fertilizerElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},heatedCutterElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},heatedPlanterElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},heavyDrillElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},kilnElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},metalElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},oilElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},paperElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},planterElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},smallfireElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},dyeElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]},plasticElfTraining:{exp:t(0),milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]}},teaching:{bought:t(!1)},schools:{amount:t(0)},classrooms:{amount:t(0)},classroomUpgrade:{bought:t(!1)},advancedUpgrade:{bought:t(!1)},upgrades:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}],upgrades2:[{bought:t(!1)},{bought:t(!1)},{bought:t(!1)}],focusMulti:t(1),focusTargets:t({}),focusCooldown:t(0),focusTime:t(0)};return{name:i,day:es,color:l,minWidth:700,elfTraining:yi,totalElfLevels:n,totalElfExp:m,level5Elves:a,currentShown:Mi,generalTabCollapsed:Ql,teaching:Z,schools:$I,classrooms:Vl,classroomUpgrade:o,advancedUpgrade:y,focusMulti:_I,upgrades:VI,upgrades2:ni,focusTargets:hI,focusCooldown:ii,focusTime:Zi,display:r(()=>s(M,null,[V.day.value===es?"Get all elves to level 3.":V.day.value===Al&&V.days[Al-1].opened.value?"Get all elves to level 5.":`${i} Complete!`," ",d("-"),s("button",{class:"button",style:"display: inline-block;",onClick:()=>Ul.value=!0},[d("Check Modifiers")]),hi(wl),hi(e),s("br",null,null),Ie($I,Vl),xl([Z,o,y]),s(ti,null,null),I.gt($I.amount.value,0)?s(M,null,[s(ti,null,null),d("Click on an elf to see their milestones."),s(ti,null,null),s(ti,null,null),xl(VI,ni),s(ti,null,null),xl([Zl],[tl],Wi,uI,nI,$i,RI,rI,wi),s(ti,null,null),Li()]):""])),mastery:ei}}),EZ="elves",ss=4,am=["Holly","Ivy","Hope","Jack","Mary","Noel","Joy","Faith","Snowball","Star","Bell","Gingersnap"],Fi=al(EZ,function(){const i="Elves",l="red",e="#911D21",m=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:`backgroundColor: ${e}`,progress:()=>V.day.value===ss?I.div(yi.value,6).times(.8333333333333334).add(I.div(I.add(Oi.coal.value,1).log10(),I.log10(1e9)).clamp(0,1).div(6)):1,display:r(()=>V.day.value===ss?I.lt(yi.value,6)?s(M,null,[_(yi.value),d("/6 elves")]):s(M,null,[_(Oi.coal.value),d("/"),_(1e9),d(" coal")]):"")})),a=Qm(()=>({thingsToReset:[ki,XI,Oi],onReset(){const Di=["warmerCutters","warmerPlanters","basicFertilizer","unlockBonfire","dedicatedCutters","dedicatedPlanters","betterFertilizer","unlockKiln","efficientSmelther","arsonistAssistance","refinedCoal","coloredFire"],VI=Di.map(Il=>Oi[Il].bought.value);setTimeout(()=>{Ki.earned.value?(ki.row1Upgrades.forEach(Il=>Il.bought.value=!0),ki.row2Upgrades.forEach(Il=>Il.bought.value=!0)):pi.earned.value&&(ki.row1Upgrades[4].bought.value=!0,ki.row2Upgrades[4].bought.value=!0),Ui.earned.value&&(XI.foundationProgress.value=100),dI.earned.value&&(Di.forEach((Il,ul)=>Oi[Il].bought.value=VI[ul]),Oi.warmerCutters.bought.value=!0,Oi.warmerPlanters.bought.value=!0,Oi.basicFertilizer.bought.value=!0,Oi.unlockBonfire.bought.value=!0,Oi.dedicatedCutters.bought.value=!0,Oi.dedicatedPlanters.bought.value=!0,Oi.betterFertilizer.bought.value=!0,Oi.unlockKiln.bought.value=!0,Oi.efficientSmelther.bought.value=!0,Oi.arsonistAssistance.bought.value=!0,Oi.refinedCoal.bought.value=!0,Oi.coloredFire.bought.value=!0)})}})),Z=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.cuttersBook.totalAmount.value,.1).add(1),description:"Now You're Logging!",enabled:()=>I.gt(g.books.cuttersBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),o=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.plantersBook.totalAmount.value,.1).add(1),description:"The Man Who Planted Trees",enabled:()=>I.gt(g.books.plantersBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),y=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.expandersBook.totalAmount.value,.1).add(1),description:"Logjam",enabled:()=>I.gt(g.books.expandersBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),u=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.heatedCuttersBook.totalAmount.value,.1).add(1),description:"Fahrenheit 451",enabled:()=>I.gt(g.books.heatedCuttersBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),w=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.heatedPlantersBook.totalAmount.value,.1).add(1),description:"Tillamook Burn Country",enabled:()=>I.gt(g.books.heatedPlantersBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),W=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.fertilizerBook.totalAmount.value,.1).add(1),description:"The Garden Tree's Handbook",enabled:()=>I.gt(g.books.fertilizerBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),N=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.smallFireBook.totalAmount.value,.1).add(1),description:"Firestarter",enabled:()=>I.gt(g.books.smallFireBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),p=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.bonfireBook.totalAmount.value,.1).add(1),description:"An Arsonist's Guide to Writer's Homes in New England",enabled:()=>I.gt(g.books.bonfireBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),f=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.kilnBook.totalAmount.value,.1).add(1),description:"Little Fires Everywhere",enabled:()=>I.gt(g.books.kilnBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),C=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.paperBook.totalAmount.value,.1).add(1),description:"The Book Thief",enabled:()=>I.gt(g.books.paperBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),D=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.boxBook.totalAmount.value,.1).add(1),description:"Not a box",enabled:()=>I.gt(g.books.boxBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),L=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.clothBook.totalAmount.value,.1).add(1),description:"Fuzzy Bee and Friends",enabled:()=>I.gt(g.books.clothBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),O=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.coalDrillBook.totalAmount.value,.1).add(1),description:"Drills and Mills",enabled:()=>I.gt(g.books.coalDrillBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),v=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.heavyDrillBook.totalAmount.value,.1).add(1),description:"Deep in the Earth",enabled:()=>I.gt(g.books.heavyDrillBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),H=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.oilBook.totalAmount.value,.1).add(1),description:"Burning the Midnight Oil",enabled:()=>I.gt(g.books.oilBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),mi=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.metalBook.totalAmount.value,.1).add(1),description:"Physical Metallurgy",enabled:()=>I.gt(g.books.metalBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),G=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.primaryDyeBook.totalAmount.value,.1).add(1),description:"Arts and Crafts",enabled:()=>I.gt(g.books.primaryDyeBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),x=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.plasticBook.totalAmount.value,.1).add(1),description:"One Plastic Bag",enabled:()=>I.gt(g.books.plasticBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),K=Ci(()=>[J(()=>({multiplier:2,description:"6 Elves Trained",enabled:Zi.earned})),J(()=>({multiplier:()=>I.times(g.books.packingBook.totalAmount.value,.1).add(1),description:"The Tetris Effect",enabled:()=>I.gt(g.books.packingBook.totalAmount.value,0)})),J(()=>({multiplier:2,description:"10 Elves Trained",enabled:qi.earned}))]),[bi,Ii]=vl(()=>[{title:"Holly Auto-Buy Frequency",modifier:Z,base:10,unit:"/s",visible:wi.cuttersElf.bought},{title:"Ivy Auto-Buy Frequency",modifier:o,base:10,unit:"/s",visible:wi.plantersElf.bought},{title:"Hope Auto-Buy Frequency",modifier:y,base:10,unit:"/s",visible:wi.expandersElf.bought},{title:"Jack Auto-Buy Frequency",modifier:u,base:10,unit:"/s",visible:wi.heatedCuttersElf.bought},{title:"Mary Auto-Buy Frequency",modifier:w,base:10,unit:"/s",visible:wi.heatedPlantersElf.bought},{title:"Noel Auto-Buy Frequency",modifier:W,base:10,unit:"/s",visible:wi.fertilizerElf.bought},{title:"Joy Auto-Buy Frequency",modifier:N,base:10,unit:"/s",visible:wi.smallFireElf.bought},{title:"Faith Auto-Buy Frequency",modifier:p,base:10,unit:"/s",visible:wi.bonfireElf.bought},{title:"Snowball Auto-Buy Frequency",modifier:f,base:10,unit:"/s",visible:wi.kilnElf.bought},{title:"Star Auto-Buy Frequency",modifier:C,base:10,unit:"/s",visible:wi.paperElf.bought},{title:"Bell Auto-Buy Frequency",modifier:D,base:10,unit:"/s",visible:wi.boxElf.bought},{title:"Gingersnap Auto-Buy Frequency",modifier:L,base:10,unit:"/s",visible:wi.clothElf.bought},{title:"Peppermint Auto-Buy Frequency",modifier:O,base:10,unit:"/s",visible:()=>Y.elfTraining.expandersElfTraining.milestones[3].earned.value||Ll.masteryEffectActive.value},{title:"Frosty Auto-Buy Frequency",modifier:v,base:10,unit:"/s",visible:()=>Y.elfTraining.cutterElfTraining.milestones[4].earned.value||Ll.masteryEffectActive.value},{title:"Cocoa Auto-Buy Frequency",modifier:H,base:10,unit:"/s",visible:()=>Y.elfTraining.heatedCutterElfTraining.milestones[4].earned.value||Ll.masteryEffectActive.value},{title:"Twinkle Auto-Buy Frequency",modifier:mi,base:10,unit:"/s",visible:()=>Y.elfTraining.fertilizerElfTraining.milestones[4].earned.value||Ll.masteryEffectActive.value},{title:"Carol Auto-Buy Frequency",modifier:G,base:10,unit:"/s",visible:pl.unlockDyeElfMilestone.earned.value&&!V.isMastery.value},{title:"Tinsel Auto-Buy Frequency",modifier:x,base:10,unit:"/s",visible:jI.masteryEffectActive},{title:"Jingle Auto-Buy Frequency",modifier:K,base:10,unit:"/s",visible:gI.upgrades.packingElf.bought}]),R=Ji(!1),li=r(()=>s(EI,{modelValue:R.value,"onUpdate:modelValue":Di=>R.value=Di},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:bi})),A=b(()=>{let Di=I.pow(4,yi.value).times(1e6);return I.gte(yi.value,9)&&(Di=I.times(Di,1e15)),I.gte(yi.value,12)&&(Di=I.times(Di,1e15)),Di});function B(Di){var zl,Vl,Ve;const VI=t(0),Il=t(0),ul=Di.hasToggle?t(!1):Ji(!0),T=b(()=>Di.cooldownModifier.apply(10)),ni=nl((zl=Di.canBuy)!=null?zl:!0),TI=nl((Vl=Di.buyMax)!=null?Vl:!1),Ml=nl((Ve=Di.independent)!=null?Ve:!1);function $I(Ql){if(FI.bought.value&&c(ni)){VI.value=I.add(VI.value,Ql);const Ul=I.recip(T.value);Il.value+=Ql/Ul.toNumber();let wl=I.div(VI.value,Ul).floor();VI.value=I.sub(VI.value,wl.mul(Ul)),c(TI)&&(wl=I.dInf),(ts(Di.buyable)?Di.buyable:[Di.buyable]).forEach(ei=>{var bI,ll;if(c(ei.visibility)!==MI.Visible)return;const F=I.min(I.sub(ei.inverseCost((bI=ei.resource)==null?void 0:bI.value),c(Ml)?0:ei.amount.value).add(1),wl);F.lte(0)||(ei.amount.value=I.add(ei.amount.value,F),wl=I.sub(wl,F),(ll=Di.onAutoPurchase)==null||ll.call(Di,ei,F),wl.lte(0))})}}const FI=U(()=>({...Di,buyable:void 0,toggle:ul,buyProgress:VI,update:$I,resource:Oi.coal,cost:A,computedAutoBuyCooldown:T,amountOfTimesDone:Il,name:Di.name,canAfford(){return I.gte(Oi.coal.value,c(A))&&!V.isMastery.value},display:()=>({title:Di.name,description:r(()=>s(M,null,[Di.description,FI.bought.value||am.includes(Di.name)?s(M,null,[" ",d("Training this elf will require resetting all your progress from days 1-3.")]):null,FI.bought.value&&Di.hasToggle===!0?s(M,null,[s(ye,{title:Di.toggleDesc,"onUpdate:modelValue":Ql=>ul.value=Ql,modelValue:ul.value},null)]):null])),showCost:!FI.bought.value}),style:"width: 190px",onPurchase(){var Ql;(Ql=Di.onPurchase)==null||Ql.call(Di),am.includes(Di.name)&&a.reset()}}));return FI}const Mi=B({name:"Holly",description:"Holly will automatically purchase cutters you can afford, without actually spending any logs.",buyable:ki.row1Buyables[0],cooldownModifier:Z,buyMax:()=>Y.elfTraining.cutterElfTraining.milestones[1].earned.value}),Li=B({name:"Ivy",description:"Ivy will automatically purchase planters you can afford, without actually spending any logs.",buyable:ki.row1Buyables[1],cooldownModifier:o,buyMax:()=>Y.elfTraining.planterElfTraining.milestones[1].earned.value}),zi=B({name:"Hope",description:"Hope will automatically purchase forest expanders you can afford, without actually spending any logs.",buyable:ki.row1Buyables[2],cooldownModifier:y,buyMax:()=>Y.elfTraining.expandersElfTraining.milestones[1].earned.value}),si=[Mi,Li,zi],q=B({name:"Jack",description:"Jack will automatically purchase heated cutters you can afford, without actually spending any coal.",buyable:Oi.heatedCutters,cooldownModifier:u,buyMax:()=>Y.elfTraining.heatedCutterElfTraining.milestones[2].earned.value}),Wi=B({name:"Mary",description:"Mary will automatically purchase heated planters you can afford, without actually spending any coal.",buyable:Oi.heatedPlanters,cooldownModifier:w,buyMax:()=>Y.elfTraining.heatedPlanterElfTraining.milestones[2].earned.value}),E=B({name:"Noel",description:"Noel will automatically purchase fertilized soil you can afford, without actually spending any ash.",buyable:Oi.moreFertilizer,cooldownModifier:W,buyMax:()=>Y.elfTraining.heatedPlanterElfTraining.milestones[2].earned.value}),ji=[q,Wi,E],vi=B({name:"Joy",description:"Joy will automatically purchase small fires you can afford, without actually spending any logs. You can toggle whether or not to enable the purchased small fires automatically. Small fires will start giving a boost to ash and coal gain.",buyable:Oi.buildFire,cooldownModifier:N,buyMax:()=>Y.elfTraining.heatedCutterElfTraining.milestones[2].earned.value,visibility:()=>j(wI.upgrades.logsUpgrade.bought.value),hasToggle:!0,toggleDesc:"Activate auto-purchased small fires",onAutoPurchase(Di,VI){vi.toggle.value&&(Oi.activeFires.value=I.add(Oi.activeFires.value,VI))},onPurchase(){V.days[4].recentlyUpdated.value=!0}}),uI=B({name:"Faith",description:"Faith will automatically purchase bonfires you can afford. You can toggle whether or not to enable the purchased bonfires automatically. Bonfires will start giving a boost to ash and coal gain.",buyable:Oi.buildBonfire,cooldownModifier:p,buyMax:()=>Y.elfTraining.heatedPlanterElfTraining.milestones[2].earned.value,visibility:()=>j(wI.upgrades.ashUpgrade.bought.value),hasToggle:!0,toggleDesc:"Activate auto-purchased bonfires",onAutoPurchase(Di,VI){var ul;const Il=I.mul(c((ul=Di.cost)!=null?ul:0),VI);Oi.activeFires.value=I.sub(Oi.activeFires.value,Il).max(0),Oi.buildFire.amount.value=I.sub(Oi.buildFire.amount.value,Il).max(0),uI.toggle.value&&(Oi.activeBonfires.value=I.add(Oi.activeBonfires.value,VI))},onPurchase(){V.days[4].recentlyUpdated.value=!0},canBuy:Oi.unlockBonfire.bought,independent:!0}),Pi=B({name:"Snowball",description:"Snowball will automatically purchase kilns you can afford, without actually spending any logs. You can toggle whether or not to enable the purchased kilns automatically. Kilns will start giving a boost to ash and coal gain.",buyable:Oi.buildKiln,cooldownModifier:f,visibility:()=>j(wI.upgrades.coalUpgrade.bought.value),hasToggle:!0,toggleDesc:"Activate auto-purchased kilns",onAutoPurchase(Di,VI){Pi.toggle.value&&(Oi.activeKilns.value=I.add(Oi.activeKilns.value,VI))},onPurchase(){V.days[4].recentlyUpdated.value=!0},canBuy:Oi.unlockKiln.bought}),II=[vi,uI,Pi],aI=B({name:"Star",description:"Star will automatically purchase all books you can afford, without actually spending any paper.",buyable:Object.values(g.books),cooldownModifier:C,visibility:()=>j(jI.elfUpgrades.paperElf.bought.value)}),nI=B({name:"Bell",description:"Bell will automatically purchase all box buyables you can afford, without actually spending any boxes.",buyable:[...Object.values(wI.buyables),...Object.values(wI.buyables2),...Object.values(wI.buyables3)],cooldownModifier:D,visibility:()=>j(jI.elfUpgrades.boxElf.bought.value)}),Hi=B({name:"Gingersnap",description:"Gingersnap will automatically purchase all cloth buyables you can afford, without actually spending any resources.",buyable:[fI.buildPens,fI.betterShears,fI.fasterSpinning],cooldownModifier:L,visibility:()=>j(jI.elfUpgrades.clothElf.bought.value)}),_i=[aI,nI,Hi],Ei=B({name:"Peppermint",description:"Peppermint will automatically purchase all coal drills you can afford, without actually spending any resources.",buyable:Oi.buildDrill,cooldownModifier:O,visibility:()=>j(Y.elfTraining.expandersElfTraining.milestones[3].earned.value||Ll.masteryEffectActive.value),hasToggle:!0,toggleDesc:"Activate auto-purchased coal drills",onAutoPurchase(Di,VI){Ei.toggle.value&&(Oi.activeDrills.value=I.add(Oi.activeDrills.value,VI))}}),$i=B({name:"Frosty",description:"Frosty will automatically purchase all drill types in the oil section, without actually spending any resources.",buyable:[xi.buildHeavy,xi.buildHeavy2,xi.buildExtractor],cooldownModifier:v,visibility:()=>j(Y.elfTraining.cutterElfTraining.milestones[4].earned.value||Ll.masteryEffectActive.value),hasToggle:!0,toggleDesc:"Activate auto-purchased oil drills",onAutoPurchase(Di,VI){$i.toggle.value&&(Di===xi.buildHeavy?xi.activeHeavy.value=I.add(xi.activeHeavy.value,VI):Di===xi.buildHeavy2?xi.activeHeavy2.value=I.add(xi.activeHeavy2.value,VI):Di===xi.buildExtractor&&(xi.activeExtractor.value=I.add(xi.activeExtractor.value,VI)))}}),P=B({name:"Cocoa",description:"Cocoa will automatically purchase all oil-using machines you can afford, without actually spending any resources.",buyable:[xi.buildPump,xi.buildBurner,xi.buildSmelter],cooldownModifier:H,visibility:()=>j(Y.elfTraining.heatedCutterElfTraining.milestones[4].earned.value||Ll.masteryEffectActive.value),hasToggle:!0,toggleDesc:"Activate auto-purchased oil-using machines",onAutoPurchase(Di,VI){$i.toggle.value&&(Di===xi.buildPump?xi.activePump.value=I.add(xi.activePump.value,VI):Di===xi.buildBurner?xi.activeBurner.value=I.add(xi.activeBurner.value,VI):Di===xi.buildSmelter&&(xi.activeSmelter.value=I.add(xi.activeSmelter.value,VI)))}}),ri=[Ei,$i,P],gi=B({name:"Twinkle",description:"Twinkle will automatically purchase all metal machines you can afford, without actually spending any resources.",buyable:[tI.oreDrill,tI.industrialCrucible,tI.hotterForge],cooldownModifier:mi,visibility:()=>j(Y.elfTraining.fertilizerElfTraining.milestones[4].earned.value||Ll.masteryEffectActive.value),buyMax:tI.masteryEffectActive}),mI=[gi],Gi=Object.fromEntries(["blue","red","yellow","orange","green","purple"].map(Di=>[Ri.dyes[Di].buyable.id,Di])),xI=B({name:"Carol",description:"Carol will automatically purchase all primary dyes you can afford, without actually spending any resources.",buyable:Object.values(Ri.dyes).map(Di=>Di.buyable),cooldownModifier:G,visibility:()=>j(pl.unlockDyeElfMilestone.earned.value&&!V.isMastery.value),buyMax:()=>Y.elfTraining.dyeElfTraining.milestones[2].earned.value,onAutoPurchase(Di,VI){Di.amount.value=I.sub(Di.amount.value,VI),!(["orange","green","purple"].includes(Gi[Di.id])&&!fs.milestones.secondaryDyeElf.earned.value)&&(Di.amount.value=I.add(Di.amount.value,VI))}}),PI=B({name:"Tinsel",description:"Tinsel will automatically purchase all plastic buyables you can afford, without actually spending any resources.",buyable:Object.values(jI.buyables),cooldownModifier:x,visibility:()=>j(jI.masteryEffectActive.value),buyMax:()=>Y.elfTraining.plasticElfTraining.milestones[4].earned.value}),RI=[xI,PI],rI=B({name:"Jingle",description:"Jingle will automatically hire more elves to help out with packing the sleigh.",buyable:[gI.helpers.elf,gI.helpers.loader],cooldownModifier:K,visibility:()=>j(gI.upgrades.packingElf.bought.value),buyMax:!0,onAutoPurchase(Di,VI){Di===gI.helpers.loader&&!Y.elfTraining.packingElfTraining.milestones[3].earned.value&&(Di.amount.value=I.sub(Di.amount.value,VI))}}),wi={cuttersElf:Mi,plantersElf:Li,expandersElf:zi,heatedCuttersElf:q,heatedPlantersElf:Wi,fertilizerElf:E,smallFireElf:vi,bonfireElf:uI,kilnElf:Pi,paperElf:aI,boxElf:nI,clothElf:Hi,coalDrillElf:Ei,heavyDrillElf:$i,oilElf:P,metalElf:gi,dyeElf:xI,plasticElf:PI,packingElf:rI},yi=b(()=>Object.values(wi).filter(Di=>Di.bought.value).length),ui=z(()=>({display:{requirement:"1 Elf Trained",effectDisplay:"Manual cutting and planting can happen twice as often for each trained elf"},shouldEarn:()=>I.gte(yi.value,1)})),pi=z(()=>({display:{requirement:"2 Elves Trained",effectDisplay:"Research I & II aren't reset after training"},shouldEarn:()=>I.gte(yi.value,2),visibility:()=>j(ui.earned.value)})),_I=z(()=>({display:{requirement:"3 Elves Trained",effectDisplay:"Coal gain is raised to the 1.25"},shouldEarn:()=>I.gte(yi.value,3),visibility:()=>j(pi.earned.value)})),hI=z(()=>({display:{requirement:"4 Elves Trained",effectDisplay:"Trees give twice as many logs"},shouldEarn:()=>I.gte(yi.value,4),visibility:()=>j(_I.earned.value)})),ii=z(()=>({display:{requirement:"5 Elves Trained",effectDisplay:"Forest is twice as large"},shouldEarn:()=>I.gte(yi.value,5),visibility:()=>j(hI.earned.value)})),Zi=z(()=>({display:{requirement:"6 Elves Trained",effectDisplay:"Elves work twice as fast"},shouldEarn:()=>I.gte(yi.value,6),visibility:()=>j(ii.earned.value)})),Ui=z(()=>({display:{requirement:"7 Elves Trained",effectDisplay:"Workshop Foundation starts at 100% complete after training"},shouldEarn:()=>I.gte(yi.value,7),visibility:()=>j(Zi.earned.value&&V.day.value>5)})),ZI=z(()=>({display:{requirement:"8 Elves Trained",effectDisplay:"Forest is twice as large (again)"},shouldEarn:()=>I.gte(yi.value,8),visibility:()=>j(Ui.earned.value)})),Ki=z(()=>({display:{requirement:"9 Elves Trained",effectDisplay:"Trees upgrades aren't reset after training"},shouldEarn:()=>I.gte(yi.value,9),visibility:()=>j(ZI.earned.value)})),qi=z(()=>({display:{requirement:"10 Elves Trained",effectDisplay:"Elves work twice as fast (again)"},shouldEarn:()=>I.gte(yi.value,10),visibility:()=>j(V.day.value>=10&&Ki.earned.value)})),dI=z(()=>({display:{requirement:"11 Elves Trained",effectDisplay:"Coal upgrades aren't reset after training"},shouldEarn:()=>I.gte(yi.value,11),visibility:()=>j(qi.earned.value)})),oI=z(()=>({display:{requirement:"12 Elves Trained",effectDisplay:"Double coal gain"},shouldEarn:()=>I.gte(yi.value,12),visibility:()=>j(dI.earned.value)})),tl=[ui,pi,_I,hI,ii,Zi,Ui,ZI,Ki,qi,dI,oI],Zl={manualMilestone:ui,researchMilestone:pi,coalGainMilestone:_I,logGainMilestone:hI,forestMilestone:ii,elvesMilestone:Zi,foundationMilestone:Ui,forestMilestone2:ZI,treeUpgradesMilestone:Ki,elvesMilestone2:qi,coalUpgradesMilestone:dI,coalGainMilestone2:oI},{collapseMilestones:Xl,display:gl}=ne(Zl);NI.on("update",Di=>{I.lt(V.day.value,ss)||Object.values(wi).forEach(VI=>VI.update(Di))}),AI(()=>{V.day.value===ss&&I.gte(yi.value,6)&&I.gte(Oi.coal.value,1e9)&&V.completeDay()});const Pl={elves:{cuttersElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},plantersElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},expandersElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},heatedCuttersElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},heatedPlantersElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},fertilizerElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},smallFireElf:{buyProgress:t(0),amountOfTimesDone:t(0),toggle:t(!1),bought:t(!1)},bonfireElf:{buyProgress:t(0),amountOfTimesDone:t(0),toggle:t(!1),bought:t(!1)},kilnElf:{buyProgress:t(0),amountOfTimesDone:t(0),toggle:t(!1),bought:t(!1)},paperElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},boxElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},clothElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},coalDrillElf:{buyProgress:t(0),amountOfTimesDone:t(0),toggle:t(!1),bought:t(!1)},heavyDrillElf:{buyProgress:t(0),amountOfTimesDone:t(0),toggle:t(!1),bought:t(!1)},oilElf:{buyProgress:t(0),amountOfTimesDone:t(0),toggle:t(!1),bought:t(!1)},metalElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},dyeElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},plasticElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)},packingElf:{buyProgress:t(0),amountOfTimesDone:t(0),bought:t(!1)}},milestones:[{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)},{earned:t(!1)}]};return{name:i,day:ss,color:l,elves:wi,totalElves:yi,milestones:tl,collapseMilestones:Xl,generalTabCollapsed:Ii,minWidth:700,display:r(()=>s(M,null,[s("div",null,[V.day.value===ss?`Reach ${_(6)} trained elves and ${_(1e9)} ${Oi.coal.displayName} to complete the day`:`${i} Complete!`," ",d("-")," ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>R.value=!0},[d("Check Modifiers")])]),hi(m),hi(li),s(ti,null,null),s("div",{style:"width: 600px"},[xl(si,ji,II,_i,ri,mI.concat(RI),[rI])]),gl()])),mastery:Pl}}),BZ="plastic",bn=10,jI=al(BZ,function(){const i="Plastic",l="#DCD9CD",e=vI(0,"plastic"),[n,m]=vl(()=>[{title:"Plastic Gain",modifier:R,base:0}]),a=Ji(!1),Z=r(()=>s(EI,{modelValue:a.value,"onUpdate:modelValue":si=>a.value=si},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:n})),o=t(0),y=b(()=>Y.elfTraining.plasticElfTraining.milestones[2].earned.value?0:I.times(o.value,100).times(Y.elfTraining.oilElfTraining.milestones[3].earned.value?5:1)),u=Ai(()=>({resource:tI.metal,cost(){const si=new I(this.amount.value);let q=I.pow(1.2,si).times(1e7);return Y.elfTraining.fertilizerElfTraining.milestones[3].earned.value&&(q=I.sub(q,I.pow(e.value,2)).max(0)),q},display:r(()=>s(M,null,[s("h3",null,[d("Refinery")]),s("br",null,null),d("Refines oil into plastic pellets"),s("br",null,null),d("Consumes 100 oil/s to create 1 plastic/s"),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),di(y.value),d(" oil/sec"),s("br",null,null),d("+"),di(o.value),d(" plastic/sec"),s("br",null,null),s("br",null,null),d("Cost: "),_(c(u.cost))," ",u.resource.displayName])),onPurchase(){o.value=I.add(o.value,1)},style:{width:"300px"},visibility:()=>j(!V.isMastery.value||zi.value)})),{min:w,max:W,add:N,remove:p}=ce({buyable:u,active:o,style:{minHeight:"20px",width:"40px",color:"var(--feature-foreground)"}}),f=b(()=>I.pow(zi.value?4:5,I.add([...Object.values(O),...Object.values(G)].filter(si=>si.bought.value).length,2))),C=U(()=>({resource:$(e),cost:f,display:()=>({title:"Plastic Scissors",description:"Unlock paper upgrades",showCost:!C.bought.value})})),D=U(()=>({resource:$(e),cost:f,display:()=>({title:"Plastic Level",description:"Unlock box upgrades",showCost:!D.bought.value})})),L=U(()=>({resource:$(e),cost:f,display:()=>({title:"Plastic Cane",description:"Unlock cloth upgrades",showCost:!L.bought.value})})),O={paperTools:C,boxTools:D,clothTools:L},v=U(()=>({resource:$(e),cost:f,visibility:()=>j(C.bought.value),display:()=>({title:"Paper Elf Recruitment",description:"Double plastic gain and unlock a new elf for training",showCost:!v.bought.value}),onPurchase(){zi.value&&(Fi.elves.paperElf.bought.value=!0)}})),H=U(()=>({resource:$(e),cost:f,visibility:()=>j(D.bought.value),display:()=>({title:"Box Elf Recruitment",description:"Double plastic gain and unlock a new elf for training",showCost:!H.bought.value}),onPurchase(){zi.value&&(Fi.elves.boxElf.bought.value=!0)}})),mi=U(()=>({resource:$(e),cost:f,visibility:()=>j(L.bought.value),display:()=>({title:"Cloth Elf Recruitment",description:"Double plastic gain and unlock a new elf for training",showCost:!mi.bought.value}),onPurchase(){zi.value&&(Fi.elves.clothElf.bought.value=!0)}})),G={paperElf:v,boxElf:H,clothElf:mi},x=Ai(()=>({resource:$(e),cost(){let si=x.amount.value;return si=I.pow(.95,g.books.plasticBook.totalAmount.value).times(si),I.pow(1.3,si).times(100).div(Ri.boosts.blue2.value)},inverseCost(si){let q=I.times(si,Ri.boosts.blue2.value).div(100).log(1.3);return q=q.div(I.pow(.95,g.books.plasticBook.totalAmount.value)),I.isNaN(q)?I.dZero:q.floor().max(0)},visibility:()=>j(v.bought.value),display:{title:"Plastic Printing Press",description:"Gain +1% of your paper gain per second",effectDisplay:r(()=>s(M,null,[_(x.totalAmount.value),d("%")])),showAmount:!1},freeLevels:b(()=>{let si=0;return Y.elfTraining.plasticElfTraining.milestones[1].earned.value&&(si=I.max(K.amount.value,1).sqrt().floor().add(I.max(bi.amount.value,1).sqrt().floor())),si}),totalAmount:b(()=>I.add(x.amount.value,x.freeLevels.value))})),K=Ai(()=>({resource:$(e),cost(){let si=K.amount.value;return si=I.pow(.95,g.books.plasticBook.totalAmount.value).times(si),I.pow(1.3,si).times(100).div(Ri.boosts.blue2.value)},inverseCost(si){let q=I.times(si,Ri.boosts.blue2.value).div(100).log(1.3);return q=q.div(I.pow(.95,g.books.plasticBook.totalAmount.value)),I.isNaN(q)?I.dZero:q.floor().max(0)},visibility:()=>j(H.bought.value),display:{title:"Plastic Box Folder",description:"Gain +1% of your box gain per second",effectDisplay:r(()=>s(M,null,[_(K.totalAmount.value),d("%")])),showAmount:!1},freeLevels:b(()=>{let si=0;return Y.elfTraining.plasticElfTraining.milestones[1].earned.value&&(si=I.max(x.amount.value,1).sqrt().floor().add(I.max(bi.amount.value,1).sqrt().floor())),si}),totalAmount:b(()=>I.add(K.amount.value,K.freeLevels.value))})),bi=Ai(()=>({resource:$(e),cost(){let si=bi.amount.value;return si=I.pow(.95,g.books.plasticBook.totalAmount.value).times(si),I.pow(1.3,si).times(100).div(Ri.boosts.blue2.value)},inverseCost(si){let q=I.times(si,Ri.boosts.blue2.value).div(100).log(1.3);return q=q.div(I.pow(.95,g.books.plasticBook.totalAmount.value)),I.isNaN(q)?I.dZero:q.floor().max(0)},visibility:()=>j(mi.bought.value),display:{title:"Plastic Shepherd",description:"All cloth actions are +10% more efficient",effectDisplay:r(()=>s(M,null,[_(I.times(bi.totalAmount.value,10)),d("%")])),showAmount:!1},freeLevels:b(()=>{let si=0;return Y.elfTraining.plasticElfTraining.milestones[1].earned.value&&(si=I.max(x.amount.value,1).sqrt().floor().add(I.max(K.amount.value,1).sqrt().floor())),si}),totalAmount:b(()=>I.add(bi.amount.value,bi.freeLevels.value))})),Ii={passivePaper:x,passiveBoxes:K,clothGains:bi},R=Ci(()=>[Si(()=>({addend:()=>Y.elfTraining.oilElfTraining.milestones[3].earned.value?I.times(o.value,5):o.value,description:"Oil Refinery",enabled:()=>I.gt(o.value,0)})),Si(()=>({addend:()=>Y.elfTraining.oilElfTraining.milestones[3].earned.value?I.times(I.div($l.sleighProgress.value.value,2).floor(),200):I.times(o.value,40),description:"75% Sleigh Fixed",enabled:$l.milestones.milestone7.earned})),J(()=>({multiplier:2,description:"Paper Elf Recruitment",enabled:v.bought})),J(()=>({multiplier:2,description:"Box Elf Recruitment",enabled:H.bought})),J(()=>({multiplier:2,description:"Cloth Elf Recruitment",enabled:mi.bought})),J(()=>({multiplier:2,description:"Carry plastic in boxes",enabled:wI.row2Upgrades.plasticUpgrade.bought})),J(()=>({multiplier:()=>xi.oilEffectiveness.value,description:"Effectiveness",enabled:()=>I.lt(xi.oilEffectiveness.value,1)})),J(()=>({multiplier:Ri.boosts.yellow1,description:"Yellow Dye Boost 1",enabled:()=>I.gte(Ri.dyes.yellow.amount.value,1)})),J(()=>({multiplier:()=>I.div(XI.foundationProgress.value,10).floor().div(10).add(1),description:"800% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone4.earned})),J(()=>({multiplier:()=>I.add(xi.buildExtractor.amount.value,1).pow(1.25),description:"Snowball Level 4",enabled:Y.elfTraining.kilnElfTraining.milestones[3].earned})),J(()=>({multiplier:()=>I.add(Ri.secondaryDyeSum.value,1).cbrt(),description:"Colorful Plastic",enabled:xi.row3Upgrades[2].bought})),J(()=>({multiplier:2,description:"Tinsel Level 1",enabled:Y.elfTraining.plasticElfTraining.milestones[0].earned})),J(()=>({multiplier:()=>I.div(u.amount.value,100).add(1),description:"Tinsel Level 4",enabled:Y.elfTraining.plasticElfTraining.milestones[3].earned})),J(()=>({multiplier:50,description:"350 toys",enabled:lI.milestones.milestone4.earned})),J(()=>({multiplier:()=>Ri.boosts.white1.value,description:"White Dye Boost",enabled:()=>I.gt(Ri.dyes.white.amount.value,0)})),J(()=>({multiplier:()=>I.div($l.sleighProgress.value.value,5).floor().mul(.05).add(1),description:"20% Sleigh Fixed",enabled:$l.milestones.milestone3.earned})),J(()=>({multiplier:4,description:"40% Sleigh Fixed",enabled:$l.milestones.milestone5.earned})),ee.reindeer.blitzen.modifier,J(()=>({multiplier:()=>Object.values(Gl.components).reduce((si,q)=>q+(si.type=="plastic"?1:0),1),description:"300,000 Cities Solved",enabled:Dl.metaMilestones[4].earned}))]),li=b(()=>R.apply(0));NI.on("update",si=>{I.lt(V.day.value,bn)||(e.value=I.times(si,li.value).add(e.value))});const{total:A,trackerDisplay:B}=de({resource:e,goal:25e4,name:i,day:bn,background:l,textColor:"var(--feature-foreground)",modal:{show:a,display:Z}}),Mi={plastic:t(0),totalPlastic:t(0),activeRefinery:t(0),buildRefinery:{amount:t(0)},upgrades:{paperTools:{bought:t(!1)},boxTools:{bought:t(!1)},clothTools:{bought:t(!1)}},elfUpgrades:{paperElf:{bought:t(!1)},boxElf:{bought:t(!1)},clothElf:{bought:t(!1)}},buyables:{passivePaper:{amount:t(0)},passiveBoxes:{amount:t(0)},clothGains:{amount:t(0)}}},Li=t(!1),zi=b(()=>{var si;return Li.value||((si=V.currentlyMastering.value)==null?void 0:si.name)===i});return{name:i,day:bn,color:l,plastic:e,totalPlastic:A,buildRefinery:u,activeRefinery:o,oilCost:y,upgrades:O,elfUpgrades:G,buyables:Ii,generalTabCollapsed:m,minWidth:700,display:r(()=>s(M,null,[hi(B),s(ti,null,null),zi.value?s(M,null,[s("div",{class:"decoration-effect ribbon"},[d("Decoration effect:"),s("br",null,null),d("Unlock a new elf for training, and upgrades go up in cost slower")]),s(ti,null,null)]):null,s(sl,{resource:e,color:l,style:"margin-bottom: 0",effectDisplay:I.gt(li.value,0)?`+${di(li.value)}/s`:void 0},null),s(ti,null,null),s(kl,null,{default:()=>[hi(u),s("div",null,[_(I.floor(o.value)),d("/"),_(I.floor(u.amount.value))]),zI(w,p,N,W)]}),s(Be,null,{default:()=>[Ie(C,v,x),Ie(D,H,K),Ie(L,mi,bi)]})])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(e.value),d(" "),e.displayName])])),mastery:Mi,mastered:Li,masteryEffectActive:zi}}),PZ="letters",Ts=14,Ll=al(PZ,function(){const i="Letters",l="antiquewhite",e=vI(0,"letters processed"),n=t(0),m=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(n.value,G.value)})),a=il(()=>({display:{title:r(()=>s("h3",null,[d("Process letters "),s(Ze,{hotkey:Z},null)])),description:r(()=>s(M,null,[d("Process "),di(H.value,1),d(" letters"),s("br",null,null),hi(m)]))},style:{minHeight:"80px"},visibility:()=>j(I.lt(R.value,8e9)),canClick:()=>I.gte(n.value,G.value)&&(!V.isMastery.value||Mi.value),onClick(){if(I.lt(n.value,G.value))return;const Li=I.div(n.value,G.value).floor().max(1);e.value=I.times(Li,H.value).add(e.value).min(8e9),n.value=0}})),Z=je(()=>({key:"l",description:"Process letters",onPress:()=>{a.canClick.value&&a.onClick()},enabled:$(V.days[Ts-1].opened)})),o=Ai(()=>({display:{title:"Sorting Machine",description:"Use a mechanic sorting machine to speed up how quickly you process letters",effectDisplay:r(()=>s(M,null,[di(I.div(o.amount.value,2).add(1)),d("x")]))},resource:tI.metal,cost(){return I.pow(10,o.amount.value).times(1e21)},visibility:()=>j(!V.isMastery.value||Mi.value)})),y=Ai(()=>({display:{title:"Plastic Bins",description:"Use various plastic bins to allow you to process larger quantities of letters at once",effectDisplay:r(()=>s(M,null,[di(I.div(y.amount.value,2).add(1)),d("x")]))},resource:jI.plastic,cost(){return I.pow(1.5,y.amount.value).times(1e9)},visibility:()=>j(!V.isMastery.value||Mi.value)})),u=Ai(()=>({display:{title:"Printed Labels",description:"Use printed labels to improve how many letters you can process at once",effectDisplay:r(()=>s(M,null,[di(I.div(u.amount.value,2).add(1)),d("x")]))},resource:g.paper,cost(){return I.pow(3,u.amount.value).times(1e38)},visibility:()=>j(!V.isMastery.value||Mi.value)})),w={metalBuyable:o,plasticBuyable:y,paperBuyable:u},W=z(()=>({display:{requirement:"100 Letters Processed",effectDisplay:"Double mining speed for every letters processed milestone"},shouldEarn:()=>I.gte(R.value,100)})),N=z(()=>({display:{requirement:"1000 Letters Processed",effectDisplay:r(()=>s(M,null,[d("Mine "),s(ql,null,{default:()=>[d("Blue Dye")]}),d(" additional ore each operation")]))},shouldEarn:()=>I.gte(R.value,1e3),visibility:()=>j(W.earned.value)})),p=z(()=>({display:{requirement:"10,000 Letters Processed",effectDisplay:"Improve how much your experience processing letters allows you to process more letters"},shouldEarn:()=>I.gte(R.value,1e4),visibility:()=>j(N.earned.value)})),f=z(()=>({display:{requirement:"100,000 Letters Processed",effectDisplay:r(()=>s(M,null,[d('"Industrial Crucible" also multiplies the auto smelting multi by')," ",s(ql,null,{default:()=>[d("amount")]})]))},shouldEarn:()=>I.gte(R.value,1e5),visibility:()=>j(p.earned.value)})),C={autoSmeltingMilestone:W,miningMilestone:N,synergyMilestone:p,industrialCrucibleMilestone:f},{collapseMilestones:D,display:L}=ne(C),O=b(()=>{let Li=I.add(R.value,1);return p.earned.value?Li=I.log2(10001).add(1).add(Li.sub(9999).sqrt()):Li=I.log2(Li).add(1),Mi.value&&(Li=I.pow(Li,2)),Li}),v=Ci(()=>[J(()=>({multiplier:O,description:"Processing Letters Experience"})),J(()=>({multiplier:()=>I.div(y.amount.value,2).add(1),description:"Plastic Bins"})),J(()=>({multiplier:()=>I.div(u.amount.value,2).add(1),description:"Printed Labels"}))]),H=b(()=>v.apply(1)),mi=Ci(()=>[J(()=>({multiplier:()=>I.div(o.amount.value,2).add(1).recip(),description:"Sorting Machine"})),J(()=>({multiplier:()=>I.sqrt(O.value).recip(),description:"Letters Decoration",enabled:Mi}))]),G=b(()=>mi.apply(5)),[x,K]=vl(()=>[{title:"Processed Letters Amount",modifier:v,base:1},{title:"Processed Letters Cooldown",modifier:mi,base:5}]),bi=Ji(!1),Ii=r(()=>s(EI,{modelValue:bi.value,"onUpdate:modelValue":Li=>bi.value=Li},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:x}));NI.on("update",Li=>{I.lt(V.day.value,Ts)||(I.gte(n.value,G.value)?n.value=G.value:(n.value=I.add(n.value,Li),a.isHolding.value&&a.onClick()))});const{total:R,trackerDisplay:li}=de({resource:e,goal:1e6,name:i,day:Ts,background:{gradient:"letters-bar",duration:"15s"},textColor:"var(--feature-foreground)",modal:{show:bi,display:Ii}}),A={letters:t(0),totalLetters:t(0),buyables:{metalBuyable:{amount:t(0)},plasticBuyable:{amount:t(0)},paperBuyable:{amount:t(0)}},milestones:{autoSmeltingMilestone:{earned:t(!1)},miningMilestone:{earned:t(!1)},synergyMilestone:{earned:t(!1)},industrialCrucibleMilestone:{earned:t(!1)}}},B=t(!1),Mi=b(()=>{var Li;return B.value||((Li=V.currentlyMastering.value)==null?void 0:Li.name)===i});return{name:i,day:Ts,color:l,letters:e,totalLetters:R,processingProgress:n,processHK:Z,buyables:w,milestones:C,minWidth:700,generalTabCollapsed:K,collapseMilestones:D,display:r(()=>s(M,null,[hi(li),s(ti,null,null),Mi.value?s(M,null,[s("div",{class:"decoration-effect ribbon"},[d("Decoration effect:"),s("br",null,null),d("Letter processing experience is stronger and affects processing cooldown at reduced rate")]),s(ti,null,null)]):null,s(sl,{resource:e,color:l},null),hi(a),I.lt(R.value,8e9)?s("div",null,[d("The more letters you process, the more you'll improve at processing letters."),s("div",null,[d("Currently: "),di(O.value),d("x")])]):s("div",null,[d("You've processed all of humanity's letters to Santa!")]),s(ti,null,null),zI(...Object.values(w)),s(ti,null,null),L()])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(e.value),d(" "),e.displayName])])),mastery:A,mastered:B,masteryEffectActive:Mi}}),_Z="metal",yn=7,tI=al(_Z,function(){const i="Metal",l="#888B8D",e=vI(0,"metal ingots",void 0,!0),n=pn(e),m=vI(0,"ore"),a=pn(m),Z=Ji(0),o=Ji(0),y=Ci(()=>[J(()=>({multiplier:5,description:"Crucible",enabled:Mi.bought})),J(()=>({multiplier:1.5,description:"Industrial Crucible",enabled:()=>I.gte(Wi.amount.value,1)})),J(()=>({multiplier:2,description:"Industrial Furnace",enabled:zi.bought})),J(()=>({multiplier:()=>I.add(vi.value,1),description:"Hotter Forges",enabled:()=>I.gte(ji.amount.value,1)})),J(()=>({multiplier:2,description:"Carry metal in boxes",enabled:wI.row2Upgrades.metalUpgrade.bought})),J(()=>({multiplier:Ri.boosts.purple2,description:"Purple Dye Boost 2",enabled:()=>I.gte(Ri.dyes.purple.amount.value,1)})),J(()=>({multiplier:()=>I.add(fI.cloth.value,1).log10().plus(1),description:"Glistening Paint",enabled:Ri.upgrades.redDyeUpg.bought})),J(()=>({multiplier:()=>I.div(XI.foundationProgress.value,10).floor().div(10).add(1),description:"400% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone2.earned})),J(()=>({multiplier:()=>I.add(xi.buildHeavy.amount.value,1).sqrt(),description:"Joy Level 4",enabled:Y.elfTraining.smallfireElfTraining.milestones[3].earned})),J(()=>({multiplier:()=>I.add(Y.schools.amount.value,1),description:"Twinkle Level 1",enabled:Y.elfTraining.metalElfTraining.milestones[0].earned})),ee.reindeer.comet.modifier,J(()=>({multiplier:()=>Object.values(Gl.components).reduce((P,ri)=>ri+(P.type=="metal"?1:0),1),description:"300,000 Cities Solved",enabled:Dl.metaMilestones[4].earned})),Yl(()=>({exponent:1.1,description:"Mary Level 2",enabled:Y.elfTraining.heatedPlanterElfTraining.milestones[1].earned})),Yl(()=>({exponent:1.2,description:"100% Sleigh Fixed",enabled:$l.milestones.milestone8.earned})),Yl(()=>({exponent:1.5,description:"69,200 Presents Packed",enabled:gI.packingMilestones.metalBoost.earned}))]),u=b(()=>y.apply(.1)),w=Ci(()=>[Si(()=>({addend:()=>I.times(Wi.amount.value,10),description:"Industrial Crucibles",enabled:()=>I.gte(Wi.amount.value,1)})),Yl(()=>({exponent:1.1,description:"Joy Level 5",enabled:Y.elfTraining.smallfireElfTraining.milestones[4].earned})),Yl(()=>({exponent:1.1,description:"Faith Level 5",enabled:Y.elfTraining.bonfireElfTraining.milestones[4].earned})),Yl(()=>({exponent:1.1,description:"Snowball Level 5",enabled:Y.elfTraining.kilnElfTraining.milestones[4].earned})),J(()=>({multiplier:2,description:"Efficient Crucibles",enabled:Oi.efficientSmelther.bought})),J(()=>({multiplier:()=>I.mul(xi.activeSmelter.value,xi.oilEffectiveness.value).add(1),description:"Oil Smelter",enabled:()=>I.gt(xi.activeSmelter.value,0)})),J(()=>({multiplier:Ri.boosts.purple2,description:"Purple Dye Boost 2",enabled:()=>I.gte(Ri.dyes.purple.amount.value,1)})),J(()=>({multiplier:()=>I.add(jI.activeRefinery.value,1).sqrt(),description:"De Louvre",enabled:Ri.upgrades.redDyeUpg2.bought})),J(()=>({multiplier:()=>I.div(Y.totalElfExp.value,1e6).add(1).sqrt(),description:"Mary Level 5",enabled:Y.elfTraining.heatedPlanterElfTraining.milestones[4].earned})),J(()=>({multiplier:()=>I.pow(1.25,Y.elfTraining.metalElfTraining.level.value),description:"Twinkle Level 2",enabled:Y.elfTraining.metalElfTraining.milestones[1].earned})),J(()=>({multiplier:()=>I.add(Ri.dyes.red.amount.value,Ri.dyes.blue.amount.value).add(Ri.dyes.yellow.amount.value).add(1).log10(),description:"The Ultimate Metal Dye",enabled:xi.row3Upgrades[4].bought})),J(()=>({multiplier:pl.boosts.jazzy1,description:"Jazzy Wrapping Paper",enabled:b(()=>I.gt(pl.boosts.jazzy1.value,1))})),J(()=>({multiplier:2,description:"30% Sleigh Fixed",enabled:$l.milestones.milestone4.earned})),Si(()=>({addend:()=>I.sub(Z.value,o.value).max(0),description:"Metal Decoration",enabled:$i}))]),W=b(()=>w.apply(0)),N=Ci(()=>[J(()=>({multiplier:3,description:"Efficient Crucibles",enabled:Oi.efficientSmelther.bought})),J(()=>({multiplier:()=>I.add(xi.effectiveBurners.value,1).mul(xi.oilEffectiveness.value),description:"Oil Burner",enabled:xi.row2Upgrades[2].bought})),J(()=>({multiplier:3,description:"Twinkle Level 3",enabled:Y.elfTraining.metalElfTraining.milestones[2].earned})),J(()=>({multiplier:()=>I.add(Wi.amount.value,1).sqrt(),description:"100,000 Letters Processed",enabled:Ll.milestones.industrialCrucibleMilestone.earned})),J(()=>({multiplier:()=>I.add(lI.clothes.value,1),description:"Give elves clothes to wear",enabled:lI.row1Upgrades[1].bought}))]),p=b(()=>N.apply(1)),f=1e10,C=b(()=>I.min(m.value,I.div(Oi.coal.value,f)).floor().max(0)),D=il(()=>({display:r(()=>{const P=I.gte(C.value,1)?C.value:I.add(C.value,1);return s(M,null,[s("span",{style:"font-size: large"},[d("Smelt "),WI(I.times(C.value,u.value))," ",e.displayName]),s("br",null,null),s("span",{style:"font-size: large"},[d("Cost: "),yI(P),d(" "),m.displayName,d(";")," ",yI(I.times(P,f)),d(" "),Oi.coal.displayName])])}),canClick:()=>I.gte(C.value,1),onClick(){!c(this.canClick)||L(C.value)},style:{width:"600px",minHeight:"unset"}}));function L(P,ri=1){const[gi,mI,Gi]=[I.times(P,u.value).times(ri),P,I.times(P,f)];e.value=I.add(e.value,gi),m.value=I.sub(m.value,mI),Oi.coal.value=I.sub(Oi.coal.value,Gi)}const O=Ci(()=>[Si(()=>({addend:()=>q.amount.value,description:"Metal Drills",enabled:()=>I.gte(q.amount.value,1)})),J(()=>({multiplier:()=>I.mul(xi.depth.value,.05).add(1),description:"25m Well Depth",enabled:xi.depthMilestones[2].earned})),J(()=>({multiplier:xi.extractorOre,description:"Heavy Extractor",enabled:()=>I.gt(xi.activeExtractor.value,0)})),J(()=>({multiplier:2,description:"Carry ore in boxes",enabled:wI.row2Upgrades.oreUpgrade.bought})),J(()=>({multiplier:()=>I.add(Ri.dyes.blue.amount.value,1).sqrt(),description:"1000 Letters Processed",enabled:Ll.milestones.miningMilestone.earned})),J(()=>({multiplier:2,description:"30% Sleigh Fixed",enabled:$l.milestones.milestone4.earned})),J(()=>({multiplier:()=>I.add(lI.clothes.value,1),description:"Give elves clothes to wear",enabled:lI.row1Upgrades[1].bought}))]),v=b(()=>O.apply(1)),H=Ci(()=>[J(()=>({multiplier:2,description:"A Simple Pickaxe",enabled:A.bought})),J(()=>({multiplier:2,description:"Double Pickaxe",enabled:B.bought})),J(()=>({multiplier:2.5,description:"Metal Drills",enabled:()=>I.gte(q.amount.value,1)})),J(()=>({multiplier:2,description:"Efficient Drills",enabled:si.bought})),J(()=>({multiplier:2,description:"Oil the Metal Drills",enabled:xi.row2Upgrades[1].bought})),J(()=>({multiplier:()=>I.pow(2,Object.values(Ll.milestones).filter(P=>P.earned.value).length),description:"100 Letters Processed",enabled:Ll.milestones.autoSmeltingMilestone.earned})),Si(()=>({addend:()=>I.sub(o.value,Z.value).max(0).div(v.value),description:"Metal Decoration",enabled:$i}))]),mi=b(()=>H.apply(I.recip(x))),G=t(0),x=10,K=HI(()=>({width:400,height:25,direction:Yi.Right,fillStyle:{backgroundColor:l,transitionDuration:"0s"},progress:()=>G.value})),bi=Ci(()=>[Si(()=>({addend:v})),J(()=>({multiplier:mi})),J(()=>({multiplier:mi,description:"1,670,000 Presents Packed",enabled:gI.packingMilestones.oreBoost.earned}))]),Ii=b(()=>bi.apply(0)),R=Ci(()=>[Si(()=>({addend:Ii})),Si(()=>({addend:()=>I.negate(W.value),enabled:E}))]),li=b(()=>R.apply(0)),A=U(()=>({resource:$(e),cost:.1,display:{title:"A Simple Pickaxe",description:"Make a simple pickaxe to help mine faster.

Halve the time to mine more ore"}})),B=U(()=>({resource:$(e),cost:.1,display:{title:"Double Pickaxe",description:"This is too slow. What if you swung two pickaxes at once?

Halve the time to mine ore, again"},visibility:()=>j(B.bought.value)})),Mi=U(()=>({resource:$(e),cost:1,display:{title:"Crucible",description:"Smelting this all by hand is rather painful, and a lot of the metal is left in the slag. A small crucible should help a lot!

Increase the metal extracted per ore by 5x"},visibility:()=>j(Mi.bought.value||I.div(a.value,u.value).plus(n.value).gte(1))})),Li=U(()=>({resource:$(e),cost:0,display:{title:"Coal Drilling",description:"These metal drills are pretty powerful, mining more ore than you can actually smelt. Could be worth making some to mine coal instead"},visibility:()=>j(I.gte(q.amount.value,1)&&(Li.bought.value||V.days[7].opened.value||I.lt(Oi.computedCoalGain.value,I.times(v.value,mi.value).times(f)))),onPurchase(){V.days[2].recentlyUpdated.value=!0}})),zi=U(()=>({canAfford(){return I.gte(e.value,50)&&I.gte(Oi.coal.value,1e11)},onPurchase(){e.value=I.sub(e.value,50),Oi.coal.value=I.sub(Oi.coal.value,1e11)},display:{title:"Industrial Furnace",description:`Moving smelting out of the open air and into a dedicated furnace should make efficiency even better. Double metal gained per ore +
+
+ Cost: 50 ${e.displayName}
${WI(1e11)} ${Oi.coal.displayName}`}})),si=U(()=>({resource:$(e),cost:1e5,display:{title:"Efficient Drills",description:"Use metal and a bunch of R&D to make drilling stuff faster. Double coal and ore mining speed."},visibility:()=>j(xi.depthMilestones[4].earned.value)})),q=Ai(()=>({resource:$(e),cost(){let P=new I(this.amount.value);P=I.pow(.95,g.books.metalBook.totalAmount.value).times(P);let ri=I.pow(1.15,P).times(10);return Y.elfTraining.metalElfTraining.milestones[4].earned.value&&(ri=I.div(ri,I.add(xi.depth.value,1).sqrt())),Y.elfTraining.metalElfTraining.milestones[3].earned.value&&(ri=I.div(ri,10)),ri},inverseCost(P){Y.elfTraining.metalElfTraining.milestones[3].earned.value&&(P=I.mul(P,10)),Y.elfTraining.metalElfTraining.milestones[4].earned.value&&(P=I.mul(P,I.add(xi.depth.value,1).sqrt()));let ri=I.div(P,10).log(1.15);return ri=ri.div(I.pow(.95,g.books.metalBook.totalAmount.value)),I.isNaN(ri)?I.dZero:ri.floor().max(0)},display:{title:"Metal Drill",description:"An automated machine to help you mine more ore, faster",effectDisplay:r(()=>s(M,null,[d("Mine 2.5x faster. Increase ore mining amount by")," ",yI(q.amount.value),d(" ore per operation")]))},visibility:()=>j(I.gte(q.amount.value,1)||I.div(a.value,u.value).plus(n.value).gte(10)),style:{width:"200px"}})),Wi=Ai(()=>({resource:$(e),cost(){let P=new I(this.amount.value);P=I.pow(.95,g.books.metalBook.totalAmount.value).times(P);let ri=I.pow(1.15,I.times(P,10)).times(10);return Y.elfTraining.metalElfTraining.milestones[4].earned.value&&(ri=I.div(ri,I.add(xi.depth.value,1).sqrt())),Y.elfTraining.metalElfTraining.milestones[3].earned.value&&(ri=I.div(ri,10)),ri},inverseCost(P){Y.elfTraining.metalElfTraining.milestones[3].earned.value&&(P=I.mul(P,10)),Y.elfTraining.metalElfTraining.milestones[4].earned.value&&(P=I.mul(P,I.add(xi.depth.value,1).sqrt()));let ri=I.div(P,10).log(1.15).div(10);return ri=ri.div(I.pow(.95,g.books.metalBook.totalAmount.value)),I.isNaN(ri)?I.dZero:ri.floor().max(0)},display:{title:"Industrial Crucible",description:"A giant automated crucible furnace, letting you smelt ore faster",effectDisplay:r(()=>s(M,null,[d("Automatically smelts")," ",yI(I.times(Wi.amount.value,10)),d(" ore per second")]))},visibility:()=>j(I.gte(Wi.amount.value,1)||I.gte(q.amount.value,4)||I.gte(a.value,50)),style:{width:"200px"}})),E=t(!0),ji=Ai(()=>({resource:Oi.coal,cost(){let P=new I(this.amount.value);P=I.pow(.95,g.books.metalBook.totalAmount.value).times(P);let ri=I.pow(10,P).times(1e12);return Y.elfTraining.metalElfTraining.milestones[4].earned.value&&(ri=I.div(ri,I.add(xi.depth.value,1).sqrt())),Y.elfTraining.metalElfTraining.milestones[3].earned.value&&(ri=I.div(ri,10)),ri},inverseCost(P){Y.elfTraining.metalElfTraining.milestones[3].earned.value&&(P=I.mul(P,10)),Y.elfTraining.metalElfTraining.milestones[4].earned.value&&(P=I.mul(P,I.add(xi.depth.value,1).sqrt()));let ri=I.div(P,1e12).log(10);return ri=ri.div(I.pow(.95,g.books.metalBook.totalAmount.value)),I.isNaN(ri)?I.dZero:ri.floor().max(0)},display:{title:"Hotter Forges",description:"More coal makes the fires burn hotter, getting just a little more metal out of each bit of ore",effectDisplay:r(()=>s(M,null,[d("Gain "),yI(I.times(vi.value,100)),d("% more metal per ore")]))},visibility:()=>j(I.gte(ji.amount.value,1)||zi.bought.value),style:{width:"200px"}})),vi=b(()=>I.times(ji.amount.value,.25));NI.on("update",P=>{var Gi;if(I.lt(V.day.value,yn)||V.isMastery.value&&!Ei.value&&((Gi=V.currentlyMastering.value)==null?void 0:Gi.name)!==i)return;const ri=I.sub(I.times(mi.value,v.value),I.sub(o.value,Z.value).max(0)),gi=I.sub(W.value,I.sub(Z.value,o.value).max(0));Z.value=I.isNaN(ri)?0:ri,o.value=I.isNaN(gi)?0:gi,G.value=I.times(P,mi.value).plus(G.value);const mI=G.value.trunc();G.value=G.value.minus(mI),m.value=I.add(m.value,I.times(mI,v.value)),E.value&&L(I.min(C.value,I.times(W.value,P)),p.value)});const[uI,Pi]=vl(()=>[{title:"Auto Smelt Speed",modifier:w,base:0,unit:"/s",visible(){return I.gt(Wi.amount.value,0)||$i.value}},{title:"Auto Smelt Multiplier",modifier:N,base:1,visible(){return I.gt(p.value,1)}},{title:"Metal per Ore",modifier:y,base:.1},{title:"Ore per Mining Operation",modifier:O,base:1},{title:"Mining Speed",modifier:H,base:.1,unit:"/s"}]),II=Ji(!1),aI=r(()=>s(EI,{modelValue:II.value,"onUpdate:modelValue":P=>II.value=P},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:uI})),{total:nI,trackerDisplay:Hi}=de({resource:e,goal:25e3,name:i,day:yn,background:l,modal:{show:II,display:aI}}),_i={ore:t(0),bestOre:t(0),oreProgress:t(0),metal:t(0),bestMetal:t(0),totalMetal:t(0),simplePickaxe:{bought:t(!1)},doublePickaxe:{bought:t(!1)},crucible:{bought:t(!1)},coalDrill:{bought:t(!1)},industrialFurnace:{bought:t(!1)},efficientDrill:{bought:t(!1)},oreDrill:{amount:t(0)},industrialCrucible:{amount:t(0)},hotterForge:{amount:t(0)}},Ei=t(!1),$i=b(()=>{var P;return Ei.value||((P=V.currentlyMastering.value)==null?void 0:P.name)===i});return{name:i,day:yn,color:l,ore:m,bestOre:a,oreProgress:G,metal:e,bestMetal:n,totalMetal:nI,simplePickaxe:A,doublePickaxe:B,crucible:Mi,coalDrill:Li,industrialFurnace:zi,efficientDrill:si,oreDrill:q,industrialCrucible:Wi,autoSmeltEnabled:E,hotterForge:ji,generalTabCollapsed:Pi,minWidth:700,display:r(()=>s(M,null,[hi(Hi),s(ti,null,null),$i.value?s(M,null,[s("div",{class:"decoration-effect"},[d("Decoration effect:"),s("br",null,null),d("The lesser of ore mining amount x speed and auto smelting speed is increased to match the greater, and Twinkle buys max")]),s(ti,null,null)]):null,s(sl,{resource:e,color:l,style:"margin-bottom: 0",sticky:!1,productionDisplay:r(()=>s(M,null,[E.value&&(I.gte(Wi.amount.value,1)||$i.value)?$i.value?Jn(I.mul(u.value,u.value).mul(W.value)):`+${Mm([[W.value,"smelting speed"],[Ii.value,"ore gain"],[I.div(Oi.computedCoalGain.value,f),"coal gain"]],"/s",I.mul(u.value,p.value))}`:void 0]))},null),s(ti,null,null),hi(D),I.gte(Wi.amount.value,1)||$i.value?s("div",{style:{width:"150px"}},[s(ye,{title:"Auto Smelt",modelValue:E.value,"onUpdate:modelValue":P=>E.value=P},null)]):void 0,s(ti,null,null),s(sl,{resource:m,color:l,style:"margin-bottom: 0",sticky:!1,productionDisplay:r(()=>s(M,null,[Jn(li.value)]))},null),s(ti,null,null),s("div",null,[d("Currently mining "),WI(v.value),d(" ore every")," ",WI(I.recip(mi.value)),d(" seconds")]),hi(K),s(ti,null,null),zI(A,B,Mi,Li,zi,si),zI(q,Wi,ji)])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[WI(e.value),d(" "),e.displayName])])),mastery:_i,mastered:Ei,masteryEffectActive:$i}});const qZ={class:"toy"},$Z=["src"],KZ=iI({__name:"Toy",props:{resource:null,image:null,color:null},setup(i){return(l,e)=>(h(),S("div",qZ,[X("img",{src:i.image},null,8,$Z),s(_s,{resource:i.resource,color:i.color,style:{"font-size":"large"}},null,8,["resource","color"])]))}});var Ue=OI(KZ,[["__scopeId","data-v-9ca7cc66"]]);const io="factory",ns=18,SI=19,re=20,ze=750,Fs=1500,ks=8e9;function Re(i,l){return Math.floor((i+l/2)/l)*l}function tm(i,l=Yi.Right){const e=[Yi.Up,Yi.Right,Yi.Down,Yi.Left];let n=e.indexOf(i);return n+=e.indexOf(l),n=n%e.length,e[n]}function Io(i){switch(i){case Yi.Left:case Yi.Up:return-1;case Yi.Right:case Yi.Down:return 1}}function lo(i){switch(i){case Yi.Left:case Yi.Right:return"h";case Yi.Up:case Yi.Down:return"v"}}const sI=50,Gl=al(io,()=>{const i="The Factory",l="grey",e=vI(0,"teddy bears"),n=vI(0,"shovel and pails"),m=vI(0,"consoles"),a=vI(0,"presents"),Z={clothes:lI.clothes,woodenBlocks:lI.woodenBlocks,trucks:lI.trucks,bears:e,bucketAndShovels:n,consoles:m};function o(Q){const ai=Q.target.getBoundingClientRect(),Xi=L.value%2===0?-sI/2:0;return{x:Q.clientX-ai.left+Xi,y:Q.clientY-ai.top+Xi}}const y=Ci(()=>[Si(()=>({addend:()=>I.add(1,Oi.coal.value).log10(),description:"Coal Energy Production"})),J(()=>({multiplier:I.add(1,Oi.coal.value).log10().div(100),description:"1400% workshop",enabled:XI.milestones.extraExpansionMilestone7.earned})),Si(()=>({addend:()=>I.times(Hi.amount.value,10),description:"Oil Fuel",enabled:()=>I.gt(Hi.amount.value,0)})),J(()=>({multiplier:1.4,description:"1500 toys",enabled:lI.milestones.milestone6.earned})),J(()=>({multiplier:1.4,description:"6000 toys",enabled:lI.milestones.milestone6.earned})),J(()=>({multiplier:()=>I.log10(ki.logs.value).div(100).add(1),description:"Burn some logs",enabled:$i.bought}))]),u=b(()=>y.apply(0)),w=b(()=>Object.values(B.value).map(Q=>{var ai,Xi;return(Xi=(ai=x[Q.type])==null?void 0:ai.energyCost)!=null?Xi:0}).reduce((Q,ai)=>Q+ai,0)),W=b(()=>I.div(w.value,u.value).recip().pow(2).min(1)),N=Ci(()=>[J(()=>({multiplier:aI,description:"Trained Elves"})),J(()=>({multiplier:()=>I.div(_i.amount.value,10).add(1),description:"Carry toys in boxes",enabled:()=>I.gt(_i.amount.value,0)})),J(()=>({multiplier:W,description:"Energy Consumption",enabled:()=>I.gt(w.value,u.value)})),J(()=>({multiplier:I.add(g.paper.value,1).log10().div(100).add(1),description:"News Ticker",enabled:()=>RI[0][1].bought.value})),J(()=>({multiplier:I.lt(W.value,1)?1:I.sub(2,I.div(w.value,I.max(u.value,1))),description:"Brighter work rooms",enabled:()=>RI[2][0].bought.value})),J(()=>({multiplier:1.5,description:"Carry ticks in boxes",enabled:()=>RI[2][3].bought.value})),J(()=>({multiplier:()=>I.max(Dl.citiesCompleted.value,1).log10().sub(3).max(1),description:"25,000 Cities Solved",enabled:Dl.metaMilestones[2].earned}))]),p=b(()=>N.apply(1)),f=b(()=>I.min(p.value,5)),C=b(()=>I.div(p.value,5).max(1)),D=Ci(()=>[Si(()=>({addend:nI.amount,description:"Expand Factory",enabled:()=>I.gt(nI.amount.value,0)})),Si(()=>({addend:5,description:"Factory eXPerience",enabled:Ei.bought}))]),L=b(()=>new I(D.apply(7)).toNumber()),O=Ci(()=>[J(()=>({multiplier:C,description:"Tickspeed overflow",enabled:()=>C.value.gt(1)})),J(()=>({multiplier:()=>I.div(wI.buyables3.presentBuyable.amount.value,10).add(1).pow(2),description:"Carry presents in boxes",enabled:ri.bought})),J(()=>({multiplier:()=>I.add(fs.ribbon.value,1),description:"With a bow",enabled:Gi.bought}))]),v=b(()=>O.apply(1)),H=HI(()=>({width:680,height:50,direction:Yi.Right,classes:{"energy-bar":!0},style:{borderRadius:"var(--border-radius) var(--border-radius) 0 0"},borderStyle:{borderRadius:"var(--border-radius) var(--border-radius) 0 0"},fillStyle:()=>({backgroundColor:I.gt(w.value,u.value)?"red":"yellow"}),progress:()=>I.gt(w.value,u.value)?I.sub(1,I.div(u.value,w.value)):I.sub(1,I.div(w.value,u.value)),display:r(()=>s(M,null,[s("div",null,[_(w.value),d(" / "),_(u.value)," ",d("energy used"),I.gt(w.value,u.value)?s(M,null,[" ("+di(I.mul(W.value,100)),d("% efficiency)")]):""]),s("div",null,[Dl.metaMilestones[4].earned.value?s(KI,{display:"Polyfill",direction:Yi.Down},{default:()=>[s("button",{class:"control-btn material-icons",onClick:T},[d("format_color_fill")])]}):"",s(KI,{display:"Clear Tracks",direction:Yi.Down},{default:()=>[s("button",{class:"control-btn material-icons",onClick:ul},[d("clear")])]}),s(KI,{display:"Clear Factory",direction:Yi.Down},{default:()=>[s("button",{class:"control-btn material-icons",onClick:ni},[d("delete")])]}),s(KI,{display:"Go to Center",direction:Yi.Down,xoffset:"-26px"},{default:()=>[s("button",{class:"control-btn material-icons",onClick:TI},[d("center_focus_weak")])]}),s(KI,{display:(Zl.value?"Unpause":"Pause")+" the Factory",direction:Yi.Down,xoffset:"-63px"},{default:()=>[s("button",{class:"control-btn material-icons",onClick:Ml},[Zl.value?"play_arrow":"pause"])]})])]))}));function mi(Q){let ai=Q.inputs===void 0?"Produces ":"Turns ";return Q.inputs!==void 0&&(ai+=Wn(Object.entries(Q.inputs).map(Xi=>_(c(Xi[1].amount))+" "+K[Xi[0]].name))+" into "),Q.outputs!==void 0&&(ai+=Wn(Object.entries(Q.outputs).map(Xi=>_(c(Xi[1].amount))+" "+K[Xi[0]].name))+" per tick."),ai}let G=0;const x={cursor:{imageSrc:Yt,key:"Escape",name:"Cursor",type:"command",description:"Drag while equipping this to move around.",tick:0},delete:{imageSrc:vt,key:"Backspace",name:"Delete",type:"command",description:"Remove components from the board.",tick:0},rotateLeft:{imageSrc:zt,key:"t",name:"Rotate Left",type:"command",description:"Use this to rotate components counter-clockwise.",tick:0},rotateRight:{imageSrc:Rt,key:"shift+T",name:"Rotate Right",type:"command",description:"Use this to rotate components clockwise.",tick:0},conveyor:{imageSrc:ht,key:"0",name:"Conveyor",type:"conveyor",description:"Moves items at 1 block per tick.",energyCost:1,tick:1,ports:{[Yi.Left]:{type:"input"},[Yi.Right]:{type:"output"}}},wood:{imageSrc:Ws,extraImage:lm,key:"1",name:"Wood Warehouse",type:"processor",description:b(()=>mi(x.wood)),energyCost:10,tick:1,outputs:{wood:{amount:1}}},cloth:{imageSrc:Ws,extraImage:qs,key:"2",name:"Cloth Warehouse",type:"processor",description:b(()=>mi(x.cloth)),energyCost:10,tick:1,outputs:{cloth:{amount:1}}},dye:{imageSrc:Ws,extraImage:$s,key:"3",name:"Dye Warehouse",type:"processor",description:b(()=>mi(x.dye)),energyCost:10,tick:1,outputs:{dye:{amount:b(()=>RI[1][1].bought.value?4:1)}}},metal:{imageSrc:Ws,extraImage:Ks,key:"4",name:"Metal Warehouse",type:"processor",description:b(()=>mi(x.metal)),energyCost:10,tick:1,outputs:{metal:{amount:1}}},plastic:{imageSrc:Ws,extraImage:In,key:"5",name:"Plastic Warehouse",type:"processor",description:b(()=>mi(x.plastic)),energyCost:10,tick:1,outputs:{plastic:{amount:b(()=>RI[1][2].bought.value?4:1)}}},plank:{imageSrc:Gt,key:"shift+1",name:"Sawmill",type:"processor",description:b(()=>mi(x.plank)),energyCost:2,tick:1,inputs:{wood:{amount:b(()=>RI[0][0].bought.value?2:1)}},outputs:{plank:{amount:b(()=>RI[0][0].bought.value?2:1)}}},thread:{imageSrc:Tt,key:"shift+2",name:"Thread Spinner",type:"processor",description:b(()=>mi(x.thread)),energyCost:2,tick:1,inputs:{cloth:{amount:1}},outputs:{thread:{amount:1}}},wheel:{imageSrc:gt,key:"shift+3",name:"Wheel Crafter",type:"processor",description:b(()=>mi(x.wheel)),energyCost:2,tick:1,inputs:{plastic:{amount:1}},outputs:{wheel:{amount:b(()=>lI.milestones.milestone5.earned.value?2:1)}}},button:{imageSrc:rt,key:"shift+4",name:"Button Maker",type:"processor",description:b(()=>mi(x.button)),energyCost:2,tick:1,inputs:{plastic:{amount:1}},outputs:{buttons:{amount:2}},visible:V.days[SI-1].opened},stuffing:{imageSrc:St,key:"shift+5",name:"Cloth Shredder",type:"processor",description:b(()=>mi(x.stuffing)),energyCost:2,tick:1,inputs:{cloth:{amount:1}},outputs:{stuffing:{amount:1}},visible:V.days[SI-1].opened},shovel:{imageSrc:xt,key:"shift+6",name:"Shovel Maker",type:"processor",description:b(()=>mi(x.shovel)),energyCost:2,tick:1,inputs:{plastic:{amount:2}},outputs:{shovel:{amount:1}},visible:V.days[SI-1].opened},bucket:{imageSrc:Wt,key:"shift+7",name:"Bucket Maker",type:"processor",description:b(()=>mi(x.bucket)),energyCost:2,tick:1,inputs:{plastic:{amount:3}},outputs:{bucket:{amount:1}},visible:V.days[SI-1].opened},circuitBoard:{imageSrc:Nt,key:"shift+8",name:"Circuit Board Manufacturer",type:"processor",description:b(()=>mi(x.circuitBoard)),energyCost:2,tick:1,inputs:{metal:{amount:1},plastic:{amount:1}},outputs:{circuitBoard:{amount:1}},visible:V.days[SI-1].opened},boxMaker:{imageSrc:ut,key:"shift+9",name:"Box Maker",type:"processor",description:b(()=>mi(x.boxMaker)),energyCost:3,tick:1,inputs:{plank:{amount:2}},outputs:{box:{amount:2}},visible:V.days[re-1].opened},blocks:{imageSrc:Vt,key:"ctrl+1",name:"Wooden Block Maker",type:"processor",description:b(()=>mi(x.blocks)),energyCost:20,tick:1,inputs:{plank:{amount:1}},outputs:{block:{amount:b(()=>RI[1][0].bought.value?3:1),resource:lI.woodenBlocks}}},clothes:{imageSrc:Ot,key:"ctrl+2",name:"Clothes Maker",type:"processor",description:b(()=>mi(x.clothes)),energyCost:20,tick:1,inputs:{thread:{amount:2},cloth:{amount:3},dye:{amount:1}},outputs:{clothes:{amount:1,resource:lI.clothes}}},trucks:{imageSrc:Ft,key:"ctrl+3",name:"Trucks Maker",type:"processor",description:b(()=>mi(x.trucks)),energyCost:20,tick:1,inputs:{metal:{amount:2},wheel:{amount:4}},outputs:{trucks:{amount:1,resource:lI.trucks}}},bear:{imageSrc:jt,key:"ctrl+4",name:"Teddy Bear Maker",type:"processor",description:b(()=>mi(x.bear)),energyCost:20,tick:1,inputs:{thread:{amount:1},stuffing:{amount:1},dye:{amount:1},buttons:{amount:3}},outputs:{bear:{amount:b(()=>RI[1][3].bought.value?2:1),resource:$(e)}},visible:V.days[SI-1].opened},bucketShovel:{imageSrc:pt,key:"ctrl+5",name:"Shovel and Pail Maker",type:"processor",description:b(()=>mi(x.bucketShovel)),energyCost:20,tick:1,inputs:{bucket:{amount:1},shovel:{amount:1}},outputs:{shovelBucket:{amount:1,resource:$(n)}},visible:V.days[SI-1].opened},console:{imageSrc:Ct,key:"ctrl+6",name:"Game Console Maker",type:"processor",description:b(()=>mi(x.console)),energyCost:20,tick:1,inputs:{metal:{amount:1},plastic:{amount:3},circuitBoard:{amount:1}},outputs:{console:{amount:b(()=>(RI[1][3].bought.value?3:1)*(Dl.metaMilestones[3].earned.value?6:1)),resource:$(m)}},visible:V.days[SI-1].opened},present:{imageSrc:Qt,type:"processor",key:"ctrl+7",name:"Present Wrapper",description:b(()=>`Takes in 4 dye, 4 plastic, 1 cloth, 2 boxes, and ${_(C.value)} toys of any type (from storage) to produce ${_(v.value)} presents every tick.`+(mI.bought.value?" You can feed it wheels, buttons, stuffing, and circuit boards to increase its output.":"")),tick:1,energyCost:50,inputs:{dye:{amount:4},plastic:{amount:4},cloth:{amount:1},box:{amount:2}},catalysts:b(()=>mI.bought.value?{wheel:{amount:1},buttons:{amount:1},stuffing:{amount:1},circuitBoard:{amount:1}}:[]),canProduce:b(()=>Object.values(Z).some(Q=>I.gte(Q.value,C.value))),onProduce(Q,ai){const Xi=Object.values(Z);let Ni=mI.bought.value?["wheel","buttons","stuffing","circuitBoard"].map(fi=>{var cI;return(cI=ai==null?void 0:ai[fi])!=null?cI:0}).reduce(I.add,I.dZero).add(1):1;for(ai&&["wheel","buttons","stuffing","circuitBoard"].forEach(fi=>delete ai[fi]);Q>0;){if(!Object.values(Z).some(cI=>I.gte(cI.value,C.value)))return;for(;I.lt(Xi[G].value,C.value);)G=(G+1)%Xi.length;const fi=Object.values(Z)[G];G=(G+1)%Xi.length,fi.value=I.sub(fi.value,C.value),Q--,a.value=I.add(a.value,I.times(v.value,Ni)),Ni=1}},visible:V.days[re-1].opened}},K={wood:{name:"Wood",imageSrc:lm},cloth:{name:"Cloth",imageSrc:qs},dye:{name:"Dye",imageSrc:$s},plastic:{name:"Plastic",imageSrc:In},metal:{name:"Metal",imageSrc:Ks},plank:{name:"Planks",imageSrc:Xt},box:{name:"Boxes",imageSrc:Dn},thread:{name:"Thread",imageSrc:Lt},wheel:{name:"Wheels",imageSrc:kt},buttons:{name:"Buttons",imageSrc:Mt},stuffing:{name:"Stuffing",imageSrc:Dt},shovel:{name:"Shovel",imageSrc:ft},bucket:{name:"Bucket",imageSrc:Jt},circuitBoard:{name:"Circuit Board",imageSrc:wt},block:{name:"Wooden Blocks",imageSrc:$n},clothes:{name:"Clothes",imageSrc:im},trucks:{name:"Trucks",imageSrc:em},bear:{name:"Teddy Bear",imageSrc:qn},shovelBucket:{name:"Shovel and Pail",imageSrc:Kn},console:{name:"Game Console",imageSrc:Im}},bi=Object.keys(x).reduce((Q,ai)=>(Q[ai]=je(()=>({key:x[ai].key,description:"Select "+x[ai].name,onPress(){A.value=ai},enabled:$(V.days[ns-1].opened)})),Q),{}),Ii=xe({x:0,y:0}),R=xe({x:0,y:0}),li=Ji(!1),A=Ji("cursor"),B=t({}),Mi={},Li=Ci(()=>[J(()=>({multiplier:()=>I.add(a.value,1).log10().add(1),description:"Excitment Upgrade",enabled:P.bought}))]),zi=b(()=>Li.apply(1)),si=Ai(()=>({resource:lI.clothes,cost(){return I.pow(2,I.add(this.amount.value,5)).div(zi.value)},display:{title:"Train elves to make clothes",description:"Use your finished toys to train an elf on factory work"},style:"width: 110px"})),q=Ai(()=>({resource:lI.woodenBlocks,cost(){return I.pow(2,I.add(this.amount.value,5)).div(zi.value)},display:{title:"Train elves to make wooden blocks",description:"Use your finished toys to train an elf on factory work"},style:"width: 110px"})),Wi=Ai(()=>({resource:lI.trucks,cost(){return I.pow(2,I.add(this.amount.value,5)).div(zi.value)},display:{title:"Train elves to make toy trucks",description:"Use your finished toys to train an elf on factory work"},style:"width: 110px"})),E=Ai(()=>({resource:$(e),cost(){return I.pow(2,I.add(this.amount.value,5)).div(zi.value)},display:{title:"Train elves to make bears",description:"Use your finished toys to train an elf on factory work"},style:"width: 110px",visible:()=>j(V.days[SI-1].opened.value)})),ji=Ai(()=>({resource:$(n),cost(){return I.pow(2,I.add(this.amount.value,5)).div(zi.value)},display:{title:"Train elves to make shovel and pails",description:"Use your finished toys to train an elf on factory work"},style:"width: 110px",visible:()=>j(V.days[SI-1].opened.value)})),vi=Ai(()=>({resource:$(m),cost(){return I.pow(2,I.add(this.amount.value,5)).div(zi.value)},display:{title:"Train elves to make consoles",description:"Use your finished toys to train an elf on factory work"},style:"width: 110px",visible:()=>j(V.days[SI-1].opened.value)})),uI={clothesBuyable:si,blocksBuyable:q,trucksBuyable:Wi,bearsBuyable:E,bucketBuyable:ji,consolesBuyable:vi},Pi=b(()=>Object.values(uI).map(Q=>Q.amount.value).reduce(I.add,0)),II=vI(Pi,"trained elves"),aI=b(()=>I.pow(1.05,II.value)),nI=Ai(()=>({resource:ki.logs,cost(){return I.pow(1e4,this.amount.value).times(1e72)},display:{title:"Expand Factory",description:"Use some surplus wood to slightly expand the walls of your factory. Also add +100% to the max workshop size",effectDisplay:r(()=>s(M,null,[d("+"),_(nI.amount.value),d(" each dimension")])),showAmount:!1},purchaseLimit:12,style:"width: 200px",visibility:()=>j(V.days[SI-1].opened.value)})),Hi=Ai(()=>({resource:xi.oil,cost(){return I.pow(10,this.amount.value).times(1e23)},display:{title:"Oil Fuel",description:"Use some surplus oil to generate more electricity",effectDisplay:r(()=>s(M,null,[d("+"),_(I.times(Hi.amount.value,10))])),showAmount:!1},style:"width: 200px",visibility:()=>j(V.days[SI-1].opened.value)})),_i=Ai(()=>({resource:wI.boxes,cost(){return I.pow(100,this.amount.value).times(1e80)},display:{title:"Carry toys in boxes",description:"Use some surplus boxes to speed up the whole factory",effectDisplay:r(()=>s(M,null,[d("x"),di(I.div(_i.amount.value,10).add(1)),d(" tick rate")])),showAmount:!1},style:"width: 200px",visibility:()=>j(V.days[SI-1].opened.value)})),Ei=U(()=>({resource:$(a),cost:100,display:{title:"Factory eXPerience",description:"Factory size is increased by 5."},visibility:()=>j(V.days[re-1].opened.value)})),$i=U(()=>({resource:$(a),cost:300,display:{title:"Burn some logs",description:"More energy needed? Let's burn some logs! Logs boosts maximum energy.",effectDisplay:r(()=>s(M,null,[d("x"),di(I.log10(ki.logs.value).div(100).add(1))]))},visibility:()=>j(Ei.bought.value)})),P=U(()=>({resource:$(a),cost:1e3,display:{title:"Faster Elf Training",description:"Apparently elves like presents. Let's use it to train them to work on the factory faster! Presents divides the requirement for factory elf training.",effectDisplay:r(()=>s(M,null,[d("/"),di(I.add(a.value,1).log10().add(1))]))},visibility:()=>j($i.bought.value)})),ri=U(()=>({resource:$(a),cost:5e3,display:{title:"Carrying more stuff in boxes",description:"Boxes seem really useful for carrying stuff. Why don't we use them to carry presents as well? Unlocks 2 new buyables (one of them is in the boxes layer)."},visibility:()=>j(P.bought.value)})),gi=Ai(()=>({resource:$(a),cost(){return I.add(gi.amount.value,1).pow(1.5).mul(I.pow(2,gi.amount.value)).mul(1e3)},style:"width: 400px",display:{title:"Carry boxes in... presents?",description:"Presents are made out of boxes, so shouldn't they be able to hold boxes as well? Apparently it makes the boxes more durable. Each level multiplies boxes gain by 1.5.",effectDisplay:r(()=>s(M,null,[d("x"),di(I.pow(1.5,gi.amount.value))]))},visibility:()=>j(ri.bought.value)})),mI=U(()=>({resource:$(a),cost:1e4,display:{title:"Better Presents",description:"Instead of trying to make more presents, how about we make the ones we make better? Unlocks catalysts for the present maker."},visibility:()=>j(ri.bought.value)})),Gi=U(()=>({resource:$(a),cost:1e7,display:{title:"With a bow",description:"These presents need ribbon to make the bows, right? Multiply present gain by the amount of ribbon you have"},visibility:()=>j(mI.bought.value)})),xI={expandFactory:nI,oilFuel:Hi,carryToys:_i},PI={carryBoxes:gi},RI=[[U(()=>({resource:ki.logs,cost:()=>I.pow(5,rI.value).mul(1e75),display:{title:"Sawmill Efficiency",description:"Double sawmill consumption and production and metal supplier efficiency"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:g.paper,cost:()=>I.pow(5,rI.value).mul(1e90),display:{title:"News Ticker",description:"Paper boosts tick speed"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:lI.trucks,cost:()=>I.pow(1.2,rI.value).mul(1e3),display:{title:"Haul wood in trucks",description:"Trucks multiply wood gain"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:tI.metal,cost:()=>I.pow(3,rI.value).mul(1e53),display:{title:"Diamond-tipped drills",description:"Drill power ^1.2"},visibility:()=>j(V.days[SI-1].opened.value)}))],[U(()=>({resource:lI.woodenBlocks,cost:()=>I.pow(1.2,rI.value).mul(2e3),display:{title:"Larger wood pieces",description:"Wooden block producers produce 3x as much"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:Ri.dyes.red.amount,cost:()=>I.pow(1.5,rI.value).mul(4e16),display:{title:"Colorful clothes",description:"Dye producers produce 4x as much"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:jI.plastic,cost:()=>I.pow(2,rI.value).mul(1e17),display:{title:"Improved plastic producers",description:"Plastic producers produce 4x as much"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:xi.oil,cost:()=>I.pow(1.5,rI.value).mul(1e22),display:{title:"Capitalism",description:"Console production is tripled"},visibility:()=>j(V.days[SI-1].opened.value)}))],[U(()=>({resource:Oi.coal,cost:()=>I.pow(5,rI.value).mul(1e130),display:{title:"Brighter work rooms",description:"Unused electricity makes ticks faster"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:Ri.dyes.blue.amount,cost:()=>I.pow(1.4,rI.value).mul(1e15),display:{title:"Colorful teddy bears",description:"Teddy bears produce 2x as much"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:Ri.dyes.black.amount,cost:()=>I.pow(1.5,rI.value).mul(1e6),display:{title:"New Colors",description:"Unlock white dye"},visibility:()=>j(V.days[SI-1].opened.value)})),U(()=>({resource:wI.boxes,cost:()=>I.pow(3,rI.value).mul(1e80),display:{title:"Carry ticks in boxes",description:"Tick speed x1.5"},visibility:()=>j(V.days[SI-1].opened.value)}))],[Ei,$i,P,ri],[mI,Gi]],rI=b(()=>RI.slice(0,3).flat().filter(Q=>Q.bought.value).length),wi=Promise.all([Te.load(Object.values(x).map(Q=>Q.imageSrc)),Te.load(Object.values(x).map(Q=>Q.extraImage).filter(Q=>Q!=null)),Te.load(Object.values(K).map(Q=>Q.imageSrc))]),yi=new ym({backgroundAlpha:0}),ui=new kn;let pi=new cn;const _I=new cn;let hI=new Js;pi.zIndex=0,_I.zIndex=1,ui.zIndex=2,yi.stage.addChild(ui,pi,_I),yi.stage.sortableChildren=!0;let ii=!1;NI.on("onLoad",async()=>{if(ii)return;ii=!1,pi.destroy({children:!0}),pi=new cn,yi.stage.addChild(pi);const Q=new kn;if(pi.addChild(Q),AI(()=>{Q.clear(),Q.beginFill(7365725),Q.drawRect(-L.value*sI/2,-L.value*sI/2,L.value*sI,L.value*sI),Q.endFill()}),await wi,Array.isArray(B.value))B.value={};else for(const ai in B.value){const Xi=B.value[ai];if((Xi==null?void 0:Xi.type)===void 0){delete B.value[ai];continue}const[Ni,fi]=ai.split("x").map(cI=>+cI);Ui(Ni,fi,Xi)}ii=!0,AI(Ki)});function Zi(Q,ai,Xi){var Ni,fi,cI,ol;if(ai===void 0)_I.removeChild(Q.sprite);else if(ai.type==="conveyor")Q.turbulance=Math.random()*.4-.2,ai.nextPackages.push(Q);else{const Nl=Xi;Nl.inputStock!==void 0&&(Nl.inputStock[Q.type]=Math.min(((Ni=Nl.inputStock[Q.type])!=null?Ni:0)+1,(ol=(cI=(fi=x[ai.type].inputs)==null?void 0:fi[Q.type])==null?void 0:cI.capacity)!=null?ol:1/0)),_I.removeChild(Q.sprite)}}NI.on("update",Q=>{var Xi,Ni,fi,cI,ol,Nl,Sl;if(!ii||Zl.value)return;const ai=I.times(f.value,Q).toNumber();for(const el in B.value){const[DI,bl]=el.split("x").map(ml=>+ml),ve=B.value[el],_e=Mi[el];if(ve===void 0||_e===void 0)continue;const Hl=x[ve.type];if(ve.type==="conveyor"){const ml=ve,Ol=_e;if(Ol.type!=="conveyor")throw new TypeError("this should not happen");Ol.packages=Ol.packages.concat(Ol.nextPackages),Ol.nextPackages=[];for(let Cl=0;Cl=1+Jl.turbulance){const hl=Mi[DI+_l+"x"+bl],Ke=B.value[DI+_l+"x"+bl];Zi(Jl,hl,Ke),Ol.packages.splice(Cl,1),Cl--}else{const hl=_l*Math.min(Math.abs(DI+1.3*_l-Jl.x),ai);Jl.x+=hl,Jl.sprite.x+=hl*sI}else if((Jl.y-bl)*_l>=1+Jl.turbulance){const hl=Mi[DI+"x"+(bl+_l)],Ke=B.value[DI+"x"+(bl+_l)];Zi(Jl,hl,Ke),Ol.packages.splice(Cl,1),Cl--}else{const hl=_l*Math.min(Math.abs(bl+1.3*_l-Jl.y),ai);Jl.y+=hl,Jl.sprite.y+=hl*sI}}}else{const ml=ve,Ol=_e;if(ml.ticksDone+=ai,ml.ticksDone>=Hl.tick&&Ol.canProduce.value){const js=Math.floor(ml.ticksDone/Hl.tick);if((Xi=Hl.onProduce)==null||Xi.call(Hl,js,ml.inputStock),Hl.inputs!==void 0){ml.inputStock===void 0&&(ml.inputStock={});for(const[Vs,Le]of Object.entries(Hl.inputs))ml.inputStock[Vs]=((Ni=ml.inputStock[Vs])!=null?Ni:0)-c(Le.amount)}if(Hl.outputs!==void 0){ml.outputStock===void 0&&(ml.outputStock={});for(const[Vs,Le]of Object.entries(Hl.outputs))Le.resource!=null?Le.resource.value=I.add(Le.resource.value,I.times(C.value,c(Le.amount))):ml.outputStock[Vs]=((fi=ml.outputStock[Vs])!=null?fi:0)+c(Le.amount)}ml.ticksDone-=js*Hl.tick;const us=Date.now(),yd=(us-Ol.lastFactoryProd)/1e3;Ol.lastProdTimes.push(yd),Ol.lastProdTimes.length>10&&Ol.lastProdTimes.shift(),Ol.lastFactoryProd=us}const Cl=[];if(((cI=B.value[DI+"x"+(bl+1)])==null?void 0:cI.type)==="conveyor"&&B.value[DI+"x"+(bl+1)].direction===Yi.Down&&Cl.push([0,1]),((ol=B.value[DI+"x"+(bl-1)])==null?void 0:ol.type)==="conveyor"&&B.value[DI+"x"+(bl-1)].direction===Yi.Up&&Cl.push([0,-1]),((Nl=B.value[DI+1+"x"+bl])==null?void 0:Nl.type)==="conveyor"&&B.value[DI+1+"x"+bl].direction===Yi.Right&&Cl.push([1,0]),((Sl=B.value[DI-1+"x"+bl])==null?void 0:Sl.type)==="conveyor"&&B.value[DI-1+"x"+bl].direction===Yi.Left&&Cl.push([-1,0]),Cl.length<=0)continue;const[Jl,qe]=Cl[Math.floor(Math.random()*Cl.length)];let $e;if(ml.outputStock!==void 0){for(const[js,us]of Object.entries(ml.outputStock))if(us>=1){$e=[js,us],ml.outputStock[js]--;break}}if($e===void 0)continue;const _l=Te.get(K[$e[0]].imageSrc),hl=new Js(_l),Ke=L.value%2===0?sI/2:0;hl.x=(DI+Jl*.3+(Jl==0?Math.random()*.4-.2:0))*sI+Ke,hl.y=(bl+qe*.3+(qe==0?Math.random()*.4-.2:0))*sI+Ke,hl.anchor.set(.5),hl.width=sI/2.5,hl.height=sI/2.5;const bd={sprite:hl,x:hl.x/sI,y:hl.y/sI,turbulance:Math.random()*.4-.2,type:$e[0]};Mi[DI+Jl+"x"+(bl+qe)].nextPackages.push(bd),_I.addChild(hl)}}});function Ui(Q,ai,Xi){var Nl,Sl;if(Q<-L.value/2||Q>=L.value/2||ai<-L.value/2||ai>=L.value/2)return;const Ni=x[Xi.type];if(Ni==null)return;const fi=Te.get(Ni.imageSrc),cI=new Js(fi);if(AI(()=>{L.value%2===0?(cI.x=(Q+.5)*sI,cI.y=(ai+.5)*sI):(cI.x=Q*sI,cI.y=ai*sI)}),cI.width=sI,cI.height=sI,cI.anchor.x=.5,cI.anchor.y=.5,cI.rotation=[Yi.Right,Yi.Down,Yi.Left,Yi.Up].indexOf((Nl=Xi.direction)!=null?Nl:Yi.Right)*Math.PI/2,Ni.extraImage!=null){const el=Te.get(Ni.extraImage),DI=new Js(el);DI.width=sI/3,DI.height=sI/3,DI.position.set(-sI/3,0),cI.addChild(DI)}B.value[Q+"x"+ai]={ticksDone:0,direction:Yi.Right,inputStock:Ni.inputs===void 0?void 0:Object.fromEntries(Object.entries(Ni.inputs).map(el=>[el[0],0])),outputStock:Ni.outputs===void 0?void 0:Object.fromEntries(Object.entries(Ni.outputs).map(el=>[el[0],0])),...Xi};const ol=Xi.type==="conveyor";Mi[Q+"x"+ai]={type:Xi.type,packages:ol?[]:void 0,nextPackages:ol?[]:void 0,lastProdTimes:ol?void 0:xe([]),lastFactoryProd:ol?void 0:Date.now()-1e3*I.div((Sl=Xi.ticksDone)!=null?Sl:0,f.value).toNumber(),average:ol?void 0:b(()=>{const el=Mi[Q+"x"+ai].lastProdTimes;if(el.length!==0)return I.mul(el.length,Ni.tick).div(el.reduce((DI,bl)=>DI+bl,0)).div(f.value).toNumber()}),canProduce:b(()=>{var DI,bl,ve,_e,Hl,ml,Ol;if(Xi.type==="conveyor")return!0;if(!((bl=(DI=Ni.canProduce)==null?void 0:DI.value)==null||bl))return!1;const el=B.value[Q+"x"+ai];if(Ni.inputs!==void 0){for(const[Cl,Jl]of Object.entries(Ni.inputs))if(((_e=(ve=el.inputStock)==null?void 0:ve[Cl])!=null?_e:0)((Ol=Jl.capacity)!=null?Ol:1/0))return!1}return!0}),sprite:cI},pi.addChild(cI)}function ZI(Q,ai){const Xi=Mi[Q+"x"+ai];if(Xi!==void 0){if(Xi.type==="conveyor"){const Ni=Xi;for(const fi of Ni.packages)fi.sprite.destroy()}delete B.value[Q+"x"+ai],delete Mi[Q+"x"+ai],pi.removeChild(Xi.sprite)}}function Ki(){yi.resize(),ui.clear();const Q=R.x*sI+yi.view.width/2,ai=R.y*sI+yi.view.height/2;if(pi.x=_I.x=Q,pi.y=_I.y=ai,ui.removeChild(hI),li.value&&A.value!=="cursor"){const Xi=L.value%2===0?sI/2:0,{tx:Ni,ty:fi}=pi.localTransform,cI=Re(Ii.x-Ni,sI)+Xi+Ni-sI/2,ol=Re(Ii.y-fi,sI)+Xi+fi-sI/2;ui.lineStyle(4,8421504,1),ui.drawRect(cI,ol,sI,sI);const Nl=x[A.value],Sl=Te.get(Nl.imageSrc);hI=new Js(Sl),hI.x=cI,hI.y=ol,hI.width=sI,hI.height=sI,hI.alpha=.5,hI.alpha=.5,ui.addChild(hI)}}const qi=Ji(!1),dI=Ji(!1),oI=Ji(void 0),tl=Rl(void 0),Zl=Ji(!1);function Xl(Q){const{x:ai,y:Xi}=o(Q);if(Ii.x=ai,Ii.y=Xi,qi.value&&(dI.value||A.value==="cursor"&&(Math.abs(Q.movementX)>2||Math.abs(Q.movementY)>2))&&(dI.value=!0,R.x+=Q.movementX/sI,R.y+=Q.movementY/sI,R.x=Math.min(Math.max(R.x,(-L.value+1)/2),(L.value+1)/2),R.y=Math.min(Math.max(R.y,(-L.value+1)/2),(L.value+1)/2)),!qi.value&&!dI.value){const{tx:Ni,ty:fi}=pi.localTransform,cI=Math.round(Re(ai-Ni,sI)/sI)+"x"+Math.round(Re(Xi-fi,sI)/sI);oI.value=B.value[cI],tl.value=Mi[cI]}}function gl(Q){window.addEventListener("pointerup",Pl),qi.value=!0,Q.button===1&&(dI.value=!0)}function Pl(Q){if(!dI.value){const{tx:ai,ty:Xi}=pi.localTransform;let{x:Ni,y:fi}=o(Q);Ni=Re(Ni-ai,sI)/sI,fi=Re(fi-Xi,sI)/sI,Q.button===0&&(A.value==="rotateLeft"?B.value[Ni+"x"+fi]!=null&&B.value[Ni+"x"+fi].direction!=null&&(B.value[Ni+"x"+fi]={...B.value[Ni+"x"+fi],direction:tm(B.value[Ni+"x"+fi].direction,Yi.Left)},Mi[Ni+"x"+fi].sprite.rotation-=Math.PI/2):A.value==="rotateRight"?B.value[Ni+"x"+fi]!=null&&B.value[Ni+"x"+fi].direction!=null&&(B.value[Ni+"x"+fi]={...B.value[Ni+"x"+fi],direction:tm(B.value[Ni+"x"+fi].direction,Yi.Right)},Mi[Ni+"x"+fi].sprite.rotation+=Math.PI/2):A.value==="delete"?ZI(Ni,fi):A.value!=="cursor"&&B.value[Ni+"x"+fi]==null&&Ui(Ni,fi,{type:A.value}))}window.removeEventListener("pointerup",Pl),qi.value=dI.value=!1,Xl(Q)}function Di(){li.value=!0}function VI(){li.value=!1,oI.value=void 0}function Il(Q){A.value=Q}function ul(){for(const[Q,ai]of Object.entries(Mi))if(ai!=null)if(ai.type==="conveyor"){const Xi=ai;for(const Ni of[...Xi.nextPackages,...Xi.packages])Ni.sprite.destroy(),_I.removeChild(Ni.sprite);Xi.nextPackages=[],Xi.packages=[]}else{const Xi=B.value[Q],Ni=ai;if(Xi.outputStock!==void 0)for(const fi in Xi.outputStock)delete Xi.outputStock[fi];if(Xi.inputStock!==void 0)for(const fi in Xi.inputStock)delete Xi.inputStock[fi];Xi.ticksDone=0,Ni.lastFactoryProd=Date.now(),Ni.lastProdTimes.splice(0,1/0)}}function T(){for(let Q=Math.floor(-L.value/2);Q+Ni);ZI(ai,Xi)}}function TI(){R.x=0,R.y=0}function Ml(){Zl.value=!Zl.value}function $I(Q,ai){Q.dataTransfer.setData("name",ai)}function FI(Q){Q.preventDefault();const{tx:ai,ty:Xi}=pi.localTransform;let{x:Ni,y:fi}=o(Q);Ni=Re(Ni-ai,sI)/sI,fi=Re(fi-Xi,sI)/sI;const cI=Q.dataTransfer.getData("name");B.value[Ni+"x"+fi]==null&&Ui(Ni,fi,{type:cI})}const zl=Ji(!1),Vl=r(()=>s("div",{class:{"comp-container":!0,hovered:zl.value}},[s("div",{class:"comp-list"},[s("div",{class:"comp-list-child",onPointerenter:()=>zl.value=!0,onPointerleave:()=>zl.value=!1},[Object.entries(x).map(Q=>{var Ni,fi;const ai=Q[0],Xi=Q[1];return c(Xi.visible)===!1?null:s("div",{class:"comp"},[s("img",{src:Xi.imageSrc,class:{selected:A.value===ai},onClick:()=>Il(ai),draggable:"true",onDragstart:cI=>$I(cI,ai)},null),Xi.extraImage==null?null:s("img",{src:Xi.extraImage,class:"producedItem"},null),s("div",{class:{"comp-info":!0}},[s("h3",null,[x[ai].name+" ",s(Ze,{hotkey:bi[ai]},null)]),s("br",null,null),c(x[ai].description),(Ni=x[ai].energyCost)!=null&&Ni?s(M,null,[s("br",null,null),d("Energy Consumption:")," ",_((fi=x[ai].energyCost)!=null?fi:0)]):null])])})])])]));function Ve(Q,ai,Xi,Ni=!0){if(!(Q==null||ai==null))return s(M,null,[s("br",null,null),s("h5",null,[Xi]),Object.keys(ai).map(fi=>{var cI,ol,Nl,Sl,el;return s("div",null,[(cI=K[fi])==null?void 0:cI.name,d(":")," ",((ol=ai[fi])==null?void 0:ol.resource)!=null?_(ai[fi].resource.value):_((Nl=Q[fi])!=null?Nl:0),Ni&&((Sl=ai[fi])==null?void 0:Sl.amount)!=null?" / "+_(c(ai[fi].amount)):"",((el=ai[fi])==null?void 0:el.capacity)!=null?" / "+_(ai[fi].capacity):""])})])}const Ql=r(()=>{var cI,ol,Nl,Sl,el,DI;if(oI.value==null||tl.value==null)return"";const Q=L.value%2===0?sI/2:0,ai=Ii.x+Q,Xi=Ii.y+Q,Ni=ai+((ol=(cI=document.getElementById("factory-info"))==null?void 0:cI.clientWidth)!=null?ol:0)>yi.view.width-30,fi=Xi+((Sl=(Nl=document.getElementById("factory-info"))==null?void 0:Nl.clientHeight)!=null?Sl:0)>yi.view.height-30;return s("div",{class:"info-container",id:"factory-info",style:{...Ni?{right:yi.view.width-ai+"px"}:{left:ai+148+"px"},...fi?{bottom:yi.view.height-Xi+"px"}:{top:Xi+"px"}}},[s("h3",null,[x[oI.value.type].name]),s("br",null,null),c(x[oI.value.type].description),s("br",null,null),oI.value.type!=="conveyor"&&tl.value.type!=="conveyor"?s(M,null,[Ve(oI.value.inputStock,{...(el=x[oI.value.type].inputs)!=null?el:{},...(DI=c(x[oI.value.type].catalysts))!=null?DI:{}},"Inputs:"),Ve(oI.value.outputStock,x[oI.value.type].outputs,"Outputs:",!1),s("br",null,null),d("Efficency:")," ",tl.value.average.value!==void 0?s("span",{style:{color:tl.value.average.value>=.995?"fuchsia":tl.value.average.value>=.9?"lime":tl.value.average.value>=.5?"yellow":"red"}},[_(tl.value.average.value*100)]):"--",d("%")]):void 0])}),Ul=yt({dashboard:()=>({tab:_n(()=>({display:r(()=>s(M,null,[s("div",null,[V.day.value===ns?`Reach ${di(ze)} for each toy to complete the day`:V.day.value===SI?`Reach ${di(Fs)} for each toy to complete the day`:V.day.value===re?`Reach ${di(ks)} presents`:`${i} Complete!`," ",d("-")," ",s("button",{class:"button",style:"display: inline-block;",onClick:()=>F.value=!0},[d("Check Modifiers")])]),hi(ll),s(ti,null,null),s(Be,null,{default:()=>[s(Ue,{resource:lI.clothes,image:im,color:"lightblue"},null),s(Ue,{resource:lI.woodenBlocks,image:$n,color:"cornflowerblue"},null),s(Ue,{resource:lI.trucks,image:em,color:"cadetblue"},null),V.days[SI-1].opened.value===!0?s(M,null,[s(Ue,{resource:e,image:qn,color:"teal"},null),s(Ue,{resource:n,image:Kn,color:"cyan"},null),s(Ue,{resource:m,image:Im,color:"dodgerblue"},null)]):null,V.days[re-1].opened.value===!0?s(M,null,[s(Ue,{resource:a,image:gm,color:"green"},null)]):void 0]}),s(ti,null,null),s(sl,{resource:II,color:"green",effectDisplay:`which improve the factory tick rate by ${di(aI.value)}x`},null),zI(...Object.values(uI)),s(ti,null,null),xl(Object.values(xI),Object.values(PI)),s(ti,null,null),s("div",{style:"width: 600px"},[d("Every upgrade purchased below increases the price of the other upgrades")]),s(ti,null,null),xl(...RI.slice(0,3)),s(ti,null,null),xl(...RI.slice(3))]))})),display:"Dashboard"}),factory:()=>({tab:_n(()=>({display:r(()=>s(M,null,[hi(H),s("div",{class:"factory-container"},[s(Ht,{application:yi,onPointermove:Xl,onPointerdown:gl,onPointerenter:Di,onPointerleave:VI,onContextmenu:Q=>Q.preventDefault(),onDrop:Q=>FI(Q),onDragover:Q=>Q.preventDefault()},null),Vl(),Ql()])]))})),display:"Factory"})},()=>({classes:{"factory-tabs":!0}})),[wl,ei]=vl(()=>[{title:"Energy",modifier:y,base:0},{title:"Tick Rate",modifier:N,base:1,unit:"/s"},{title:"Present Multipliers",modifier:O,base:1}]),F=Ji(!1),bI=r(()=>s(EI,{modelValue:F.value,"onUpdate:modelValue":Q=>F.value=Q},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:()=>s(M,null,[hi(wl),I.gte(p.value,5)?s(M,null,[s("br",null,null),d("Note: the actual tick rate is capped at 5 TPS, but you'll gain extra toys based on excessive tick rate as compensation.")," ",V.days[re-1].opened.value===!0?"Present maker's toy requirement and production is also affected by tick overflow.":void 0]):""])})),ll=HI(()=>({direction:Yi.Right,width:600,height:25,fillStyle:"animation: 15s factory-bar linear infinite",textStyle:"color: var(--feature-foreground)",progress:()=>V.day.value===ns?I.div(lI.clothes.value,ze).clampMax(1).add(I.div(lI.woodenBlocks.value,ze).clampMax(1)).add(I.div(lI.trucks.value,ze).clampMax(1)).div(3):V.day.value===SI?[lI.clothes,lI.woodenBlocks,lI.trucks,e,n,m].map(Q=>I.div(Q.value,Fs).clampMax(1)).reduce(I.add,I.dZero).div(6):V.day.value===re?I.div(a.value,ks).clampMax(1):1,display:r(()=>V.day.value===ns?s(M,null,[[lI.clothes.value,lI.woodenBlocks.value,lI.trucks.value].filter(Q=>I.gte(Q,ze)).length," ",d("/ 3")]):V.day.value===SI?s(M,null,[[lI.clothes,lI.woodenBlocks,lI.trucks,e,n,m].filter(Q=>I.gte(Q.value,Fs)).length," ",d("/ 6")]):V.day.value===re?s(M,null,[_(a.value),d("/"),_(ks),d(" presents")]):"")}));return AI(()=>{(V.day.value===ns&&I.gte(lI.clothes.value,ze)&&I.gte(lI.woodenBlocks.value,ze)&&I.gte(lI.trucks.value,ze)||V.day.value===SI&&[lI.clothes,lI.woodenBlocks,lI.trucks,e,n,m].filter(Q=>I.gte(Q.value,Fs)).length>=6||V.day.value===re&&I.gte(a.value,ks))&&V.completeDay()}),{name:i,day:ns,advancedDay:SI,color:l,minWidth:700,minimizable:!0,style:{overflow:"hidden"},components:B,elfBuyables:uI,bears:e,bucketAndShovels:n,consoles:m,presents:a,tabs:Ul,factoryBuyables:xI,factoryBuyables2:PI,carryBoxes:gi,generalTabCollapsed:ei,hotkeys:bi,upgrades:RI,computedTickRate:p,display:r(()=>s(M,null,[hi(bI),hi(Ul)]))}}),eo="cloth",ms=8,fI=al(eo,function(){const i="Cloth",l="white",e=vI(0,"cloth"),n=vI(0,"wool"),m=vI(10,"sheep"),a=t(0),Z=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(a.value,uI.value)})),o=il(()=>({display:{title:r(()=>s("h3",null,[d("Breed sheep "),s(Ze,{hotkey:f},null)])),description:r(()=>s(M,null,[d("Breed "),yI(I.floor(ji.value)),d(" sheep"),s("br",null,null),hi(Z)]))},style:{minHeight:"80px"},canClick:()=>I.gte(a.value,uI.value)&&(!V.isMastery.value||rI.value),onClick(){if(!c(o.canClick))return;const wi=I.floor(ji.value);if(m.value=I.add(m.value,wi),a.value=0,rI.value){let yi=I.min(m.value,II.value).floor();n.value=I.add(n.value,yi),yi=I.min(n.value,_i.value).floor(),e.value=I.add(e.value,yi)}}})),y=t(0),u=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(y.value,nI.value)})),w=il(()=>({display:{title:r(()=>s("h3",null,[d("Shear sheep "),s(Ze,{hotkey:C},null)])),description:r(()=>s(M,null,[d("Shear up to "),yI(I.floor(II.value)),d(" sheep"),s("br",null,null),hi(u)]))},style:{minHeight:"80px"},canClick:()=>I.gte(y.value,nI.value)&&(!V.isMastery.value||rI.value),onClick(){if(!c(w.canClick))return;if(rI.value){const yi=I.floor(ji.value);m.value=I.add(m.value,yi)}const wi=I.min(m.value,II.value).floor();if(n.value=I.add(n.value,wi),y.value=0,rI.value){const yi=I.min(n.value,_i.value).floor();e.value=I.add(e.value,yi)}}})),W=t(0),N=HI(()=>({direction:Yi.Right,width:100,height:10,style:"margin-top: 8px",borderStyle:"border-color: black",baseStyle:"margin-top: -1px",fillStyle:"margin-top: -1px; transition-duration: 0s; background: black",progress:()=>I.div(W.value,$i.value)})),p=il(()=>({display:{title:r(()=>s("h3",null,[d("Spin wool "),s(Ze,{hotkey:D},null)])),description:r(()=>s(M,null,[d("Spin "),yI(I.floor(_i.value)),d(" wool"),s("br",null,null),hi(N)]))},style:{minHeight:"80px"},canClick:()=>I.gte(W.value,$i.value)&&(!V.isMastery.value||rI.value),onClick(){if(!c(p.canClick))return;if(rI.value){let yi=I.floor(ji.value);m.value=I.add(m.value,yi),yi=I.min(m.value,II.value).floor(),n.value=I.add(n.value,yi)}const wi=I.min(n.value,_i.value).floor();e.value=I.add(e.value,wi),rI.value||(n.value=I.sub(n.value,wi)),W.value=0}})),f=je(()=>({key:"b",description:"Breed sheep",onPress:()=>{o.canClick.value&&o.onClick()},enabled:$(V.days[ms-1].opened)})),C=je(()=>({key:"h",description:"Shear sheep",onPress:()=>{w.canClick.value&&w.onClick()},enabled:$(V.days[ms-1].opened)})),D=je(()=>({key:"s",description:"Spin wool",onPress:()=>{p.canClick.value&&p.onClick()},enabled:$(V.days[ms-1].opened)})),L=Ai(()=>({resource:ki.logs,cost(){let wi=this.amount.value;return I.gte(wi,100)&&(wi=I.pow(wi,2).div(100)),wi=I.pow(.95,g.books.clothBook.totalAmount.value).times(wi),I.pow(1.5,wi).times(1e14)},inverseCost(wi){let yi=I.div(wi,1e14).log(1.5);return yi=yi.div(I.pow(.95,g.books.clothBook.totalAmount.value)),I.gte(yi,100)&&(yi=I.mul(yi,100).root(2)),I.isNaN(yi)?I.dZero:yi.floor().max(0)},display:{title:"Build more pens",description:"Breed +1 sheep at once"}})),O=Ai(()=>({resource:tI.metal,cost(){let wi=this.amount.value;return I.gte(wi,100)&&(wi=I.pow(wi,2).div(100)),wi=I.pow(.95,g.books.clothBook.totalAmount.value).times(wi),I.pow(1.4,wi).times(1e4)},inverseCost(wi){let yi=I.div(wi,1e4).log(1.4);return yi=yi.div(I.pow(.95,g.books.clothBook.totalAmount.value)),I.gte(yi,100)&&(yi=I.mul(yi,100).root(2)),I.isNaN(yi)?I.dZero:yi.floor().max(0)},display:{title:"Make stronger shears",description:"Shear +1 sheep at once"}})),v=Ai(()=>({resource:g.paper,cost(){let wi=this.amount.value;return I.gte(wi,100)&&(wi=I.pow(wi,2).div(100)),wi=I.pow(.95,g.books.clothBook.totalAmount.value).times(wi),I.pow(1.3,wi).times(1e6)},inverseCost(wi){let yi=I.div(wi,1e6).log(1.3);return yi=yi.div(I.pow(.95,g.books.clothBook.totalAmount.value)),I.gte(yi,100)&&(yi=I.mul(yi,100).root(2)),I.isNaN(yi)?I.dZero:yi.floor().max(0)},display:{title:"Learn how to spin",description:"Spin +1 wool at once"}})),H=U(()=>({resource:$(e),cost:100,display:{title:"Lumberjack Boots",description:"Quadruple log gain"}})),mi=U(()=>({resource:$(n),cost:150,visibility:()=>j(H.bought.value),display:{title:"Lumberjack Jeans",description:"Quadruple trees cut"}})),G=U(()=>({resource:$(m),cost:200,visibility:()=>j(mi.bought.value),display:{title:"Lumberjack Plaid",description:"Quadruple trees planted"}})),K={treesUpgrade4:U(()=>({resource:$(e),cost:1e3,visibility:()=>j(jI.upgrades.clothTools.bought.value),display:{title:"Felt-Gripped Axe",description:"10x log gain"}})),treesUpgrade3:G,treesUpgrade2:mi,treesUpgrade1:H},bi=U(()=>({resource:$(e),cost:150,display:{title:"Mining boots",description:"Quadruple ash gain"}})),Ii=U(()=>({resource:$(n),cost:225,visibility:()=>j(bi.bought.value),display:{title:"Mining overalls",description:"Double coal gain"}})),R=U(()=>({resource:$(m),cost:300,visibility:()=>j(Ii.bought.value),display:{title:"Mining helmet",description:"Triple coal gain"}})),A={metalUpgrade4:U(()=>({resource:$(e),cost:2e3,visibility:()=>j(jI.upgrades.clothTools.bought.value),display:{title:"Felt-Gripped Pick",description:"Quadruple coal gain"}})),metalUpgrade3:R,metalUpgrade2:Ii,metalUpgrade1:bi},B=U(()=>({resource:$(e),cost:200,display:{title:"Scholar's shoes",description:"Double paper gain"}})),Mi=U(()=>({resource:$(n),cost:200,visibility:()=>j(B.bought.value),display:{title:"Scholar's slacks",description:"Double paper gain"}})),Li=U(()=>({resource:$(m),cost:400,visibility:()=>j(Mi.bought.value),display:{title:"Scholar's jacket",description:"Double paper gain"}})),si={paperUpgrade4:U(()=>({resource:$(e),cost:4e3,visibility:()=>j(jI.upgrades.clothTools.bought.value),display:{title:"Felt Elbow Pads",description:"10x paper gain"}})),paperUpgrade3:Li,paperUpgrade2:Mi,paperUpgrade1:B},q=b(()=>I.add(ki.computedAutoCuttingAmount.value,1).root(9)),Wi=b(()=>I.add(Ri.dyeSum.value,10).log10()),E=Ci(()=>[Si(()=>({addend:L.amount,description:"Build more pens"})),J(()=>({multiplier:()=>I.div(jI.buyables.clothGains.amount.value,10).add(1),description:"Plastic Shepherd",enabled:()=>I.gte(jI.buyables.clothGains.amount.value,1)})),J(()=>({multiplier:2,description:"Shepherding for Dummies",enabled:g.upgrades.clothUpgrade.bought})),J(()=>({multiplier:Wi,description:"Gingersnap Level 2",enabled:Y.elfTraining.clothElfTraining.milestones[1].earned})),J(()=>({multiplier:q,description:"Holly Level 3",enabled:Y.elfTraining.cutterElfTraining.milestones[2].earned})),J(()=>({multiplier:2,description:"1000% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone5.earned})),J(()=>({multiplier:2,description:"Carry cloth in boxes",enabled:wI.row3Upgrades.clothUpgrade.bought})),J(()=>({multiplier:Ri.boosts.yellow2,description:"Yellow Dye",enabled:Ri.masteryEffectActive})),ee.reindeer.cupid.modifier]),ji=b(()=>E.apply(1)),vi=Ci(()=>[]),uI=b(()=>vi.apply(1)),Pi=Ci(()=>[Si(()=>({addend:O.amount,description:"Make stronger shears"})),J(()=>({multiplier:()=>I.div(jI.buyables.clothGains.amount.value,10).add(1),description:"Plastic Shepherd",enabled:()=>I.gte(jI.buyables.clothGains.amount.value,1)})),J(()=>({multiplier:2,description:"Shepherding for Dummies",enabled:g.upgrades.clothUpgrade.bought})),J(()=>({multiplier:Wi,description:"Gingersnap Level 2",enabled:Y.elfTraining.clothElfTraining.milestones[1].earned})),J(()=>({multiplier:q,description:"Holly Level 3",enabled:Y.elfTraining.cutterElfTraining.milestones[2].earned})),J(()=>({multiplier:2,description:"1000% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone5.earned})),J(()=>({multiplier:2,description:"Carry cloth in boxes",enabled:wI.row3Upgrades.clothUpgrade.bought})),J(()=>({multiplier:Ri.boosts.yellow2,description:"Yellow Dye",enabled:Ri.masteryEffectActive})),J(()=>({multiplier:10,description:"600 Presents Packed",enabled:gI.packingMilestones.clothBoost.earned})),ee.reindeer.cupid.modifier]),II=b(()=>Pi.apply(1)),aI=Ci(()=>[]),nI=b(()=>aI.apply(1)),Hi=Ci(()=>[Si(()=>({addend:v.amount,description:"Learn how to spin"})),J(()=>({multiplier:()=>I.div(jI.buyables.clothGains.amount.value,10).add(1),description:"Plastic Shepherd",enabled:()=>I.gte(jI.buyables.clothGains.amount.value,1)})),J(()=>({multiplier:2,description:"Shepherding for Dummies",enabled:g.upgrades.clothUpgrade.bought})),J(()=>({multiplier:Wi,description:"Gingersnap Level 2",enabled:Y.elfTraining.clothElfTraining.milestones[1].earned})),J(()=>({multiplier:q,description:"Holly Level 3",enabled:Y.elfTraining.cutterElfTraining.milestones[2].earned})),J(()=>({multiplier:2,description:"1000% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone5.earned})),J(()=>({multiplier:2,description:"Carry cloth in boxes",enabled:wI.row3Upgrades.clothUpgrade.bought})),J(()=>({multiplier:Ri.boosts.yellow2,description:"Yellow Dye",enabled:Ri.masteryEffectActive})),ee.reindeer.cupid.modifier,J(()=>({multiplier:()=>Object.values(Gl.components).reduce((wi,yi)=>yi+(wi.type=="cloth"?1:0),1),description:"300,000 Cities Solved",enabled:Dl.metaMilestones[4].earned}))]),_i=b(()=>Hi.apply(1)),Ei=Ci(()=>[]),$i=b(()=>Ei.apply(1)),[P,ri]=vl(()=>[{title:"Sheep Gain",modifier:E,base:1},{title:"Sheep Breeding Cooldown",modifier:vi,base:1,visible:!1,unit:"s"},{title:"Shearing Amount",modifier:Pi,base:1},{title:"Shearing Cooldown",modifier:aI,base:1,visible:!1,unit:"s"},{title:"Spinning Amount",modifier:Hi,base:1},{title:"Spinning Cooldown",modifier:Ei,base:1,visible:!1,unit:"s"}]),gi=Ji(!1),mI=r(()=>s(EI,{modelValue:gi.value,"onUpdate:modelValue":wi=>gi.value=wi},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:P}));NI.on("update",wi=>{I.lt(V.day.value,ms)||(I.gte(a.value,uI.value)?a.value=uI.value:(a.value=I.add(a.value,wi),o.isHolding.value&&o.onClick()),I.gte(y.value,nI.value)?y.value=nI.value:(y.value=I.add(y.value,wi),w.isHolding.value&&w.onClick()),I.gte(W.value,$i.value)?W.value=$i.value:(W.value=I.add(W.value,wi),p.isHolding.value&&p.onClick()))});const{total:Gi,trackerDisplay:xI}=de({resource:e,goal:1e3,name:i,day:ms,background:l,textColor:"var(--feature-foreground)",modal:{show:gi,display:mI}}),PI={cloth:t(0),totalCloth:t(0),wool:t(0),sheep:t(0),buildPens:{amount:t(0)},betterShears:{amount:t(0)},fasterSpinning:{amount:t(0)},treesUpgrades:{treesUpgrade1:{bought:t(!1)},treesUpgrade2:{bought:t(!1)},treesUpgrade3:{bought:t(!1)},treesUpgrade4:{bought:t(!1)}},metalUpgrades:{metalUpgrade1:{bought:t(!1)},metalUpgrade2:{bought:t(!1)},metalUpgrade3:{bought:t(!1)},metalUpgrade4:{bought:t(!1)}},paperUpgrades:{paperUpgrade1:{bought:t(!1)},paperUpgrade2:{bought:t(!1)},paperUpgrade3:{bought:t(!1)},paperUpgrade4:{bought:t(!1)}}},RI=t(!1),rI=b(()=>{var wi;return RI.value||((wi=V.currentlyMastering.value)==null?void 0:wi.name)===i});return{name:i,day:ms,color:l,cloth:e,totalCloth:Gi,wool:n,sheep:m,buildPens:L,betterShears:O,fasterSpinning:v,treesUpgrades:K,metalUpgrades:A,paperUpgrades:si,generalTabCollapsed:ri,breedingProgress:a,shearingProgress:y,spinningProgress:W,breedSheepHK:f,shearSheepHK:C,spinWoolHK:D,minWidth:700,display:r(()=>s(M,null,[hi(xI),s(ti,null,null),rI.value?s(M,null,[s("div",{class:"decoration-effect ribbon"},[d("Decoration effect:"),s("br",null,null),d("Performing any action performs all actions and spinning doesn't spend wool")]),s(ti,null,null)]):null,s(sl,{resource:e,style:"margin-bottom: 0"},null),s(sl,{resource:n,style:"margin-bottom: 0"},null),s(sl,{resource:m,style:"margin-bottom: 0"},null),zI(o,w,p),zI(L,O,v),s(ti,null,null),s(Be,null,{default:()=>[Ie(...Object.values(K)),Ie(...Object.values(A)),Ie(...Object.values(si))]})])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(e.value),d(" "),e.displayName])])),mastery:PI,mastered:RI}}),so="dyes",jn=11,Ri=al(so,function(){const i="Dyes",l="#D4D4F4",e=b(()=>{var L;return D.value||((L=V.currentlyMastering.value)==null?void 0:L.name)===i});function n(L){var bi;const O=vI(b(()=>I.add(G.amount.value,1).mul(G.amount.value).div(2).mul(H.value)),L.name),v=Ci(()=>{const Ii=[Si(()=>({addend:()=>I.add(G.amount.value,1),description:`${L.name} Chambers`}))];return L.color==="yellow"&&Ii.push(J(()=>({multiplier(){return I.add(m.red.amount.value,1).log10().add(1).pow(.75)},description:"Dye Synergy I",enabled:xi.row3Upgrades[0].bought}))),L.color==="red"&&Ii.push(J(()=>({multiplier(){return I.add(m.blue.amount.value,1).log10().add(1)},description:"Dye Synergy II",enabled:xi.row3Upgrades[3].bought}))),["red","yellow"].includes(L.color)&&Ii.push(J(()=>({multiplier:a.orange1,description:"Orange Dye Boost 1"}))),["yellow","blue"].includes(L.color)&&Ii.push(J(()=>({multiplier:a.green1,description:"Green Dye Boost 1"}))),["red","blue"].includes(L.color)&&Ii.push(J(()=>({multiplier:a.purple1,description:"Purple Dye Boost 1"}))),["red","yellow","blue"].includes(L.color)&&Ii.push(J(()=>({multiplier:2,description:"Wetter Dyes",enabled:y.yellowDyeUpg.bought})),J(()=>({multiplier:()=>I.add(fI.cloth.value,Math.E).ln(),description:"Gingersnap Level 1",enabled:Y.elfTraining.clothElfTraining.milestones[0].earned})),J(()=>({multiplier:2,description:"Carol Level 1",enabled:Y.elfTraining.dyeElfTraining.milestones[0].earned})),J(()=>({multiplier:5,description:"977,000,000 Presents Packed",enabled:gI.packingMilestones.primaryDyeBoost.earned}))),["orange","green","purple"].includes(L.color)&&Ii.push(J(()=>({multiplier:2,description:"Carol Level 2",enabled:Y.elfTraining.dyeElfTraining.milestones[1].earned}))),Ii.push(J(()=>({multiplier:2,description:"Gingersnap Level 3",enabled:Y.elfTraining.clothElfTraining.milestones[2].earned}))),Ii.push(J(()=>({multiplier:2,description:"Carry dye in boxes",enabled:wI.row3Upgrades.dyeUpgrade.bought}))),Ii.push(ee.reindeer.rudolph.modifier),Ii.push(J(()=>({multiplier:()=>Object.values(Gl.components).reduce((R,li)=>li+(R.type=="dye"?1:0),1),description:"300,000 Cities Solved",enabled:Dl.metaMilestones[4].earned}))),Ii}),H=b(()=>v.apply(0));let mi;switch(L.color){case"red":case"yellow":case"blue":case"black":case"white":mi=g.books.primaryDyeBook;break;case"orange":case"green":case"purple":mi=g.books.secondaryDyeBook;break}const G=Ai(()=>{const Ii=nl(L.costs);return{...L,style:()=>({backgroundColor:c(G.canPurchase)?l:"#545454",minWidth:"200px"}),display:r(()=>s("span",null,[s("h3",null,[L.name,d(" Chambers "),s(Ze,{hotkey:x},null)]),s("br",null,null),d("Create "),di(H.value),d(" "),L.name,L.dyesToReset.length>0?", but reset "+L.dyesToReset.map(R=>R.name).join(", "):"",d("."),s("br",null,null),s("br",null,null),s("span",{class:"white-space: pre-wrap"},[d("Currently:")," ",L.listedBoosts.filter(R=>c(R.visible)).map(R=>hi(r(()=>s("div",null,[c(R.desc)]))))]),s("br",null,null),s("div",null,[d("Cost:")," ",c(Ii).map(R=>hi(r(()=>{var li,A,B,Mi;return s("div",{class:I.lt(R.res.value,c(I.pow((li=c(G.cost))!=null?li:I.dInf,c((A=R.root)!=null?A:1)).times(c(R.base))))?"unaffordable":""},[di(c(I.pow((B=c(G.cost))!=null?B:I.dInf,c((Mi=R.root)!=null?Mi:1)).times(c(R.base))))," ",R.res.displayName,s("br",null,null)])})))])])),cost(){let R=G.amount.value;return I.gte(R,25)&&(R=I.pow(R,2).div(20)),I.gte(R,10)&&(R=I.pow(R,2).div(5)),I.gte(R,3125)&&(R=I.pow(R,2).div(3125)),R=I.mul(R,I.pow(.95,mi.totalAmount.value)),I.div(R,10).plus(1)},inverseCostPre(R){let li=I.sub(R,1).mul(10);return li=li.div(I.pow(.95,mi.totalAmount.value)),I.gte(li,3125)&&(li=I.mul(li,3125).root(2)),I.gte(li,10)&&(li=I.mul(li,5).root(2)),I.gte(li,25)&&(li=I.mul(li,20).root(2)),I.isNaN(li)?I.dZero:li.floor().max(0)},inverseCost(){return c(G.visibility)!=MI.Visible?I.dZero:c(Ii).reduce((R,li)=>{var A;return I.min(this.inverseCostPre(I.div(li.res.value,c(li.base)).root(c((A=li.root)!=null?A:1))),R)},I.dInf)},canPurchase:b(R=>{var A;if(c(G.visibility)!=MI.Visible||V.isMastery.value&&!e.value)return!1;const li=(A=R!=null?R:c(G.cost))!=null?A:I.dInf;return c(Ii).every(B=>{var Mi;return I.div(B.res.value,c(B.base)).root(c((Mi=B.root)!=null?Mi:1)).gte(li)})}),onPurchase(R){G.amount.value=I.add(G.amount.value,-1);let li=!1;switch(L.color){case"red":case"yellow":case"blue":li=Y.elfTraining.dyeElfTraining.milestones[2].earned.value;break;case"orange":case"green":case"purple":li=Y.elfTraining.dyeElfTraining.milestones[4].earned.value;break}if(li){const A=this.inverseCost().sub(this.amount.value).plus(1);if(A.lte(0))return;G.amount.value=I.add(G.amount.value,A)}else G.amount.value=I.add(G.amount.value,1);Y.elfTraining.dyeElfTraining.milestones[3].earned.value||L.dyesToReset.forEach(A=>A.reset())}}}),x=je(()=>({key:L.key,description:`${L.name} Chambers`,onPress:()=>{c(G.canClick)&&G.onClick()},enabled:$(V.days[jn-1].opened)})),K=nl((bi=L.visibility)!=null?bi:MI.Visible);return{name:L.name,amount:O,buyable:G,hotkey:x,toGenerate:v,computedToGenerate:H,display:r(()=>{var Ii;return c(K)===MI.Visible?s(sl,{resource:O,color:L.color,shadowColor:(Ii=L.shadowColor)!=null?Ii:L.color,style:"margin: 0; width: 200px; width: 180px; padding: 10px;",sticky:!1},null):""})}}const m={red:n({name:"Red Dye",color:"red",key:"r",costs:()=>[{base:"2e18",root:5,res:ki.logs},{base:b(()=>y.yellowDyeUpg2.bought.value?"2.5e5":"5e5"),root:2,res:xi.oil}],listedBoosts:[{visible:!0,desc:b(()=>`+${di(a.red1.value)} effective Oil Pumps (does not impact coal consumption)`)},{visible:e,desc:b(()=>`x${di(a.red2.value)} drill power`)}],dyesToReset:[]}),yellow:n({name:"Yellow Dye",color:"yellow",key:"y",costs:()=>[{base:"1e18",root:5,res:ki.logs},{base:b(()=>y.yellowDyeUpg2.bought.value?"5e5":"1e6"),root:2,res:xi.oil}],listedBoosts:[{visible:!0,desc:b(()=>`x${di(a.yellow1.value)} Paper & Plastic gain`)},{visible:e,desc:b(()=>`x${di(a.yellow2.value)} cloth actions`)}],dyesToReset:[]}),blue:n({name:"Blue Dye",color:"blue",shadowColor:"lightblue",key:"u",costs:()=>[{base:"5e17",root:5,res:ki.logs},{base:b(()=>y.yellowDyeUpg2.bought.value?"1e6":"2e6"),root:2,res:xi.oil}],listedBoosts:[{visible:!0,desc:b(()=>`+${_(a.blue1.value)} forest size (after all other modifiers)`)},{visible:e,desc:b(()=>`/${di(a.blue2.value)} plastic buyables cost`)}],dyesToReset:[]}),black:n({name:"Black Dye",color:"black",key:"a",costs:()=>[{base:"1e60",root:5,res:ki.logs},{base:b(()=>y.yellowDyeUpg2.bought.value?"1e17":"2e17"),root:2,res:xi.oil}],listedBoosts:[{visible:!0,desc:b(()=>`*${di(a.black1.value)} oil gain.`)}],dyesToReset:[],visibility:()=>j(lI.milestones.milestone2.earned.value)}),white:n({name:"White Dye",color:"white",key:"q",costs:()=>[{base:"1e60",root:5,res:ki.logs},{base:b(()=>y.yellowDyeUpg2.bought.value?"1e17":"2e17"),root:2,res:xi.oil}],listedBoosts:[{visible:!0,desc:b(()=>`*${di(a.white1.value)} plastic gain.`)}],dyesToReset:[],visibility:()=>j(Gl.upgrades[2][2].bought.value)}),orange:n({name:"Orange Dye",color:"orange",key:"o",costs:()=>[{base:15,root:2,res:m.red.amount},{base:10,root:2,res:m.yellow.amount}],listedBoosts:[{visible:!0,desc:b(()=>`x${di(a.orange1.value)} Red and Yellow Dye gain`)},{visible:!0,desc:b(()=>`/${di(a.orange2.value)} Box buyable costs.`)}],dyesToReset:[{name:"Red Dye",reset(){m.red.buyable.amount.value=0}},{name:"Yellow Dye",reset(){m.yellow.buyable.amount.value=0}}]}),green:n({name:"Green Dye",color:"green",key:"g",costs:()=>[{base:15,root:2,res:m.yellow.amount},{base:10,root:2,res:m.blue.amount}],listedBoosts:[{visible:!0,desc:b(()=>`x${di(a.green1.value)} Yellow and Blue Dye gain`)},{visible:!0,desc:b(()=>`+${_(I.sub(a.green2.value,1).times(100))}% Kiln synergy effect.`)}],dyesToReset:[{name:"Yellow Dye",reset(){m.yellow.buyable.amount.value=0}},{name:"Blue Dye",reset(){m.blue.buyable.amount.value=0}}]}),purple:n({name:"Purple Dye",color:"purple",key:"e",costs:()=>[{base:15,root:2,res:m.blue.amount},{base:10,root:2,res:m.red.amount}],listedBoosts:[{visible:!0,desc:b(()=>`x${di(a.purple1.value)} Red and Blue Dye gain`)},{visible:!0,desc:b(()=>`x${di(a.purple2.value)} Smelting Speed and Ore Purity`)}],dyesToReset:[{name:"Blue Dye",reset(){m.blue.buyable.amount.value=0}},{name:"Red Dye",reset(){m.red.buyable.amount.value=0}}]})},a={red1:b(()=>I.pow(I.add(m.red.amount.value,1).log2().plus(1).log2().div(2),y.blueDyeUpg2.bought.value?1.5:1)),red2:b(()=>I.pow(I.add(m.red.amount.value,1).log2().plus(1),y.blueDyeUpg2.bought.value?1.5:1)),yellow1:b(()=>I.add(m.yellow.amount.value,1).log2().plus(1)),yellow2:b(()=>I.add(m.yellow.amount.value,1).log2().plus(1).times(3)),blue1:b(()=>I.add(m.blue.amount.value,1).log2().sqrt().times(5e6)),blue2:b(()=>I.add(m.blue.amount.value,1).log2().plus(1).pow(2)),orange1:b(()=>I.pow(2,I.add(m.orange.amount.value,1).log2().sqrt()).pow(y.coalUpg.bought.value?1.2:1).pow(Y.elfTraining.clothElfTraining.milestones[3].earned.value?1.1:1)),orange2:b(()=>I.add(m.orange.amount.value,1).log2().plus(1).mul(gI.packingMilestones.secondaryDyeBoost.earned.value?2:1).pow(xi.row3Upgrades[1].bought.value?2.5:1)),green1:b(()=>I.pow(2,I.add(m.green.amount.value,1).log2().sqrt()).pow(y.coalUpg.bought.value?1.2:1).pow(Y.elfTraining.clothElfTraining.milestones[3].earned.value?1.1:1)),green2:b(()=>I.add(m.green.amount.value,1).log2().plus(1).mul(gI.packingMilestones.secondaryDyeBoost.earned.value?2:1).pow(y.coalUpg.bought.value?2:1)),purple1:b(()=>I.pow(2,I.add(m.purple.amount.value,1).log2().sqrt()).pow(y.coalUpg.bought.value?1.2:1).pow(Y.elfTraining.clothElfTraining.milestones[3].earned.value?1.1:1)),purple2:b(()=>I.add(m.purple.amount.value,1).log2().plus(1).mul(gI.packingMilestones.secondaryDyeBoost.earned.value?2:1)),black1:b(()=>I.pow(2,I.add(m.black.amount.value,1).log2().sqrt()).pow(y.coalUpg.bought.value?1.2:1).pow(Y.elfTraining.clothElfTraining.milestones[3].earned.value?1.1:1)),white1:b(()=>I.pow(2,I.add(m.white.amount.value,1).log2().sqrt()).pow(y.coalUpg.bought.value?1.2:1).pow(Y.elfTraining.clothElfTraining.milestones[3].earned.value?1.1:1))},[Z,o]=vl(()=>[{title:"Red Dye Creation",modifier:m.red.toGenerate,base:0},{title:"Yellow Dye Creation",modifier:m.yellow.toGenerate,base:0},{title:"Blue Dye Creation",modifier:m.blue.toGenerate,base:0},{title:"Black Dye Creation",modifier:m.black.toGenerate,base:0},{title:"White Dye Creation",modifier:m.white.toGenerate,base:0},{title:"Orange Dye Creation",modifier:m.orange.toGenerate,base:0},{title:"Green Dye Creation",modifier:m.green.toGenerate,base:0},{title:"Purple Dye Creation",modifier:m.purple.toGenerate,base:0}]),y={blueDyeUpg:U(()=>({visibility:()=>j(I.add(m.orange.amount.value,m.green.amount.value).add(m.purple.amount.value).gte(1)||y.blueDyeUpg.bought.value),display:{title:"Is Blue Dye just Water?",description:r(()=>s(M,null,[d("Multiply Log gain by log"),s("sub",null,[d("10")]),d("(Auto Cutting Amount)+1.")]))},cost:1e3,resource:m.blue.amount,onPurchase(){m.blue.buyable.amount.value=0}})),redDyeUpg:U(()=>({visibility:()=>j(I.add(m.orange.amount.value,m.green.amount.value).add(m.purple.amount.value).gte(10)||y.redDyeUpg.bought.value),display:{title:"Glistening Paint",description:r(()=>s(M,null,[d("Multiply Ore Purity by log"),s("sub",null,[d("10")]),d("(Cloth)+1.")]))},cost:1500,resource:m.red.amount,onPurchase(){m.red.buyable.amount.value=0}})),yellowDyeUpg:U(()=>({visibility:()=>j(I.add(m.orange.amount.value,m.green.amount.value).add(m.purple.amount.value).gte(100)||y.yellowDyeUpg.bought.value),display:{title:"Wetter Dyes",description:"Double Red, Yellow, and Blue Dye gain."},cost:2e3,resource:m.yellow.amount})),yellowDyeUpg2:U(()=>({visibility:()=>j(y.yellowDyeUpg.bought.value),display:{title:"Golden Wash",description:"Halve the Oil cost of Red, Yellow, and Blue Dyes."},cost:5e3,resource:m.yellow.amount,onPurchase(){m.yellow.buyable.amount.value=0}})),redDyeUpg2:U(()=>({visibility:()=>j(y.redDyeUpg.bought.value),display:{title:"De Louvre",description:r(()=>s(M,null,[d("Multiply Smelting Speed by "),s(ql,null,{default:()=>[d("Refineries+1")]}),d(".")]))},cost:6e3,resource:m.red.amount,onPurchase(){m.red.buyable.amount.value=0}})),blueDyeUpg2:U(()=>({visibility:()=>j(y.blueDyeUpg.bought.value),display:{title:"Hydrophobia",description:"Raise Red Dye's effect ^1.5."},cost:7500,resource:m.blue.amount,onPurchase(){m.blue.buyable.amount.value=0}})),coalUpg:U(()=>({visibility:()=>j(y.blueDyeUpg2.bought.value&&y.redDyeUpg2.bought.value&&y.yellowDyeUpg2.bought.value),display:{title:"Denser Spectrum",description:"Orange, Green, and Purple Dyes' first effect is raised ^1.2, and Green Dye's second effect is squared."},cost:"5e30",resource:Oi.coal}))},u=Ji(!1),w=r(()=>s(EI,{modelValue:u.value,"onUpdate:modelValue":L=>u.value=L},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:Z})),W=vI(b(()=>Object.values(m).reduce((L,O)=>I.add(L,O.amount.value),0)),"Sum of Dyes"),N=b(()=>[m.orange,m.green,m.purple].reduce((L,O)=>L.add(O.amount.value),new I(0))),{total:p,trackerDisplay:f}=de({resource:W,goal:6e4,name:i,day:jn,background:l,textColor:"var(--feature-foreground)",modal:{show:u,display:w},ignoreTotal:!0}),C={dyes:{red:{buyable:{amount:t(0)}},green:{buyable:{amount:t(0)}},blue:{buyable:{amount:t(0)}},yellow:{buyable:{amount:t(0)}},purple:{buyable:{amount:t(0)}},orange:{buyable:{amount:t(0)}}},upgrades:{blueDyeUpg:{bought:t(!1)},redDyeUpg:{bought:t(!1)},yellowDyeUpg:{bought:t(!1)},yellowDyeUpg2:{bought:t(!1)},redDyeUpg2:{bought:t(!1)},blueDyeUpg2:{bought:t(!1)},coalUpg:{bought:t(!1)}}},D=t(!1);return{name:i,day:jn,color:l,dyes:m,dyeSum:W,boosts:a,totalDyeSum:p,secondaryDyeSum:N,minWidth:700,generalTabCollapsed:o,upgrades:y,display:r(()=>s(M,null,[hi(f),s(ti,null,null),e.value?s(M,null,[s("div",{class:"decoration-effect ribbon"},[d("Decoration effect:"),s("br",null,null),d("Each primary dye gains a second effect")]),s(ti,null,null)]):null,s("div",{style:"width: 620px"},[zI(m.black.display,m.white.display),zI(m.black.buyable,m.white.buyable),s(ti,null,null),zI(m.red.display,m.yellow.display,m.blue.display),zI(m.red.buyable,m.yellow.buyable,m.blue.buyable),s(ti,null,null),zI(m.orange.display,m.green.display,m.purple.display),zI(m.orange.buyable,m.green.buyable,m.purple.buyable)]),s(ti,null,null),s("div",{class:"row",style:"vertical-align: top"},[Ie(y.redDyeUpg,y.redDyeUpg2),Ie(y.yellowDyeUpg,y.yellowDyeUpg2),Ie(y.blueDyeUpg,y.blueDyeUpg2)]),hi(y.coalUpg)])),mastery:C,mastered:D,masteryEffectActive:e}}),no="boxes",un=6,wI=al(no,function(){const i="Boxes",l="#964B00",e=vI(0,"boxes"),n=Ci(()=>[J(()=>({multiplier:2,description:"1000% Foundation Completed",enabled:XI.milestones.extraExpansionMilestone5.earned})),ee.reindeer.vixen.modifier,J(()=>({multiplier:1.1,description:"120 Presents Packed",enabled:gI.packingMilestones.boxBoost.earned})),Yl(()=>({exponent:1.1,description:"Bell Level 2",enabled:Y.elfTraining.boxElfTraining.milestones[1].earned}))]),m=Tm(()=>({scaling:fn(1e10,1),baseResource:ki.logs,gainResource:$(e),roundUpCost:!0,gainModifier:n})),a=il(()=>({display:r(()=>s(M,null,[s("span",{style:"font-size: large"},[d("Create "),_(m.currentGain.value),d(" "),e.displayName]),s("br",null,null),s("span",{style:"font-size: large"},[d("Cost:")," ",Gs(ki.logs,I.gte(m.actualGain.value,1)?m.currentAt.value:m.nextAt.value)," ",ki.logs.displayName])])),canClick:()=>I.gte(m.actualGain.value,1),onClick(){!c(this.canClick)||m.convert()},style:"width: 600px; min-height: unset",visibility:()=>j(!V.isMastery.value||Wi.value)})),Z=U(()=>({display:{title:"Carry logs in boxes",description:"Double log gain and unlock a new elf for training"},onPurchase(){Wi.value&&(Fi.elves.smallFireElf.bought.value=!0),V.days[3].recentlyUpdated.value=!0},resource:$(e),cost:100})),o=U(()=>({display:{title:"Carry ash in boxes",description:"Double ash gain and unlock a new elf for training"},onPurchase(){Wi.value&&(Fi.elves.bonfireElf.bought.value=!0),V.days[3].recentlyUpdated.value=!0},resource:$(e),cost:1e3})),y=U(()=>({display:{title:"Carry coal in boxes",description:"Double coal gain and unlock a new elf for training"},onPurchase(){Wi.value&&(Fi.elves.kilnElf.bought.value=!0),V.days[3].recentlyUpdated.value=!0},resource:$(e),cost:4e3})),u={logsUpgrade:Z,ashUpgrade:o,coalUpgrade:y},w=U(()=>({resource:$(e),cost:1e8,visibility:()=>j(jI.upgrades.boxTools.bought.value),display:{title:"Carry ore in boxes",description:"Double ore per mining op"}})),W=U(()=>({resource:$(e),cost:1e9,visibility:()=>j(jI.upgrades.boxTools.bought.value),display:{title:"Carry metal in boxes",description:"Double ore purity"}})),N=U(()=>({resource:$(e),cost:1e10,visibility:()=>j(jI.upgrades.boxTools.bought.value),display:{title:"Carry plastic in boxes",description:"Double plastic gain"}})),p={oreUpgrade:w,metalUpgrade:W,plasticUpgrade:N},f=U(()=>({resource:$(e),cost:1e28,visibility:()=>j(Y.elfTraining.boxElfTraining.milestones[4].earned.value),display:{title:"Carry cloth in boxes",description:"Double all cloth actions"}})),C=U(()=>({resource:$(e),cost:1e29,visibility:()=>j(Y.elfTraining.boxElfTraining.milestones[4].earned.value),display:{title:"Carry dye in boxes",description:"Double all dye gain"}})),D=U(()=>({resource:$(e),cost:1e30,visibility:()=>j(Y.elfTraining.boxElfTraining.milestones[4].earned.value),display:{title:"Carry experience in boxes???",description:"Double xp gain"}})),L={clothUpgrade:f,dyeUpgrade:C,xpUpgrade:D},O=Ai(()=>({display:{title:"Carry more logs",description:r(()=>s(M,null,[d("Use boxes to carry even more logs, boosting their gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(O.amount.value),I.gt(O.freeLevels.value,0)?s(M,null,[d(" (+"),_(O.freeLevels.value),d(")")]):null])])),effectDisplay:r(()=>s(M,null,[di(I.div(O.totalAmount.value,2).add(1)),d("x")])),showAmount:!1},resource:$(e),cost(){let E=this.amount.value;E=I.pow(.95,g.books.boxBook.totalAmount.value).times(E);let ji=3;return Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--,I.pow(ji,E).times(100).div(Ri.boosts.orange2.value).div(pl.boosts.ocean1.value)},inverseCost(E){let ji=3;Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--;let vi=I.mul(E,pl.boosts.ocean1.value).mul(Ri.boosts.orange2.value).div(100).log(ji);return vi=vi.div(I.pow(.95,g.books.boxBook.totalAmount.value)),I.isNaN(vi)?I.dZero:vi.floor().max(0)},visibility:()=>j(Z.bought.value),freeLevels:b(()=>{let E=0;return Y.elfTraining.boxElfTraining.milestones[0].earned.value&&(E=I.max(v.amount.value,1).sqrt().floor().add(I.max(H.amount.value,1).sqrt().floor())),Wi.value&&(E=I.pow(O.amount.value,2).sub(O.amount.value).add(E)),E}),totalAmount:b(()=>I.add(O.amount.value,O.freeLevels.value))})),v=Ai(()=>({display:{title:"Carry more ash",description:r(()=>s(M,null,[d("Use boxes to carry even more ash, boosting its gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(v.amount.value),I.gt(v.freeLevels.value,0)?s(M,null,[d(" (+"),_(v.freeLevels.value),d(")")]):null])])),effectDisplay:r(()=>s(M,null,[di(I.div(v.totalAmount.value,2).add(1)),d("x")])),showAmount:!1},resource:$(e),cost(){let E=this.amount.value;E=I.pow(.95,g.books.boxBook.totalAmount.value).times(E);let ji=5;return Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--,I.pow(ji,E).times(1e3).div(Ri.boosts.orange2.value)},inverseCost(E){let ji=5;Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--;let vi=I.mul(E,Ri.boosts.orange2.value).div(1e3).log(ji);return vi=vi.div(I.pow(.95,g.books.boxBook.totalAmount.value)),I.isNaN(vi)?I.dZero:vi.floor().max(0)},visibility:()=>j(o.bought.value),freeLevels:b(()=>{let E=0;return Y.elfTraining.boxElfTraining.milestones[0].earned.value&&(E=I.max(O.amount.value,1).sqrt().floor().add(I.max(H.amount.value,1).sqrt().floor())),Wi.value&&(E=I.pow(v.amount.value,2).sub(v.amount.value).add(E)),E}),totalAmount:b(()=>I.add(v.amount.value,v.freeLevels.value))})),H=Ai(()=>({display:{title:"Carry more coal",description:r(()=>s(M,null,[d("Use boxes to carry even more coal, boosting its gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(H.amount.value),I.gt(H.freeLevels.value,0)?s(M,null,[d(" (+"),_(H.freeLevels.value),d(")")]):null])])),effectDisplay:r(()=>s(M,null,[di(I.div(H.totalAmount.value,2).add(1)),d("x")])),showAmount:!1},resource:$(e),cost(){let E=this.amount.value;E=I.pow(.95,g.books.boxBook.totalAmount.value).times(E);let ji=7;return Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--,I.pow(ji,E).times(1e3).div(Ri.boosts.orange2.value)},inverseCost(E){let ji=7;Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--;let vi=I.mul(E,Ri.boosts.orange2.value).div(1e3).log(ji);return vi=vi.div(I.pow(.95,g.books.boxBook.totalAmount.value)),I.isNaN(vi)?I.dZero:vi.floor().max(0)},visibility:()=>j(y.bought.value),freeLevels:b(()=>{let E=0;return Y.elfTraining.boxElfTraining.milestones[0].earned.value&&(E=I.max(O.amount.value,1).sqrt().floor().add(I.max(v.amount.value,1).sqrt().floor())),Wi.value&&(E=I.pow(H.amount.value,2).sub(H.amount.value).add(E)),E}),totalAmount:b(()=>I.add(H.amount.value,H.freeLevels.value))})),mi={logBoxesBuyable:O,ashBoxesBuyable:v,coalBoxesBuyable:H},G=Ai(()=>({display:{title:"Carry more ore",description:r(()=>s(M,null,[d("Use boxes to carry even more ore, boosting their gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(G.amount.value),I.gt(G.freeLevels.value,0)?s(M,null,[d(" (+"),_(G.freeLevels.value),d(")")]):null])])),effectDisplay:r(()=>s(M,null,[di(I.div(G.totalAmount.value,2).add(1)),d("x")])),showAmount:!1},resource:$(e),cost(){let E=this.amount.value;E=I.pow(.95,g.books.boxBook.totalAmount.value).times(E);let ji=10;return Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--,I.pow(ji,E).times(1e25).div(Ri.boosts.orange2.value).div(pl.boosts.ocean1.value)},inverseCost(E){let ji=10;Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--;let vi=I.mul(E,pl.boosts.ocean1.value).mul(Ri.boosts.orange2.value).div(1e25).log(ji);return vi=vi.div(I.pow(.95,g.books.boxBook.totalAmount.value)),I.isNaN(vi)?I.dZero:vi.floor().max(0)},visibility:()=>j(Y.elfTraining.boxElfTraining.milestones[3].earned.value),freeLevels:b(()=>{let E=0;return Y.elfTraining.boxElfTraining.milestones[0].earned.value&&(E=I.max(x.amount.value,1).sqrt().floor().add(I.max(K.amount.value,1).sqrt().floor())),Wi.value&&(E=I.pow(G.amount.value,2).sub(G.amount.value).add(E)),E}),totalAmount:b(()=>I.add(G.amount.value,G.freeLevels.value))})),x=Ai(()=>({display:{title:"Carry more metal",description:r(()=>s(M,null,[d("Use boxes to carry even more metal, boosting its gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(x.amount.value),I.gt(x.freeLevels.value,0)?s(M,null,[d(" (+"),_(x.freeLevels.value),d(")")]):null])])),effectDisplay:r(()=>s(M,null,[di(I.div(x.totalAmount.value,2).add(1)),d("x")])),showAmount:!1},resource:$(e),cost(){let E=this.amount.value;E=I.pow(.95,g.books.boxBook.totalAmount.value).times(E);let ji=15;return Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--,I.pow(ji,E).times(1e28).div(Ri.boosts.orange2.value)},inverseCost(E){let ji=15;Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--;let vi=I.mul(E,Ri.boosts.orange2.value).div(1e28).log(ji);return vi=vi.div(I.pow(.95,g.books.boxBook.totalAmount.value)),I.isNaN(vi)?I.dZero:vi.floor().max(0)},visibility:()=>j(Y.elfTraining.boxElfTraining.milestones[3].earned.value),freeLevels:b(()=>{let E=0;return Y.elfTraining.boxElfTraining.milestones[0].earned.value&&(E=I.max(G.amount.value,1).sqrt().floor().add(I.max(K.amount.value,1).sqrt().floor())),Wi.value&&(E=I.pow(x.amount.value,2).sub(x.amount.value).add(E)),E}),totalAmount:b(()=>I.add(x.amount.value,x.freeLevels.value))})),K=Ai(()=>({display:{title:"Carry more plastic",description:r(()=>s(M,null,[d("Use boxes to carry even more plastic, boosting its gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(K.amount.value),I.gt(K.freeLevels.value,0)?s(M,null,[d(" (+"),_(K.freeLevels.value),d(")")]):null])])),effectDisplay:r(()=>s(M,null,[di(I.div(K.totalAmount.value,2).add(1)),d("x")])),showAmount:!1},resource:$(e),cost(){let E=this.amount.value;E=I.pow(.95,g.books.boxBook.totalAmount.value).times(E);let ji=20;return Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--,I.pow(ji,E).times(1e31).div(Ri.boosts.orange2.value)},inverseCost(E){let ji=20;Y.elfTraining.boxElfTraining.milestones[2].earned.value&&ji--;let vi=I.mul(E,Ri.boosts.orange2.value).div(1e31).log(ji);return vi=vi.div(I.pow(.95,g.books.boxBook.totalAmount.value)),I.isNaN(vi)?I.dZero:vi.floor().max(0)},visibility:()=>j(Y.elfTraining.boxElfTraining.milestones[3].earned.value),freeLevels:b(()=>{let E=0;return Y.elfTraining.boxElfTraining.milestones[0].earned.value&&(E=I.max(G.amount.value,1).sqrt().floor().add(I.max(x.amount.value,1).sqrt().floor())),Wi.value&&(E=I.pow(K.amount.value,2).sub(K.amount.value).add(E)),E}),totalAmount:b(()=>I.add(K.amount.value,K.freeLevels.value))})),bi=Ai(()=>({display:{title:"Carry presents in boxes",description:r(()=>s(M,null,[d("Use boxes to carry presents, boosting its gain"),s("br",null,null),s("br",null,null),s("div",null,[d("Amount: "),_(bi.amount.value),d(" boxes")])])),effectDisplay:r(()=>s(M,null,[di(I.div(bi.amount.value,10).add(1).pow(2)),d("x")])),showAmount:!1},resource:$(e),cost(){return I.pow(2,bi.amount.value).mul(1e87)},inverseCost(E){const ji=I.div(E,1e87).log2();return I.isNaN(ji)?I.dZero:ji.floor().max(0)},freeLevels:b(()=>0),totalAmount:b(()=>bi.amount.value),visibility:()=>j(Gl.upgrades[3][3].bought.value)})),Ii={oreBoxesBuyable:G,metalBoxesBuyable:x,plasticBoxesBuyable:K},R={presentBuyable:bi};NI.on("update",E=>{I.lt(V.day.value,un)||(e.value=I.times(E,jI.buyables.passiveBoxes.amount.value).times(m.currentGain.value).div(100).add(e.value))});const[li,A]=vl(()=>[{title:"Boxes Gain",modifier:n,base:()=>m.scaling.currentGain(m)}]),B=Ji(!1),Mi=r(()=>s(EI,{modelValue:B.value,"onUpdate:modelValue":E=>B.value=E},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:li})),{total:Li,trackerDisplay:zi}=de({resource:e,goal:5e4,masteryGoal:5e5,name:i,day:un,background:l,modal:{display:Mi,show:B}}),si={boxes:t(0),totalBoxes:t(0),upgrades:{logsUpgrade:{bought:t(!1)},ashUpgrade:{bought:t(!1)},coalUpgrade:{bought:t(!1)}},row2Upgrades:{oreUpgrade:{bought:t(!1)},metalUpgrade:{bought:t(!1)},plasticUpgrade:{bought:t(!1)}},row3Upgrades:{clothUpgrade:{bought:t(!1)},dyeUpgrade:{bought:t(!1)},xpUpgrade:{bought:t(!1)}},buyables:{logBoxesBuyable:{amount:t(0)},ashBoxesBuyable:{amount:t(0)},coalBoxesBuyable:{amount:t(0)}},buyables2:{oreBoxesBuyable:{amount:t(0)},metalBoxesBuyable:{amount:t(0)},plasticBoxesBuyable:{amount:t(0)}}},q=t(!1),Wi=b(()=>{var E;return q.value||((E=V.currentlyMastering.value)==null?void 0:E.name)===i});return{name:i,day:un,color:l,boxes:e,totalBoxes:Li,boxesConversion:m,upgrades:u,row2Upgrades:p,row3Upgrades:L,buyables:mi,buyables2:Ii,buyables3:R,minWidth:700,generalTabCollapsed:A,display:r(()=>s(M,null,[hi(zi),s(ti,null,null),Wi.value?s(M,null,[s("div",{class:"decoration-effect"},[d("Decoration effect:"),s("br",null,null),d("Effective boxes buyables' levels are squared")]),s(ti,null,null)]):null,s(sl,{resource:e,color:l,style:"margin-bottom: 0"},null),s(ti,null,null),hi(a),s(ti,null,null),xl(Object.values(u),Object.values(p),Object.values(L)),s(ti,null,null),xl(Object.values(mi),Object.values(Ii),Object.values(R))])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(e.value),d(" "),e.displayName])])),mastery:si,mastered:q}}),mo="coal",Vn=3,Oi=al(mo,function(){const i="Coal",l="#151716",e="#B2BeB5",n="var(--foreground)",m=vI(0,"coal"),a=vI(0,"ash"),Z=t(0),o=b(()=>I.times(Z.value,1e3)),y=b(()=>I.times(Z.value,.1)),u=b(()=>{let T=I.times(Z.value,50);return Y.elfTraining.smallfireElfTraining.milestones[0].earned.value&&(T=T.times(5)),T}),w=Ai(()=>({resource:ki.logs,cost(){let T=I.times(H.amount.value,c(H.cost)).plus(this.amount.value);return I.gte(T,100)&&(T=I.pow(T,2).div(100)),I.gte(T,1e4)&&(T=I.pow(T,2).div(1e4)),T=I.pow(.95,g.books.smallFireBook.totalAmount.value).times(T),T.pow(ul.value?1.1:1.5).times(1e4)},inverseCost(T){let ni=I.div(T,1e4).root(ul.value?1.1:1.5);return ni=ni.div(I.pow(.95,g.books.smallFireBook.totalAmount.value)),I.gte(ni,1e4)&&(ni=I.mul(ni,1e4).root(2)),I.gte(ni,100)&&(ni=I.mul(ni,100).root(2)),ni=ni.sub(I.times(H.amount.value,c(H.cost))),I.isNaN(ni)?I.dZero:ni.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Small Fire")]),s("br",null,null),d("Burn 1000 logs for 0.1 coal and 50 ash"),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),di(o.value),d(" logs/sec"),s("br",null,null),d("+"),di(y.value),d(" coal/sec"),s("br",null,null),d("+"),di(u.value),d(" ash/sec"),s("br",null,null),s("br",null,null),d("Cost: "),_(c(w.cost)),d(" "),w.resource.displayName])),onPurchase(){Z.value=I.add(Z.value,1)},style:{color:n,width:"160px",flexGrow:1},visibility:()=>j(!V.isMastery.value||ul.value)})),{min:W,max:N,add:p,remove:f}=ce({active:Z,buyable:w}),C=vI(w.amount,"small fires"),D=t(0),L=b(()=>I.times(D.value,1e4)),O=b(()=>{let T=I.times(D.value,10);return Y.elfTraining.bonfireElfTraining.milestones[0].earned.value&&(T=T.times(5)),T}),v=b(()=>{let T=I.times(D.value,1e3);return Y.elfTraining.bonfireElfTraining.milestones[0].earned.value&&(T=T.times(5)),T}),H=Ai(()=>({resource:C,cost(){return I.pow(.95,g.books.bonfireBook.totalAmount.value).times(10)},inverseCost(T){return I.div(T,I.pow(.95,g.books.bonfireBook.totalAmount.value).times(10)).floor()},display:r(()=>s(M,null,[s("h3",null,[d("Bonfire")]),s("br",null,null),d("Burn 10,000 logs for 10 coal and 1000 ash"),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),di(L.value),d(" logs/sec"),s("br",null,null),d("+"),di(O.value),d(" coal/sec"),s("br",null,null),d("+"),di(v.value),d(" ash/sec"),s("br",null,null),s("br",null,null),d("Cost: "),_(c(H.cost)),d(" "),H.resource.displayName])),onPurchase(T){Z.value=I.sub(Z.value,T).max(0),D.value=I.add(D.value,1)},style:{color:n,width:"160px",flexGrow:1},visibility:()=>j(nI.bought.value)})),{min:mi,max:G,add:x,remove:K}=ce({buyable:H,active:D}),bi=t(0),Ii=b(()=>I.times(bi.value,1e6)),R=b(()=>{let T=I.times(bi.value,1e4);return Y.elfTraining.kilnElfTraining.milestones[0].earned.value&&(T=T.times(5)),T}),li=b(()=>{let T=I.times(bi.value,1e4);return Y.elfTraining.kilnElfTraining.milestones[0].earned.value&&(T=T.times(5)),T}),A=Ai(()=>({resource:ki.logs,cost(){let T=this.amount.value;return I.gte(T,100)&&(T=I.pow(T,2).div(100)),I.gte(T,1e4)&&(T=I.pow(T,2).div(1e4)),T=I.pow(.95,g.books.kilnBook.totalAmount.value).times(T),I.pow(gI.packingMilestones.coalBoost.earned.value?1.05:1.1,T).times(1e7)},inverseCost(T){let ni=I.div(T,1e7).log(gI.packingMilestones.coalBoost.earned.value?1.05:1.1);return ni=ni.div(I.pow(.95,g.books.kilnBook.totalAmount.value)),I.gte(ni,1e4)&&(ni=I.mul(ni,1e4).root(2)),I.gte(ni,100)&&(ni=I.mul(ni,100).root(2)),I.isNaN(ni)?I.dZero:ni.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Charcoal Kiln")]),s("br",null,null),d("Burn 1,000,000 logs for 10,000 coal and 10,000 ash"),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("-"),di(Ii.value),d(" logs/sec"),s("br",null,null),d("+"),di(R.value),d(" coal/sec"),s("br",null,null),d("+"),di(li.value),d(" ash/sec"),s("br",null,null),s("br",null,null),d("Cost: "),_(c(A.cost)),d(" "),A.resource.displayName])),onPurchase(){bi.value=I.add(bi.value,1)},style:{color:n,width:"160px",flexGrow:1},visibility:()=>j(P.bought.value)})),{min:B,max:Mi,add:Li,remove:zi}=ce({buyable:A,active:bi}),si=t(0),q=b(()=>I.times(I.pow(si.value,xi.row2Upgrades[1].bought.value?2:1),5e7).times(tI.efficientDrill.bought.value?2:1).times(Y.elfTraining.smallfireElfTraining.milestones[2].earned.value?2:1).times(Y.elfTraining.bonfireElfTraining.milestones[2].earned.value?2:1).times(Y.elfTraining.kilnElfTraining.milestones[2].earned.value?2:1)),Wi=Ai(()=>({resource:tI.metal,cost(){let T=this.amount.value;I.gte(T,100)&&(T=I.pow(T,2).div(100)),I.gte(T,1e4)&&(T=I.pow(T,2).div(1e4)),T=I.pow(.95,g.books.coalDrillBook.totalAmount.value).times(T);let ni=I.pow(gI.packingMilestones.coalBoost.earned.value?1.075:1.15,T).times(10);return Y.elfTraining.fertilizerElfTraining.milestones[2].earned.value&&(ni=ni.div(I.add(ki.totalLogs.value,Math.E).ln())),Y.elfTraining.coalDrillElfTraining.milestones[2].earned.value&&(ni=ni.div(10)),ni},inverseCost(T){Y.elfTraining.coalDrillElfTraining.milestones[2].earned.value&&(T=I.mul(T,10)),Y.elfTraining.fertilizerElfTraining.milestones[2].earned.value&&(T=I.mul(T,I.add(ki.totalLogs.value,Math.E).ln()));let ni=I.div(T,10).log(gI.packingMilestones.coalBoost.earned.value?1.075:1.15);return ni=ni.div(I.pow(.95,g.books.coalDrillBook.totalAmount.value)),I.gte(ni,1e4)&&(ni=I.mul(ni,1e4).root(2)),I.gte(ni,100)&&(ni=I.mul(ni,100).root(2)),I.isNaN(ni)?I.dZero:ni.floor().max(0)},display:r(()=>s(M,null,[s("h3",null,[d("Coal Drill")]),s("br",null,null),d("Dig through the ground to find 50,000,000 coal"),s("br",null,null),s("br",null,null),d("Currently:"),s("br",null,null),d("+"),di(q.value),d(" coal/sec"),s("br",null,null),s("br",null,null),d("Cost: "),_(c(Wi.cost)),d(" "),Wi.resource.displayName])),onPurchase(){si.value=I.add(si.value,1)},style:{color:n,width:"160px",flexGrow:1},visibility:()=>j(tI.coalDrill.bought.value)})),{max:E,min:ji,add:vi,remove:uI}=ce({buyable:Wi,active:si}),Pi=U(()=>({resource:$(m),cost:5,display:{title:"Warmer Cutters",description:"Cut down twice as many trees/s"},style(){return this.bought.value?"":{color:n}}})),II=U(()=>({resource:$(m),cost:5,display:{title:"Warmer Planters",description:"Plant twice as many trees/s"},style(){return this.bought.value?"":{color:n}}})),aI=U(()=>({resource:$(a),cost:5e3,display:{title:"Ashy Soil",description:"Trees give 25% more logs"},style(){return this.bought.value?"":{color:n}}})),nI=U(()=>({resource:C,cost:10,display:{title:"Bigger Fires",description:"Put all those fires together into a larger blaze"},onPurchase(){C.value=I.add(C.value,this.cost)},style(){return this.bought.value?"":{color:n}}})),Hi=[Pi,II,aI,nI],_i=U(()=>({resource:$(m),cost:250,display:{title:"Dedicated Cutter Heaters",description:"Double the bonus from Heated Cutters"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(nI.bought.value)})),Ei=U(()=>({resource:$(m),cost:250,display:{title:"Dedicated Planter Heaters",description:"Double the bonus from Heated Planters"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(nI.bought.value)})),$i=U(()=>({canAfford(){return I.gte(ki.logs.value,1e5)&&I.gte(a.value,1e5)},onPurchase(){ki.logs.value=I.sub(ki.logs.value,1e5),a.value=I.sub(a.value,1e5)},display:r(()=>s(M,null,[s("h3",null,[d("Mulched Soil")]),s("br",null,null),d("Double the bonus from Fertilized Soil"),s("br",null,null),s("br",null,null),d("Cost: "),_(1e5),d(" "),ki.logs.displayName,s("br",null,null),_(1e5),d(" "),a.displayName])),style(){return this.bought.value?"":{color:n}},visibility:()=>j(nI.bought.value)})),P=U(()=>({resource:ki.logs,cost:1e7,display:{title:"Efficient Fires",description:"Move the fires underground to keep the coal from turning to ash"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(nI.bought.value)})),ri=[_i,Ei,$i,P],gi=U(()=>({resource:$(m),cost:1e19,display:{title:"Efficient Crucibles",description:"Double auto smelting speed and triple metal gain from auto smelting"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(xi.depthMilestones[4].earned.value)})),mI=U(()=>({resource:$(m),cost:1e45,display:{title:"Arsonist Assistance",description:"Every elf at or above level 5 doubles ash gain"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(Y.elfTraining.coalDrillElfTraining.milestones[3].earned.value)})),Gi=U(()=>({resource:$(m),cost:1e50,display:{title:"Refined Coal",description:"Refineries boost coal gain"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(Y.elfTraining.coalDrillElfTraining.milestones[3].earned.value)})),xI=U(()=>({resource:$(m),cost:1e55,display:{title:"Colored Fire",description:"Green dye also affects small fire synergy"},style(){return this.bought.value?"":{color:n}},visibility:()=>j(Y.elfTraining.coalDrillElfTraining.milestones[3].earned.value)})),PI=[gi,mI,Gi,xI],RI=Ai(()=>({resource:$(m),cost(){let T=this.amount.value;return I.gte(T,50)&&(T=I.pow(T,2).div(50)),I.gte(T,200)&&(T=I.pow(T,2).div(200)),I.gte(T,2e6)&&(T=I.pow(T,2).div(2e6)),T=I.pow(.95,g.books.heatedCuttersBook.totalAmount.value).times(T),Y.elfTraining.heatedCutterElfTraining.milestones[0].earned.value&&(T=I.pow(.95,g.books.heatedCuttersBook.totalAmount.value).times(T)),T=T.div(pl.boosts.rainbow1.value),I.add(T,1).pow(2.5).times(10)},inverseCost(T){let ni=I.div(T,10).root(2.5).sub(1);return ni=ni.mul(pl.boosts.rainbow1.value),Y.elfTraining.heatedCutterElfTraining.milestones[0].earned.value&&(ni=ni.div(I.pow(.95,g.books.heatedCuttersBook.totalAmount.value))),ni=ni.div(I.pow(.95,g.books.heatedCuttersBook.totalAmount.value)),I.gte(ni,2e6)&&(ni=I.mul(ni,2e6).root(2)),I.gte(ni,200)&&(ni=I.mul(ni,200).root(2)),I.gte(ni,50)&&(ni=I.mul(ni,50).root(2)),I.isNaN(ni)?I.dZero:ni.floor().max(0)},display:{title:"Heated Cutters",description:"Even warmer cutters cut down trees faster",effectDisplay:r(()=>s(M,null,[d("Cutters cut down trees "),di(pi.value),d("x faster")]))},style:{color:n},visibility:()=>j(Pi.bought.value)})),rI=Ai(()=>({resource:$(m),cost(){let T=this.amount.value;return I.gte(T,50)&&(T=I.pow(T,2).div(50)),I.gte(T,200)&&(T=I.pow(T,2).div(200)),I.gte(T,2e6)&&(T=I.pow(T,2).div(2e6)),T=I.pow(.95,g.books.heatedPlantersBook.totalAmount.value).times(T),Y.elfTraining.heatedPlanterElfTraining.milestones[0].earned.value&&(T=I.pow(.95,g.books.heatedPlantersBook.totalAmount.value).times(T)),T=T.div(pl.boosts.rainbow1.value),I.add(T,1).pow(2.5).times(10)},inverseCost(T){let ni=I.div(T,10).root(2.5).sub(1);return ni=ni.mul(pl.boosts.rainbow1.value),Y.elfTraining.heatedPlanterElfTraining.milestones[0].earned.value&&(ni=ni.div(I.pow(.95,g.books.heatedPlantersBook.totalAmount.value))),ni=ni.div(I.pow(.95,g.books.heatedPlantersBook.totalAmount.value)),I.gte(ni,2e6)&&(ni=I.mul(ni,2e6).root(2)),I.gte(ni,200)&&(ni=I.mul(ni,200).root(2)),I.gte(ni,50)&&(ni=I.mul(ni,50).root(2)),I.isNaN(ni)?I.dZero:ni.floor().max(0)},display:{title:"Heated Planters",description:"Even warmer planters plant trees faster",effectDisplay:r(()=>s(M,null,[d("Planters plant trees "),di(hI.value),d("x faster")]))},style:{color:n},visibility:()=>j(II.bought.value)})),wi=Ai(()=>({resource:$(a),cost(){let T=this.amount.value;return I.gte(T,50)&&(T=I.pow(T,2).div(50)),I.gte(T,200)&&(T=I.pow(T,2).div(200)),I.gte(T,2e6)&&(T=I.pow(T,2).div(2e6)),T=I.pow(.95,g.books.fertilizerBook.totalAmount.value).times(T),Y.elfTraining.fertilizerElfTraining.milestones[1].earned.value&&(T=I.pow(.95,g.books.fertilizerBook.totalAmount.value).times(T)),T=T.div(pl.boosts.rainbow1.value),I.add(T,1).pow(1.5).times(5e4)},inverseCost(T){let ni=I.div(T,5e4).root(1.5).sub(1);return ni=ni.mul(pl.boosts.rainbow1.value),Y.elfTraining.fertilizerElfTraining.milestones[1].earned.value&&(ni=ni.div(I.pow(.95,g.books.fertilizerBook.totalAmount.value))),ni=ni.div(I.pow(.95,g.books.fertilizerBook.totalAmount.value)),I.gte(ni,2e6)&&(ni=I.mul(ni,2e6).root(2)),I.gte(ni,200)&&(ni=I.mul(ni,200).root(2)),I.gte(ni,50)&&(ni=I.mul(ni,50).root(2)),I.isNaN(ni)?I.dZero:ni.floor().max(0)},display:{title:"Fertilized Soil",description:"More fertilizer helps trees grow bigger",effectDisplay:r(()=>s(M,null,[d("Trees give "),di(Zi.value),d("x more logs")]))},style:{color:n},visibility:()=>j(aI.bought.value)})),yi=[RI,rI,wi],ui=Ci(()=>[Si(()=>({addend(){return I.times(RI.amount.value,.25)},description:"Heated Cutters",enabled(){return I.gt(RI.amount.value,0)}})),J(()=>({multiplier:2,description:"Dedicated Cutter Heaters",enabled:()=>_i.bought.value}))]),pi=b(()=>ui.apply(1)),_I=Ci(()=>[Si(()=>({addend(){return I.times(rI.amount.value,.25)},description:"Heated Planters",enabled(){return I.gt(rI.amount.value,0)}})),J(()=>({multiplier:2,description:"Dedicated Planter Heaters",enabled:()=>Ei.bought.value}))]),hI=b(()=>_I.apply(1)),ii=Ci(()=>[Si(()=>({addend(){return I.times(wi.amount.value,.25)},description:"Fertilized Soil",enabled(){return I.gt(wi.amount.value,0)}})),J(()=>({multiplier:2,description:"Mulched Soil",enabled:()=>$i.bought.value}))]),Zi=b(()=>ii.apply(1)),Ui=Ci(()=>[Si(()=>({addend(){return y.value},description:"Small Fires",enabled(){return I.gt(Z.value,0)}})),Si(()=>({addend(){return O.value},description:"Bonfires",enabled(){return I.gt(D.value,0)}})),Si(()=>({addend(){return R.value},description:"Charcoal Kilns",enabled(){return I.gt(bi.value,0)}})),Si(()=>({addend(){return q.value},description:"Coal Drills",enabled(){return I.gt(si.value,0)}})),J(()=>({multiplier:2,description:"Carry coal in boxes",enabled:wI.upgrades.coalUpgrade.bought})),J(()=>({multiplier:()=>I.div(wI.buyables.coalBoxesBuyable.amount.value,2).add(1),description:"Carry more coal",enabled:wI.upgrades.coalUpgrade.bought})),J(()=>({multiplier:()=>{let T=w.amount.value;Y.elfTraining.smallfireElfTraining.milestones[0].earned.value&&(T=I.div(H.amount.value,10).add(T));let ni=I.div(T,1e4).add(1);return xI.bought.value&&(ni=I.add(ni,Ri.dyes.green.amount.value)),ni},description:"Small Fires Synergy",enabled:Fi.elves.smallFireElf.bought})),J(()=>({multiplier:()=>I.div(H.amount.value,1e3).add(1),description:"Bonfires Synergy",enabled:Fi.elves.bonfireElf.bought})),J(()=>({multiplier:()=>I.div(A.amount.value,100).times(Ri.boosts.green2.value).add(1),description:"Kiln Synergy",enabled:Fi.elves.kilnElf.bought})),J(()=>({multiplier:2,description:"Mining overalls",enabled:fI.metalUpgrades.metalUpgrade2.bought})),J(()=>({multiplier:3,description:"Mining helmet",enabled:fI.metalUpgrades.metalUpgrade3.bought})),J(()=>({multiplier:4,description:"Felt-Gripped Pick",enabled:fI.metalUpgrades.metalUpgrade4.bought})),J(()=>({multiplier:2,description:"12 Elves Trained",enabled:Fi.milestones[11].earned})),Yl(()=>({exponent:1.25,description:"3 Elves Trained",enabled:Fi.milestones[2].earned,supportLowNumbers:!0})),J(()=>({multiplier:()=>I.mul(xi.depth.value,.25).pow(Y.elfTraining.coalDrillElfTraining.milestones[4].earned.value?1.5:1).add(1),description:"5m Well Depth",enabled:xi.depthMilestones[0].earned})),J(()=>({multiplier:xi.extractorCoal,description:"Heavy Extractor",enabled:()=>I.gt(xi.activeExtractor.value,0)})),J(()=>({multiplier:I.add(m.value,1).log10().add(1).sqrt(),description:"Peppermint Level 2",enabled:Y.elfTraining.coalDrillElfTraining.milestones[1].earned})),J(()=>({multiplier:I.add(jI.buildRefinery.amount.value,1).sqrt(),description:"Refined Coal",enabled:Gi.bought})),ee.reindeer.dancer.modifier,Yl(()=>({exponent:1.05,description:"Jack Level 2",enabled:Y.elfTraining.heatedCutterElfTraining.milestones[1].earned})),Si(()=>({addend:xi.burnerCoal,description:"Oil Decoration",enabled:xi.masteryEffectActive}))]),ZI=b(()=>Ui.apply(0)),Ki=Ci(()=>[Si(()=>({addend(){return u.value},description:"Small Fires",enabled(){return I.gt(Z.value,0)}})),Si(()=>({addend(){return v.value},description:"Bonfires",enabled(){return I.gt(D.value,0)}})),Si(()=>({addend(){return li.value},description:"Charcoal Kilns",enabled(){return I.gt(bi.value,0)}})),J(()=>({multiplier:2,description:"Carry ash in boxes",enabled:wI.upgrades.ashUpgrade.bought})),J(()=>({multiplier:()=>I.div(wI.buyables.ashBoxesBuyable.amount.value,2).add(1),description:"Carry more ash",enabled:wI.upgrades.ashUpgrade.bought})),J(()=>({multiplier:()=>{let T=w.amount.value;return Y.elfTraining.smallfireElfTraining.milestones[0].earned.value&&(T=I.div(H.amount.value,100).add(T)),I.div(T,1e3).add(1)},description:"Small Fires Synergy",enabled:Fi.elves.smallFireElf.bought})),J(()=>({multiplier:()=>I.div(H.amount.value,1e3).add(1),description:"Bonfires Synergy",enabled:Fi.elves.bonfireElf.bought})),J(()=>({multiplier:()=>I.div(A.amount.value,100).times(Ri.boosts.green2.value).add(1),description:"Kiln Synergy",enabled:Fi.elves.kilnElf.bought})),J(()=>({multiplier:4,description:"Mining boots",enabled:fI.metalUpgrades.metalUpgrade1.bought})),J(()=>({multiplier:()=>I.pow(2,Y.level5Elves.value),description:"Arson Assistance",enabled:mI.bought})),Yl(()=>({exponent:1.1,description:"Joy Level 2",enabled:Y.elfTraining.smallfireElfTraining.milestones[1].earned})),Yl(()=>({exponent:1.1,description:"Faith Level 2",enabled:Y.elfTraining.bonfireElfTraining.milestones[1].earned})),Yl(()=>({exponent:1.1,description:"Snowball Level 2",enabled:Y.elfTraining.kilnElfTraining.milestones[1].earned})),Si(()=>({addend:g.paper,description:"Paper Burning",enabled:g.upgrades2.ashUpgrade.bought}))]),qi=b(()=>Ki.apply(0)),dI=Ci(()=>[Si(()=>({addend(){return I.negate(o.value)},description:"Small Fires",enabled(){return I.gt(Z.value,0)}})),Si(()=>({addend(){return I.negate(L.value)},description:"Bonfires",enabled(){return I.gt(D.value,0)}})),Si(()=>({addend(){return I.negate(Ii.value)},description:"Charcoal Kilns",enabled(){return I.gt(bi.value,0)}}))]),oI=b(()=>dI.apply(0)),[tl,Zl]=vl(()=>[{title:"Log Consumption",modifier:dI,base:0,visible(){return I.gt(Z.value,0)||I.gt(D.value,0)||I.gt(bi.value,0)}},{title:"Coal Gain",modifier:Ui,base:0,visible(){return I.gt(Z.value,0)||I.gt(D.value,0)||I.gt(bi.value,0)}},{title:"Ash Gain",modifier:Ki,base:0,visible(){return I.gt(Z.value,0)||I.gt(D.value,0)||I.gt(bi.value,0)}}]),Xl=Ji(!1),gl=r(()=>s(EI,{modelValue:Xl.value,"onUpdate:modelValue":T=>Xl.value=T},{header:()=>s("h2",null,[i,d(" Modifiers")]),body:tl}));NI.on("update",T=>{I.lt(V.day.value,Vn)||I.times(T,oI.value).negate().gt(ki.logs.value)||(ki.logs.value=I.times(T,oI.value).plus(ki.logs.value),m.value=I.times(T,ZI.value).plus(m.value),a.value=I.times(T,qi.value).plus(a.value),Z.value=I.max(Z.value,0))});const{total:Pl,trackerDisplay:Di}=de({resource:m,goal:1e7,name:i,day:Vn,background:l,modal:{show:Xl,display:gl}}),VI={coal:t(0),totalCoal:t(0),ash:t(0),activeFires:t(0),buildFire:{amount:t(0)},activeBonfires:t(0),buildBonfire:{amount:t(0)},activeKilns:t(0),buildKiln:{amount:t(0)},activeDrills:t(0),buildDrill:{amount:t(0)},warmerCutters:{bought:t(!1)},warmerPlanters:{bought:t(!1)},basicFertilizer:{bought:t(!1)},unlockBonfire:{bought:t(!1)},dedicatedCutters:{bought:t(!1)},dedicatedPlanters:{bought:t(!1)},betterFertilizer:{bought:t(!1)},unlockKiln:{bought:t(!1)},efficientSmelther:{bought:t(!1)},arsonistAssistance:{bought:t(!1)},refinedCoal:{bought:t(!1)},coloredFire:{bought:t(!1)},heatedCutters:{amount:t(0)},heatedPlanters:{amount:t(0)},moreFertilizer:{amount:t(0)}},Il=t(!1),ul=b(()=>{var T;return Il.value||((T=V.currentlyMastering.value)==null?void 0:T.name)===i});return{name:i,day:Vn,color:l,coal:m,totalCoal:Pl,computedCoalGain:ZI,ash:a,activeFires:Z,buildFire:w,activeBonfires:D,buildBonfire:H,activeKilns:bi,buildKiln:A,activeDrills:si,buildDrill:Wi,warmerCutters:Pi,warmerPlanters:II,basicFertilizer:aI,unlockBonfire:nI,dedicatedCutters:_i,dedicatedPlanters:Ei,betterFertilizer:$i,unlockKiln:P,efficientSmelther:gi,arsonistAssistance:mI,refinedCoal:Gi,coloredFire:xI,heatedCutters:RI,heatedPlanters:rI,moreFertilizer:wi,computedHeatedCutterEffect:pi,computedHeatedPlanterEffect:hI,computedFertilizerEffect:Zi,generalTabCollapsed:Zl,minWidth:700,display:r(()=>s(M,null,[hi(Di),s(ti,null,null),ul.value?s(M,null,[s("div",{class:"decoration-effect"},[d("Decoration effect:"),s("br",null,null),d("Small fires' price increases drastically slower")]),s(ti,null,null)]):null,s(sl,{resource:m,color:l,style:{marginBottom:0},resourceStyle:{textShadow:"grey 0px 0px 10px"},effectDisplay:I.gt(ZI.value,0)?`+${di(ZI.value)}/s`:void 0},null),s(ti,null,null),s(sl,{resource:a,color:e,style:"margin-bottom: 0",effectDisplay:I.gt(qi.value,0)?`+${di(qi.value)}/s`:void 0},null),s(ti,null,null),s(Be,null,{default:()=>[s(kl,null,{default:()=>[hi(w),s("div",null,[_(I.floor(Z.value)),d("/"),_(I.floor(w.amount.value))]),zI(W,f,p,N)]}),nI.bought.value?s(M,null,[s(ti,null,null),s(kl,null,{default:()=>[hi(H),s("div",null,[_(D.value),d("/"),_(H.amount.value)]),zI(mi,K,x,G)]})]):void 0,P.bought.value?s(M,null,[s(ti,null,null),s(kl,null,{default:()=>[hi(A),s("div",null,[_(bi.value),d("/"),_(A.amount.value)]),zI(B,zi,Li,Mi)]})]):void 0,tI.coalDrill.bought.value?s(M,null,[s(ti,null,null),s(kl,null,{default:()=>[hi(Wi),s("div",null,[_(si.value),d("/"),_(Wi.amount.value)]),zI(ji,uI,vi,E)]})]):void 0]}),s(ti,null,null),xl(Hi,ri,PI),zI(...yi)])),minimizedDisplay:r(()=>s("div",null,[i," ",s("span",{class:"desc"},[di(m.value),d(" "),m.displayName])])),mastery:VI,mastered:Il}});const mn=i=>(Ce("data-v-546b2825"),i=i(),he(),i),co={key:0,class:"ribbon"},ao={class:"date"},to=mn(()=>X("br",null,null,-1)),Zo={class:"date"},oo=mn(()=>X("br",null,null,-1)),bo=mn(()=>X("div",{class:"doors"},null,-1)),yo={class:"date"},jo=mn(()=>X("br",null,null,-1)),uo={key:0,class:"material-icons lock"},Vo={key:1,class:"timer"},Jo=iI({__name:"Day",props:{day:null,symbol:null,layer:null,opened:null,recentlyUpdated:null,shouldNotify:null,mastered:null,visibility:null},emits:["openLore","openLayer","unlockLayer"],setup(i,{emit:l}){const e=i,n=b(()=>e.layer!=null&&I.gte(V.day.value,e.day)&&(new Date().getMonth()===10||Qi.ignoreDate!==Kl.AsIntended)&&(new Date().getDate()>=e.day||Qi.ignoreDate===Kl.IgnoreDay)),m=V.isMastery,a=b(()=>{var y,u;return e.mastered.value||V.currentlyMastering.value==CI[(y=e.layer)!=null?y:""]||["wrappingPaper","ribbon"].includes((u=e.layer)!=null?u:"")||Oi.mastered.value&&e.layer=="elves"||Ri.mastered.value&&e.layer=="elves"}),Z=b(()=>m.value&&!a.value);function o(){n.value===!0&&l("unlockLayer")}return(y,u)=>{var w,W,N;return i.opened.value&&i.visibility!==c(MI).None?(h(),S("div",{key:0,class:LI(["day feature dontMerge opened",{mastered:c(i.mastered),masteryLock:c(Z),wallpaper:i.day<8}])},[i.day>=8?(h(),S("div",co)):oi("",!0),s(KI,{display:(N=(W=c(CI)[(w=i.layer)!=null?w:""])==null?void 0:W.name)!=null?N:"",direction:c(Yi).Up,yoffset:"5px"},{default:Bi(()=>[s(Ae,{appear:"",name:c(Z)?"door-close":"door"},{default:Bi(()=>[X("div",{class:"doors",onClick:u[0]||(u[0]=p=>l("openLayer"))},[X("div",ao,[d("Dec"),to,d(pI(i.day),1)]),X("div",Zo,[d("Dec"),oo,d(pI(i.day),1)])])]),_:1},8,["name"]),X("div",{class:"icon",onClick:u[1]||(u[1]=p=>l("openLayer")),style:BI({backgroundImage:`url(${i.symbol})`})},null,4),X("div",{class:"lore",onClick:u[2]||(u[2]=p=>l("openLore"))},"?"),c(i.shouldNotify)?(h(),eI(En,{key:0})):oi("",!0)]),_:1},8,["display","direction"])],2)):i.visibility!==c(MI).None?(h(),S("div",{key:1,class:LI(["day feature dontMerge",{can:c(n),locked:!c(n),canOpen:c(n),mastered:c(i.mastered)}]),onClick:o},[bo,X("div",yo,[d("Dec"),jo,d(pI(i.day),1)]),c(n)?oi("",!0):(h(),S("div",uo,"lock")),c(V).day.value===i.day&&!c(n)?(h(),S("div",Vo,pI(c(V).timeUntilNewDay.value<0?"Not Ready":c(On)(c(V).timeUntilNewDay.value,0)),1)):oi("",!0),c(n)?(h(),eI(En,{key:2})):oi("",!0)],2)):oi("",!0)}}});var Wo=OI(Jo,[["__scopeId","data-v-546b2825"]]),Hm="data:image/png;base64,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",Am="./assets/elf.9fbfa563.png",Em="./assets/elfManagement.436c8744.png",Bm="./assets/gears.1fab8ab6.png",Pm="./assets/gps.1c9577ce.png",_m="./assets/letterbox.e01917c1.png",qm="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAFxGAABcRgEUlENBAAAAG3RFWHRTb2Z0d2FyZQBDZWxzeXMgU3R1ZGlvIFRvb2zBp+F8AAAE/ElEQVR42u3dW3baMBRAURhzO4x2zO5P25WPPAhIuq99JhAsayNwbHG/rusm6f3ugEiASIBIgEiASIBIgEiASIBIgNQ+mPv9/8Fc13V3ejUeyFsUnwWMRgF5FAYoGgXkWRiQqD2QFThAUUsgq3FAIkAgESCQCJDtQCARIJAIEEAECCQCJArISSQfHRekgIxG4h4yQCBZdAyQADLi+0jlGyw/e+2dAY+7mzdqgr76ek9OQjeENgBSDUl2IO51awjkJJRXTnTWd2T/WxoCJDOSla9r1UQ7faGjMpKWmzZk+riQCUgEjOpIWu9qsmNCfOckZ3nAKxpGZSRjtv2JeCePXj0ywQBkEJZHTnLk6pERBiDDsHx1oqOAZMZREYmdFZ+YYBlXkAowABmAJuqd/LO/WwkHIDqGoxoM30F0DEhFHIBoO5CqMADRFiBwAALIA5MKDkCWTbTIk7Hj41V1HIAknmCnT06HyQxHUiDVd0+EoxeOVEA6PKMASC8caYBkmFjVn7WAoymQrBPr7ZfjTvdBwVEISPVbJcDojQMQwQGI4ABEcAAiMAARMIAAAgwggKg8FEAECSACBBBB0gsIJIAAAogAgUS+gwAiQCARHAmBQAIIIJCoGKCU+2JBAgwgkKgAFiuIQPElXZAUBgKGsiJxq4kgyQgEDFVAEgIEDlVBchwIHAIEDDVBcgQIHAIEDgEChwABRJDsBgKHAIFDgAAiQOAQIIAIEEAECCASIBIgUk4cgAgQQAQHIAKkBhBI1AXHNiCgqAOO7UAgUWUcR4DAooowQoAAo0o4woFAoqwwrCACAxCBURQIHMoMIxQIHLKCAKIGWGxeLVCyAIFD1ZAAIlAyAInG8dXgwgvJWCDfHVRYIDkKJGLCrRhEUABpB2T14EEyG0mr50F2DRokgJQHsn13C0hGImnxyO2RgSoI5N+4dMUNSLblNvlEm3a1rjSQbjiyT6iJV+0ASQYk8yRaOQ5VoACSEMjfY/t1u91+JJknv6/r+ukNoRCQDpd2AckNBRBAUgHJhgWQpDgSvpseBxI9FuVvNekOJNEqEooj4ryXv5u3+8crQOLmQYvnQSasHoCcnxdtth4FpAaQj85T0EWPK9O5BaTPl/WngDzyujPvVQVIkZMXDGT56gELIIC88NonQgFkKBBImgLJdoICkSy5gvXs658Cpdw/CgFZC+TVY+gOpRSQlJsbNwACCSDdgGz5ByEkh4DsmDhZT0AnIJAcBLJyAmUf+AAkKYF0RAIIIJBEApmwbAPSF0nqnz+oMsiAAHJ08CsO7uG7e0ts1NABSaqfga48oAeBbH8GZOWKWB1JKJBOdQEy5fI8IH2/h5RaQcp/MgAEkN3HAYhOfsyyggACSCcglZEAAggggAACCCCAAAIIIDV3cwdEp5AAAgggnYC4zKt2QFYiAUQtgaxA4l4stQbyChK3u2sEkGeRAKIxQL4DxTPpikSS5kdz3sNiVxMB8g4UG8cJkInnEhBABAggAgQQAQIIIIAAAgggkAACCCCAACJAABEggAgQAQKIAAFEgAAiQACBBBBAAAEEEEAAESCACBBABAggRqEeEEgAAQQQQAABBBBAAAFEp4FAAggggAACCCCAAAIJIAIEECXCAQgggEACCCCAAAIIIIAoAggkgAACCCBwAAIIIJAAAggggCgZEEgAgQMQQACBBBBAAAEEDkgK9wfV+oLa+LwMvQAAAABJRU5ErkJggg==",$m="./assets/paperStacks.4c96ec8c.png",Km="./assets/presents.239bd910.png",id="./assets/reindeer.e74a3003.png",Id="./assets/ribbons.4f911bf2.png",po="./assets/santasSack.e8f704d0.png",ld="./assets/sleigh.5a68a873.png",Zm="./assets/snowflake.7c011a13.svg",ed="./assets/sws.714ad454.png",sd="./assets/teddyBear.15e16cc2.png",nd="./assets/tree.35808197.png",rn="./assets/truck.ed3d0e9b.png",md="./assets/workshopMansion.f5e58b53.png",dd="./assets/wrappingPaper.7d754375.png";const V=al("main",function(){const i=t(1),l=t(!1),e=b(()=>{if(Qi.ignoreDate===Kl.IgnoreDay)return 0;{const G=Qi.ignoreDate===Kl.IgnoreMonth?new Date().getMonth():11;return(+new Date(new Date().getFullYear(),G,i.value)-Qi.time)/1e3}}),n=Ji(!1),m=Ji(-1),a=Ji(""),Z=Ji(),o=Ji(!1),y=Ji(!1),u=ea(()=>({boundingRect:Ji(null),onContainerResized(G){this.boundingRect.value=G},style:"z-index: -1"})),w=u.addEmitter({emit:!1,autoUpdate:!0,lifetime:{min:10,max:10},emitterLifetime:-1,pos:{x:0,y:0},frequency:.05,maxParticles:1e3,behaviors:[{type:"alphaStatic",config:{alpha:1}},{type:"scaleStatic",config:{min:1,max:1}},{type:"moveSpeed",config:{speed:{list:[{value:200,time:0},{value:100,time:1}],isStepped:!1}}},{type:"rotationStatic",config:{min:70,max:110}},{type:"spawnShape",config:{type:"rect",data:{x:0,y:0,w:1600,h:1}}},{type:"textureSingle",config:{texture:Zm}}]});AI(()=>{const G=i.value===25;w.then(x=>x.emit=G)});const W=b(()=>p.value?Object.values(CI).find(G=>{var x;return c(G.mastered)===!1&&!["Elves","Management"].includes(c((x=G==null?void 0:G.name)!=null?x:""))}):void 0),N=Ji(!1),p=t(!1),f=()=>{N.value=!0,p.value=!p.value;for(const G of[ki,XI,Oi,Fi,g,wI,tI,fI,xi,jI,Ri,Y,Ll])C(G.mastery,G[yl]);N.value=!1};function C(G,x){for(const K of Object.keys(G))if(Om(G[K])){if(!dl(x[K])||Nn(x[K])){console.error("Something went wrong swapping state",K,x,G);continue}[G[K].value,x[K].value]=[x[K].value,G[K].value]}else C(G[K],x[K])}const D=b(()=>{let G=Object.values(CI).filter(x=>x&&"mastered"in x).findIndex(x=>x.mastered.value===!1);return G===-1&&(G=Object.values(CI).filter(x=>x&&"mastered"in x).length),G});function L(G){if(window.matchMedia("(min-width: 1468px)").matches)if(Qi.tabs.includes(G)){const x=Qi.tabs.lastIndexOf(G);Qi.tabs.splice(x,1)}else Qi.tabs.push(G),V.minimized.value=!0;else Qi.tabs.splice(1,1/0,G);CI[G].minimized.value=!1}function O(G){const x=t(!1),K=t(!1);return fl(()=>{const bi=G(),Ii=nl(bi.shouldNotify),R=nl(()=>c(Ii)||c(K));return{...bi,opened:x,shouldNotify:R,recentlyUpdated:K,[El]:Wo,[me]:function(){var vi,uI;const{day:li,layer:A,symbol:B,opened:Mi,shouldNotify:Li,story:zi,completedStory:si,masteredStory:q,recentlyUpdated:Wi,visibility:E}=this,ji=(uI=(vi=CI[A!=null?A:""])==null?void 0:vi.mastered)!=null?uI:Ji(!1);return{day:li,symbol:B,layer:A,opened:Mi,recentlyUpdated:Wi,shouldNotify:Li,mastered:ji,visibility:E,onOpenLore(){var aI,nI;const Pi=V.day.value>li;m.value=Pi?li-1:-1;const II=c((nI=(aI=CI[A!=null?A:"trees"])==null?void 0:aI.name)!=null?nI:"");a.value=ji.value?`${II} - Decorated!`:Pi?`${II} - Completed!`:II,Z.value=Pi?c(ji)?`${zi}
${si}
${q}`:`${zi}
${si}`:zi,n.value=!0},onOpenLayer(){if(li!=25){if(Wi.value=!1,window.matchMedia("(min-width: 1468px)").matches)if(Qi.tabs.includes(A!=null?A:"trees")){const Pi=Qi.tabs.lastIndexOf(A!=null?A:"trees");Qi.tabs.splice(Pi,1)}else Qi.tabs.push(A!=null?A:"trees"),V.minimized.value=!0;else Qi.tabs.splice(1,1/0,A!=null?A:"trees");CI[A!=null?A:"trees"].minimized.value=!1}},onUnlockLayer(){(A!=null||li==25)&&(Mi.value=!0,setTimeout(()=>{var Pi,II;m.value=-1,a.value=li==25?"The End!":c((II=(Pi=CI[A!=null?A:"trees"])==null?void 0:Pi.name)!=null?II:""),Z.value=zi,Qi.autoPause&&(Qi.devSpeed=null),n.value=!0},1e3))}}}}})}const v=[O(()=>({day:1,shouldNotify:!1,layer:"trees",symbol:nd,story:"Oh no! Santa forgot about Christmas and it's only 25 days away! He's asked for your help due to your history getting large quantities of things in short amounts of time. Unfortunately you're really starting from scratch here - let's start with getting wood, which you'll need for everything from building workshops to wrapping paper to many of the toys themselves!",completedStory:"Santa looks at all the wood you've gathered and tells you you've done well! He says you should take the rest of the day off so you're refreshed for tomorrow's work. Good Job!",masteredStory:"As you repeat the basic actions again, you feel like you've learned something that you didn't know the first time around. Santa is impressed at your new knowledge and inspires you to attempt this with more jobs. Great Job!"})),O(()=>({day:2,shouldNotify:!1,layer:"workshop",symbol:ed,story:"Santa looked over your tree farm and was impressed with how much you could accomplish in just one day. Today's goal is to get a workshop built up for the elves to work in - and apparently, they need quite a lot of space to work!",completedStory:"The workshop complete, Santa once again dismisses you for the day. With a strong foundation, this workshop should suffice for supporting future work toward this impossible mission. Good Job!",masteredStory:"As you attempt to build the workshop again with your newfound experiences and resources, you realize you could have built the workshop a little bit better. As you keep building and building, you realize that you could've built it without wasting any resources. Great Job!"})),O(()=>({day:3,shouldNotify:!1,layer:"coal",symbol:Hm,story:"Santa tells you that unfortunately there are quite a few naughty children out there this year, and he's going to need you to gather as much coal as you can for him to give out.",completedStory:"Santa looks at all the coal you've gathered and tells you you've done well! He says you should take the rest of the day off so you're refreshed for tomorrow's work. Good Job!",masteredStory:"It's another typical day, attempting to redo your work again, but this time for coal. While doing this tedious task, an elf comes up to you. It gives you a improved blueprint on how to make small fires. You try it, and you realize that it's a lot more efficent than your old buildings designs. You thank the elf, and resume your work. Great Job!"})),O(()=>({day:4,shouldNotify:!1,layer:"elves",symbol:Am,story:"Alright, it seems you finally have enough things set up to start bringing in the elves! Unfortunately, it seems they'll need to be retrained on how to help, since they've stopped practicing for 11 months!",completedStory:"The workshop now hums with the bustling elves working on everything. They can take it from here - you deserve a break after such a long day! Good Job!",masteredStory:"This place feels a lot more better, with less naughty elves who are more excited than ever before to do something! As you collapse into a chair thinking of all of your hard work, Santa comes by yet again to congratulate you on your hard work. You feel a pang of jealousy as Santa is taking all the credit for your work, but you decide that saving Christmas is worth it. Great Job!"})),O(()=>({day:5,shouldNotify:!1,layer:"paper",symbol:$m,story:"With the elves trained, we're almost ready to start working on these presents! Just a couple more pre-reqs first, starting with turning all this wood into wood pulp and finally into paper, which will be required for wrapping paper later on but in the meantime can be used to help write guides which will help these elves continue their education!",completedStory:"You look upon your rivers of book pulp as you hand out stacks of papers to elves to read through. You've continued getting closer and closer to preparing for Christmas, and can go to bed satisfied with your progress. Good Job!",masteredStory:"Paper. Who knew it could be so versatile? As you slowly but surely improve your skills on making paper, you find more efficent ways to make it, and as a bonus, it's also environmentally friendly (which kinda makes up for you chopping a bit too many trees)! As you pass this information along to Santa's elves, they become more excited. Great Job!"})),O(()=>({day:6,shouldNotify:!1,layer:"boxes",symbol:Dn,story:"You watch all these elves carrying incredibly large loads just in their open elf-sized hands, and realize there's probably a better way. You need to put the toys in boxes anyways, so why don't we get started working on those so the workers can take advantage as well?",completedStory:"Wow, those boxes are really convenient! The workshop feels more and more proper with every day. You tick another requirement on your list and start looking towards tomorrow. Good Job!",masteredStory:"You look at your massive amounts of boxes, but something doesn't feel right. Oh wait, the elves are only filling the boxes to half the amount that it can actually store! As realisation hits you on how you can make boxes more efficent by using simple methods, you realize that you ought to teach the art of dumping-more-stuff-in-boxes-also-known-as-hoarding to the elves. Whew, that was a lot of work. Great Job!"})),O(()=>({day:7,shouldNotify:!1,layer:"metal",symbol:Ks,story:"You woke up ready to make some toys, before realizing most toys these days are made out of more than just wood! You're sure you're close to really getting to work, but there's a few more materials you're going to need - like metal! Lots of things need metal!",completedStory:"The sounds of drills and metal clanging join the already loud din as yet another piece of the puzzle fits into place. You're making solid progress, Good Job!",masteredStory:`Cling clang clang clang. The sounds of even more drills hit your ears. As you fondly look back at the terrific work you've done, you become more motivated to work harder. Just then, Santa appears in front of you and you scream. He says, "I see you're working hard. I suggest that you take a break." You thank Santa for the break, sit in a chair made by the elves as a gift, and relax. Great Job!`})),O(()=>({day:8,shouldNotify:!1,layer:"cloth",symbol:qs,story:"Another resource you're going to need for gifts is cloth! Fortunately you think this should be pretty easy to prepare using a sheep farm - and as you've already proven with the tree farm, that's something you can handle!",completedStory:"You fall into a pile of wool, sighing contentedly as you look at all the progress you've made today. Good Job!",masteredStory:"You're able to bundle yourself in layer after layer of clothing. You watch as everything happens together, harmoniously. Great Job!"})),O(()=>({day:9,shouldNotify:!1,layer:"oil",symbol:qm,story:"Looks like you just need one more thing before the toy factory can start running: plastic! Every toy nowadays is made with plastic! But wait, how are you going to get plastic? What can make plastic? Wait that's right, oil! You figured out you might as well repurpose your coal and ore drills into something that can get you oil, but unfortunately you'll need to mine much deeper that you're currently doing, so let's get to work!",completedStory:"It took a while, but you finally got enough oil for the next step! You deserve a good rest after all this digging work - tomorrow will be a busy day! Good Job!",masteredStory:"Oil shoots into the air like never before. Physics itself seems to be broken, as there's no other explanation for how you can make everything perfectly efficient without any kind of loss whatsoever. But to be fair, there's probably already a bit of physics shenanigans going on in a typical Christmas anyways. Great Job!"})),O(()=>({day:10,shouldNotify:!1,layer:"plastic",symbol:In,story:"Now that plenty of oil has been prepared, it's time to start refining it into plastic! This should be incredibly useful not only for toys, but making tools and other items!",completedStory:"You've started refining massive amounts of oil into slightly less massive amounts of plastic. You have a slight pang of regret thinking of the environmental impact, but ultimately decide Christmas is worth it. Good Job!",masteredStory:"You're now making more plastic than you know what to do with. You'll be able to make so many toys with all of this! Great Job!"})),O(()=>({day:11,shouldNotify:!1,layer:"dyes",symbol:$s,story:"To make toys, we're going to need some color to make them look nice and enticing! We can't just give kids clear toys after all! To add some color to our toys, we'll need some dyes!",completedStory:"After all that effort, you finally have a rainbow of dyes to choose from! Now the children won't be able to resist the toys you have to offer, once you get them made of course... Good Job!",masteredStory:"You remember back to when making various dyes was such a painful process, and contrast it to now where everything is trivialized and you even have more uses for all the dyes! Great Job!"})),O(()=>({day:12,shouldNotify:!1,layer:"management",symbol:Em,story:"You watch as the elves work, and you realize that they could probably be trained to help out better. Just then, Santa comes over to check on your progress. You reply that you're doing fine, except that the elves may need a bit of behavior management. Santa offers to help, saying that he doesn't want to leave you to do everything. Unfortunately for you, the behavior problems won't fix themselves, so let's get to work!",completedStory:"Woo! You are exhausted - this layer felt really long to you. It's great seeing the elves so productive, although you worry a bit about your own job security now! Good Job!",masteredStory:""})),O(()=>({day:13,shouldNotify:!1,layer:"management",symbol:md,story:"So after a good night's rest you decide that maybe making these elves able to do all the work for you isn't something to be scared of, but rather encouraged. Let's spend another day continuing to train them up and really get this place spinning. They are Santa's elves after all, they're supposed to be able to run everything without you!",completedStory:"The elves are doing an incredible job, and Santa does not seem keen on firing you - Score! Now you can get to work on guiding this properly trained highly functional group of hard workers to make Christmas as great as possible. Good Job!",masteredStory:""})),O(()=>({day:14,shouldNotify:!1,layer:"letters",symbol:_m,story:"Fully prepared to start working on presents, you realize you don't actually know what to make! You ask Santa and he points at a massive pile of letters hiding just off-camera. Those are all the letters to Santa that need to be processed, sorted, and categorized appropriately so every kid gets what they need!",completedStory:"The letters are sorted! You have a slight feeling you may have rushed a little, and suddenly understand why sometimes you don't get everything you asked Santa for every year, or even the occasional bad gift. You sympathetically pat Santa on the back as you head to bed for the day. Good Job!",masteredStory:"Finally, you've become the letter processing machine you always knew you could be. There's nothing anyone can do to stop you from processing every gosh darn letter to Santa there is. Great Job!"})),O(()=>({day:15,shouldNotify:!1,layer:"wrappingPaper",symbol:dd,story:"You'll need to produce wrapping paper so the presents can be wrapped. The elves are getting a bit bored of their boring old workstations, so you decide to let them decorate with some wrapping paper.",completedStory:"You've produced enough wrapping paper, and the elves are happy with their new workstations. However, some will need more than just wrapping paper to decorate. For now, Good Job!",masteredStory:""})),O(()=>({day:16,shouldNotify:!1,layer:"ribbon",symbol:Id,story:"In addition to wrapping paper, you think some ribbons are in order! These should work pretty similarly, allowing you to decorate even more workstations!",completedStory:"Ribbon surrounds the north pole now - everything looks fantastic, and you're pretty sure now you have every single material you could possibly need to start making toys and preparing them for Christmas! With just under 10 days left until Christmas, you go to sleep giddy with anticipation. Good Job!",masteredStory:""})),O(()=>({day:17,shouldNotify:!1,layer:"toys",symbol:rn,story:"You've had enough of this running around and stalling - it is time to create some toys NOW! You have everything you need and then some, so let's finally just sit down and get this process started!",completedStory:"In your haste you may have been a bit wasteful with resources, but it feels really good to finally make some meaningful progress on making toys for Santa. You already envision plans on how to get elves to help you out and start pumping out these toys, but for now... Good Job!",masteredStory:""})),O(()=>({day:18,shouldNotify:!1,layer:"factory",symbol:Bm,story:"Alright, so those toys were using incredibly large amounts of resources to make. Fortunately, you happen to have access to a group of people with an uncanny knack for making stuff without actually consuming materials - Elves! Let's turn this workshop into a proper factory, and get them producing these toys with miraculous efficiency!",completedStory:"That was a bit different than the usual elf training you are used to. But this factory seems very versatile, so you think it's a fair trade-off for needing to set things up a bit more. Good Job!",masteredStory:""})),O(()=>({day:19,shouldNotify:!1,layer:"factory",symbol:sd,story:"Santa pulls you aside and says he thinks 3 unique toys might not be enough. You try to argue that they come in many color variations due to all the dyes you're using, but Santas insists you're going to need more. Well, suppose it's time to expand the factory!",completedStory:"Alright, admittedly 6 unique toys still feels like a bit of a compromise, but Santa seems pleased enough and with Christmas less than a week away, you're more than satisfied. Good Job!",masteredStory:""})),O(()=>({day:20,shouldNotify:!1,layer:"factory",symbol:Km,story:"Santa comes by again, and tells you that just toys may not be appealing enough. He tells you that you should probably wrap them in some wrapping paper so that it's more of a surprise. You try to argue that you've already done too much for him and deserve a day off, but Santa argues that it's for the benefit of everyone and that you'll get your vacation soon. Oh well, time to get back to the factory and expand it even more. Here we go again!",completedStory:"That was a lot of work, but it certainly felt worth actually using all those decorative supplies you'd previously made. One more sleepless night down, just a handful more to go. Good Job!",masteredStory:""})),O(()=>({day:21,shouldNotify:!1,layer:"reindeer",symbol:id,story:"Now that the toys are being taken care of, it's time to make sure everything is prepped for the big night. One immediate concern is the reindeer, who are going to have to be in tip-top shape. Fortunately, Santa has a recipe to a very strong vitamin-filled kibble that'll get them pumped in no time!",completedStory:"Alright, now that the reindeer have been given all their ste- vitamins, I mean, they should be prepared for Christmas. Good Job!",masteredStory:""})),O(()=>({day:22,shouldNotify:!1,layer:"sleigh",symbol:ld,story:"You realize you haven't noticed a very important object since you've started working here. Where's the sleigh? You bring it up to Santa and he immediately becomes visibly stressed, mentioning it's been in disrepair and he completely forgot! You promise you'll get it back in shape in no time!",completedStory:"Crisis averted! The sleigh has been returned to it's full splendor. Santa is incredibly appreciative. Good Job!",masteredStory:""})),O(()=>({day:23,shouldNotify:!1,layer:"routing",symbol:Pm,story:"You're almost ready for the big day! The next step is to find an optimal route to ensure you can get all the presents delivered before kids start waking up! This is like the travelling salesman problem on steroids. Good Luck!",completedStory:"Take that, math majors! Optimal route planned with time to spare. Good Job!",masteredStory:""})),O(()=>({day:24,shouldNotify:!1,layer:"packing",symbol:po,story:"You're almost done! The last step is to load up the sleigh with all the presents and get ready to go! You're going to need to pack a lot of presents, so you'll need to make sure you pack them tightly enough. Good Luck!",completedStory:"At last, you've crammed in all the presents Santa needs. Santa can take it from here. Good Job!",masteredStory:""})),O(()=>({day:25,shouldNotify:!1,layer:null,symbol:Zm,story:`It's Christmas. Thanks to your efforts, Santa has delivered all the presents to people all over the world. That is, all but one...


Open your present

`,completedStory:"",masteredStory:"",visibility:MI.None}))];function H(){m.value=i.value-1,a.value="Day Complete!",Z.value=v[i.value-1].completedStory,n.value=!0,i.value++,V.minimized.value=!1,Qi.autoPause&&(Qi.devSpeed=0),Fl()}function mi(){const G=W.value;G!=null&&(m.value=G.day-1,a.value="Day Decorated!",Z.value=v[m.value].masteredStory,n.value=!0,G.mastered!=null&&(G.mastered.value=!0),f(),G.id==="cloth"&&(Fi.elves.plasticElf.bought.value=!0))}return AI(()=>{i.value===25&&n.value===!1&&!l.value&&(m.value=-1,a.value="Merry Christmas!",Z.value=v[i.value-1].story,n.value=!0,l.value=!0)}),{name:"Calendar",days:v,day:i,openDay:L,timeUntilNewDay:e,loreScene:m,loreTitle:a,loreBody:Z,dismissedIgnoreDateWarning:o,particles:u,showLoreModal:n,completeDay:H,completeMastery:mi,minWidth:700,isMastery:p,toggleMastery:f,swappingMastery:N,currentlyMastering:W,masteredDays:D,creditsOpen:y,credits:na,hasWon:l,display:r(()=>{var G;return s(M,null,[Qi.devSpeed===0?s("div",null,[d("Game Paused")]):null,Qi.devSpeed!=null&&Qi.devSpeed!==0&&Qi.devSpeed!==1?s("div",null,[d("Dev Speed: "),di(Qi.devSpeed),d("x")]):null,Qi.offlineTime!=null&&Qi.offlineTime!==0?s("div",null,[d("Offline Time: "),Se(Qi.offlineTime)]):null,s(ti,null,null),p.value?s(M,null,[s("div",null,[d("Now decorating "),(G=W.value)==null?void 0:G.name]),s(ti,null,null)]):null,s("div",{class:{advent:!0,decorating:p.value}},[v.reduce((x,K)=>(x[x.length-1].length===4&&x.push([]),x[x.length-1].push(K),x),[[]]).map(x=>zI(...x))]),l.value?s(M,null,[s(ti,null,null),s("button",{class:"button",style:"font-size: xx-large",onClick:()=>y.value=!0},[d("Open Credits")])]):null,hi(u)])})}});AI(()=>{Qi.tabs.length===1&&(V.minimized.value=!1)});const Mo=i=>[V,ki,XI,Oi,Fi,g,wI,tI,fI,xi,jI,Ri,Y,Ll,pl,fs,lI,Gl,ee,$l,Dl,gI],Sn=b(()=>!1);function ro(i,l){var e,n,m,a;i!==void 0&&i<"0.6"&&((n=(e=l.layers)==null?void 0:e.main)==null?void 0:n.day)!==void 0&&(((m=l.layers)==null?void 0:m.main).day.value=Math.min(((a=l.layers)==null?void 0:a.main).day.value,23))}var wo=Object.freeze(Object.defineProperty({__proto__:null,main:V,getInitialLayers:Mo,hasWon:Sn,fixOldSave:ro},Symbol.toStringTag,{value:"Module"})),No="./assets/sleighWSack.7f1101f4.png";const Oo={class:"scene"},Co=["src"],ho=["src"],Yo=["src"],vo=["src"],Xo=["src"],zo=["src"],Ro=["src"],Go=["src"],fo=["src"],xo=["src"],Do=["src"],So=["src"],Lo=["src"],To=["src"],Fo=["src"],ko=["src"],go=["src"],Qo=["src"],Uo=["src"],Ho=["src"],Ao=["src"],Eo={key:13,class:"scene-bubble left",style:{left:"64%",bottom:"37%"}},Bo=["src"],Po=["src"],_o=["src"],qo=iI({__name:"Scene",props:{day:null},setup(i){return(l,e)=>(h(),S("div",Oo,[i.day>=7?(h(),S("img",{key:0,src:c(qs),class:"scene-item",style:{left:"4%",bottom:"3%",width:"40px",height:"40px"}},null,8,Co)):oi("",!0),i.day>=0?(h(),S("img",{key:1,src:c(nd),class:"scene-item",style:{left:"6%",bottom:"10%",width:"120px",height:"120px"}},null,8,ho)):oi("",!0),i.day>=20?(h(),S("img",{key:2,src:c(id),class:"scene-item",style:{left:"13%",bottom:"8%"}},null,8,Yo)):oi("",!0),i.day>=13?(h(),S("img",{key:3,src:c(_m),class:"scene-item",style:{left:"26%",bottom:"12%",width:"40px",height:"40px"}},null,8,vo)):oi("",!0),i.day>=21?(h(),S("img",{key:4,src:i.day>=23?c(No):c(ld),class:"scene-item",style:{left:"10%",bottom:"56%",transform:"rotate(24deg)",width:"100px",height:"100px"}},null,8,Xo)):oi("",!0),i.day>=12?(h(),S("img",{key:5,src:c(md),class:"scene-item",style:{left:"33%",bottom:"12%",width:"30%",height:"60%"}},null,8,zo)):(h(),S(M,{key:6},[i.day>=11?(h(),S("img",{key:0,src:c(Em),class:"scene-item",style:{left:"28%",bottom:"12%"}},null,8,Ro)):oi("",!0),i.day>=1?(h(),S("img",{key:1,src:c(ed),class:"scene-item",style:{left:"40%",bottom:"12%"}},null,8,Go)):oi("",!0),i.day>=3?(h(),S("img",{key:2,src:c(Am),class:"scene-item",style:{left:"52%",bottom:"12%"}},null,8,fo)):oi("",!0)],64)),i.day>=2?(h(),S("img",{key:7,src:c(Hm),class:"scene-item",style:{left:"65%",bottom:"12%",width:"40px",height:"40px"}},null,8,xo)):oi("",!0),i.day>=6?(h(),S("img",{key:8,src:c(Ks),class:"scene-item",style:{left:"72%",bottom:"8%",width:"40px",height:"40px"}},null,8,Do)):oi("",!0),i.day>=22?(h(),S("img",{key:9,src:c(Pm),class:"scene-item",style:{left:"76%",bottom:"4%",width:"40px",height:"40px"}},null,8,So)):oi("",!0),i.day>=8?(h(),S("img",{key:10,src:c(qm),class:"scene-item",style:{left:"80%",bottom:"6%"}},null,8,Lo)):oi("",!0),i.day>=4?(h(),S("div",{key:11,class:"scene-bubble",style:BI(i.day>=12?"left: 33%; bottom: 73%":"left: 50%; bottom: 38%")},[i.day>=4?(h(),S("img",{key:0,src:c($m),class:"scene-item"},null,8,To)):oi("",!0),i.day>=5?(h(),S("img",{key:1,src:c(Dn),class:"scene-item"},null,8,Fo)):oi("",!0),i.day>=9?(h(),S("img",{key:2,src:c(In),class:"scene-item"},null,8,ko)):oi("",!0),i.day>=10?(h(),S("img",{key:3,src:c($s),class:"scene-item"},null,8,go)):oi("",!0),i.day>=14?(h(),S("img",{key:4,src:c(dd),class:"scene-item"},null,8,Qo)):oi("",!0),i.day>=15?(h(),S("img",{key:5,src:c(Id),class:"scene-item"},null,8,Uo)):oi("",!0),i.day==16?(h(),S("img",{key:6,src:c(rn),class:"scene-item"},null,8,Ho)):oi("",!0)],4)):oi("",!0),i.day>=17?(h(),S("img",{key:12,src:c(Bm),class:"scene-item",style:{left:"50%",bottom:"33%",width:"70px",height:"70px"}},null,8,Ao)):oi("",!0),i.day>=4?(h(),S("div",Eo,[i.day>=17?(h(),S("img",{key:0,src:c(rn),class:"scene-item"},null,8,Bo)):oi("",!0),i.day>=18?(h(),S("img",{key:1,src:c(sd),class:"scene-item"},null,8,Po)):oi("",!0),i.day>=19?(h(),S("img",{key:2,src:c(Km),class:"scene-item"},null,8,_o)):oi("",!0)])):oi("",!0)]))}});var $o=OI(qo,[["__scopeId","data-v-fc4db96e"]]);const Ko=iI({components:{Context:Nm},props:{index:{type:Number,required:!0},display:{type:Ti(Object,String,Function),required:!0},minimizedDisplay:Ti(Object,String,Function),minimized:{type:Object,required:!0},name:{type:Ti(String),required:!0},color:Ti(String),minimizable:Ti(Boolean),nodes:{type:Object,required:!0}},emits:["setMinimized"],setup(i){const{display:l,index:e,minimized:n,minimizedDisplay:m}=cl(i),a=os(l),Z=Oe(m),o=b(()=>QI.allowGoBack&&e.value>0&&!jl(n));function y(){Qi.tabs.splice(c(i.index),1)}function u(w){i.nodes.value=w}return{component:a,minimizedComponent:Z,showGoBack:o,updateNodes:u,unref:c,goBack:y}}}),ib={key:1};function Ib(i,l,e,n,m,a){const Z=be("Context");return h(),S("div",{class:"layer-container",style:BI({"--layer-color":i.unref(i.color)})},[i.showGoBack?(h(),S("button",{key:0,class:"goBack",onClick:l[0]||(l[0]=(...o)=>i.goBack&&i.goBack(...o))},"\u274C")):oi("",!0),i.unref(i.minimized)?(h(),S("button",{key:1,class:"layer-tab minimized",onClick:l[1]||(l[1]=o=>i.$emit("setMinimized",!1))},[i.minimizedComponent?(h(),eI(qI(i.minimizedComponent),{key:0})):(h(),S("div",ib,pI(i.unref(i.name)),1))])):(h(),S("div",{key:2,class:LI(["layer-tab",{showGoBack:i.showGoBack}])},[s(Z,{onUpdateNodes:i.updateNodes},{default:Bi(()=>[(h(),eI(qI(i.component)))]),_:1},8,["onUpdateNodes"])],2)),i.unref(i.minimizable)?(h(),S("button",{key:3,class:"minimize",onClick:l[2]||(l[2]=o=>i.$emit("setMinimized",!0))}," \u25BC ")):oi("",!0)],4)}var lb=OI(Ko,[["render",Ib],["__scopeId","data-v-096d45c7"]]);const cd=i=>(Ce("data-v-fd18bc22"),i=i(),he(),i),eb=cd(()=>X("h2",null,"Changelog",-1)),sb=cd(()=>X("details",{open:""},[X("summary",null,[d("v1.0 Initial Commit - "),X("time",null,"2022-12-24")]),d(" The game is finished! "),X("ul",null,[X("li",{class:"fix"},"1.0.1 - Fixed mastery resets breaking the game state"),X("li",{class:"fix"},"1.0.1 - Fixed the wrong elves causing elf resets"),X("li",{class:"fix"}," 1.0.2 - Fixed factory upgrade grid cost increasing more than it should "),X("li",{class:"fix"},"1.0.2 - Fixed white dye boost showing before unlocking"),X("li",{class:"fix"},"1.0.2 - Hardcap packing resets to 3"),X("li",{class:"feature"},"1.0.3 - Added option to ignore date"),X("li",{class:"feature"}," 1.0.4 - Added warning when it's not December to change the ignore date option ")])],-1)),nb=iI({__name:"Changelog",setup(i,{expose:l}){const e=Ji(!1);return l({open(){e.value=!0}}),(n,m)=>(h(),eI(EI,{modelValue:e.value,"onUpdate:modelValue":m[0]||(m[0]=a=>e.value=a)},{header:Bi(()=>[eb]),body:Bi(()=>[sb]),_:1},8,["modelValue"]))}});var mb=OI(nb,[["__scopeId","data-v-fd18bc22"]]);const db={class:"info-modal-header"},cb=["src","alt"],ab={class:"info-modal-title"},tb={key:0},Zb={key:0},ob={key:0},bb=X("div",null," Made in Profectus, by thepaperpilot with inspiration from Acameada and Jacorb ",-1),yb=X("br",null,null,-1),jb=X("br",null,null,-1),ub=["href"],Vb=X("span",{class:"material-icons info-modal-discord"},"discord",-1),Jb=X("div",null,[X("a",{href:"https://discord.gg/WzejVAx",class:"info-modal-discord-link",target:"_blank"},[X("span",{class:"material-icons info-modal-discord"},"discord"),d(" The Paper Pilot Community ")])],-1),Wb=X("div",null,[X("a",{href:"https://discord.gg/F3xveHV",class:"info-modal-discord-link",target:"_blank"},[X("span",{class:"material-icons info-modal-discord"},"discord"),d(" The Modding Tree ")])],-1),pb=X("br",null,null,-1);var Mb=iI({__name:"Info",props:{changelog:null},setup(i,{expose:l}){const e=i,{title:n,logo:m,author:a,discordName:Z,discordLink:o,versionNumber:y,versionTitle:u}=QI,w=cl(e),W=Ji(!1),N=b(()=>Se(Qi.timePlayed)),p=b(()=>GI(r(()=>s(M,null,[Gm.map(hi)]))));l({open(){W.value=!0}});function f(){var C;(C=c(w.changelog))==null||C.open()}return(C,D)=>(h(),eI(EI,{class:"info-modal",modelValue:W.value,"onUpdate:modelValue":D[0]||(D[0]=L=>W.value=L)},{header:Bi(()=>[X("div",db,[c(m)?(h(),S("img",{key:0,class:"info-modal-logo",src:c(m),alt:c(n)},null,8,cb)):oi("",!0),X("div",ab,[X("h2",null,"- "+pI(c(n))+" -",1),X("h4",null,[d(" - v"+pI(c(y)),1),c(u)?(h(),S("span",tb,": "+pI(c(u)),1)):oi("",!0),d(" - ")])])])]),body:Bi(({shown:L})=>[L?(h(),S("div",Zb,[c(a)?(h(),S("div",ob,"By "+pI(c(a)),1)):oi("",!0),bb,yb,X("div",{class:"link",onClick:f},"Changelog"),jb,X("div",null,[c(o)?(h(),S("a",{key:0,href:c(o),class:"info-modal-discord-link",target:"_blank"},[Vb,d(" "+pI(c(Z)),1)],8,ub)):oi("",!0)]),Jb,Wb,pb,X("div",null,"Time Played: "+pI(c(N)),1),(h(),eI(qI(c(p))))])):oi("",!0)]),_:1},8,["modelValue"]))}});const rb=["onClick"],wb=iI({__name:"FeedbackButton",props:{left:{type:Boolean}},emits:["click"],setup(i,{emit:l}){const e=Ji(!1),n=Ji(null);function m(){l("click"),n.value&&clearTimeout(n.value),e.value=!1,De(()=>{e.value=!0,n.value=setTimeout(()=>e.value=!1,500)})}return(a,Z)=>(h(),S("button",{onClick:as(m,["stop"]),class:LI(["feedback",{activated:e.value,left:i.left}])},[ie(a.$slots,"default",{},void 0,!0)],10,rb))}});var ad=OI(wb,[["__scopeId","data-v-01a1b95c"]]);const Nb=X("h2",null,"Settings",-1),Ob={class:"option-tabs"},Cb={key:0},hb={key:1},Yb={key:2,style:{"text-align":"center"}},vb={key:1};var Xb=iI({__name:"Options",setup(i,{expose:l}){const e=Ji(!1),n=Ji("behaviour");l({isTab:m,setTab:a,save(){Fl()},open(){e.value=!0}});function m(bi){return bi==n.value}function a(bi){n.value=bi}const Z=Object.keys(ae).map(bi=>({label:wm(bi),value:bi})),o=[{label:"Don't Ignore",value:Kl.AsIntended},{label:"Ignore Month",value:Kl.IgnoreMonth},{label:"Ignore Month and Day",value:Kl.IgnoreDay}],y=b(()=>GI(r(()=>s(M,null,[Rm.map(hi)])))),{showTPS:u,theme:w,usingLog:W,alignUnits:N}=cl(UI),{autosave:p,autoPause:f,ignoreDate:C}=cl(Qi),D=b({get(){return Qi.devSpeed===0},set(bi){Qi.devSpeed=bi?0:null}}),L=b(()=>{var bi,Ii,R;return((bi=CI.main)==null?void 0:bi.day.value)>=25||((R=CI.main)==null?void 0:R.days[((Ii=CI.main)==null?void 0:Ii.day.value)-1].opened.value)}),O=r(()=>s("span",{class:"option-title"},[d("Autosave"),s(KI,{display:"Save-specific"},{default:()=>[d("*")]}),s("desc",null,[d("Automatically save the game every second or when the game is closed.")])])),v=r(()=>s("span",{class:"option-title"},[d("Ignore Date"),s(KI,{display:"Save-specific"},{default:()=>[d("*")]}),s("desc",null,[d("Allow playing the game not as an advent calendar")])])),H=r(()=>s("span",{class:"option-title"},[d("Pause game"),s(KI,{display:"Save-specific"},{default:()=>[d("*")]}),s("desc",null,[d("Stop everything from moving.")])]));r(()=>s("span",{class:"option-title"},[d("Auto-pause"),s(KI,{display:"Save-specific"},{default:()=>[d("*")]}),s("desc",null,[d("Automatically pause the game when a day is completed. It is best to keep this on to avoid over-grinding.")])]));const mi=r(()=>s("span",{class:"option-title"},[d("Theme"),s("desc",null,[d("How the game looks.")])])),G=r(()=>s("span",{class:"option-title"},[d("Show TPS"),s("desc",null,[d("Show TPS meter at the bottom-left corner of the page.")])])),x=r(()=>s("span",{class:"option-title"},[d("Logarithmic progress bars"),s("desc",null,[d("Whether progress bars should be normalized for exponential growth.")])])),K=r(()=>s("span",{class:"option-title"},[d("Align modifier units"),s("desc",null,[d("Align numbers to the beginning of the unit in modifier view.")])]));return(bi,Ii)=>(h(),eI(EI,{modelValue:e.value,"onUpdate:modelValue":Ii[10]||(Ii[10]=R=>e.value=R)},{header:Bi(()=>[Nb,X("div",Ob,[X("button",{class:LI({selected:m("behaviour")}),onClick:Ii[0]||(Ii[0]=R=>a("behaviour"))}," Behaviour ",2),X("button",{class:LI({selected:m("appearance")}),onClick:Ii[1]||(Ii[1]=R=>a("appearance"))}," Appearance ",2)])]),body:Bi(()=>[m("behaviour")?(h(),S("div",Cb,[s(Xs,{title:c(v),options:o,modelValue:c(C),"onUpdate:modelValue":Ii[2]||(Ii[2]=R=>dl(C)?C.value=R:null)},null,8,["title","modelValue"]),c(QI).enablePausing?(h(),eI(ye,{key:0,title:c(H),modelValue:c(D),"onUpdate:modelValue":Ii[3]||(Ii[3]=R=>dl(D)?D.value=R:null)},null,8,["title","modelValue"])):oi("",!0),c(L)?(h(),S("div",hb,[s(ye,{title:c(O),modelValue:c(p),"onUpdate:modelValue":Ii[4]||(Ii[4]=R=>dl(p)?p.value=R:null)},null,8,["title","modelValue"]),c(p)?oi("",!0):(h(),eI(ad,{key:0,class:"button save-button",onClick:Ii[5]||(Ii[5]=R=>c(Fl)())},{default:Bi(()=>[d(" Manually save ")]),_:1}))])):(h(),S("div",Yb," Auto-saving is disabled while between days "))])):oi("",!0),m("appearance")?(h(),S("div",vb,[s(Xs,{title:c(mi),options:c(Z),modelValue:c(w),"onUpdate:modelValue":Ii[6]||(Ii[6]=R=>dl(w)?w.value=R:null)},null,8,["title","options","modelValue"]),(h(),eI(qI(c(y)))),s(ye,{title:c(G),modelValue:c(u),"onUpdate:modelValue":Ii[7]||(Ii[7]=R=>dl(u)?u.value=R:null)},null,8,["title","modelValue"]),s(ye,{title:c(x),modelValue:c(W),"onUpdate:modelValue":Ii[8]||(Ii[8]=R=>dl(W)?W.value=R:null)},null,8,["title","modelValue"]),s(ye,{title:c(K),modelValue:c(N),"onUpdate:modelValue":Ii[9]||(Ii[9]=R=>dl(N)?N.value=R:null)},null,8,["title","modelValue"])])):oi("",!0)]),_:1},8,["modelValue"]))}});const zb=["onSubmit"],Rb={class:"field"},Gb={key:0,class:"field-title"},fb=["placeholder"],xb=iI({__name:"Text",props:{title:null,modelValue:null,textArea:{type:Boolean},placeholder:null,maxHeight:null,submitOnBlur:{type:Boolean}},emits:["update:modelValue","submit","cancel"],setup(i,{emit:l}){const e=i,n=Oe(se(e,"title"),"span"),m=Rl(null);bs(()=>{var y;(y=m.value)==null||y.focus()});const a=b({get(){var y;return(y=c(e.modelValue))!=null?y:""},set(y){l("update:modelValue",y)}});function Z(){l("submit")}function o(){e.submitOnBlur!==!1?l("submit"):l("cancel")}return(y,u)=>(h(),S("form",{onSubmit:as(Z,["prevent"])},[X("div",Rb,[c(n)?(h(),S("span",Gb,[(h(),eI(qI(c(n))))])):oi("",!0),i.textArea?(h(),eI(c(Rd),{key:1,modelValue:c(a),"onUpdate:modelValue":u[0]||(u[0]=w=>dl(a)?a.value=w:null),placeholder:i.placeholder,maxHeight:i.maxHeight,onBlur:o,ref_key:"field",ref:m},null,8,["modelValue","placeholder","maxHeight"])):zs((h(),S("input",{key:2,type:"text","onUpdate:modelValue":u[1]||(u[1]=w=>dl(a)?a.value=w:null),placeholder:i.placeholder,class:LI({fullWidth:!i.title}),onBlur:o,ref_key:"field",ref:m},null,42,fb)),[[Md,c(a)]])])],40,zb))}});var td=OI(xb,[["__scopeId","data-v-90bd4994"]]);const Db={key:0},Sb=["onClick","disabled"],Lb={key:0},Tb=["onClick"],Fb=iI({__name:"DangerButton",props:{disabled:{type:Boolean},skipConfirm:{type:Boolean}},emits:["click","confirmingChanged"],setup(i,{emit:l}){const n=cl(i),m=Ji(!1);oe(m,o=>{l("confirmingChanged",o)});function a(){if(c(n.skipConfirm)){l("click");return}m.value&&l("click"),m.value=!m.value}function Z(){m.value=!1}return(o,y)=>(h(),S("span",{class:LI(["container",{confirming:m.value}])},[m.value?(h(),S("span",Db,"Are you sure?")):oi("",!0),X("button",{onClick:as(a,["stop"]),class:"button danger",disabled:i.disabled},[m.value?(h(),S("span",Lb,"Yes")):ie(o.$slots,"default",{key:1},void 0,!0)],8,Sb),m.value?(h(),S("button",{key:1,class:"button",onClick:as(Z,["stop"])},"No",8,Tb)):oi("",!0)],2))}});var kb=OI(Fb,[["__scopeId","data-v-2f8ef34c"]]);const Ye=i=>(Ce("data-v-0e3ab4ae"),i=i(),he(),i),gb=Ye(()=>X("div",{class:"handle material-icons"},"drag_handle",-1)),Qb={key:0,class:"actions"},Ub=Ye(()=>X("span",{class:"material-icons"},"content_paste",-1)),Hb=Ye(()=>X("span",{class:"material-icons"},"content_copy",-1)),Ab=Ye(()=>X("span",{class:"material-icons"},"edit",-1)),Eb=Ye(()=>X("span",{class:"material-icons",style:{margin:"-2px"}},"delete",-1)),Bb={key:1,class:"actions"},Pb=Ye(()=>X("span",{class:"material-icons"},"check",-1)),_b=Ye(()=>X("span",{class:"material-icons"},"close",-1)),qb={key:2,class:"details"},$b={class:"save-version"},Kb=Ye(()=>X("br",null,null,-1)),iy={key:0},Iy={key:1},ly={key:3,class:"details"},ey={key:4,class:"details error"},sy=Ye(()=>X("br",null,null,-1)),ny=iI({__name:"Save",props:{save:null},emits:["export","open","duplicate","delete","editName"],setup(i,{emit:l}){const e=i,{save:n}=cl(e),m=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}),a=Ji(!1),Z=Ji(!1),o=Ji("");oe(a,()=>{var N;return o.value=(N=n.value.name)!=null?N:""});const y=b(()=>n.value!=null&&n.value.id===Qi.id),u=b(()=>{var N;return y.value?Qi.time:(N=n.value!=null&&n.value.time)!=null?N:0}),w=os(b(()=>{var N,p,f,C;return`Day ${(C=(f=(p=(N=n.value)==null?void 0:N.layers)==null?void 0:p.main)==null?void 0:f.day)!=null?C:1}`}));function W(){l("editName",o.value),a.value=!1}return(N,p)=>(h(),S("div",{class:LI(["save",{active:c(y)}])},[gb,a.value?(h(),S("div",Bb,[X("button",{onClick:W,class:"button"},[s(KI,{display:"Save",direction:c(Yi).Left,class:"info"},{default:Bi(()=>[Pb]),_:1},8,["direction"])]),X("button",{onClick:p[5]||(p[5]=f=>a.value=!a.value),class:"button"},[s(KI,{display:"Cancel",direction:c(Yi).Left,class:"info"},{default:Bi(()=>[_b]),_:1},8,["direction"])])])):(h(),S("div",Qb,[c(n).error==null&&!Z.value?(h(),eI(ad,{key:0,onClick:p[0]||(p[0]=f=>l("export")),class:"button",left:""},{default:Bi(()=>[s(KI,{display:"Export",direction:c(Yi).Left,class:"info"},{default:Bi(()=>[Ub]),_:1},8,["direction"])]),_:1})):oi("",!0),c(n).error==null&&!Z.value?(h(),S("button",{key:1,onClick:p[1]||(p[1]=f=>l("duplicate")),class:"button"},[s(KI,{display:"Duplicate",direction:c(Yi).Left,class:"info"},{default:Bi(()=>[Hb]),_:1},8,["direction"])])):oi("",!0),c(n).error==null&&!Z.value?(h(),S("button",{key:2,onClick:p[2]||(p[2]=f=>a.value=!a.value),class:"button"},[s(KI,{display:"Edit Name",direction:c(Yi).Left,class:"info"},{default:Bi(()=>[Ab]),_:1},8,["direction"])])):oi("",!0),s(kb,{disabled:c(y),onClick:p[3]||(p[3]=f=>l("delete")),onConfirmingChanged:p[4]||(p[4]=f=>Z.value=f)},{default:Bi(()=>[s(KI,{display:"Delete",direction:c(Yi).Left,class:"info"},{default:Bi(()=>[Eb]),_:1},8,["direction"])]),_:1},8,["disabled"])])),c(n).error==null&&!a.value?(h(),S("div",qb,[X("button",{class:"button open",onClick:p[6]||(p[6]=f=>l("open"))},[X("h3",null,pI(c(n).name),1)]),X("span",$b,"v"+pI(c(n).modVersion),1),Kb,c(u)?(h(),S("div",iy,"Last played "+pI(c(m).format(c(u))),1)):oi("",!0),c(w)?(h(),S("div",Iy,[(h(),eI(qI(c(w))))])):oi("",!0)])):c(n).error==null&&a.value?(h(),S("div",ly,[s(td,{modelValue:o.value,"onUpdate:modelValue":p[7]||(p[7]=f=>o.value=f),class:"editname",onSubmit:W},null,8,["modelValue"])])):(h(),S("div",ey,[d(" Error: Failed to load save with id "+pI(c(n).id),1),sy,d(pI(c(n).error),1)]))],2))}});var my=OI(ny,[["__scopeId","data-v-0e3ab4ae"]]);const Ln=i=>(Ce("data-v-5229ff3f"),i=i(),he(),i),dy=Ln(()=>X("h2",null,"Saves Manager",-1)),cy={class:"modal-footer"},ay={class:"field"},ty=Ln(()=>X("span",{class:"field-title"},"Create Save",-1)),Zy={class:"field-buttons"},oy={class:"footer"},by=Ln(()=>X("div",{style:{"flex-grow":"1"}},null,-1)),yy=iI({__name:"SavesManager",setup(i,{expose:l}){const e=Ji(!1),n=Ji(null);l({open(){e.value=!0}});const m=Ji(!1),a=Ji(""),Z=Ji(null);oe(a,O=>{O?De(()=>{try{if(O[0]!=="{")if(O[0]==="e")O=decodeURIComponent(escape(atob(O)));else if(O[0]==="\u1BE1")O=Ge.decompressFromUTF16(O);else{console.warn("Unable to determine preset encoding",O),m.value=!0;return}const v=JSON.parse(O);if(typeof v!="object"){m.value=!0;return}const H=gs();v.id=H,Fl(v),a.value="",m.value=!1,UI.saves.push(H)}catch{m.value=!0}}):m.value=!1});let o={"./../../saves/Day 01 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJ0cmVlcyJdLCJ0aW1lIjoxNjcwOTUyMzU0Mzg4LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjoxMTMwLjAxODk5OTk5OTk5NTUsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI1Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI4Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTQiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE1Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTciOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE4Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIxIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX19LCJkYXkiOjJ9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiNjk5Ljc1OTQwNjI0OTk5OTUiLCJ0b3RhbExvZ3MiOiIxMDAwOS43NTk0MDYyNDk5OTciLCJzYXBsaW5ncyI6IjkuNjE2Iiwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiNSJ9LCIxIjp7ImFtb3VudCI6IjEwIn0sIjIiOnsiYW1vdW50IjowfX0sIm1hbnVhbEN1dFByb2dyZXNzIjowLCJtYW51YWxQbGFudFByb2dyZXNzIjowLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6MCwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOmZhbHNlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6ZmFsc2V9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6ZmFsc2V9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjAiLCJ0b3RhbENvYWwiOjAsImFzaCI6MCwiYWN0aXZlRmlyZXMiOjAsImJ1aWxkRmlyZSI6eyJhbW91bnQiOjB9LCJhY3RpdmVCb25maXJlcyI6MCwiYnVpbGRCb25maXJlIjp7ImFtb3VudCI6MH0sImFjdGl2ZUtpbG5zIjowLCJidWlsZEtpbG4iOnsiYW1vdW50IjowfSwiYWN0aXZlRHJpbGxzIjowLCJidWlsZERyaWxsIjp7ImFtb3VudCI6MH0sIndhcm1lckN1dHRlcnMiOnsiYm91Z2h0IjpmYWxzZX0sIndhcm1lclBsYW50ZXJzIjp7ImJvdWdodCI6ZmFsc2V9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0IjpmYWxzZX0sInVubG9ja0JvbmZpcmUiOnsiYm91Z2h0IjpmYWxzZX0sImRlZGljYXRlZEN1dHRlcnMiOnsiYm91Z2h0IjpmYWxzZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6ZmFsc2V9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6ZmFsc2V9LCJ1bmxvY2tLaWxuIjp7ImJvdWdodCI6ZmFsc2V9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOjB9LCJoZWF0ZWRQbGFudGVycyI6eyJhbW91bnQiOjB9LCJtb3JlRmVydGlsaXplciI6eyJhbW91bnQiOjB9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJzbWFsbEZpcmVFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm9uZmlyZUVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJraWxuRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9LCI1Ijp7ImVhcm5lZCI6ZmFsc2V9LCI2Ijp7ImVhcm5lZCI6ZmFsc2V9LCI3Ijp7ImVhcm5lZCI6ZmFsc2V9LCI4Ijp7ImVhcm5lZCI6ZmFsc2V9LCI5Ijp7ImVhcm5lZCI6ZmFsc2V9LCIxMCI6eyJlYXJuZWQiOmZhbHNlfSwiMTEiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOjAsInRvdGFsUGFwZXIiOjAsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6MH0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOjB9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6MH0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6MH0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOjB9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOjB9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6MH0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6MH0sImtpbG5Cb29rIjp7ImFtb3VudCI6MH0sInBhcGVyQm9vayI6eyJhbW91bnQiOjB9LCJib3hCb29rIjp7ImFtb3VudCI6MH0sImNsb3RoQm9vayI6eyJhbW91bnQiOjB9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjowfSwib2lsQm9vayI6eyJhbW91bnQiOjB9LCJtZXRhbEJvb2siOnsiYW1vdW50IjowfX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6MCwidG90YWxCb3hlcyI6MCwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImNvYWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMTEzIiwiYmVzdE9yZSI6IjExMyIsIm9yZVByb2dyZXNzIjoiMC4wMDE5MDAwMDAwMDAwMzMzMTk1IiwibWV0YWwiOiIwIiwiYmVzdE1ldGFsIjowLCJ0b3RhbE1ldGFsIjowLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOmZhbHNlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6ZmFsc2V9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOmZhbHNlfSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0IjpmYWxzZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6MH0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOjB9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOjB9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImNsb3RoIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoIjowLCJ0b3RhbENsb3RoIjowLCJ3b29sIjowLCJzaGVlcCI6MTAsImJ1aWxkUGVucyI6eyJhbW91bnQiOjB9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjowfSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjowfSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjAsInNoZWFyaW5nUHJvZ3Jlc3MiOjAsInNwaW5uaW5nUHJvZ3Jlc3MiOjB9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjowLCJ0b3RhbE9pbCI6MCwiZGVwdGgiOjAsImRyaWxsUHJvZ3Jlc3MiOjAsImFjdGl2ZUhlYXZ5IjowLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6MH0sImFjdGl2ZUhlYXZ5MiI6MCwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjowfSwiYWN0aXZlRXh0cmFjdG9yIjowLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOjB9LCJhY3RpdmVQdW1wIjowLCJidWlsZFB1bXAiOnsiYW1vdW50IjowfSwiYWN0aXZlQnVybmVyIjowLCJidWlsZEJ1cm5lciI6eyJhbW91bnQiOjB9LCJhY3RpdmVTbWVsdGVyIjowLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjowfSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX0sIjUiOnsiZWFybmVkIjpmYWxzZX0sIjYiOnsiZWFybmVkIjpmYWxzZX0sIjciOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInBsYXN0aWMiOnsibWluaW1pemVkIjpmYWxzZSwicGxhc3RpYyI6MCwidG90YWxQbGFzdGljIjowLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6MH0sImFjdGl2ZVJlZmluZXJ5IjowLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJib3hUb29scyI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOmZhbHNlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6ZmFsc2V9LCJib3hFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6ZmFsc2V9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6MH0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOjB9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6MH19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJ5ZWxsb3ciOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJibHVlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwiZ3JlZW4iOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJwdXJwbGUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOmZhbHNlfSwiY29hbFVwZyI6eyJib3VnaHQiOmZhbHNlfX19LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib25maXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGFwZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX19LCJjdXJyZW50U2hvd24iOiJIb2xseSIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0ZWFjaGluZyI6eyJib3VnaHQiOmZhbHNlfSwic2Nob29scyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImZvY3VzTXVsdGlwbGllciI6MSwidXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzVGFyZ2V0cyI6e30sImZvY3VzQ29vbGRvd24iOjAsImZvY3VzVGltZSI6MH19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjpmYWxzZX0=","./../../saves/Day 02 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJ3b3Jrc2hvcCJdLCJ0aW1lIjoxNjcwOTU0MzkzOTE2LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjozMDE4LjQxNjk5OTk5OTI5Niwia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC41IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjozfSwidHJlZXMiOnsibWluaW1pemVkIjpmYWxzZSwibG9ncyI6IjQ1MC45OTU4MjE1ODY1NTA4NSIsInRvdGFsTG9ncyI6IjQxMTE0OS40NTU1MzkwNjUzNSIsInNhcGxpbmdzIjoiODUuMTc4MDAwMDAwMDAwMjIiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiI5In0sIjEiOnsiYW1vdW50IjoiMzMifSwiMiI6eyJhbW91bnQiOiI1In19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuNSIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjUiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6IjEwMCIsIm1pbGVzdG9uZXMiOnsibG9nR2Fpbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1vcmVQbGFudHNNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMSI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNCI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlfSwiY29hbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjb2FsIjoiMCIsInRvdGFsQ29hbCI6MCwiYXNoIjowLCJhY3RpdmVGaXJlcyI6MCwiYnVpbGRGaXJlIjp7ImFtb3VudCI6MH0sImFjdGl2ZUJvbmZpcmVzIjowLCJidWlsZEJvbmZpcmUiOnsiYW1vdW50IjowfSwiYWN0aXZlS2lsbnMiOjAsImJ1aWxkS2lsbiI6eyJhbW91bnQiOjB9LCJhY3RpdmVEcmlsbHMiOjAsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjowfSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOmZhbHNlfSwid2FybWVyUGxhbnRlcnMiOnsiYm91Z2h0IjpmYWxzZX0sImJhc2ljRmVydGlsaXplciI6eyJib3VnaHQiOmZhbHNlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOmZhbHNlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJib3VnaHQiOmZhbHNlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsiYm91Z2h0IjpmYWxzZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0IjpmYWxzZX0sInVubG9ja0tpbG4iOnsiYm91Z2h0IjpmYWxzZX0sImVmZmljaWVudFNtZWx0aGVyIjp7ImJvdWdodCI6ZmFsc2V9LCJoZWF0ZWRDdXR0ZXJzIjp7ImFtb3VudCI6MH0sImhlYXRlZFBsYW50ZXJzIjp7ImFtb3VudCI6MH0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6MH0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJwbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJmZXJ0aWxpemVyRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sInNtYWxsRmlyZUVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJib25maXJlRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImtpbG5FbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwib2lsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX0sIjUiOnsiZWFybmVkIjpmYWxzZX0sIjYiOnsiZWFybmVkIjpmYWxzZX0sIjciOnsiZWFybmVkIjpmYWxzZX0sIjgiOnsiZWFybmVkIjpmYWxzZX0sIjkiOnsiZWFybmVkIjpmYWxzZX0sIjEwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxMSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6MCwidG90YWxQYXBlciI6MCwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsiYW1vdW50IjowfSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6MH0sImV4cGFuZGVyc0Jvb2siOnsiYW1vdW50IjowfSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsiYW1vdW50IjowfSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6MH0sImZlcnRpbGl6ZXJCb29rIjp7ImFtb3VudCI6MH0sInNtYWxsRmlyZUJvb2siOnsiYW1vdW50IjowfSwiYm9uZmlyZUJvb2siOnsiYW1vdW50IjowfSwia2lsbkJvb2siOnsiYW1vdW50IjowfSwicGFwZXJCb29rIjp7ImFtb3VudCI6MH0sImJveEJvb2siOnsiYW1vdW50IjowfSwiY2xvdGhCb29rIjp7ImFtb3VudCI6MH0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJvaWxCb29rIjp7ImFtb3VudCI6MH0sIm1ldGFsQm9vayI6eyJhbW91bnQiOjB9fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjowLCJ0b3RhbEJveGVzIjowLCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiY29hbFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwiY29hbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiIzMDEiLCJiZXN0T3JlIjoiMzAxIiwib3JlUHJvZ3Jlc3MiOiIwLjg0MTcwMDAwMDAwMDExODQiLCJtZXRhbCI6IjAiLCJiZXN0TWV0YWwiOjAsInRvdGFsTWV0YWwiOjAsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsRHJpbGwiOnsiYm91Z2h0IjpmYWxzZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6ZmFsc2V9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOmZhbHNlfSwib3JlRHJpbGwiOnsiYW1vdW50IjowfSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6MH0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6MH0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOjAsInRvdGFsQ2xvdGgiOjAsIndvb2wiOjAsInNoZWVwIjoxMCwiYnVpbGRQZW5zIjp7ImFtb3VudCI6MH0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOjB9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOjB9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnJlZWRpbmdQcm9ncmVzcyI6MCwic2hlYXJpbmdQcm9ncmVzcyI6MCwic3Bpbm5pbmdQcm9ncmVzcyI6MH0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOjAsInRvdGFsT2lsIjowLCJkZXB0aCI6MCwiZHJpbGxQcm9ncmVzcyI6MCwiYWN0aXZlSGVhdnkiOjAsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjowfSwiYWN0aXZlSGVhdnkyIjowLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOjB9LCJhY3RpdmVFeHRyYWN0b3IiOjAsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6MH0sImFjdGl2ZVB1bXAiOjAsImJ1aWxkUHVtcCI6eyJhbW91bnQiOjB9LCJhY3RpdmVCdXJuZXIiOjAsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6MH0sImFjdGl2ZVNtZWx0ZXIiOjAsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOjB9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfSwiNSI6eyJlYXJuZWQiOmZhbHNlfSwiNiI6eyJlYXJuZWQiOmZhbHNlfSwiNyI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjowLCJ0b3RhbFBsYXN0aWMiOjAsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjowfSwiYWN0aXZlUmVmaW5lcnkiOjAsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImJveFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImJveEVsZiI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhFbGYiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjowfSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6MH0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjowfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sImN1cnJlbnRTaG93biI6IkhvbGx5IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZm9jdXNNdWx0aXBsaWVyIjoxLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOmZhbHNlfQ==","./../../saves/Day 03 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJjb2FsIl0sInRpbWUiOjE2NzA5NTYxMDE4OTYsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6dHJ1ZSwib2ZmbGluZVRpbWUiOjAsInRpbWVQbGF5ZWQiOjQ3MDQuMDM4OTk5OTk3OTE0LCJrZWVwR29pbmciOmZhbHNlLCJtb2RJRCI6ImFkdmVudC1pbmNyZW1lbnRhbCIsIm1vZFZlcnNpb24iOiIwLjUiLCJsYXllcnMiOnsibWFpbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkYXlzIjp7IjAiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6NH0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiIxODk1MTg2OS44MzY3NTI3NzYiLCJ0b3RhbExvZ3MiOiIyNDQ2NTc5NjY0LjQ0NTMiLCJzYXBsaW5ncyI6IjAiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIyNjYifSwiMSI6eyJhbW91bnQiOiI1NTEifSwiMiI6eyJhbW91bnQiOiIxNDMifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC41IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuNSIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiIxOTExMTA2LjcwNDYyNjIwNzciLCJ0b3RhbENvYWwiOiIxMDAwMTU1Ny41MjA3IiwiYXNoIjoiMzMzMTAyNi44MTY1NjIxODUiLCJhY3RpdmVGaXJlcyI6IjAiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMCJ9LCJhY3RpdmVCb25maXJlcyI6MCwiYnVpbGRCb25maXJlIjp7ImFtb3VudCI6IjEifSwiYWN0aXZlS2lsbnMiOiIxMSIsImJ1aWxkS2lsbiI6eyJhbW91bnQiOiIxMSJ9LCJhY3RpdmVEcmlsbHMiOjAsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjowfSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOiI1NiJ9LCJoZWF0ZWRQbGFudGVycyI6eyJhbW91bnQiOiI1NiJ9LCJtb3JlRmVydGlsaXplciI6eyJhbW91bnQiOiIxMCJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJzbWFsbEZpcmVFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm9uZmlyZUVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJraWxuRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9LCI1Ijp7ImVhcm5lZCI6ZmFsc2V9LCI2Ijp7ImVhcm5lZCI6ZmFsc2V9LCI3Ijp7ImVhcm5lZCI6ZmFsc2V9LCI4Ijp7ImVhcm5lZCI6ZmFsc2V9LCI5Ijp7ImVhcm5lZCI6ZmFsc2V9LCIxMCI6eyJlYXJuZWQiOmZhbHNlfSwiMTEiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOjAsInRvdGFsUGFwZXIiOjAsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6MH0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOjB9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6MH0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6MH0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOjB9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOjB9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6MH0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6MH0sImtpbG5Cb29rIjp7ImFtb3VudCI6MH0sInBhcGVyQm9vayI6eyJhbW91bnQiOjB9LCJib3hCb29rIjp7ImFtb3VudCI6MH0sImNsb3RoQm9vayI6eyJhbW91bnQiOjB9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjowfSwib2lsQm9vayI6eyJhbW91bnQiOjB9LCJtZXRhbEJvb2siOnsiYW1vdW50IjowfX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6MCwidG90YWxCb3hlcyI6MCwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImNvYWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiNDcwIiwiYmVzdE9yZSI6IjQ3MCIsIm9yZVByb2dyZXNzIjoiMC40MDM5MDAwMDAwMDAxOTUzIiwibWV0YWwiOiIwIiwiYmVzdE1ldGFsIjowLCJ0b3RhbE1ldGFsIjowLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOmZhbHNlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6ZmFsc2V9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOmZhbHNlfSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0IjpmYWxzZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6MH0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOjB9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOjB9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImNsb3RoIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoIjowLCJ0b3RhbENsb3RoIjowLCJ3b29sIjowLCJzaGVlcCI6MTAsImJ1aWxkUGVucyI6eyJhbW91bnQiOjB9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjowfSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjowfSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjAsInNoZWFyaW5nUHJvZ3Jlc3MiOjAsInNwaW5uaW5nUHJvZ3Jlc3MiOjB9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjowLCJ0b3RhbE9pbCI6MCwiZGVwdGgiOjAsImRyaWxsUHJvZ3Jlc3MiOjAsImFjdGl2ZUhlYXZ5IjowLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6MH0sImFjdGl2ZUhlYXZ5MiI6MCwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjowfSwiYWN0aXZlRXh0cmFjdG9yIjowLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOjB9LCJhY3RpdmVQdW1wIjowLCJidWlsZFB1bXAiOnsiYW1vdW50IjowfSwiYWN0aXZlQnVybmVyIjowLCJidWlsZEJ1cm5lciI6eyJhbW91bnQiOjB9LCJhY3RpdmVTbWVsdGVyIjowLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjowfSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX0sIjUiOnsiZWFybmVkIjpmYWxzZX0sIjYiOnsiZWFybmVkIjpmYWxzZX0sIjciOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInBsYXN0aWMiOnsibWluaW1pemVkIjpmYWxzZSwicGxhc3RpYyI6MCwidG90YWxQbGFzdGljIjowLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6MH0sImFjdGl2ZVJlZmluZXJ5IjowLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJib3hUb29scyI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOmZhbHNlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6ZmFsc2V9LCJib3hFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6ZmFsc2V9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6MH0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOjB9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6MH19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJ5ZWxsb3ciOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJibHVlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwiZ3JlZW4iOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJwdXJwbGUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOmZhbHNlfSwiY29hbFVwZyI6eyJib3VnaHQiOmZhbHNlfX19LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib25maXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGFwZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX19LCJjdXJyZW50U2hvd24iOiJIb2xseSIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0ZWFjaGluZyI6eyJib3VnaHQiOmZhbHNlfSwic2Nob29scyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImZvY3VzTXVsdGlwbGllciI6MSwidXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzVGFyZ2V0cyI6e30sImZvY3VzQ29vbGRvd24iOjAsImZvY3VzVGltZSI6MH19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjpmYWxzZX0=","./../../saves/Day 04 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJlbHZlcyJdLCJ0aW1lIjoxNjcwOTYwMjQ5NDE3LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjo4ODEzLjY1Njk5OTk5NDAzNywia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC41IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6NX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiI5Njc4MjM0MjEwOC4wNTIwMyIsInRvdGFsTG9ncyI6IjExNDA2MzMwMzU2NC45NDA5MyIsInNhcGxpbmdzIjoiNjQ5NjEuNTIwMDAwMDAwMDA0Iiwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiMjE2NiJ9LCIxIjp7ImFtb3VudCI6IjIxNjYifSwiMiI6eyJhbW91bnQiOiI0Mjc3In19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDA3ODEyNTAwMDAwMDAwMDAyIiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDA3ODEyNTAwMDAwMDAwMDAyIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiIxMDAiLCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjEwMDA1MTAzMTQuNjA5MzI1MiIsInRvdGFsQ29hbCI6IjEwMDA1MTA4MjQuNjA5MzI1MiIsImFzaCI6IjM4MzQ5ODgxLjg1IiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7ImFtb3VudCI6IjAifSwiYWN0aXZlQm9uZmlyZXMiOiIxIiwiYnVpbGRCb25maXJlIjp7ImFtb3VudCI6IjEifSwiYWN0aXZlS2lsbnMiOiI1NCIsImJ1aWxkS2lsbiI6eyJhbW91bnQiOiI1NCJ9LCJhY3RpdmVEcmlsbHMiOjAsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjowfSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOiIxNjgifSwiaGVhdGVkUGxhbnRlcnMiOnsiYW1vdW50IjoiMTY4In0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6IjY1In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjoyNTUzOS4wMTk5OTk5OTk3OTd9LCJwbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo0MzI0NS42OTk5OTk5OTk3OH0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjoxMzU3My4wODk5OTk5OTk5fSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo2NjM2LjEyMDAwMDAwMDAwOH0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wNSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjkxODQuMjQwMDAwMDAwMDI5fSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo0NDEyLjAyMDAwMDAwMDAwMn0sInNtYWxsRmlyZUVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJib25maXJlRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImtpbG5FbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwib2lsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjpmYWxzZX0sIjciOnsiZWFybmVkIjpmYWxzZX0sIjgiOnsiZWFybmVkIjpmYWxzZX0sIjkiOnsiZWFybmVkIjpmYWxzZX0sIjEwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxMSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6MCwidG90YWxQYXBlciI6MCwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsiYW1vdW50IjowfSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6MH0sImV4cGFuZGVyc0Jvb2siOnsiYW1vdW50IjowfSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsiYW1vdW50IjowfSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6MH0sImZlcnRpbGl6ZXJCb29rIjp7ImFtb3VudCI6MH0sInNtYWxsRmlyZUJvb2siOnsiYW1vdW50IjowfSwiYm9uZmlyZUJvb2siOnsiYW1vdW50IjowfSwia2lsbkJvb2siOnsiYW1vdW50IjowfSwicGFwZXJCb29rIjp7ImFtb3VudCI6MH0sImJveEJvb2siOnsiYW1vdW50IjowfSwiY2xvdGhCb29rIjp7ImFtb3VudCI6MH0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJvaWxCb29rIjp7ImFtb3VudCI6MH0sIm1ldGFsQm9vayI6eyJhbW91bnQiOjB9fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjowLCJ0b3RhbEJveGVzIjowLCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiY29hbFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwiY29hbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiI4ODEiLCJiZXN0T3JlIjoiODgxIiwib3JlUHJvZ3Jlc3MiOiIwLjM2NTcwMDAwMDAwMDM4OTYiLCJtZXRhbCI6IjAiLCJiZXN0TWV0YWwiOjAsInRvdGFsTWV0YWwiOjAsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsRHJpbGwiOnsiYm91Z2h0IjpmYWxzZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6ZmFsc2V9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOmZhbHNlfSwib3JlRHJpbGwiOnsiYW1vdW50IjowfSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6MH0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6MH0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOjAsInRvdGFsQ2xvdGgiOjAsIndvb2wiOjAsInNoZWVwIjoxMCwiYnVpbGRQZW5zIjp7ImFtb3VudCI6MH0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOjB9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOjB9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnJlZWRpbmdQcm9ncmVzcyI6MCwic2hlYXJpbmdQcm9ncmVzcyI6MCwic3Bpbm5pbmdQcm9ncmVzcyI6MH0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOjAsInRvdGFsT2lsIjowLCJkZXB0aCI6MCwiZHJpbGxQcm9ncmVzcyI6MCwiYWN0aXZlSGVhdnkiOjAsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjowfSwiYWN0aXZlSGVhdnkyIjowLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOjB9LCJhY3RpdmVFeHRyYWN0b3IiOjAsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6MH0sImFjdGl2ZVB1bXAiOjAsImJ1aWxkUHVtcCI6eyJhbW91bnQiOjB9LCJhY3RpdmVCdXJuZXIiOjAsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6MH0sImFjdGl2ZVNtZWx0ZXIiOjAsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOjB9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfSwiNSI6eyJlYXJuZWQiOmZhbHNlfSwiNiI6eyJlYXJuZWQiOmZhbHNlfSwiNyI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjowLCJ0b3RhbFBsYXN0aWMiOjAsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjowfSwiYWN0aXZlUmVmaW5lcnkiOjAsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImJveFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImJveEVsZiI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhFbGYiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjowfSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6MH0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjowfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sImN1cnJlbnRTaG93biI6IkhvbGx5IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZm9jdXNNdWx0aXBsaWVyIjoxLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOmZhbHNlfQ==","./../../saves/Day 05 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJwYXBlciJdLCJ0aW1lIjoxNjcwOTYxODAxMjA2LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjoxMDMzMC4zOTc5OTk5OTU1ODYsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6Nn0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiIxMzgyMzQwMzk2Mzc2LjQ2OTciLCJ0b3RhbExvZ3MiOiI3MjI0MzgwMzgxNjc3LjgwMyIsInNhcGxpbmdzIjoiMTA2MjE2LjYwNiIsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjMyMjAifSwiMSI6eyJhbW91bnQiOiIzMTk5In0sIjIiOnsiYW1vdW50IjoiNzI4OCJ9fSwibWFudWFsQ3V0UHJvZ3Jlc3MiOiIwLjAwNzgxMjUwMDAwMDAwMDAwMiIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjAwNzgxMjUwMDAwMDAwMDAwMiIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiI0ODYzOTE1OTY3NS42Mzc3IiwidG90YWxDb2FsIjoiNDg2MzkxNjAxODUuNjM3NyIsImFzaCI6Ii0yMDk5NzcuMjUwMDAwMTc4OCIsImFjdGl2ZUZpcmVzIjoiMCIsImJ1aWxkRmlyZSI6eyJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiNjQiLCJidWlsZEJvbmZpcmUiOnsiYW1vdW50IjoiNjQifSwiYWN0aXZlS2lsbnMiOiIxMDgiLCJidWlsZEtpbG4iOnsiYW1vdW50IjoiMTA4In0sImFjdGl2ZURyaWxscyI6MCwiYnVpbGREcmlsbCI6eyJhbW91bnQiOjB9LCJ3YXJtZXJDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudFNtZWx0aGVyIjp7ImJvdWdodCI6ZmFsc2V9LCJoZWF0ZWRDdXR0ZXJzIjp7ImFtb3VudCI6IjI1OCJ9LCJoZWF0ZWRQbGFudGVycyI6eyJhbW91bnQiOiIyNTgifSwibW9yZUZlcnRpbGl6ZXIiOnsiYW1vdW50IjoiMTI5In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDM1NzE0Mjg1NzE0Mjg1NzEiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo2NTAwMy41OTU5OTk5OTQwNn0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMzg0NjE1Mzg0NjE1Mzg0NjQiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo4MTUzOS45NzQwMDAwMDAyNX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDM4NDYxNTM4NDYxNTM4NDY0IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6NTE1MjAuODY5OTk5OTk2M30sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzODQ2MTUzODQ2MTUzODQ2NCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjQ0NTgwLjkwMTk5OTk5ODE0fSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzODQ2MTUzODQ2MTUzODQ2NCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjQ2Nzk0LjUxNTk5OTk5NTk5fSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDM4NDYxNTM4NDYxNTM4NDY0IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6NDIwMTguOTk1OTk5OTk4MTl9LCJzbWFsbEZpcmVFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm9uZmlyZUVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJraWxuRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6ZmFsc2V9LCI3Ijp7ImVhcm5lZCI6ZmFsc2V9LCI4Ijp7ImVhcm5lZCI6ZmFsc2V9LCI5Ijp7ImVhcm5lZCI6ZmFsc2V9LCIxMCI6eyJlYXJuZWQiOmZhbHNlfSwiMTEiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOiIxODkwLjk5OTk5OTk5OTk5ODkiLCJ0b3RhbFBhcGVyIjoiNTAwMSIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjQifSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjMifSwiZXhwYW5kZXJzQm9vayI6eyJhbW91bnQiOiIzIn0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjMifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjMifSwiZmVydGlsaXplckJvb2siOnsiYW1vdW50IjoiMyJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6MH0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6MH0sImtpbG5Cb29rIjp7ImFtb3VudCI6MH0sInBhcGVyQm9vayI6eyJhbW91bnQiOjB9LCJib3hCb29rIjp7ImFtb3VudCI6MH0sImNsb3RoQm9vayI6eyJhbW91bnQiOjB9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjowfSwib2lsQm9vayI6eyJhbW91bnQiOjB9LCJtZXRhbEJvb2siOnsiYW1vdW50IjowfX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6MCwidG90YWxCb3hlcyI6MCwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImNvYWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMTAzMyIsImJlc3RPcmUiOiIxMDMzIiwib3JlUHJvZ3Jlc3MiOiIwLjAzOTgwMDAwMDAwMDQyMzM2NSIsIm1ldGFsIjoiMCIsImJlc3RNZXRhbCI6MCwidG90YWxNZXRhbCI6MCwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0IjpmYWxzZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOmZhbHNlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0IjpmYWxzZX0sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6ZmFsc2V9LCJvcmVEcmlsbCI6eyJhbW91bnQiOjB9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjowfSwiYXV0b1NtZWx0RW5hYmxlZCI6dHJ1ZSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjowfSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJjbG90aCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjbG90aCI6MCwidG90YWxDbG90aCI6MCwid29vbCI6MCwic2hlZXAiOjEwLCJidWlsZFBlbnMiOnsiYW1vdW50IjowfSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6MH0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6MH0sInRyZWVzVXBncmFkZXMiOnsidHJlZXNVcGdyYWRlNCI6eyJib3VnaHQiOmZhbHNlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOmZhbHNlfSwidHJlZXNVcGdyYWRlMiI6eyJib3VnaHQiOmZhbHNlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOmZhbHNlfX0sIm1ldGFsVXBncmFkZXMiOnsibWV0YWxVcGdyYWRlNCI6eyJib3VnaHQiOmZhbHNlfSwibWV0YWxVcGdyYWRlMyI6eyJib3VnaHQiOmZhbHNlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOmZhbHNlfSwibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOmZhbHNlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOmZhbHNlfSwicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOmZhbHNlfSwicGFwZXJVcGdyYWRlMiI6eyJib3VnaHQiOmZhbHNlfSwicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJicmVlZGluZ1Byb2dyZXNzIjowLCJzaGVhcmluZ1Byb2dyZXNzIjowLCJzcGlubmluZ1Byb2dyZXNzIjowfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6MCwidG90YWxPaWwiOjAsImRlcHRoIjowLCJkcmlsbFByb2dyZXNzIjowLCJhY3RpdmVIZWF2eSI6MCwiYnVpbGRIZWF2eSI6eyJhbW91bnQiOjB9LCJhY3RpdmVIZWF2eTIiOjAsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6MH0sImFjdGl2ZUV4dHJhY3RvciI6MCwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjowfSwiYWN0aXZlUHVtcCI6MCwiYnVpbGRQdW1wIjp7ImFtb3VudCI6MH0sImFjdGl2ZUJ1cm5lciI6MCwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjowfSwiYWN0aXZlU21lbHRlciI6MCwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6MH0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9LCI1Ijp7ImVhcm5lZCI6ZmFsc2V9LCI2Ijp7ImVhcm5lZCI6ZmFsc2V9LCI3Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VkRGVwdGhNaWxlc3RvbmVzIjp0cnVlLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fSwib2lsTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VkT2lsTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOjAsInRvdGFsUGxhc3RpYyI6MCwiYnVpbGRSZWZpbmVyeSI6eyJhbW91bnQiOjB9LCJhY3RpdmVSZWZpbmVyeSI6MCwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOmZhbHNlfSwiYm94VG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOmZhbHNlfSwiYm94RWxmIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aEVsZiI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOjB9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjowfSwiY2xvdGhHYWlucyI6eyJhbW91bnQiOjB9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJkeWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImR5ZXMiOnsicmVkIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwieWVsbG93Ijp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwiYmx1ZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sIm9yYW5nZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImdyZWVuIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwicHVycGxlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOjB9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWREeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOmZhbHNlfSwiYmx1ZUR5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImNvYWxVcGciOnsiYm91Z2h0IjpmYWxzZX19fSwibWFuYWdlbWVudCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbGZUcmFpbmluZyI6eyJjdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZFBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJraWxuRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJveEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwiY3VycmVudFNob3duIjoiSG9sbHkiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidGVhY2hpbmciOnsiYm91Z2h0IjpmYWxzZX0sInNjaG9vbHMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJmb2N1c011bHRpcGxpZXIiOjEsInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjB9fSwiYXV0b1BhdXNlIjp0cnVlLCJ1c2luZ0xvZyI6ZmFsc2V9","./../../saves/Day 06 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJib3hlcyJdLCJ0aW1lIjoxNjcwOTYzOTQ1MjAwLCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjoxMjQ0Ny45NjU5OTk5OTY5NTUsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5Ijo3fSwidHJlZXMiOnsibWluaW1pemVkIjpmYWxzZSwibG9ncyI6MCwidG90YWxMb2dzIjoiMzgzNTM0NjMxODQxNjI5LjUiLCJzYXBsaW5ncyI6IjU2NTI5OS41NTk5OTk5OTk5Iiwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiNTkxMiJ9LCIxIjp7ImFtb3VudCI6IjU5MTIifSwiMiI6eyJhbW91bnQiOiIxNjU5OCJ9fSwibWFudWFsQ3V0UHJvZ3Jlc3MiOiIwLjAwMDk3NjU2MjQ5OTk5OTk5ODgiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDA5NzY1NjI0OTk5OTk5OTg4IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOjEwMCwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiI1Mzg1MjMzNTg3ODYuOTE2NzUiLCJ0b3RhbENvYWwiOiI1Mzg1MjMzNTkyOTYuOTE2NzUiLCJhc2giOiI2NjczOTgwNTUuNDg0MDg4OSIsImFjdGl2ZUZpcmVzIjoiMS42MzI0MTg3NTAwMDEzMjEiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMS42MzI0MTg3NTAwMDEzMjEifSwiYWN0aXZlQm9uZmlyZXMiOiI3MzIiLCJidWlsZEJvbmZpcmUiOnsiYW1vdW50IjoiNzMyIn0sImFjdGl2ZUtpbG5zIjoiMTUyIiwiYnVpbGRLaWxuIjp7ImFtb3VudCI6IjE1MiJ9LCJhY3RpdmVEcmlsbHMiOjAsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjowfSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOiIzMzYifSwiaGVhdGVkUGxhbnRlcnMiOnsiYW1vdW50IjoiMzM2In0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6IjIwMSJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzNTcxNDI4NTcxNDI4NTcxIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTI0Mjk1LjUwMDAwMDAwMzEzfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMzMzMzMzMzMzMzMzMzMzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTQwODAzLjg3MjAwMDAxODk1fSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMzMzMzMzMzMzMzMzMzMzMyIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjEwNzQyMi4yMjgwMDAwMDE1OX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMzMzMzMzMzMzMzMzMzMzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTAwNDgzLjQ1NDAwMDAwMTcyfSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMzMzMzMzMzMzMzMzMzMzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTAyNjk5LjI2Nn0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMzMzMzMzMzMzMzMzMzMzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6OTc5MjQuOTQ4MDAwMDAxMTJ9LCJzbWFsbEZpcmVFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDMzMzMzMzMzMzMzMzMzMzMiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo1ODEyNS4xNDc5OTk5OTY5MTZ9LCJib25maXJlRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAzMzMzMzMzMzMzMzMzMzMzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6Mzg1MTYuNTgxOTk5OTk5MjV9LCJraWxuRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAzMzMzMzMzMzMzMzMzMzMzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTUzODguNzAwMDAwMDAwMDcyfSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwib2lsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjpmYWxzZX0sIjEwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxMSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6IjIxNDcuOTk5OTk5OTk5OTY3MyIsInRvdGFsUGFwZXIiOiI2NjE4OCIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjQifSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjUifSwiZXhwYW5kZXJzQm9vayI6eyJhbW91bnQiOiI1In0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjUifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjUifSwiZmVydGlsaXplckJvb2siOnsiYW1vdW50IjoiNSJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6IjUifSwiYm9uZmlyZUJvb2siOnsiYW1vdW50IjoiNSJ9LCJraWxuQm9vayI6eyJhbW91bnQiOiI1In0sInBhcGVyQm9vayI6eyJhbW91bnQiOjB9LCJib3hCb29rIjp7ImFtb3VudCI6MH0sImNsb3RoQm9vayI6eyJhbW91bnQiOjB9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjowfSwib2lsQm9vayI6eyJhbW91bnQiOjB9LCJtZXRhbEJvb2siOnsiYW1vdW50IjowfX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6IjY5NDkuMDAwMDAwMDAwMDA0IiwidG90YWxCb3hlcyI6IjUwNDQ5IiwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNiJ9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMSJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjEifX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMTI0NCIsImJlc3RPcmUiOiIxMjQ0Iiwib3JlUHJvZ3Jlc3MiOiIwLjc5NjYwMDAwMDAwMDQ0NTYiLCJtZXRhbCI6IjAiLCJiZXN0TWV0YWwiOjAsInRvdGFsTWV0YWwiOjAsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsRHJpbGwiOnsiYm91Z2h0IjpmYWxzZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6ZmFsc2V9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOmZhbHNlfSwib3JlRHJpbGwiOnsiYW1vdW50IjowfSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6MH0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6MH0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOjAsInRvdGFsQ2xvdGgiOjAsIndvb2wiOjAsInNoZWVwIjoxMCwiYnVpbGRQZW5zIjp7ImFtb3VudCI6MH0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOjB9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOjB9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTQiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnJlZWRpbmdQcm9ncmVzcyI6MCwic2hlYXJpbmdQcm9ncmVzcyI6MCwic3Bpbm5pbmdQcm9ncmVzcyI6MH0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOjAsInRvdGFsT2lsIjowLCJkZXB0aCI6MCwiZHJpbGxQcm9ncmVzcyI6MCwiYWN0aXZlSGVhdnkiOjAsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjowfSwiYWN0aXZlSGVhdnkyIjowLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOjB9LCJhY3RpdmVFeHRyYWN0b3IiOjAsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6MH0sImFjdGl2ZVB1bXAiOjAsImJ1aWxkUHVtcCI6eyJhbW91bnQiOjB9LCJhY3RpdmVCdXJuZXIiOjAsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6MH0sImFjdGl2ZVNtZWx0ZXIiOjAsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOjB9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfSwiNSI6eyJlYXJuZWQiOmZhbHNlfSwiNiI6eyJlYXJuZWQiOmZhbHNlfSwiNyI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjowLCJ0b3RhbFBsYXN0aWMiOjAsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjowfSwiYWN0aXZlUmVmaW5lcnkiOjAsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImJveFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImJveEVsZiI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhFbGYiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjowfSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6MH0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjowfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sImN1cnJlbnRTaG93biI6IkhvbGx5IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZm9jdXNNdWx0aXBsaWVyIjoxLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOmZhbHNlfQ==","./../../saves/Day 07 Complete.txt":`eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOm51bGwsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJtZXRhbCIsImNvYWwiLCJjbG90aCIsInBhcGVyIiwidHJlZXMiLCJib3hlcyJdLCJ0aW1lIjoxNjcwNTQ3Mzg4NDQ4LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOmZhbHNlLCJvZmZsaW5lVGltZSI6bnVsbCwidGltZVBsYXllZCI6NDYxMTAuNjI0NTE5MzM4Miwia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC4wIiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5Ijo4fSwidHJlZXMiOnsibWluaW1pemVkIjpmYWxzZSwibG9ncyI6IjExMzA3NDkzOTU1NzczOTUuNSIsInRvdGFsTG9ncyI6IjI1Mzg3NDUyNDUyODAzMzMuNSIsInRyZWVzIjoiMTAiLCJzYXBsaW5ncyI6IjEzMDc5NC4wOTEwMDAwMDAwMSIsInJvdzFVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI3MjU3In0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI3MjU3In0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIyMjAwMyJ9fSwibWFudWFsQ3V0UHJvZ3Jlc3MiOiIwLjAwMDk3NjU2MjQ5OTk5OTk5ODgiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDA5NzY1NjI0OTk5OTk5OTg4IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOjEwMCwiZm91bmRhdGlvbkNvbnZlcnNpb24iOnsiYmFzZVJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiZ2FpblJlc291cmNlIjoiMTAwIn0sIm1pbGVzdG9uZXMiOnsibG9nR2Fpbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1vcmVQbGFudHNNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiI0OTQzNjUxMzczNjc0NjMzIiwidG90YWxDb2FsIjoiMS4xMzk4MTQ2OTUwMTk2MDEzZTE2IiwiYXNoIjoiNTQ3NDU2ODY2OTkuMzM4OTYiLCJhY3RpdmVGaXJlcyI6IjAiLCJidWlsZEZpcmUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI0LjgwNzM2OTA2MjUwMTc1NiJ9LCJhY3RpdmVCb25maXJlcyI6IjEwMjEiLCJidWlsZEJvbmZpcmUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjEwMjEifSwiYWN0aXZlS2lsbnMiOiIxNjMiLCJidWlsZEtpbG4iOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIxNjMifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6Ijg0NyJ9LCJoZWF0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiODQ3In0sIm1vcmVGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiIyOTIifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImFjdGl2ZURyaWxscyI6IjI4IiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIyOCJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJyZXNvdXJjZSI6IjQ5NDM2NTEzNzM2NzQ2MzMiLCJib3VnaHQiOmZhbHNlfX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMTI1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjMxOTgifX0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMzEyNSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIzMTk4In19LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMTI1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjczNzkifX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMTI1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMjcwIn19LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDMxMjUiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAzMTI1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYW1vdW50IjoiMTM5In19LCJzbWFsbEZpcmVFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6MH0sInRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjoiMC4wMzEyNSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6MH0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAzMTI1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjEwMiJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMzEyNSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiNDU3OTAuOTk5OTk5OTk5OTkiLCJ0b3RhbFBhcGVyIjoiNDk1ODg0Ljk5OTk5OTk5OTk0IiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5In0sImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiI2In0sInBsYW50ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiNiJ9LCJleHBhbmRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiI2In0sImhlYXRlZEN1dHRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiI2In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiNiJ9LCJmZXJ0aWxpemVyQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiNiJ9LCJzbWFsbEZpcmVCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiI2In0sImJvbmZpcmVCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiI2In0sImtpbG5Cb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiI2In19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiNTA5OC45OTk5OTk5OTk5OTMiLCJ0b3RhbEJveGVzIjoiMTEyMDI3IiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6MH0sInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiNSJ9LCJhc2hCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjMifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMiJ9fX0sIm1ldGFsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9yZSI6IjguODcwMDAwMDAwMDAwMTE4IiwiYmVzdE9yZSI6IjE5MzYuNjMiLCJvcmVQcm9ncmVzcyI6IjAuNDI0MDAwMDAwMDAwMDE0NiIsIm1ldGFsIjoiMjU4OTAuOTEwNzk5NDU3MjgiLCJiZXN0TWV0YWwiOiIyNTg5MC45MTA3OTk0NTcyOCIsInRvdGFsTWV0YWwiOiI1NzYwMS42MzIwNjYzNzU2OCIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjQzIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiI0In0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjQifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6ZmFsc2V9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiI4MyIsInRvdGFsQ2xvdGgiOiI4MyIsIndvb2wiOiIwIiwic2hlZXAiOiI0MCIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIxIn0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOjB9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOjB9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTMiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0IjpmYWxzZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnJlZWRpbmdQcm9ncmVzcyI6MSwic2hlYXJpbmdQcm9ncmVzcyI6MSwic3Bpbm5pbmdQcm9ncmVzcyI6MX0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOjAsInRvdGFsT2lsIjowLCJkZXB0aCI6MCwiZHJpbGxQcm9ncmVzcyI6MCwiYWN0aXZlSGVhdnkiOjAsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjowfSwiYWN0aXZlSGVhdnkyIjowLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOjB9LCJhY3RpdmVFeHRyYWN0b3IiOjAsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6MH0sImFjdGl2ZVB1bXAiOjAsImJ1aWxkUHVtcCI6eyJhbW91bnQiOjB9LCJhY3RpdmVCdXJuZXIiOjAsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6MH0sImFjdGl2ZVNtZWx0ZXIiOjAsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOjB9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfSwiNSI6eyJlYXJuZWQiOmZhbHNlfSwiNiI6eyJlYXJuZWQiOmZhbHNlfSwiNyI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fX0sInVzaW5nTG9nIjpmYWxzZX0= +`,"./../../saves/Day 08 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0yIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJjbG90aCJdLCJ0aW1lIjoxNjcwOTY2MDM5MjIwLCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjoxNDQ4MS43NzkwMDAwMDAxMzMsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6OX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiI0ODgzNDc2OTk4ODg1ODc3IiwidG90YWxMb2dzIjoiOS41NjEyMjI0Njc5Nzk0NTNlMTUiLCJzYXBsaW5ncyI6IjI0OTIzODIuNzIiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiI4ODI2In0sIjEiOnsiYW1vdW50IjoiODgyNiJ9LCIyIjp7ImFtb3VudCI6IjI4ODA4In19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDAwOTc2NTYyNDk5OTk5OTk4OCIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjAwMDk3NjU2MjQ5OTk5OTk5ODgiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6MTAwLCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjkuOTk3NzQ2MDU0MTkwNjMyZTE2IiwidG90YWxDb2FsIjoiMS4wMTA5ODA0NjcwMjIxMDY1ZTE3IiwiYXNoIjoiMjQyMjgyNzQ3NjAuMTEzOTk1IiwiYWN0aXZlRmlyZXMiOiIwLjg2NzA0MzA3MDcwNjE5NzEiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMC44NjcwNDMwNzA3MDYxOTcxIn0sImFjdGl2ZUJvbmZpcmVzIjoiMTQ4MiIsImJ1aWxkQm9uZmlyZSI6eyJhbW91bnQiOiIxNDgyIn0sImFjdGl2ZUtpbG5zIjoiMTc4IiwiYnVpbGRLaWxuIjp7ImFtb3VudCI6IjE3OCJ9LCJhY3RpdmVEcmlsbHMiOiIzNyIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMzcifSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOiIxMDg0In0sImhlYXRlZFBsYW50ZXJzIjp7ImFtb3VudCI6IjEwODQifSwibW9yZUZlcnRpbGl6ZXIiOnsiYW1vdW50IjoiMzIxIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDI3Nzc3Nzc3Nzc3Nzc3Nzc2IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTg3MDg5Ljk4NTk5OTk2NjI0fSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAyNzc3Nzc3Nzc3Nzc3Nzc3NiIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjIwNDMyNC40NTE5OTk5NzY3fSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjc3Nzc3Nzc3Nzc3Nzc3NzYiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjoxNzA5NDcuMTExOTk5OTU5Mjh9LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjc3Nzc3Nzc3Nzc3Nzc3NzYiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjoxNjQwMTAuOTEzOTk5OTYxMDV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDI3Nzc3Nzc3Nzc3Nzc3Nzc2IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MTY2MjM5LjIzNzk5OTk1NzZ9LCJmZXJ0aWxpemVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjc3Nzc3Nzc3Nzc3Nzc3NzYiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjoxNjE0NjguODMxOTk5OTY1MX0sInNtYWxsRmlyZUVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMjc3Nzc3Nzc3Nzc3Nzc3NzYiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjoxMjE2NzMuNDM3OTk5OTc4OTd9LCJib25maXJlRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAyNzc3Nzc3Nzc3Nzc3Nzc3NiIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjEwMzM0MS4yMTE5OTk5Nzg5OX0sImtpbG5FbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDI3Nzc3Nzc3Nzc3Nzc3Nzc2IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6ODAyMTUuODE5OTk5OTg4MDJ9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYm91Z2h0IjpmYWxzZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjB9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwibWluaW5nRHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwiaGVhdnlEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJvaWxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfX0sIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX0sIjgiOnsiZWFybmVkIjp0cnVlfSwiOSI6eyJlYXJuZWQiOmZhbHNlfSwiMTAiOnsiZWFybmVkIjpmYWxzZX0sIjExIjp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiMzQ2MTA0Ljk5OTk5OTk5MTYiLCJ0b3RhbFBhcGVyIjoiMTMxMjUxNDUiLCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJhbW91bnQiOiI4In0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI4In0sImV4cGFuZGVyc0Jvb2siOnsiYW1vdW50IjoiOCJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJhbW91bnQiOiI4In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI4In0sImZlcnRpbGl6ZXJCb29rIjp7ImFtb3VudCI6IjgifSwic21hbGxGaXJlQm9vayI6eyJhbW91bnQiOiI4In0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6IjgifSwia2lsbkJvb2siOnsiYW1vdW50IjoiOCJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjowfSwiYm94Qm9vayI6eyJhbW91bnQiOjB9LCJjbG90aEJvb2siOnsiYW1vdW50IjowfSwibWluaW5nRHJpbGxCb29rIjp7ImFtb3VudCI6MH0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6MH0sIm9pbEJvb2siOnsiYW1vdW50IjowfSwibWV0YWxCb29rIjp7ImFtb3VudCI6MH19LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiYm94ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiYm94ZXMiOiIyMTAuOTk5OTk5OTk5OTkyNzIiLCJ0b3RhbEJveGVzIjoiMTI5NzExIiwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNiJ9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMyJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjMifX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMC4yNTk5OTk5OTk5OTkyOTUiLCJiZXN0T3JlIjoiMTI0NSIsIm9yZVByb2dyZXNzIjoiMC41NDI5MDAwMDAwMDA1MzM0IiwibWV0YWwiOiIyODEzMy4yODU0NjgzNTQ1NjciLCJiZXN0TWV0YWwiOiI0Mjg4NS43NjU0NjgzNTQ2MSIsInRvdGFsTWV0YWwiOiI5NDQ3OS4wNTYyNDk5OTk4MiIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6ZmFsc2V9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIzNiJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiNCJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiI0In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiI1NTMiLCJ0b3RhbENsb3RoIjoiMTAwMyIsIndvb2wiOiIwIiwic2hlZXAiOiIxNiIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiI3In0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiIzIn0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6IjMifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOiIwLjQ1MTk5OTk5OTk5OTk5OTk2Iiwic3Bpbm5pbmdQcm9ncmVzcyI6MH0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOjAsInRvdGFsT2lsIjowLCJkZXB0aCI6MCwiZHJpbGxQcm9ncmVzcyI6MCwiYWN0aXZlSGVhdnkiOjAsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjowfSwiYWN0aXZlSGVhdnkyIjowLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOjB9LCJhY3RpdmVFeHRyYWN0b3IiOjAsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6MH0sImFjdGl2ZVB1bXAiOjAsImJ1aWxkUHVtcCI6eyJhbW91bnQiOjB9LCJhY3RpdmVCdXJuZXIiOjAsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6MH0sImFjdGl2ZVNtZWx0ZXIiOjAsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOjB9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfSwiNSI6eyJlYXJuZWQiOmZhbHNlfSwiNiI6eyJlYXJuZWQiOmZhbHNlfSwiNyI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjowLCJ0b3RhbFBsYXN0aWMiOjAsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjowfSwiYWN0aXZlUmVmaW5lcnkiOjAsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImJveFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImJveEVsZiI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhFbGYiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjowfSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6MH0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjowfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sImN1cnJlbnRTaG93biI6IkhvbGx5IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZm9jdXNNdWx0aXBsaWVyIjoxLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOmZhbHNlfQ==","./../../saves/Day 09 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0yIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJtZXRhbCJdLCJ0aW1lIjoxNjcwOTcxMjU5MjA3LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOnRydWUsIm9mZmxpbmVUaW1lIjowLCJ0aW1lUGxheWVkIjoxOTY0NC40MjY5OTk5ODU5NjgsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjoxMH0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiIyLjk4NjUyODgyNzc4NjI5MmUxNiIsInRvdGFsTG9ncyI6IjMuNzAwNjgwNTM3MDU1NTQxZTE3Iiwic2FwbGluZ3MiOiIxMzEwMzgxLjUiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIxNDA4MyJ9LCIxIjp7ImFtb3VudCI6IjE0MDgzIn0sIjIiOnsiYW1vdW50IjoiNTQxNzUifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDA5NzY1NjI0OTk5OTk5OTg4IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDAwOTc2NTYyNDk5OTk5OTk4OCIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoxMDAsIm1pbGVzdG9uZXMiOnsibG9nR2Fpbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1vcmVQbGFudHNNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMSI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNCI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlfSwiY29hbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjb2FsIjoiMi4zNDQ5NDM2ODg3OTQ0MTRlMjMiLCJ0b3RhbENvYWwiOiIxLjI5NDA3MTI5ODUzNDY2N2UyNSIsImFzaCI6IjQ1Mzk2MTEzMTY0NzYuMjk3IiwiYWN0aXZlRmlyZXMiOiIxLjk2OTcwMTY2NTcxODc1MTgiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMS45Njk3MDE2NjU3MTg3NTE4In0sImFjdGl2ZUJvbmZpcmVzIjoiMzA4OCIsImJ1aWxkQm9uZmlyZSI6eyJhbW91bnQiOiIzMDg4In0sImFjdGl2ZUtpbG5zIjoiMjA0IiwiYnVpbGRLaWxuIjp7ImFtb3VudCI6IjIwNCJ9LCJhY3RpdmVEcmlsbHMiOiIxMDIiLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjEwMiJ9LCJ3YXJtZXJDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudFNtZWx0aGVyIjp7ImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsiYW1vdW50IjoiMjc3MSJ9LCJoZWF0ZWRQbGFudGVycyI6eyJhbW91bnQiOiIyNzcxIn0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6IjY0MSJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAyNSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjM4NzQ4Mi4zNzYwMDAwNjE2M30sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjo0MDU2NTkuNTQwMDAwMTEzMjV9LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAyNSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjM3MjMwNi4wOTU5OTk4NjExfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDI1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MzY1ODQwLjIxNzk5OTg4NjV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDI1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MzY4MDcwLjQyMzk5OTg4MzIzfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDI1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MzYzMzAyLjgyNzk5OTg4OTQ0fSwic21hbGxGaXJlRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAyNSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjMyNDQwNS45Mzc5OTk5NDA3fSwiYm9uZmlyZUVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMjUiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjozMDYwNzUuNjk3OTk5OTQ3NH0sImtpbG5FbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDI1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MjgyOTUxLjgwOTk5OTk2MjQ1fSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImJvdWdodCI6ZmFsc2UsImFtb3VudE9mVGltZXNEb25lIjowfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJib3VnaHQiOmZhbHNlLCJhbW91bnRPZlRpbWVzRG9uZSI6MH0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwib2lsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjpmYWxzZX0sIjEwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxMSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6IjM5NjUyMDgwLjk5OTk5OTgyIiwidG90YWxQYXBlciI6IjI2MzM2ODYyMSIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjEwIn0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiIxMCJ9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6IjEwIn0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjEwIn0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiIxMCJ9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOiIxMCJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6IjEwIn0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6IjEwIn0sImtpbG5Cb29rIjp7ImFtb3VudCI6IjEwIn0sInBhcGVyQm9vayI6eyJhbW91bnQiOjB9LCJib3hCb29rIjp7ImFtb3VudCI6MH0sImNsb3RoQm9vayI6eyJhbW91bnQiOjB9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjowfSwib2lsQm9vayI6eyJhbW91bnQiOjB9LCJtZXRhbEJvb2siOnsiYW1vdW50IjowfX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6IjY0NjQyMy4wMDAwMDAwMTQ5IiwidG90YWxCb3hlcyI6IjMzMDIyODIzIiwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMTEifSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjYifSwiY29hbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI2In19LCJyb3czVXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sIm1ldGFsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9yZSI6IjEwMTc0NTk2LjI1MzU5OTk5IiwiYmVzdE9yZSI6IjMyMTgxMzUzLjEwMzk5OTk0NiIsIm9yZVByb2dyZXNzIjoiMC43OTY0MDAwMDAwMDA5MzY4IiwibWV0YWwiOiIyNTIyMDE2OC41ODUxNTk4NTciLCJiZXN0TWV0YWwiOiIyMTUxNDQxODcuMzc3MTM4NzMiLCJ0b3RhbE1ldGFsIjoiNjcyMDMwNDgxLjIzNzQ5ODIiLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIxMDcifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjEyIn0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjE0In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiI1NTMiLCJ0b3RhbENsb3RoIjoiMTAwMyIsIndvb2wiOiIwIiwic2hlZXAiOiIzNiIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiI5In0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiIzIn0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6IjMifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjF9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjoiNjgwMDQuNjgxMjUyMDExIiwidG90YWxPaWwiOiIyNTAwMDYuODEwMTQyNDEwNSIsImRlcHRoIjoiNTIyMCIsImRyaWxsUHJvZ3Jlc3MiOiIzMjU4My42NzQ0OTE2Nzk0MiIsImFjdGl2ZUhlYXZ5IjoiMjQiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjI1In0sImFjdGl2ZUhlYXZ5MiI6IjkiLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOiIxMCJ9LCJhY3RpdmVFeHRyYWN0b3IiOiIzIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMyJ9LCJhY3RpdmVQdW1wIjoiMyIsImJ1aWxkUHVtcCI6eyJhbW91bnQiOiIzIn0sImFjdGl2ZUJ1cm5lciI6IjExIiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlU21lbHRlciI6IjEiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiMSJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjowLCJ0b3RhbFBsYXN0aWMiOjAsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjowfSwiYWN0aXZlUmVmaW5lcnkiOjAsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImJveFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6ZmFsc2V9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0IjpmYWxzZX0sImJveEVsZiI6eyJib3VnaHQiOmZhbHNlfSwiY2xvdGhFbGYiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjowfSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6MH0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjowfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sImN1cnJlbnRTaG93biI6IkhvbGx5IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZm9jdXNNdWx0aXBsaWVyIjoxLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOmZhbHNlfQ==","./../../saves/Day 10 Complete.txt":`eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJtZXRhbCIsIm9pbCIsImNvYWwiLCJwbGFzdGljIl0sInRpbWUiOjE2NzA3MjgyMzYzMjIsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjo1NjM2OS4zODk1MTkzNDA0MjQsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuMCIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTQiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE1Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTciOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE4Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIxIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX19LCJkYXkiOjExfSwidHJlZXMiOnsibWluaW1pemVkIjpmYWxzZSwibG9ncyI6IjIuMDcwMjEyMzcyMjY0NTE2M2UxNyIsInRvdGFsTG9ncyI6IjIuMDcwMjEyMzcyMjY0NTE2M2UxNyIsInRyZWVzIjoiMTAiLCJzYXBsaW5ncyI6IjAiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMTUzMjQifSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjE1MzI0In0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIyNDc4NSJ9fSwibWFudWFsQ3V0UHJvZ3Jlc3MiOiIwLjAwMDEyMjA3MDMxMjUwMDAwMDMiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDAxMjIwNzAzMTI1MDAwMDAzIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOjEwMCwiZm91bmRhdGlvbkNvbnZlcnNpb24iOnsiYmFzZVJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiZ2FpblJlc291cmNlIjoiMTAwIn0sIm1pbGVzdG9uZXMiOnsibG9nR2Fpbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1vcmVQbGFudHNNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiIxLjI3ODA2MTY1MzcyMjY4NTJlMjciLCJ0b3RhbENvYWwiOiIxLjI5MTQwMjAyODYyNjI2NzNlMjciLCJhc2giOiIxMzQwOTEzNTk2MzY0Ljg4NTMiLCJhY3RpdmVGaXJlcyI6IjAiLCJidWlsZEZpcmUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIxLjYzMDAyMTcwOTk2MzkyMzQifSwiYWN0aXZlQm9uZmlyZXMiOiI2MzY5IiwiYnVpbGRCb25maXJlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiI2MzY5In0sImFjdGl2ZUtpbG5zIjoiMjcxIiwiYnVpbGRLaWxuIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMjcxIn0sIndhcm1lckN1dHRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiIxNDU2ODgyNiIsImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsicmVzb3VyY2UiOjAsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCJoZWF0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIzNzY5In0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIzNzY5In0sIm1vcmVGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiI2MDMifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImFjdGl2ZURyaWxscyI6IjExNCIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMTE0In0sImVmZmljaWVudFNtZWx0aGVyIjp7InJlc291cmNlIjoiMS4zMzY0Nzc3OTEzMjgyNTJlMTciLCJib3VnaHQiOnRydWV9fSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA4MDY0NTE2MTI5MDMyMjU4IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjMxOTgifX0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDgwNjQ1MTYxMjkwMzIyNTgiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzE5OCJ9fSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDQ3MDk2Nzc0MTk4NTU3ODQ1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjczNzkifX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwODA2NDUxNjEyOTAzMjI1OCIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjI3MCJ9fSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwODA2NDUxNjEyOTAzMjI1OCIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjI3MCJ9fSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA4MDY0NTE2MTI5MDMyMjU4IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYW1vdW50IjoiMTM5In19LCJzbWFsbEZpcmVFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6MH0sInRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjoiMC4wMDgwNjQ1MTYxMjkwMzIyNTgiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYm9uZmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOjB9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDgwNjQ1MTYxMjkwMzIyNTgiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwia2lsbkVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMTAyIn0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwODA2NDUxNjEyOTAzMjI1OCIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDE2NjY2NjY2NjY2NjY2NjY2IiwiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTY2NjY2NjY2NjY2NjY2NjYiLCJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA4MDY0NTE2MTI5MDMyMjU4IiwiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX0sIjgiOnsiZWFybmVkIjp0cnVlfSwiOSI6eyJlYXJuZWQiOnRydWV9LCIxMCI6eyJlYXJuZWQiOnRydWV9LCIxMSI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiMTY3Mjg1NjA0NjIxMy4zNzg3IiwidG90YWxQYXBlciI6IjE3MTE1ODkyNTEzNjcuNDIzOCIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjEifSwicGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIyMSJ9LCJleHBhbmRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIyMSJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjEifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIyMSJ9LCJmZXJ0aWxpemVyQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjEifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjEifSwiYm9uZmlyZUJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjIxIn0sImtpbG5Cb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIyMSJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiNSJ9LCJib3hCb29rIjp7ImFtb3VudCI6IjUifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjIxIn19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19fSwiYm94ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiYm94ZXMiOiI2MTI3NTA5ODM5LjA1MzU0IiwidG90YWxCb3hlcyI6IjE3MjkzMjc2NjY3LjA1MzU2IiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6MH0sInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMjIifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIxMyJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIxMSJ9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMTYzNDcwNTMuMjE2NTQ2MDY0IiwiYmVzdE9yZSI6IjIwNDA3MzQ5NS43MTQ3ODU3MiIsIm9yZVByb2dyZXNzIjoiMC42ODMwMDAwMDAwMDAyMTg1IiwibWV0YWwiOiIxMTAxMzgxMDUuNDk2Njg2NTIiLCJiZXN0TWV0YWwiOiIyNDM2OTYzNTA3LjM5NzE2NCIsInRvdGFsTWV0YWwiOiIxNDIzMTI0ODc0NS4wNDQ1NjEiLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIxMTgifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjE0In0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjE2In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiIyMTU4IiwidG90YWxDbG90aCI6Ijk2MDgiLCJ3b29sIjoiNTQwIiwic2hlZXAiOiIxMTQxIiwiYnVpbGRQZW5zIjp7ImFtb3VudCI6IjU2In0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiI5NCJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiIxMjcifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjF9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjoiNDk2MzkwNy4yMDcwMDI4MzQiLCJ0b3RhbE9pbCI6IjE4NDI1MDQxLjgyNjgzMzQ4IiwiZGVwdGgiOiI3NTU2IiwiZHJpbGxQcm9ncmVzcyI6IjIzMTkwMi4wMTM0NzEzNTgyIiwiYWN0aXZlSGVhdnkiOiIzNSIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMzUifSwiYWN0aXZlSGVhdnkyIjoiMTMiLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOiIxMyJ9LCJhY3RpdmVFeHRyYWN0b3IiOiI1IiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiNSJ9LCJhY3RpdmVQdW1wIjoiMyIsImJ1aWxkUHVtcCI6eyJhbW91bnQiOiIzIn0sImFjdGl2ZUJ1cm5lciI6IjE4IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMTgifSwiYWN0aXZlU21lbHRlciI6IjQiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiNCJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjp0cnVlfSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMzg4MjcuNzUwOTcwMjczNyIsInRvdGFsUGxhc3RpYyI6IjI1MDAwMS4wNjgwMDAwMDAyMyIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiMjIifSwiYWN0aXZlUmVmaW5lcnkiOiIyMiIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiMTkifSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6IjE5In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMTUifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX19LCJ1c2luZ0xvZyI6ZmFsc2V9 +`,"./../../saves/Day 11 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJjb2FsIiwibWV0YWwiLCJvaWwiLCJkeWVzIiwiZWx2ZXMiLCJ0cmVlcyIsImJveGVzIiwicGFwZXIiXSwidGltZSI6MTY3MDg4ODc1Mzk5MywiYXV0b3NhdmUiOnRydWUsIm9mZmxpbmVQcm9kIjpmYWxzZSwib2ZmbGluZVRpbWUiOm51bGwsInRpbWVQbGF5ZWQiOjYzMzg4LjE2NjUxOTM0MjE4LCJrZWVwR29pbmciOmZhbHNlLCJtb2RJRCI6ImFkdmVudC1pbmNyZW1lbnRhbCIsIm1vZFZlcnNpb24iOiIwLjAiLCJsYXllcnMiOnsibWFpbiI6eyJtaW5pbWl6ZWQiOnRydWUsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MTJ9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiMS41NDM4MDY5MDQxMjI1ODA2ZTE5IiwidG90YWxMb2dzIjoiMS44MDIxODcyNjAwNzAxOThlMjIiLCJ0cmVlcyI6IjEwIiwic2FwbGluZ3MiOiIwIiwicm93MVVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjUyNzk3In0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI1Mjc5NyJ9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzQ3MjMzIn19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDAwMTIyMDcwMzEyNTAwMDAwMyIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjAwMDEyMjA3MDMxMjUwMDAwMDMiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6MTAwLCJmb3VuZGF0aW9uQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJnYWluUmVzb3VyY2UiOiIxMDAifSwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjEuMTk4OTU3MzM0NjIxNDA0NmUzMiIsInRvdGFsQ29hbCI6IjEuMjUxNTEwMDAxODAxODUzNWUzMyIsImFzaCI6IjcuMDYxODA2ODk2OTU1NDQ3NWUxNiIsImFjdGl2ZUZpcmVzIjoiMCIsImJ1aWxkRmlyZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjEuMzU5NDM4OTIwNTc2Mjg4MiJ9LCJhY3RpdmVCb25maXJlcyI6IjY0NTY5IiwiYnVpbGRCb25maXJlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiI2NDU2OSJ9LCJhY3RpdmVLaWxucyI6IjQzOSIsImJ1aWxkS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjQzOSJ9LCJ3YXJtZXJDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiODA3NiJ9LCJoZWF0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiODA3NiJ9LCJtb3JlRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYW1vdW50IjoiMjA4OCJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYWN0aXZlRHJpbGxzIjoiMTMyIiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIxMzIifSwiZWZmaWNpZW50U21lbHRoZXIiOnsicmVzb3VyY2UiOiIxLjMzNjQ3Nzc5MTMyODI1MmUxNyIsImJvdWdodCI6dHJ1ZX19LCJlbHZlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDU2ODE4MTgxODE4MTgxODIiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzE5OCJ9fSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNTY4MTgxODE4MTgxODE4MiIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIzMTk4In19LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNTY4MTgxODE4MTgxODE4MiIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI3Mzc5In19LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDU2ODE4MTgxODE4MTgxODIiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifX0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDU2ODE4MTgxODE4MTgxODIiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNTY4MTgxODE4MTgxODE4MiIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxNDU2ODgyNiIsImFtb3VudCI6IjEzOSJ9fSwic21hbGxGaXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOjB9LCJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6IjAuMDA1NjgxODE4MTgxODE4MTgyIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJvbmZpcmVFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDA1NjgxODE4MTgxODE4MTgyIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjEwMiJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDU2ODE4MTgxODE4MTgxODIiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxNTYyNSIsImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDE1NjI1IiwiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNTY4MTgxODE4MTgxODE4MiIsImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjp0cnVlfSwiMTAiOnsiZWFybmVkIjp0cnVlfSwiMTEiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6IjEuMzg0NzQ3MTUxMjY2NjExOWUxOCIsInRvdGFsUGFwZXIiOiIxLjM4NDc0NzE4OTk5OTk0NGUxOCIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMzQifSwicGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIzNCJ9LCJleHBhbmRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIzNCJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMzQifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIzNCJ9LCJmZXJ0aWxpemVyQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMzQifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMzQifSwiYm9uZmlyZUJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjM0In0sImtpbG5Cb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIzNCJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiNiJ9LCJib3hCb29rIjp7ImFtb3VudCI6IjYifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjM0In19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19fSwiYm94ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiYm94ZXMiOiI2NTc0MDY2NjU5MTAxNS4zOSIsInRvdGFsQm94ZXMiOiI2NTc1MTgzMjM1Nzg0My40IiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6MH0sInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMzcifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIyMyJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIxOSJ9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiNDc3OTAzMjguMzkxMjg0MDEiLCJiZXN0T3JlIjoiNzE5OTUxMzczLjI2NDk1NDkiLCJvcmVQcm9ncmVzcyI6IjAuMjM2OTk5OTk5OTk5OTI4NjYiLCJtZXRhbCI6IjUzNDQyOTExNDY4NC42MjY1IiwiYmVzdE1ldGFsIjoiMzg2MDI2MjcxMDg4MC44NDM4IiwidG90YWxNZXRhbCI6IjE2NzY0OTc1NTQxMTg0LjAyNyIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjE2MiJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMTkifSwiYXV0b1NtZWx0RW5hYmxlZCI6dHJ1ZSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMjIifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX19LCJjbG90aCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjbG90aCI6IjQ4NzExIiwidG90YWxDbG90aCI6IjU2MTYxIiwid29vbCI6IjAiLCJzaGVlcCI6IjMyNjMiLCJidWlsZFBlbnMiOnsiYW1vdW50IjoiMTUxIn0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiIxODAifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiMjQ3In0sInRyZWVzVXBncmFkZXMiOnsidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJicmVlZGluZ1Byb2dyZXNzIjoxLCJzaGVhcmluZ1Byb2dyZXNzIjoxLCJzcGlubmluZ1Byb2dyZXNzIjoxfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjE4NTA0NjY3OC4xMDA0NDQ4NSIsInRvdGFsT2lsIjoiMTYyMDc4NDkzMi4yMzYzNDA4IiwiZGVwdGgiOiIxMjEzNCIsImRyaWxsUHJvZ3Jlc3MiOiI0NTQ2MjUwNy45MTc2MDYzOSIsImFjdGl2ZUhlYXZ5IjoiNjEiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjYxIn0sImFjdGl2ZUhlYXZ5MiI6IjI1IiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiMjUifSwiYWN0aXZlRXh0cmFjdG9yIjoiOSIsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6IjkifSwiYWN0aXZlUHVtcCI6IjciLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiNyJ9LCJhY3RpdmVCdXJuZXIiOiIyMiIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6IjIyIn0sImFjdGl2ZVNtZWx0ZXIiOiI4IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjgifSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VkRGVwdGhNaWxlc3RvbmVzIjpmYWxzZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWV9LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOiIzODgyMDEuNDQ5ODY5NDE2NCIsInRvdGFsUGxhc3RpYyI6IjIwNDgzMjc3LjEwMjY5MDQxNyIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiNTYifSwiYWN0aXZlUmVmaW5lcnkiOiI1NiIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiMzkifSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6IjM5In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMzIifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOiIxNzE4Mi43MjY5NzIwNDI4OTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjExIn19LCJ5ZWxsb3ciOnsiYW1vdW50IjoiMjAzMDYuODU5MTQ4Nzc3OTY3IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxMiJ9fSwiYmx1ZSI6eyJhbW91bnQiOiIyMzY5MS4zMzU2NzM1NzQyOTMiLCJidXlhYmxlIjp7ImFtb3VudCI6IjEzIn19LCJvcmFuZ2UiOnsiYW1vdW50IjoiMzc4IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIyNyJ9fSwiZ3JlZW4iOnsiYW1vdW50IjoiMzc4IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIyNyJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjM3OCIsImJ1eWFibGUiOnsiYW1vdW50IjoiMjcifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFuYWdlbWVudCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbGZUcmFpbmluZyI6eyJjdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowfSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6MH0sImhlYXRlZFBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowfSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjB9LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowfSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOjB9LCJmaXJlRWxmVHJhaW5pbmciOnsiMiI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowfX19fX0sInVzaW5nTG9nIjpmYWxzZX0=","./../../saves/Day 12 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJwbGFzdGljIl0sInRpbWUiOjE2NzA5NDY5MzQ2NTQsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjo5MTgyOC45MTUwMDAwNzM5Niwia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC41IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTQiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE1Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTciOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE4Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjAiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIxIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMiI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjMiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX19LCJkYXkiOjEzfSwidHJlZXMiOnsibWluaW1pemVkIjpmYWxzZSwibG9ncyI6IjYuMDUzMzIxMTY0OTc1NDg4ZTI5IiwidG90YWxMb2dzIjoiMi43MzUyNjg5MDYxNzI2NThlMzAiLCJzYXBsaW5ncyI6IjAiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjkxODU5MCJ9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI5MTg1OTAifSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTM0OTQ1NCJ9fSwibWFudWFsQ3V0UHJvZ3Jlc3MiOiIwLjAwMDEyMjA3MDMxMjUwMDAwMDMiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDAxMjIwNzAzMTI1MDAwMDAzIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiIyNTMiLCJmb3VuZGF0aW9uQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImdhaW5SZXNvdXJjZSI6MTAwfSwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2V9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiIyLjYzMzIxNDA1MDQ1ODE2MmU0MyIsInRvdGFsQ29hbCI6IjIuNzQ0MzY1MTgxNTc4Njc2M2U0MyIsImFzaCI6IjEuMTA0Nzc1NzM3OTQwNTMwN2UzMyIsImFjdGl2ZUZpcmVzIjoiMjEzNTY0My45ODIzNzc0NzciLCJidWlsZEZpcmUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjIxMzU2NDMuOTgyMzc3NDc3In0sImFjdGl2ZUJvbmZpcmVzIjoiMjcxNDY1MCIsImJ1aWxkQm9uZmlyZSI6eyJyZXNvdXJjZSI6IjMwMTciLCJhbW91bnQiOiIyNzE0NjUwIn0sImFjdGl2ZUtpbG5zIjoiMTU0MCIsImJ1aWxkS2lsbiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTU0MCJ9LCJ3YXJtZXJDdXR0ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsicmVzb3VyY2UiOiIzMDE3IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCJoZWF0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiNjgzMzEifSwiaGVhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiI2ODMzMSJ9LCJtb3JlRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYW1vdW50IjoiMTE5MDE5In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJhY3RpdmVEcmlsbHMiOiIxNTIiLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjE1MiJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOnRydWV9fSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI2NDUxIn0sImJ1eVByb2dyZXNzIjoiMC4wMDI1IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjc1MTk5OTk5OTk3OTk0MDN9LCJwbGFudGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI2NDUxIn0sImJ1eVByb2dyZXNzIjoiMC4wMDI1IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjgyMzk5OTk5OTk3OTk5NjN9LCJleHBhbmRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTg0MTAifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMjUiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDk1OTk5OTk5OTgwMTY3NH0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAyNSIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xMzU5OTk5OTk5ODAyMjEyOH0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiIzNjMifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMjUiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjk1OTk5OTk5OTgwNjIyOX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYW1vdW50IjoiMjU1In0sImJ1eVByb2dyZXNzIjoiMC4wMDI1IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjMwNzk5OTk5OTk4MDc5Mzg2fSwic21hbGxGaXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjMwMTcifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxMzk3NTAwMjYyNjIzMzgxNyIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xNzk5OTk5OTk5ODA5OTk4fSwiYm9uZmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMzAxNyIsImFtb3VudCI6IjQxMCJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA5OTAyMzIxNTE2OTkxMjciLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzY3OTk5OTk5OTgxMDgwMzV9LCJraWxuRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjE0NCJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDI1IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjc0Mzk5OTk5OTk4MTE1MjZ9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDEyNSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDgzOTk5OTk5OTg5MzU4N30sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDEyNSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjM5OTk5OTk5OTg5MTk3N30sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDI1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yMzE5OTk5OTk5Nzk2MzUxNn0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwib2lsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjp0cnVlfSwiMTAiOnsiZWFybmVkIjp0cnVlfSwiMTEiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOiIyLjM5ODY2Mjk0MjI4NDQyNzJlMzAiLCJ0b3RhbFBhcGVyIjoiMi40MTEyODcwOTg5MTk1MmUzMCIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjcifSwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiI5MCJ9LCJwbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiI5MCJ9LCJleHBhbmRlcnNCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiOTAifSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiI5MCJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiI5MCJ9LCJmZXJ0aWxpemVyQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjkwIn0sInNtYWxsRmlyZUJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiI5MCJ9LCJib25maXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjkwIn0sImtpbG5Cb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiOTAifSwicGFwZXJCb29rIjp7ImFtb3VudCI6IjEwIn0sImJveEJvb2siOnsiYW1vdW50IjoiMTAifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjkwIn0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJvaWxCb29rIjp7ImFtb3VudCI6MH0sIm1ldGFsQm9vayI6eyJhbW91bnQiOjB9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiMy40MzQ3ODcyOTk2NzYwNzMzZTI0IiwidG90YWxCb3hlcyI6IjMuNDM1Nzg3NDAxOTAzMjU3N2UyNCIsImJveGVzQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImdhaW5SZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIn0sInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiMTMxIn0sImFzaEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiNjMifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiNDkifX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiIyNjk5NjEzNTAyLjE3NjI4NTciLCJiZXN0T3JlIjoiNTYyNjc2NTU1My40MjY0MTciLCJvcmVQcm9ncmVzcyI6IjAuMDc5OTk5OTk5OTk5ODAzNzgiLCJtZXRhbCI6IjMxODM3MjQ1NTU3MDguOTI3MiIsImJlc3RNZXRhbCI6IjcwODU5OTQzNDA4MDA4LjcyIiwidG90YWxNZXRhbCI6IjQzNTA3NjA2MTAwMjg5My4yIiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwib3JlRHJpbGwiOnsiYW1vdW50IjoiMTkzIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIyMCJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiIzMSJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0Ijp0cnVlfX0sImNsb3RoIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoIjoiMjAwNDIxOTU3IiwidG90YWxDbG90aCI6IjIwMTUzODEzNyIsIndvb2wiOiIwIiwic2hlZXAiOiI0MTg4MTA4IiwiYnVpbGRQZW5zIjp7ImFtb3VudCI6Ijk1OSJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiODI1In0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6IjE0NzEifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjF9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjoiNDY2NDk1NDI5LjIxODY0MSIsInRvdGFsT2lsIjoiMTAxMzkyMzI1MjMuODE4OTYiLCJkZXB0aCI6Ijk4MTYiLCJkcmlsbFByb2dyZXNzIjoiMzQ2NzgyOC4zNzE2NjQ4MDkiLCJhY3RpdmVIZWF2eSI6IjczIiwiYnVpbGRIZWF2eSI6eyJhbW91bnQiOiI3MyJ9LCJhY3RpdmVIZWF2eTIiOiIyOCIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjI4In0sImFjdGl2ZUV4dHJhY3RvciI6IjEwIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTAifSwiYWN0aXZlUHVtcCI6IjgiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiOCJ9LCJhY3RpdmVCdXJuZXIiOiIyNiIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6IjI2In0sImFjdGl2ZVNtZWx0ZXIiOiI4IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjgifSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VkRGVwdGhNaWxlc3RvbmVzIjpmYWxzZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwib2lsTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VkT2lsTWlsZXN0b25lcyI6ZmFsc2UsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMjI2ODYzMTUuODIxMjc2MDg0IiwidG90YWxQbGFzdGljIjoiOTgyMDkxNjkuNTM1NjgwMjYiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjcwIn0sImFjdGl2ZVJlZmluZXJ5IjoiNzAiLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImJveFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6IjQwIn0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiI0MiJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjQwIn19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjoiNTgzMjQ1OS4zMjQ3MjE3NTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjI4In19LCJ5ZWxsb3ciOnsiYW1vdW50IjoiNTgzMjQ1OS4zMjQ3MjE3NTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjI4In19LCJibHVlIjp7ImFtb3VudCI6IjU0MzAyMjAuNzUwNjAzMDE1IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIyNyJ9fSwib3JhbmdlIjp7ImFtb3VudCI6IjEwNTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjMyIn19LCJncmVlbiI6eyJhbW91bnQiOiIxMDU2IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIzMiJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjEwNTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjMyIn19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiYmx1ZUR5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZyI6eyJib3VnaHQiOnRydWV9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEyNDA0MS43NDczNDQ4NTAwNyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjI0ODAzOS4xNjUzMzQ3MjgwNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMzcyMDAxLjc0MTMzODQ2NTEzIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0OTYxMTIuNzI5NjQ1ODMxODYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI2MjAwNTkuMzg4MTQwOTExIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNzQ0MTM3LjI0Mzg3OTY3NDEiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6Ijg2ODE3Ny4zMjg3MDY0MDg3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiOTkyMDA0Ljc5MTQ0MjU3NTQiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMTE2Mjc1LjYwODAzNzg4NyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0MTM0MDQuMDI5OTIyOTUzNCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNDU0NjcwLjExNDQ3NDY5MjU2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjE0ODgxODguODA2Mjg3MjA3NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwiY3VycmVudFNob3duIjoiU3RhciIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0ZWFjaGluZyI6eyJib3VnaHQiOnRydWV9LCJzY2hvb2xzIjp7ImFtb3VudCI6IjMifSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOiIxMiJ9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImZvY3VzTXVsdGlwbGllciI6IjExLjk4ODU5ODQ1Mjk4ODE3MSIsInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNUYXJnZXRzIjp7IkphY2siOnRydWUsIlN0YXIiOnRydWUsIlNub3diYWxsIjp0cnVlLCJJdnkiOnRydWV9LCJmb2N1c0Nvb2xkb3duIjo2LjU0MTAwMDAwMDAwMDAxMiwiZm9jdXNUaW1lIjoxLjU0MTAwMDAwMDAwMDAwM319LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjp0cnVlfQ==","./../../saves/Day 13 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJkeWVzIl0sInRpbWUiOjE2NzEwODMzMjMzNDUsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjo5NzIyOS4yMzEwMDAwNzA5Mywia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC41IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MTR9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiNi4zODEyNTE1NTg2NDg2MTllMzciLCJ0b3RhbExvZ3MiOiIxLjM2NDEyNDAxMzg4MTEzNDhlMzkiLCJzYXBsaW5ncyI6IjQ0MTY2ODI5Mjc3NjMwLjciLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjEyOTIyODIifSwiMSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTMzMDAxNyJ9LCIyIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIxOTQ0MjM2In19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDAwMDA3NjI5Mzk0NTMxMjQ5OTg0IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDAwMDA3NjI5Mzk0NTMxMjQ5OTg0IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiI3MTciLCJmb3VuZGF0aW9uQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImdhaW5SZXNvdXJjZSI6MTAwfSwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlfSwiY29hbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjb2FsIjoiNS42ODEwMTc4MzkyNTIyMjVlNTgiLCJ0b3RhbENvYWwiOiI1LjY4MTAxODk1MDM2NDg3M2U1OCIsImFzaCI6IjYuNjc2NjU3OTc0NjEwNjUwNWU0NCIsImFjdGl2ZUZpcmVzIjoiMCIsImJ1aWxkRmlyZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMCJ9LCJhY3RpdmVCb25maXJlcyI6IjExMjAxMjU2MzQwIiwiYnVpbGRCb25maXJlIjp7InJlc291cmNlIjoiMzAxNyIsImFtb3VudCI6IjExMjAxMjU2MzQwIn0sImFjdGl2ZUtpbG5zIjoiMjM4NyIsImJ1aWxkS2lsbiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMjM4NyJ9LCJ3YXJtZXJDdXR0ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsicmVzb3VyY2UiOiIzMDE3IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCJoZWF0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiNTcxODAzIn0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiNTcxODAzIn0sIm1vcmVGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiNTQ1NjQwODQ2LjE1MzM1OTkiLCJhbW91bnQiOiIxMzMyNTQyIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJhY3RpdmVEcmlsbHMiOiI1MTciLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjUxNyJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0IjpmYWxzZX0sInJlZmluZWRDb2FsIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2xvcmVkRmlyZSI6eyJib3VnaHQiOmZhbHNlfX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiNjQ1MSJ9LCJidXlQcm9ncmVzcyI6IjAuMDAxNzEwNDA0NjExNjUzNzQwMiIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40OTYwMDAwMDAxNzAxMzQ1N30sInBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTcxMDQwNDYxMTY1Mzc0MDIiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTY4MDAwMDAwMTcwNTkyfSwiZXhwYW5kZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjE4NDEwIn0sImJ1eVByb2dyZXNzIjoiMC4wMDE3MTA0MDQ2MTE2NTM3NDAyIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjI0MDAwMDAwMDE3MDUwMzgyfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiMzYzIn0sImJ1eVByb2dyZXNzIjoiMC4wMDEyNDM0MjE3MTMxNjkwODc4IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjY0NDAwMDAwMDE3MTQwOTd9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiMzYzIn0sImJ1eVByb2dyZXNzIjoiMC4wMDA1OTk4MTkyMTcwNDA4MTczIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjQ4MDAwMDAwMDE3MzU4MjQ2fSwiZmVydGlsaXplckVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiNTQ1NjQwODQ2LjE1MzM1OTkiLCJhbW91bnQiOiIyNTUifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTE3MjQwMzM0OTk4MzI5NDgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODA4MDAwMDAwMTcyODYwN30sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIzMDE3In0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc2NDEzNzAyODczNTM4NzEiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODgwMDAwMDAwMTczNDMxOH0sImJvbmZpcmVFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjMwMTciLCJhbW91bnQiOiI0MTAifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxMjYwMzgyODk4Nzg2NDI0NiIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDAwMDAwMDAxNzg1NjY1fSwia2lsbkVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIxNDQifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxNDQ0OTg0NzU2MjY2OTA2NiIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zNDQwMDAwMDAxNzkwNzIyfSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTIzODA5NTIzODI3NjQ1OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDIwMDAwMDAwMDAzMzk5fSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDUyODU3MTQyODU4OTQ0MDIiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjA1NjAwMDAwMDAwMzI1Nzg5fSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTM5MjY3OTY1NzU0NTA2MSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODE2MDAwMDAwMjAxMDgyNX0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNDU0Njg4NjU5NzgzMzgyNCIsImFtb3VudE9mVGltZXNEb25lIjowLjUyMDAwMDAwMDAxMDgyNDcsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDM2MzY1MDM3NDc5ODE5NzQyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDc2MDAwMDAwMDA5Njc4MSwiYm91Z2h0Ijp0cnVlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNDEyOTM2OTI3NDI1NjA2MyIsImFtb3VudE9mVGltZXNEb25lIjowLjM2NDAwMDAwMDAwNjQ3NzM2LCJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxOTM4MzQ2NjAyNTIxNzI3NSIsImFtb3VudE9mVGltZXNEb25lIjowLjc1NjAwMDAwMDAyMjM4OTQsImJvdWdodCI6dHJ1ZX0sImR5ZUVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiMy4xNjYwODM5NzcwMzA3MDY1ZTQwIiwidG90YWxQYXBlciI6IjQuMTc2MTgzOTc4NjM2ODAxZTQwIiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjExMyJ9LCJwbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTMifSwiZXhwYW5kZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjExMyJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjExMyJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTMifSwiZmVydGlsaXplckJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTMifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjExMyJ9LCJib25maXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjExMyJ9LCJraWxuQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjExMyJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiMTEifSwiYm94Qm9vayI6eyJhbW91bnQiOiIxMSJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiMTEzIn0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIzNyJ9LCJvaWxCb29rIjp7ImFtb3VudCI6IjM3In0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIzNyJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjM3In0sImR5ZUJvb2siOnsiYW1vdW50IjowfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX19LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6IjEuODI2MTUzMjk1NTM3MzY5ZTMzIiwidG90YWxCb3hlcyI6IjEuODI3MjYzMzA2MTY4NTllMzMiLCJib3hlc0NvbnZlcnNpb24iOnsiYmFzZVJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJnYWluUmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyJ9LCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImFtb3VudCI6IjE4OSJ9LCJhc2hCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImFtb3VudCI6IjkyIn0sImNvYWxCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImFtb3VudCI6IjcxIn19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjE4In0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjEwIn0sInBsYXN0aWNCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNSJ9fX0sIm1ldGFsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9yZSI6IjAuOTAxOTk2NTUyOTQ0MTgzMyIsImJlc3RPcmUiOiI1NjI2NzY1NTUzLjQyNjQxNyIsIm9yZVByb2dyZXNzIjoiMC43MTE5OTk5OTk5OTk2NjY3IiwibWV0YWwiOiIxLjAyMjU3MzE3NzU1OTAwMzdlMjIiLCJiZXN0TWV0YWwiOiIxLjg3MjM2NDk1MzMxMjQxMDdlMjIiLCJ0b3RhbE1ldGFsIjoiOC4zOTU4NTM0NjM4MTM1NjZlMjIiLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIyNjgxIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIyNjkifSwiYXV0b1NtZWx0RW5hYmxlZCI6dHJ1ZSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMzMzIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9fSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiIxMDE0MjQ4MzUxIiwidG90YWxDbG90aCI6IjExMjUzNjQ1MzEiLCJ3b29sIjoiMCIsInNoZWVwIjoiMzQ2NjAwNDQiLCJidWlsZFBlbnMiOnsiYW1vdW50IjoiMjE0NCJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiMjAyOSJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiIzMTU3In0sInRyZWVzVXBncmFkZXMiOnsidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJicmVlZGluZ1Byb2dyZXNzIjoxLCJzaGVhcmluZ1Byb2dyZXNzIjoxLCJzcGlubmluZ1Byb2dyZXNzIjoxfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjQ4MTUxMDYzMzk1NDU4NS40IiwidG90YWxPaWwiOiI1OTMyODA3NDYwMjQzNzYuMiIsImRlcHRoIjoiMTcyMTUiLCJkcmlsbFByb2dyZXNzIjoiNTcyOTI3MjY3Ljc3MjA5NDciLCJhY3RpdmVIZWF2eSI6IjE4MCIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTgwIn0sImFjdGl2ZUhlYXZ5MiI6Ijg0IiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiODQifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTkiLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIxOSJ9LCJhY3RpdmVQdW1wIjoiMTkiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTkifSwiYWN0aXZlQnVybmVyIjoiMTMxIiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMTMxIn0sImFjdGl2ZVNtZWx0ZXIiOiI3NyIsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOiI3NyJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOmZhbHNlLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjpmYWxzZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX19LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOiIzNzk3MzY4MTE1LjMwOTQ1NSIsInRvdGFsUGxhc3RpYyI6Ijc0MDM3MDMzMTUuNDk2OTY5IiwiYnVpbGRSZWZpbmVyeSI6eyJhbW91bnQiOiIxODQifSwiYWN0aXZlUmVmaW5lcnkiOiIxODQiLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImJveFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6IjYwIn0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiI1NiJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjUwIn19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjoiMTAzMTIyOTI4LjA2MDM2MTk4IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI1NCJ9fSwieWVsbG93Ijp7ImFtb3VudCI6IjEwMzEyMjkyOC4wNjAzNjE5OCIsImJ1eWFibGUiOnsiYW1vdW50IjoiNTQifX0sImJsdWUiOnsiYW1vdW50IjoiMTAzMTIyOTI4LjA2MDM2MTk4IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI1NCJ9fSwib3JhbmdlIjp7ImFtb3VudCI6IjI1MjAiLCJidXlhYmxlIjp7ImFtb3VudCI6IjM1In19LCJncmVlbiI6eyJhbW91bnQiOiIyNTIwIiwiYnV5YWJsZSI6eyJhbW91bnQiOiIzNSJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjI1MjAiLCJidXlhYmxlIjp7ImFtb3VudCI6IjM1In19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiYmx1ZUR5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZyI6eyJib3VnaHQiOnRydWV9fX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIzMTI4MzUxLjI3NDA0MzM3ODQiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjYyNjQ2MDQuNTM1NTQ4NTI2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjkzNzIwNzIuODI2NzYxNDU2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTI0OTY2ODMuNjM5MTAzOTg2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIxNTYzODMzOC40OTkxNjEwMjIiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTg3NDQzNjguNjUzOTgwMTYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyMTg2ODE3OC41NjAzNDc2OTUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjQ5OTI5ODAuNzIzODU3MTA1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJraWxuRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjI4MTE2MjQ5LjIxMjA0MDI2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMDQzNzY0Ny4yNzc0NzQ1NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjExNDU2Mzg3LjczNDcyMTA0OCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjM3NTYzOTc2LjQyMDMyMDA4NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY29hbERyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQwNjI5MTg1LjYyNDk2MDcxIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0OTk4NTgwNC4xOTQ4MDM0NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwib2lsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ2ODYzMTM2LjEwMzU5MDExNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0MzczNjQzMy4zNzE3ODQyNyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fX0sImN1cnJlbnRTaG93biI6IkNvY29hIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6Ijc1MyJ9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImZvY3VzTXVsdGlwbGllciI6IjE5LjM3MTc0ODk3NDI5MDQ4MyIsInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c1RhcmdldHMiOnsiUGVwcGVybWludCI6dHJ1ZSwiTm9lbCI6dHJ1ZSwiR2luZ2Vyc25hcCI6dHJ1ZSwiSXZ5Ijp0cnVlLCJDb2NvYSI6dHJ1ZX0sImZvY3VzQ29vbGRvd24iOjguNjk5LCJmb2N1c1RpbWUiOjguNjk5LCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19fSwid3JhcHBpbmdQYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJ3cmFwcGluZ1BhcGVyIjp7ImNocmlzdG1hcyI6eyJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJyYWluYm93Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImphenp5Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInN1bnNoaW5lIjp7ImJ1eWFibGUiOnsiYW1vdW50IjowfX0sIm9jZWFuIjp7ImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJlYWNoIjp7ImJ1eWFibGUiOnsiYW1vdW50IjowfX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWlsZXN0b25lcyI6eyJwcmltYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhQcmltYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlOb1Jlc2V0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhTZWNvbmRhcnkiOnsiZWFybmVkIjpmYWxzZX0sInVubG9ja0R5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjp0cnVlfQ==","./../../saves/Day 14 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJsZXR0ZXJzIl0sInRpbWUiOjE2NzEwOTAzMDQ3NzcsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjo5NzgyNC41NzYwMDAwNjY1OCwia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC41IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjoxNX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiI2Ljg2ODM0ODcwMDkwMDU0MWUzOSIsInRvdGFsTG9ncyI6IjYuMDIwOTg3ODIxMjg5NTE1ZTQwIiwic2FwbGluZ3MiOiI2NzI0NjQ5OTg5NDMxOC4xNiIsInJvdzFVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTM2NTMwNCJ9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIxNDA1MTcyIn0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjIwOTQ3NjYifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDAwMDc2MjkzOTQ1MzEyNDk5ODQiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDAwMDc2MjkzOTQ1MzEyNDk5ODQiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6Ijg0MCIsImZvdW5kYXRpb25Db252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoxMDB9LCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjIuMDM3OTYwMTI0ODI3MDA4M2U2MSIsInRvdGFsQ29hbCI6IjIuMDM3OTYwMTI1OTM4MjU2ZTYxIiwiYXNoIjoiMy4xNzk4ODM0MDIxNjgwNTJlNDYiLCJhY3RpdmVGaXJlcyI6IjAiLCJidWlsZEZpcmUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjAifSwiYWN0aXZlQm9uZmlyZXMiOiIyNzUzOTcwNjE2MiIsImJ1aWxkQm9uZmlyZSI6eyJyZXNvdXJjZSI6IjMwMTciLCJhbW91bnQiOiIyNzUzOTcwNjE2MiJ9LCJhY3RpdmVLaWxucyI6IjI1MTYiLCJidWlsZEtpbG4iOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjI1MTYifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiNTQ1NjQwODQ2LjE1MzM1OTkiLCJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7InJlc291cmNlIjoiMzAxNyIsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6Ijc5NzQyOSJ9LCJoZWF0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6Ijc5NzQyOSJ9LCJtb3JlRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYW1vdW50IjoiMTY0MjM0MCJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYWN0aXZlRHJpbGxzIjoiNjc2IiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiI2NzYifSwiZWZmaWNpZW50U21lbHRoZXIiOnsiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOmZhbHNlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0IjpmYWxzZX19LCJlbHZlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTYxNjQwNjE3NTgzMzUyMjEiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDY0MDAwMDAwMTgxNzgzOX0sInBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTYxNjQwNjE3NTgzMzUyMjEiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTM2MDAwMDAwMTgyMjQxNH0sImV4cGFuZGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIxODQxMCJ9LCJidXlQcm9ncmVzcyI6IjAuMDAxNjE2NDA2MTc1ODMzNTIyMSIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yMDgwMDAwMDAxODIyMX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAxMTk0MTUxMzMwNzgzOTMyNCIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42MTIwMDAwMDAxODMwODc0fSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAxNjkyNjAzMzU0MjY3ODcyOCIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wNTIwMDAwMDAxODUzNTg4ODZ9LCJmZXJ0aWxpemVyRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImFtb3VudCI6IjI1NSJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwMDA0NDcxMTA0MzU2NjQwMzMyIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjE5NjAwMDAwMDE4NDU2ODUzfSwic21hbGxGaXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjMwMTcifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxNTA0NjAxNzI5NjczNjI4MyIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yNjgwMDAwMDAxODUxNjgxfSwiYm9uZmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMzAxNyIsImFtb3VudCI6IjQxMCJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDAwOTI0NTA2NTMxNTk2NjYxMSIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44ODgwMDAwMDAxOTAyNjAyfSwia2lsbkVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIxNDQifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxODA2OTM2ODYwMzA1ODc3MiIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41NDAwMDAwMDAxOTA3ODd9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExMDAwMDAwMDAwMjQyNjg0IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40MDAwMDAwMDAwMDc1MDE5fSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDUwNDc2MTkwNDc4NjA4MzY1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wMzYwMDAwMDAwMDczNTE5M30sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAzNjEzNDU3NDk3Njk2NDgxNyIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzA0MDAwMDAwMjE2OTQ4NX0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwMTA0NjY4MTM4MjA3ODk4NzIiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zNzYwMDAwMDAwMjUzNjk0LCJib3VnaHQiOnRydWV9LCJvaWxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAyNjg3Njc1MDk1NDgyNTg3NiIsImFtb3VudE9mVGltZXNEb25lIjowLjkzMjAwMDAwMDAyNDI0NDEsImJvdWdodCI6dHJ1ZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDI0NzgzNjg5MjkwMTkyMjQzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDg0MDAwMDAwMDIxMDA1MDUsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDE0ODIwMzM1NjM5Mzg5NjU2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjEyMDAwMDAwMDM2OTM0MSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjp0cnVlfSwiMTAiOnsiZWFybmVkIjp0cnVlfSwiMTEiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOiI0LjA5NzMzNDM4ODEwMzY1OWU0MiIsInRvdGFsUGFwZXIiOiI3LjA1OTgzNTM4ODExODkwMWU0MiIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjcifSwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTYifSwicGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiMTE2In0sImV4cGFuZGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTYifSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTYifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiMTE2In0sImZlcnRpbGl6ZXJCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiMTE2In0sInNtYWxsRmlyZUJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTYifSwiYm9uZmlyZUJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTYifSwia2lsbkJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxMTYifSwicGFwZXJCb29rIjp7ImFtb3VudCI6IjExIn0sImJveEJvb2siOnsiYW1vdW50IjoiMTEifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjExNiJ9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjoiNDQifSwib2lsQm9vayI6eyJhbW91bnQiOiI0NCJ9LCJtZXRhbEJvb2siOnsiYW1vdW50IjoiNDQifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiI0NCJ9LCJkeWVCb29rIjp7ImFtb3VudCI6MH19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJ1cGdyYWRlczIiOnsiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJib29rVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiMS43ODgzMzYzNjcxMTcyNDc5ZTM1IiwidG90YWxCb3hlcyI6IjEuNzg4MzQ3NDY3MjI0ODU2ZTM1IiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMifSwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiIyMTEifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiIxMDMifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiODAifX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMjQifSwibWV0YWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMTYifSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxMCJ9fX0sIm1ldGFsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9yZSI6IjYuNjE2OTEzMjAyMTk2NjQ1NWUxNiIsImJlc3RPcmUiOiI2LjYxNjkxMzIwMjE5NjY0NTVlMTYiLCJvcmVQcm9ncmVzcyI6IjAuNjEyMDAwMDAwMDAwMDQyMyIsIm1ldGFsIjoiNy40Njc0Nzg0MDY4MjEzMzZlMjUiLCJiZXN0TWV0YWwiOiIxLjIwNzcxNzkzNjk2Nzc3ODZlMjciLCJ0b3RhbE1ldGFsIjoiMi40NDAwNzQxMDYxNzM1MWUyNyIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjQ1ODYifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjQ1OSJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiI1MDEifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX19LCJjbG90aCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjbG90aCI6IjEwMTQyNDgzNTEiLCJ0b3RhbENsb3RoIjoiMTEyNTM2NDUzMSIsIndvb2wiOiIwIiwic2hlZXAiOiIzNDY2MDA0NCIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyNDAwIn0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiIyNDYzIn0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6IjM1MTUifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjF9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjoiNTcxNzU0OTA0NDcwODM2LjUiLCJ0b3RhbE9pbCI6IjI2MDAzMzI5Njg2Mzg4MTcuNSIsImRlcHRoIjoiMTgwMjEiLCJkcmlsbFByb2dyZXNzIjoiMzYzMzEzMzcyNC44NjM3MzYiLCJhY3RpdmVIZWF2eSI6IjIwOSIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMjA5In0sImFjdGl2ZUhlYXZ5MiI6Ijk3IiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiOTcifSwiYWN0aXZlRXh0cmFjdG9yIjoiMjIiLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIyMiJ9LCJhY3RpdmVQdW1wIjoiMjEiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMjEifSwiYWN0aXZlQnVybmVyIjoiMTQzIiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMTQzIn0sImFjdGl2ZVNtZWx0ZXIiOiIxMDIiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiMTAyIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6ZmFsc2UsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwicm93M1VwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19fSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMjc2OTU0NTc5NTUuODU3MzY1IiwidG90YWxQbGFzdGljIjoiNTUwNDAwOTQ3MzY1LjgzMzMiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjI0NSJ9LCJhY3RpdmVSZWZpbmVyeSI6IjI0NSIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiNzUifSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6Ijc1In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiNzUifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOiI2MjAzMzUzOTUuMDUwMzc3MiIsImJ1eWFibGUiOnsiYW1vdW50IjoiMTI3In19LCJ5ZWxsb3ciOnsiYW1vdW50IjoiMTgxOTI2MDk4Ny4yNjA0NzMiLCJidXlhYmxlIjp7ImFtb3VudCI6IjExMCJ9fSwiYmx1ZSI6eyJhbW91bnQiOiIyMjczODQ3MjIuMDI2MzUwOTIiLCJidXlhYmxlIjp7ImFtb3VudCI6Ijc4In19LCJvcmFuZ2UiOnsiYW1vdW50IjoiMjUyMCIsImJ1eWFibGUiOnsiYW1vdW50IjoiMzUifX0sImdyZWVuIjp7ImFtb3VudCI6IjI1MjAiLCJidXlhYmxlIjp7ImFtb3VudCI6IjM1In19LCJwdXJwbGUiOnsiYW1vdW50IjoiMjUyMCIsImJ1eWFibGUiOnsiYW1vdW50IjoiMzUifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFuYWdlbWVudCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbGZUcmFpbmluZyI6eyJjdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjMxMjgzNTEuMjc0MDQzMzc4NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNjI2NDYwNC41MzU1NDg1MjYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiOTM3MjA3Mi44MjY3NjE0NTYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMjQ5NjY4My42MzkxMDM5ODYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImhlYXRlZFBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjE1NjM4MzM4LjQ5OTE2MTAyMiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc0NDM2OC42NTM5ODAxNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjIxODY4MTc4LjU2MDM0NzY5NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyNDk5Mjk4MC43MjM4NTcxMDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjgxMTYyNDkuMjEyMDQwMjYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEwNDM3NjQ3LjI3NzQ3NDU2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTE0NTYzODcuNzM0NzIxMDQ4IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMzc1NjM5NzYuNDIwMzIwMDg2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNDA2MjkxODUuNjI0OTYwNzEiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sIm1ldGFsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ5OTg1ODA0LjE5NDgwMzQ0IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNDY4NjMxMzYuMTAzNTkwMTE2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF2eURyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQzNzM2NDMzLjM3MTc4NDI3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19fSwiY3VycmVudFNob3duIjoiRnJvc3R5IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6Ijc3MSJ9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImZvY3VzTXVsdGlwbGllciI6IjEuMTYxNjMwOTIwNjgwMjkxNSIsInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjAsImFkdmFuY2VkVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX19LCJ3cmFwcGluZ1BhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsIndyYXBwaW5nUGFwZXIiOnsiY2hyaXN0bWFzIjp7ImJ1eWFibGUiOnsiYW1vdW50IjowfX0sInJhaW5ib3ciOnsiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwiamF6enkiOnsiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwic3Vuc2hpbmUiOnsiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwib2NlYW4iOnsiYnV5YWJsZSI6eyJhbW91bnQiOjB9fSwiYmVhY2giOnsiYnV5YWJsZSI6eyJhbW91bnQiOjB9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJtaWxlc3RvbmVzIjp7InByaW1hcnlCb29zdCI6eyJlYXJuZWQiOmZhbHNlfSwic2Vjb25kYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sImJ1eU1heFByaW1hcnkiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeU5vUmVzZXQiOnsiZWFybmVkIjpmYWxzZX0sImJ1eU1heFNlY29uZGFyeSI6eyJlYXJuZWQiOmZhbHNlfSwidW5sb2NrRHllRWxmIjp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlfSwibGV0dGVycyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsZXR0ZXJzIjoiMTAxMDI0NS41OTcyMzU5NDA3IiwidG90YWxMZXR0ZXJzIjoiMTAxMDI0NS41OTcyMzU5NDA3IiwicHJvY2Vzc2luZ1Byb2dyZXNzIjowLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjoiNyJ9LCJwbGFzdGljQnV5YWJsZSI6eyJhbW91bnQiOiIxMSJ9LCJwYXBlckJ1eWFibGUiOnsiYW1vdW50IjoiMTAifX0sIm1pbGVzdG9uZXMiOnsiYXV0b1NtZWx0aW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbmluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJzeW5lcmd5TWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sImluZHVzdHJpYWxDcnVjaWJsZU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZX19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjp0cnVlfQ==","./../../saves/Day 15 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0yIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJtZXRhbCJdLCJ0aW1lIjoxNjcxNDQ2NjUzNDY4LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOmZhbHNlLCJvZmZsaW5lVGltZSI6bnVsbCwidGltZVBsYXllZCI6MTA3NjU0LjU3MjAwMDA2NDg2LCJrZWVwR29pbmciOmZhbHNlLCJtb2RJRCI6ImFkdmVudC1pbmNyZW1lbnRhbCIsIm1vZFZlcnNpb24iOiIwLjUiLCJsYXllcnMiOnsibWFpbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkYXlzIjp7IjAiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjMiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI1Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjYiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI4Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjkiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTAiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTMiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTgiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MTYsImlzTWFzdGVyeSI6ZmFsc2V9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiNi45Mzc1MzQ4Njk2NzI2MzU2ZTU2IiwidG90YWxMb2dzIjoiMS44MjM4NTIxNzM2NDkwMzM4ZTU3Iiwic2FwbGluZ3MiOiI1Ljk1OTUxODEzMjc2ODcyN2UxOCIsInJvdzFVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMjIyNTM5MyJ9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIyMjkwMzc2In0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjQwNjE0MzUifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDAwMDM4MTQ2OTcyNjU2MjQ5OTkiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDAwMDM4MTQ2OTcyNjU2MjQ5OTkiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY3JlYXRlZFNhcGxpbmdzIjoiMi44MjcxOTExMzkwMjk0Mjc1ZTE5IiwibWFzdGVyeSI6eyJsb2dzIjoiNS4wOTI2OTUzNDExNjU3ODdlMTYiLCJ0b3RhbExvZ3MiOiIyLjE1ODAxNjgyNzIxNTI0ODJlMTciLCJzYXBsaW5ncyI6IjQ4NDExNjc5Nzg0LjM3OTA4IiwiY3JlYXRlZFNhcGxpbmdzIjoiNDg0MjAzNjAxNjIuMjk1MDgiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIxMTkwNyJ9LCIxIjp7ImFtb3VudCI6IjExOTA3In0sIjIiOnsiYW1vdW50IjoiNDE0ODAifX19LCJtYXN0ZXJlZCI6dHJ1ZX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6IjEwMDAiLCJmb3VuZGF0aW9uQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImdhaW5SZXNvdXJjZSI6MTAwfSwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZSwibWFzdGVyeSI6eyJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiIxMDAiLCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjEuODYyNzk4MTk1Mjg2OTQwNmU5NSIsInRvdGFsQ29hbCI6IjIuODY0NjExNjU2Nzk3MjEzNWU5NSIsImFzaCI6IjEuNDk1NTA0Nzg1NDE4ODIwNmU4MCIsImFjdGl2ZUZpcmVzIjoiMCIsImJ1aWxkRmlyZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMCJ9LCJhY3RpdmVCb25maXJlcyI6IjEuMTg3OTczNzYwNDE5MDg3OWUxNyIsImJ1aWxkQm9uZmlyZSI6eyJyZXNvdXJjZSI6IjMwMTciLCJhbW91bnQiOiIxLjE4Nzk3Mzc2MDQxOTA4NzllMTcifSwiYWN0aXZlS2lsbnMiOiIzODMxIiwiYnVpbGRLaWxuIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIzODMxIn0sIndhcm1lckN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJyZXNvdXJjZSI6IjMwMTciLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiI0MDIxODgwNzIifSwiaGVhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiI0MDIxODgwNzIifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImFtb3VudCI6IjE1MTU1NTczNjIzIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJhY3RpdmVEcmlsbHMiOiIxOTExIiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIxOTExIn0sImVmZmljaWVudFNtZWx0aGVyIjp7ImJvdWdodCI6dHJ1ZX0sImFyc29uaXN0QXNzaXN0YW5jZSI6eyJib3VnaHQiOnRydWV9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOnRydWV9LCJjb2xvcmVkRmlyZSI6eyJib3VnaHQiOnRydWV9LCJtYXN0ZXJ5Ijp7ImNvYWwiOiI3MzI2NTY0OTY1NTY0NDYzIiwidG90YWxDb2FsIjoiODQzODMwMjkxNTI5NDgyNSIsImFzaCI6IjI3MDA4MTgxMjU5Mi44NjUzNiIsImFjdGl2ZUZpcmVzIjoiMCIsImJ1aWxkRmlyZSI6eyJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiNTQwOCIsImJ1aWxkQm9uZmlyZSI6eyJhbW91bnQiOiI1NDA4In0sImFjdGl2ZUtpbG5zIjoiMTU4IiwiYnVpbGRLaWxuIjp7ImFtb3VudCI6IjE1OCJ9LCJhY3RpdmVEcmlsbHMiOiIxMyIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMTMifSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOmZhbHNlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOmZhbHNlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0IjpmYWxzZX0sImhlYXRlZEN1dHRlcnMiOnsiYW1vdW50IjoiOTA0In0sImhlYXRlZFBsYW50ZXJzIjp7ImFtb3VudCI6IjkwNCJ9LCJtb3JlRmVydGlsaXplciI6eyJhbW91bnQiOiIzOTEifX0sIm1hc3RlcmVkIjp0cnVlfSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI2NDUxIn0sImJ1eVByb2dyZXNzIjoiMC4wMDA3NzY0NzAxMzY2MTUyNDgyIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjAwODAwMDAwMDE4NTYzMTk2MX0sInBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc3NjQ3MDEzNjYxNTI0ODIiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDgwMDAwMDAwMTg2MDg5NDR9LCJleHBhbmRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTg0MTAifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc3NjQ3MDEzNjYxNTI0ODIiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzUyMDAwMDAwMTg2MDAxMn0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwNDEzMjY5MzIxNTgxNjQ0MSIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xNTYwMDAwMDAxODY5MDcwN30sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiIzNjMifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDkxOTAwMzE2NzkzODYzNjgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjQ4MDAwMDAwMTg5MTQyNn0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYW1vdW50IjoiMjU1In0sImJ1eVByb2dyZXNzIjoiMC4wMDAzMjQyMzAyNTk1NzY2NzQ0IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjI5NjAwMDAwMDE4ODQ4NTA1fSwic21hbGxGaXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjMwMTcifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNjM3MzI0ODE3ODE3MjUzIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjc4ODAwMDAwMDE4OTAxNTN9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIzMDE3IiwiYW1vdW50IjoiNDEwIn0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTE4MDQ5NjQxNjg2NzI5MzgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDg0MDAwMDAwMTk0MDQzOX0sImtpbG5FbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTQ0In0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTAwMDc4NDEyNDc5MTE1NDIiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTQwMDAwMDAwMTk0NTYxMzh9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMzMzMzMzMzMzNjExMDE4OSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTA0MDAwMDAwMDEwMzk4NH0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExMTU1ODQ0MTU2MDgxODEyIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41NjgwMDAwMDAwMDY2NjQ1fSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTM5MjU0NTU5NjEyODk0NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjg3NjAwMDAwMDIxODM1NDZ9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTY0NTUwNDQ2OTIwNzc3NTgiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43MjAwMDAwMDAwMzMzNzMsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA2NjI1MzgxODc5OTY0NDIiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yNzYwMDAwMDAwMzIxNjI1LCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxNjcwMDQwMjE4MDM4MjEwMSIsImFtb3VudE9mVGltZXNEb25lIjowLjkxMjAwMDAwMDAyODg4OTcsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDAwMTU3MzI3Nzg3NjU0MDM4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDQ0OTAyMywiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAwMTkzOTA0MjU4MDM4MTY4OSIsImFtb3VudE9mVGltZXNEb25lIjowLjkyODAwMDAwMDAwMzAxLCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjE4NjkzMDkxMzk0MzY3NDMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zOTQwMDAwMDAwMDI1MDY1NywiYm91Z2h0Ijp0cnVlfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxNTgyODEzMjM5Mzk1NjA4NSIsImFtb3VudE9mVGltZXNEb25lIjowLjE5NDAwMDAwMDAwMjY4ODQ3LCJib3VnaHQiOnRydWV9LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTQ5ODc1NjkxOTA4NDA3NjYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43OTQwMDAwMDAwMDM1MDcsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAyMTY2MDkyNDA0MzM0NjA3NSIsImFtb3VudE9mVGltZXNEb25lIjowLjUwODAwMDAwMDAwNTUzNzgsImJvdWdodCI6dHJ1ZX0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDI1Nzk5MjMzNDQ3MDE4MDY2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzA4MDAwMDAwMDA1NzgyMiwiYm91Z2h0Ijp0cnVlfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExMjYxMDI5ODE5OTQ3Njk5IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTA4MDAwMDAwMDA2MTAwNTUsImJvdWdodCI6dHJ1ZX0sInNtYWxsRmlyZUVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDQwOTk5OTk5OTk5OTc1ODM0IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODE5OTk5OTk5OTk5NTE3MSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMzM5OTk5OTk5OTk5NzU3MTYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42Nzk5OTk5OTk5OTk1MzA4LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMjk5OTk5OTk5OTk3NjI1MyIsImFtb3VudE9mVGltZXNEb25lIjowLjI1OTk5OTk5OTk5OTUzNjE2LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJjb2FsRHJpbGxFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJ0b2dnbGUiOmZhbHNlLCJib3VnaHQiOmZhbHNlfSwiaGVhdnlEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsInRvZ2dsZSI6ZmFsc2UsImJvdWdodCI6ZmFsc2V9LCJvaWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJ0b2dnbGUiOmZhbHNlLCJib3VnaHQiOmZhbHNlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjpmYWxzZX0sIjEwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxMSI6eyJlYXJuZWQiOmZhbHNlfX19fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOiIyLjE0NjI0NDA3OTE4MTY0NmU2NCIsInRvdGFsUGFwZXIiOiI0LjczMTM1Njk4NzEzNDI4MmU2NCIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjcifSwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxNDEifSwicGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiMTQxIn0sImV4cGFuZGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxNDEifSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxNDEifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiMTQxIn0sImZlcnRpbGl6ZXJCb29rIjp7InJlc291cmNlIjoiMTQxODIuOTk5OTk5OTk5OTI3IiwiYW1vdW50IjoiMTQxIn0sInNtYWxsRmlyZUJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxNDEifSwiYm9uZmlyZUJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxNDEifSwia2lsbkJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxNDEifSwicGFwZXJCb29rIjp7ImFtb3VudCI6IjExIn0sImJveEJvb2siOnsiYW1vdW50IjoiMTIifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjE0MSJ9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjoiMTA0In0sIm9pbEJvb2siOnsiYW1vdW50IjoiMTA0In0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIxMDQifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiIxMDQifSwiZHllQm9vayI6eyJhbW91bnQiOjB9LCJwcmltYXJ5RHllQm9vayI6eyJhbW91bnQiOiIxNDEifSwic2Vjb25kYXJ5RHllQm9vayI6eyJhbW91bnQiOjB9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYm9va1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwibWFzdGVyeSI6eyJwYXBlciI6IjQyNTEzMzgwLjk5OTk5OTk4NSIsInRvdGFsUGFwZXIiOiI2MDA5MTQ5MSIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjkifSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjkifSwiZXhwYW5kZXJzQm9vayI6eyJhbW91bnQiOiI5In0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjgifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjgifSwiZmVydGlsaXplckJvb2siOnsiYW1vdW50IjoiOCJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6MH0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6MH0sImtpbG5Cb29rIjp7ImFtb3VudCI6MH0sInBhcGVyQm9vayI6eyJhbW91bnQiOjB9LCJib3hCb29rIjp7ImFtb3VudCI6MH0sImNsb3RoQm9vayI6eyJhbW91bnQiOjB9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6MH0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6MH0sIm9pbEJvb2siOnsiYW1vdW50IjowfSwibWV0YWxCb29rIjp7ImFtb3VudCI6MH0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjowfX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiNC4yNzg0OTAwNDE3MTI1NzM1ZTUzIiwidG90YWxCb3hlcyI6IjkuODU0NDA5MTAwMDc2MjU3ZTUzIiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMifSwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiIzNjEifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiIxNjUifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiMTI4In19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjcwIn0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjQ3In0sInBsYXN0aWNCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMzgifX0sIm1hc3RlcnkiOnsiYm94ZXMiOiI1NzQ3NTMuMDAwMDAwMDAzMyIsInRvdGFsQm94ZXMiOiIxNjE0NDE1MyIsInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjExIn0sImFzaEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI2In0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNSJ9fSwiYnV5YWJsZXMyIjp7Im9yZUJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH19fSwibWFzdGVyZWQiOnRydWV9LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiI5Ljc4MzgyOTgwMjYzNzU1OWUyMCIsImJlc3RPcmUiOiI5Ljc4NjExNDc0NjE4NTM0NGUyMCIsIm9yZVByb2dyZXNzIjoiMC42MDQwMDAwMDAwMDAxNzY4IiwibWV0YWwiOiI4LjA4ODg4NTA2NTI0Nzk5ZTM2IiwiYmVzdE1ldGFsIjoiOC4wODg4ODUwNjUyNDc5OWUzNiIsInRvdGFsTWV0YWwiOiI4LjA5MDE2MDUzNjY3NTU5ZTM2Iiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwib3JlRHJpbGwiOnsiYW1vdW50IjoiMTMxMTQ3In0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIxMDcwMCJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiIyNzAzIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9LCJtYXN0ZXJ5Ijp7Im9yZSI6IjI5Ljk2ODg5OTk5OTk5OTk2MiIsImJlc3RPcmUiOiI1My44ODg4OTk5OTk5OTk5NyIsIm9yZVByb2dyZXNzIjoiMC43NzkxMzUzODk3NDU4OTMyIiwibWV0YWwiOiIyMTEzOC4xOTYwNzA2MDY4OTMiLCJiZXN0TWV0YWwiOiIyMTEzOC4xOTYwNzA2MDY4OTMiLCJ0b3RhbE1ldGFsIjoiMjY3NTYuNTA1MzgwMDAwMDAyIiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0IjpmYWxzZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjMwIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiI0In0sImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjQifX0sIm1hc3RlcmVkIjp0cnVlfSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiIxMDIxMjEwNDkwMyIsInRvdGFsQ2xvdGgiOiI0NDAwMjI4MDg0NSIsIndvb2wiOiIwIiwic2hlZXAiOiIxMjA0MzYwOTgxIiwiYnVpbGRQZW5zIjp7ImFtb3VudCI6IjU4MDIifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjU1ODIifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiODQxNiJ9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1ldGFsVXBncmFkZXMiOnsibWV0YWxVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnJlZWRpbmdQcm9ncmVzcyI6MSwic2hlYXJpbmdQcm9ncmVzcyI6MSwic3Bpbm5pbmdQcm9ncmVzcyI6MSwibWFzdGVyeSI6eyJjbG90aCI6MCwidG90YWxDbG90aCI6MCwid29vbCI6MCwic2hlZXAiOjAsImJ1aWxkUGVucyI6eyJhbW91bnQiOjB9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjowfSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjowfSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6ZmFsc2V9LCJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjpmYWxzZX0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOiI4Ljg5MzcyMDc4NDU5NTY4M2UxNiIsInRvdGFsT2lsIjoiMy4wODg5Njk5MDkyNDA3Njg1ZTE3IiwiZGVwdGgiOiIxODA3NSIsImRyaWxsUHJvZ3Jlc3MiOiIxNTM2MzY3MjQ1Ni42NzMxMTMiLCJhY3RpdmVIZWF2eSI6IjQ5NCIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiNDk0In0sImFjdGl2ZUhlYXZ5MiI6IjIyOSIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjIyOSJ9LCJhY3RpdmVFeHRyYWN0b3IiOiI1MiIsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6IjUyIn0sImFjdGl2ZVB1bXAiOiI1MCIsImJ1aWxkUHVtcCI6eyJhbW91bnQiOiI1MCJ9LCJhY3RpdmVCdXJuZXIiOiIzMjEiLCJidWlsZEJ1cm5lciI6eyJhbW91bnQiOiIzMjEifSwiYWN0aXZlU21lbHRlciI6IjI0MiIsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOiIyNDIifSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VkRGVwdGhNaWxlc3RvbmVzIjpmYWxzZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwib2lsTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VkT2lsTWlsZXN0b25lcyI6ZmFsc2UsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJyb3czVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fSwibWFzdGVyeSI6eyJvaWwiOiIwIiwidG90YWxPaWwiOjAsImRlcHRoIjoiMCIsImRyaWxsUHJvZ3Jlc3MiOiIwIiwiYWN0aXZlSGVhdnkiOjAsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjowfSwiYWN0aXZlSGVhdnkyIjowLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOjB9LCJhY3RpdmVFeHRyYWN0b3IiOjAsImJ1aWxkRXh0cmFjdG9yIjp7ImFtb3VudCI6MH0sImFjdGl2ZVB1bXAiOjAsImJ1aWxkUHVtcCI6eyJhbW91bnQiOjB9LCJhY3RpdmVCdXJuZXIiOjAsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6MH0sImFjdGl2ZVNtZWx0ZXIiOjAsImJ1aWxkU21lbHRlciI6eyJhbW91bnQiOjB9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfSwiNSI6eyJlYXJuZWQiOmZhbHNlfSwiNiI6eyJlYXJuZWQiOmZhbHNlfSwiNyI6eyJlYXJuZWQiOmZhbHNlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19LCJyb3czVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfSwiMyI6eyJib3VnaHQiOmZhbHNlfSwiNCI6eyJib3VnaHQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6ZmFsc2V9LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOiI4MDM1NTc4MTg2MzYwLjE2NyIsInRvdGFsUGxhc3RpYyI6IjQ1OTYwNzI2NDYyOTg2Ljc5IiwiYnVpbGRSZWZpbmVyeSI6eyJhbW91bnQiOiIzMDUifSwiYWN0aXZlUmVmaW5lcnkiOiIzMDUiLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImJveFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6IjkwIn0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiI4OSJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjgyIn19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJwbGFzdGljIjoiMCIsInRvdGFsUGxhc3RpYyI6MCwiYWN0aXZlUmVmaW5lcnkiOjAsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjowfSwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOmZhbHNlfSwiYm94VG9vbHMiOnsiYm91Z2h0IjpmYWxzZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0IjpmYWxzZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOmZhbHNlfSwiYm94RWxmIjp7ImJvdWdodCI6ZmFsc2V9LCJjbG90aEVsZiI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOjB9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjowfSwiY2xvdGhHYWlucyI6eyJhbW91bnQiOjB9fX0sIm1hc3RlcmVkIjpmYWxzZX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjoiMjgyNDAyMjk5NDMxLjU4MDQ0IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIzMjgifX0sInllbGxvdyI6eyJhbW91bnQiOiIxNTMwNDQxMDAyODkuNzg3OTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjMxNCJ9fSwiYmx1ZSI6eyJhbW91bnQiOiIyMDEwOTIyNTQ5OS43ODI0NzUiLCJidXlhYmxlIjp7ImFtb3VudCI6IjMwMSJ9fSwib3JhbmdlIjp7ImFtb3VudCI6IjQ0NTE2IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxMDkifX0sImdyZWVuIjp7ImFtb3VudCI6IjMzODA0IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI5NiJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjMyMjc2IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI5NCJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjowfX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJ5ZWxsb3ciOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJwdXJwbGUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6MH19fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOmZhbHNlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6ZmFsc2V9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0IjpmYWxzZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0IjpmYWxzZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2FsVXBnIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjpmYWxzZX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIzMTI4MzUxLjI3NDA0MzM3ODQiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjYyNjQ2MDQuNTM1NTQ4NTI2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjkzNzIwNzIuODI2NzYxNDU2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTI0OTY2ODMuNjM5MTAzOTg2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIxNTYzODMzOC40OTkxNjEwMjIiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTg3NDQzNjguNjUzOTgwMTYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyMTg2ODE3OC41NjAzNDc2OTUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjQ5OTI5ODAuNzIzODU3MTA1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJraWxuRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjI4MTE2MjQ5LjIxMjA0MDI2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMDQzNzY0Ny4yNzc0NzQ1NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjExNDU2Mzg3LjczNDcyMTA0OCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjM3NTYzOTc2LjQyMDMyMDA4NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY29hbERyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQwNjI5MTg1LjYyNDk2MDcxIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0OTk4NTgwNC4xOTQ4MDM0NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwib2lsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ2ODYzMTM2LjEwMzU5MDExNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0MzczNjQzMy4zNzE3ODQyNyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZHllRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjUzNDM2NzE3Ljg3MTQ3MjYwNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fX0sImN1cnJlbnRTaG93biI6IkNhcm9sIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6IjIwMDYifSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJmb2N1c011bHRpcGxpZXIiOiIxLjE2MTYzMDkyMDY4MDI5MTUiLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowLCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c011bHRpIjoiNS4yNDg0MzYzODY3MjQ1NTgiLCJtYXN0ZXJ5Ijp7ImVsZlRyYWluaW5nIjp7ImJvbmZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm9pbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImR5ZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX19LCJ0ZWFjaGluZyI6eyJib3VnaHQiOmZhbHNlfSwic2Nob29scyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImFkdmFuY2VkVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwidXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sInVwZ3JhZGVzMiI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNNdWx0aSI6IjIuODM0MTI4OTI1MDM4ODg4IiwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sIndyYXBwaW5nUGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwid3JhcHBpbmdQYXBlciI6eyJjaHJpc3RtYXMiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiIyNiJ9fSwicmFpbmJvdyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjIzIn19LCJqYXp6eSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjI2In19LCJzdW5zaGluZSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjI1In19LCJvY2VhbiI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjIzIn19LCJiZWFjaCI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjI4In19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm1pbGVzdG9uZXMiOnsicHJpbWFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlCb29zdCI6eyJlYXJuZWQiOmZhbHNlfSwiYnV5TWF4UHJpbWFyeSI6eyJlYXJuZWQiOmZhbHNlfSwic2Vjb25kYXJ5Tm9SZXNldCI6eyJlYXJuZWQiOmZhbHNlfSwiYnV5TWF4U2Vjb25kYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJ1bmxvY2tEeWVFbGYiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsInVubG9ja0R5ZUVsZk1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fSwibGV0dGVycyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsZXR0ZXJzIjoiMTAxMDI0NS41OTcyMzU5NDA3IiwidG90YWxMZXR0ZXJzIjoiNzA3MTcxOS4xODA2NTE1ODUiLCJwcm9jZXNzaW5nUHJvZ3Jlc3MiOiIxLjExMTExMTExMTExMTExMTIiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjoiNyJ9LCJwbGFzdGljQnV5YWJsZSI6eyJhbW91bnQiOiIxMSJ9LCJwYXBlckJ1eWFibGUiOnsiYW1vdW50IjoiMTAifX0sIm1pbGVzdG9uZXMiOnsiYXV0b1NtZWx0aW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbmluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJzeW5lcmd5TWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sImluZHVzdHJpYWxDcnVjaWJsZU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwibWFzdGVyeSI6eyJsZXR0ZXJzIjowLCJ0b3RhbExldHRlcnMiOjAsImJ1eWFibGVzIjp7Im1ldGFsQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwbGFzdGljQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwYXBlckJ1eWFibGUiOnsiYW1vdW50IjowfX0sIm1pbGVzdG9uZXMiOnsiYXV0b1NtZWx0aW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6ZmFsc2V9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjpmYWxzZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjpmYWxzZX0sImluZHVzdHJpYWxDcnVjaWJsZU1pbGVzdG9uZSI6eyJlYXJuZWQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6ZmFsc2V9LCJyaWJib24iOnsibWluaW1pemVkIjpmYWxzZSwicmliYm9uIjowLCJtaWxlc3RvbmVzIjp7InNlY29uZGFyeUR5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfSwiZHllQm9vayI6eyJlYXJuZWQiOmZhbHNlfX19fSwiYXV0b1BhdXNlIjp0cnVlLCJ1c2luZ0xvZyI6dHJ1ZX0=","./../../saves/Day 16 Complete.txt":`eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJ3cmFwcGluZ1BhcGVyIiwidHJlZXMiLCJtZXRhbCIsImR5ZXMiLCJyaWJib24iLCJvaWwiLCJjb2FsIiwicGxhc3RpYyIsImxldHRlcnMiXSwidGltZSI6MTY3MTUxODE2NDAyNCwiYXV0b3NhdmUiOnRydWUsIm9mZmxpbmVQcm9kIjpmYWxzZSwib2ZmbGluZVRpbWUiOm51bGwsInRpbWVQbGF5ZWQiOjg2ODQ0LjM3NDUxOTM0MjU3LCJrZWVwR29pbmciOmZhbHNlLCJtb2RJRCI6ImFkdmVudC1pbmNyZW1lbnRhbCIsIm1vZFZlcnNpb24iOiIwLjUiLCJsYXllcnMiOnsibWFpbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkYXlzIjp7IjAiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjMiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI1Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjYiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI4Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjkiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTAiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTMiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTYiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjoxNywiaXNNYXN0ZXJ5IjpmYWxzZX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiIyLjM1NjkzMDU5ODQxMjMwMzVlNjMiLCJ0b3RhbExvZ3MiOiIxLjYzNDUzMjAyNzMzMjIyNjhlNjQiLCJ0cmVlcyI6IjEwIiwic2FwbGluZ3MiOiI3Ljc0MTYwNTIxNzUxOTAwNGUyNCIsInJvdzFVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIyNzA0NjM3In0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIyNzgzNjE0In0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI1MjkyNDYzIn19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjAwMDAwMTkwNzM0ODYzMjgxMjQ5OTQiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY3JlYXRlZFNhcGxpbmdzIjoiMS4xMjI2NjYyMjM1NTM3NjkyZTI1IiwibWFzdGVyeSI6eyJsb2dzIjoiNC44NzIxNTI2NTU1MjE0MDhlMjMiLCJ0b3RhbExvZ3MiOiI0LjkyODMzODg0MDQwMTMyZTIzIiwic2FwbGluZ3MiOiI2NTM3NTA1Mjc0ODM2OC44MyIsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjExMzI5NSJ9LCIxIjp7ImFtb3VudCI6IjExMzI5NSJ9LCIyIjp7ImFtb3VudCI6IjMzNTgyNyJ9fSwiY3JlYXRlZFNhcGxpbmdzIjoiNjUzNzU4MzUwNzcyMDEuNTE2In0sIm1hc3RlcmVkIjp0cnVlfSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwMCIsImZvdW5kYXRpb25Db252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6IjEwMCJ9LCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsIm1hc3RlcnkiOnsiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiIzLjAzNTEwNjQ4NjUwODQ5MWUxMDgiLCJ0b3RhbENvYWwiOiI5Ljg5MTE1MjQyNzY0NzQzNGUxMDgiLCJhc2giOiIzLjYxMTI1NjM1NTk5NzUzMjRlODgiLCJhY3RpdmVGaXJlcyI6IjAiLCJidWlsZEZpcmUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiNy4zMzU5NzE2MjE3MTIyNjNlMTgiLCJidWlsZEJvbmZpcmUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjcuMzM1OTcxNjIxNzEyMjYzZTE4In0sImFjdGl2ZUtpbG5zIjoiNDU0OSIsImJ1aWxkS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjQ1NDkifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjEwMDgzNDAzOTg4In0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIxMDA4MzQwMzk4OCJ9LCJtb3JlRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYW1vdW50IjoiNDE0Njg4OTgyMzQ2In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJhY3RpdmVEcmlsbHMiOiIyMzc5IiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIyMzc5In0sImVmZmljaWVudFNtZWx0aGVyIjp7InJlc291cmNlIjoiMS4zMzY0Nzc3OTEzMjgyNTJlMTciLCJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0Ijp0cnVlfSwicmVmaW5lZENvYWwiOnsiYm91Z2h0Ijp0cnVlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwibWFzdGVyeSI6eyJjb2FsIjoiOS4wNjI4MTE3NjcyMDc1NDVlMzMiLCJ0b3RhbENvYWwiOiI5LjA2ODkyMjg3ODMxODUzNWUzMyIsImFzaCI6IjIuNjc1MjQzNDc4NzMyMTg4ZTE3IiwiYWN0aXZlRmlyZXMiOiIxMDYxLjg4NTM4NTQ3NTUyOTgiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMTA2MS44ODUzODU0NzU1Mjk4In0sImFjdGl2ZUJvbmZpcmVzIjoiMjAwNTAzIiwiYnVpbGRCb25maXJlIjp7ImFtb3VudCI6IjIwMDUwMyJ9LCJhY3RpdmVLaWxucyI6IjY3MSIsImJ1aWxkS2lsbiI6eyJhbW91bnQiOiI2NzEifSwiYWN0aXZlRHJpbGxzIjoiMTY1IiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIxNjUifSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0IjpmYWxzZX0sInJlZmluZWRDb2FsIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2xvcmVkRmlyZSI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOiI5Nzk4In0sImhlYXRlZFBsYW50ZXJzIjp7ImFtb3VudCI6Ijk3OTgifSwibW9yZUZlcnRpbGl6ZXIiOnsiYW1vdW50IjoiMjUzNSJ9fSwibWFzdGVyZWQiOnRydWV9LCJlbHZlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE0NzgwNTIxODAzNDM2OTIiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzE5OCJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xNzIwMDAwMDAyMDgyODU1NH0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA3MDI4Mzc2NTgzOTY0MDQ3IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjMxOTgifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDA0MDAwMDAwMjA3OTM4MTE1fSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAzNDAzNTExODI3NTY5NjQ5NyIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI3Mzc5In0sImFtb3VudE9mVGltZXNEb25lIjowLjk5MjAwMDAwMDIwNzk5NDV9LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDEwNDAxMTEwNTU3NDMwMzE1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMjcwIn0sImFtb3VudE9mVGltZXNEb25lIjowLjgwMDAwMDAwMDIwNzMwNTF9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNTEyOTUyNzM5ODcyNjE4NiIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjI3MCJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC43NjAwMDAwMDAyMDQ4NDA0fSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxMzc0NTc5NDY5NzQ4MzkzNyIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxNDU2ODgyNiIsImFtb3VudCI6IjEzOSJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xNTYwMDAwMDAyMDQwMDI3M30sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNzYxMTQwNDIyNDIzNjQ1MSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjkxMjAwMDAwMDIwMzQwNjF9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6MH0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTQ5NjEwNDIwNTMyMzQyMyIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjA4MDAwMDAwMDIwNDg5MDR9LCJraWxuRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIxMDIifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNzMwMjQ2NjU3NTg2Njk3MyIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjM1NjAwMDAwMDIwMzI1MjR9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzODMzMzMzMzMzNTY5MTM5IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xODAwMDAwMDAwMTgyMzc1N30sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA0MTUzMzAzMjE4NjUwMzQ1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMTYwMDAwMDAwMDk4ODYxNX0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA5NDk1MDEzNDU4NTkyNDk0IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NjAwMDAwMDAyMjk2MTI3fSwibWluaW5nRHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwiaGVhdnlEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA2NDQ3NDQ4ODk3OTMxNTg1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDgwMDAwMDAwMDk0NTQ4OCwiYm91Z2h0Ijp0cnVlfSwib2lsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTAyOTQxMTU2NTIyMTYyNzQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43NDQwMDAwMDAwODk2NzAzLCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwOTM3MzY5MzEyODQ5ODIyOCIsImFtb3VudE9mVGltZXNEb25lIjowLjczMjAwMDAwMDA4OTM4NTYsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA2NDUwMDAxNjg0NjQyNDkyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzgwMDAwMDAwMTA2OTE3OSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAzNTYxNjYwNjE4NjA5Nzk2NSIsImFtb3VudE9mVGltZXNEb25lIjowLjg1NjAwMDAwMDAwNzkzODQsImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDkyMjY2Mjg5NDYwMDQxMjMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43MDQwMDAwMDAwMDI0OTQ2LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZSwibWFzdGVyeSI6eyJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA0MTMxNjU0NDIxNDE3MzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MS4wNDU5MTg5MDcwMzg4Njc1ZS0xMSwiYm91Z2h0Ijp0cnVlfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNDE3ODU1MjQwNDQ3Njg3MSIsImFtb3VudE9mVGltZXNEb25lIjowLjQwODAwMDAwMDAxMjUyMSwiYm91Z2h0Ijp0cnVlfSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDQyMTUwMjE3MzkzNzgxNTUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43OTQwMDAwMDAwMDc1MzU4LCJib3VnaHQiOnRydWV9LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE1MDM4Mjk4OTI4Mjc0MzUyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzAyMDAwMDAwMDQ2NDYyLCJib3VnaHQiOnRydWV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAyNTk5Nzc2NTA5MzU4NjA5IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzI2MDAwMDAwMDQ5NzkzOSwiYm91Z2h0Ijp0cnVlfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAyMjMzNjY3MDQzMTIwMjgiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41OTIwMDAwMDAwNDc3ODk5LCJib3VnaHQiOnRydWV9LCJzbWFsbEZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjg3MzA2MDg2NjAzMDM0MTQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44NzYwMDAwMDAwNDkyMDI4LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImJvbmZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTcyNzM2MjAzOTgxMTIyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjU4MDAwMDAwMDQ5ODg5OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJraWxuRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE1MzM4NTUyOTg1NDA5OTgxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjk0MDAwMDAwMDUwMDM5LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA4NDIwODY4MzQ3NDYyMDg1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODgwMDAwMDAwMDAwODg1NCwiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDUyOTQxMTc2NDcwNzI1NzciLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMDQwMDAwMDAwMDA5MzI4NiwiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMzg2MjUwOTgxOTA3NTQwNSIsImFtb3VudE9mVGltZXNEb25lIjowLjQzMjAwMDAwMDAwMjIzMzI2LCJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwiaGVhdnlEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExNDU0NTQ1NDU0NTQ1MjczIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTAzOTk5OTk5OTk5ODg3NiwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJvaWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsImJvdWdodCI6dHJ1ZX0sImR5ZUVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJwbGFzdGljRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDM1MzM3MDQ0NzEwNjE2MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NDAwMDAwMDAwMDA3OTM1LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiNy4wNzEwMTc1MzE0NTQ1NjdlNzQiLCJ0b3RhbFBhcGVyIjoiMS43NDk3Nzk5MDcwNjQ0OTg0ZTc1IiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5In0sImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNTIifSwicGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNTIifSwiZXhwYW5kZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTUyIn0sImhlYXRlZEN1dHRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNTIifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNTIifSwiZmVydGlsaXplckJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE1MiJ9LCJzbWFsbEZpcmVCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNTIifSwiYm9uZmlyZUJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE1MiJ9LCJraWxuQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTUyIn0sInBhcGVyQm9vayI6eyJhbW91bnQiOiIxMSJ9LCJib3hCb29rIjp7ImFtb3VudCI6IjEzIn0sImNsb3RoQm9vayI6eyJhbW91bnQiOiIxNTIifSwibWluaW5nRHJpbGxCb29rIjp7ImFtb3VudCI6MH0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6IjExOCJ9LCJvaWxCb29rIjp7ImFtb3VudCI6IjExOCJ9LCJtZXRhbEJvb2siOnsiYW1vdW50IjoiMTE4In0sImNvYWxEcmlsbEJvb2siOnsiYW1vdW50IjoiMTE4In0sImR5ZUJvb2siOnsiYW1vdW50IjowfSwicHJpbWFyeUR5ZUJvb2siOnsiYW1vdW50IjoiMTUyIn0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjoiMTUyIn0sInBsYXN0aWNCb29rIjp7ImFtb3VudCI6IjE1MiJ9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYm9va1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsicGFwZXIiOiIzLjIzNDg3MjQwNDc0MjA0OWUyMyIsInRvdGFsUGFwZXIiOiIzLjIzNDg3NTMwMTUyMjI2NzhlMjMiLCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJwbGFudGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiZXhwYW5kZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiZmVydGlsaXplckJvb2siOnsiYW1vdW50IjoiNDcifSwic21hbGxGaXJlQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJib25maXJlQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJraWxuQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiNyJ9LCJib3hCb29rIjp7ImFtb3VudCI6IjcifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjQ3In0sImNvYWxEcmlsbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxIn0sIm9pbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJtZXRhbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJwcmltYXJ5RHllQm9vayI6eyJhbW91bnQiOjB9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCb29rIjp7ImFtb3VudCI6IjQ3In19LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJib29rVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6IjQuMjM4NzUzMzc0NDgwODk1ZTYxIiwidG90YWxCb3hlcyI6IjEuOTY2MDEzMTc4NDI2NDA0ZTYyIiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6MH0sInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiNDYyIn0sImFzaEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMjAyIn0sImNvYWxCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjE1NyJ9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3czVXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnV5YWJsZXMyIjp7Im9yZUJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI5OSJ9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI2NCJ9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjUzIn19LCJtYXN0ZXJ5Ijp7ImJveGVzIjoiNi4wMTQ5MDk4Nzg1NzU0MjllMTYiLCJ0b3RhbEJveGVzIjoiNi4wMTQ5MTM1Mjc1NDAxMzFlMTYiLCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI0NyJ9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMzAifSwiY29hbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIyNSJ9fSwiYnV5YWJsZXMyIjp7Im9yZUJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH19fSwibWFzdGVyZWQiOnRydWV9LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiIxLjAwMTkwMzIxNDI1MTIzMzZlMjMiLCJiZXN0T3JlIjoiMS4wODgzNzA2OTMxNjA0NjU1ZTIzIiwib3JlUHJvZ3Jlc3MiOiIwLjk5Mzc5NzQxNzY3ODA3NiIsIm1ldGFsIjoiMy40ODcwNTg5MDE0NzM5NTkyZTQzIiwiYmVzdE1ldGFsIjoiMy40ODcwNTg5MDE0NzM5NTkyZTQzIiwidG90YWxNZXRhbCI6IjEuMjgxNTk3MjU0MjA0Nzc2OWU0NCIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjMxMTEyMSJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMjg5MjQifSwiYXV0b1NtZWx0RW5hYmxlZCI6dHJ1ZSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMzgxODcifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsib3JlIjoiOTI3NTcyMTIwLjQ0MjYzNjUiLCJiZXN0T3JlIjoiMTk1MzMwOTAwNy4wNDQwOTgiLCJvcmVQcm9ncmVzcyI6IjAuNTMxMDMxMjY2MTM4MjM0NiIsIm1ldGFsIjoiMy42NTMyMjkxOTUxMTEwNGUxNiIsImJlc3RNZXRhbCI6IjMuNjUzMjI5MTk1MTExMDRlMTYiLCJ0b3RhbE1ldGFsIjoiMy42NTMyNTcwMzA2MzI0MDVlMTYiLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIyNzAifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjI3In0sImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjI0In19LCJtYXN0ZXJlZCI6dHJ1ZX0sImNsb3RoIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoIjoiOTA4ODA2ODQ2OTYiLCJ0b3RhbENsb3RoIjoiMzkwNzg3OTEzOTg2Iiwid29vbCI6IjY1OTE0NTU4MzkzIiwic2hlZXAiOiI3MDYxNDc0MDc0OSIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiI4MjU5In0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiI4MTEzIn0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6IjEyMTI0In0sInRyZWVzVXBncmFkZXMiOnsidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJicmVlZGluZ1Byb2dyZXNzIjoxLCJzaGVhcmluZ1Byb2dyZXNzIjoxLCJzcGlubmluZ1Byb2dyZXNzIjoxLCJtYXN0ZXJ5Ijp7ImNsb3RoIjoiMTExNDUxIiwidG90YWxDbG90aCI6IjExODkwMSIsIndvb2wiOiI2MjMyMCIsInNoZWVwIjoiNzY0MDMiLCJidWlsZFBlbnMiOnsiYW1vdW50IjoiMjQ4In0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiIzMTAifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiNDE0In0sInRyZWVzVXBncmFkZXMiOnsidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwibWV0YWxVcGdyYWRlcyI6eyJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJwYXBlclVwZ3JhZGVzIjp7InBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sIm9pbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvaWwiOiIzLjk3NDIwMDQ4NjI5MjA3MWUxOCIsInRvdGFsT2lsIjoiMi4zNzM3ODA5OTU4MzkyNjNlMTkiLCJkZXB0aCI6IjY3MzE0IiwiZHJpbGxQcm9ncmVzcyI6IjEuMjYwNjg3NjM1NzU0NDM5MmUzMSIsImFjdGl2ZUhlYXZ5IjoiNjE5IiwiYnVpbGRIZWF2eSI6eyJhbW91bnQiOiI2MTkifSwiYWN0aXZlSGVhdnkyIjoiMjg4IiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiMjg4In0sImFjdGl2ZUV4dHJhY3RvciI6IjY2IiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiNjYifSwiYWN0aXZlUHVtcCI6IjYyIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjYyIn0sImFjdGl2ZUJ1cm5lciI6IjM5NCIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6IjM5NCJ9LCJhY3RpdmVTbWVsdGVyIjoiMjg0IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjI4NCJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjp0cnVlLCJyb3czVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7Im9pbCI6IjUwODA2MDY5MS44MzU4MzA2IiwidG90YWxPaWwiOiI1MTE0MTQ2NDEuODM1ODMwNiIsImRlcHRoIjoiMjMwOTMiLCJkcmlsbFByb2dyZXNzIjoiMTM1NTcyNTUyMzE2NC43ODEyIiwiYWN0aXZlSGVhdnkiOiIxMDMiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjEwMyJ9LCJhY3RpdmVIZWF2eTIiOiI0MSIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjQxIn0sImFjdGl2ZUV4dHJhY3RvciI6IjExIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlUHVtcCI6IjExIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjExIn0sImFjdGl2ZUJ1cm5lciI6IjI1IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMjUifSwiYWN0aXZlU21lbHRlciI6IjEyIiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjEyIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMTA1Nzg3OTA1NzAwMTUxMy4xIiwidG90YWxQbGFzdGljIjoiMzU3NjUwNDM1MjQxNDUwOSIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiMzE5In0sImFjdGl2ZVJlZmluZXJ5IjoiMzE5IiwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOnRydWV9LCJib3hUb29scyI6eyJib3VnaHQiOnRydWV9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOiIzNDYwOSJ9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjoiMTQxIn0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMTQxIn19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJwbGFzdGljIjoiMTY0MDA3MC40NTIyMzI5MTIiLCJ0b3RhbFBsYXN0aWMiOiIxNjYxOTEwLjQ1MjIzMjkxMiIsImFjdGl2ZVJlZmluZXJ5IjoiNDYiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjQ2In0sInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiNjYxIn0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiI2NjEifSwiY2xvdGhHYWlucyI6eyJhbW91bnQiOiI2NjEifX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjoiNzYyNzk4MzI3NTcuODk5MTkiLCJidXlhYmxlIjp7ImFtb3VudCI6IjQ0NyJ9fSwieWVsbG93Ijp7ImFtb3VudCI6IjE4ODkyMjQ4NzM4Ni43MDk3NSIsImJ1eWFibGUiOnsiYW1vdW50IjoiNDI4In19LCJibHVlIjp7ImFtb3VudCI6IjI1NzI2MjcyNTg4LjYxNjM5IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI0MTAifX0sIm9yYW5nZSI6eyJhbW91bnQiOiI0MTU3NiIsImJ1eWFibGUiOnsiYW1vdW50IjoiNTI5In19LCJncmVlbiI6eyJhbW91bnQiOiIzMjE5NiIsImJ1eWFibGUiOnsiYW1vdW50IjoiNDU5In19LCJwdXJwbGUiOnsiYW1vdW50IjoiMzAzMjAiLCJidXlhYmxlIjp7ImFtb3VudCI6IjQ0NyJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1In19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNSJ9fSwiYmx1ZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTQifX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTIifX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNCJ9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI0In19fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIzMTI3NDY4LjIyOTc1OTUwMTgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNjI0ODQ1Ni4yMTU2NjA1NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI5Mzc2NDUxLjQzODk2MTQ0MyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEyNDk2MzI3LjM5NTk2NDYxNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxNTYyMzk4My4yMDc5NDI2MyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc4MDg4Mi45MTMyNTQxMiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjIxOTA3NDkzLjM5MDE1MzU0NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyNTAwNjQzNi4wMzM4ODIzMjciLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImZpcmVFbGZUcmFpbmluZyI6eyIyIjp7InN0YXRlIjp0cnVlLCJleHAiOjB9fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyODE5MzUwNy43OTA3MTA5ODIiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEwNDMwOTA0LjQ2MzY2NDMwNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIxMTQ3MDIyNC41MDQ5ODIzNDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIzNzQ4OTM1NS4wNDcwMTA3NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY29hbERyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0MDYyMzY4NS4wNDA5MTI3NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwibWV0YWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjUwMDQ2MDI3Ljk5OTYwOTU4IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjQ2ODYwMzcxLjU0ODQxMTg3NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNDM3Mzk3MzUuNjE1MTU0MzkiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImR5ZUVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTMxMjc0MDAuNjQ3NjM2MTUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTY0OTgzNzQuMDEyMTE4ODAzIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sImN1cnJlbnRTaG93biI6IkNhcm9sIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6IjEwNDYifSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJmb2N1c011bHRpcGxpZXIiOiIxLjAwNjE1NzgzMjc4NzQ5ODciLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowLCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c011bHRpIjoiMTguMzYzMTUyMDU5Mzg2MTciLCJtYXN0ZXJ5Ijp7ImVsZlRyYWluaW5nIjp7ImJvbmZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm9pbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImR5ZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwidGVhY2hpbmciOnsiYm91Z2h0IjpmYWxzZX0sInNjaG9vbHMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzTXVsdGkiOiIxLjAxMjY5ODQ3NTQyMDExODciLCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjB9fSwid3JhcHBpbmdQYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJ3cmFwcGluZ1BhcGVyIjp7ImNocmlzdG1hcyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjU4In19LCJyYWluYm93Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNDEifX0sImphenp5Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNzcifX0sInN1bnNoaW5lIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTAifX0sIm9jZWFuIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNDUifX0sImJlYWNoIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTEifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWlsZXN0b25lcyI6eyJwcmltYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhQcmltYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlOb1Jlc2V0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhTZWNvbmRhcnkiOnsiZWFybmVkIjpmYWxzZX0sInVubG9ja0R5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwidW5sb2NrRHllRWxmTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJsZXR0ZXJzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxldHRlcnMiOiIxLjMwOTQ4NTQxMzA1MjYzMjZlNTQiLCJ0b3RhbExldHRlcnMiOiIxLjMwOTQ4NTQxMzA1MjYzMjZlNTQiLCJwcm9jZXNzaW5nUHJvZ3Jlc3MiOiI2LjI0MTk2OTM1MDIwMzkxN2UtMjgiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjoiMTIifSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjoiMjMifSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6IjQzIn19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsIm1hc3RlcnkiOnsibGV0dGVycyI6IjEyNTU4MDA1LjU3MTUxMDg1IiwidG90YWxMZXR0ZXJzIjoiMTI1NTgwMDUuNTcxNTEwODUiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjowfSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6MH19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sInJpYmJvbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJyaWJib24iOiIxNiIsIm1pbGVzdG9uZXMiOnsic2Vjb25kYXJ5RHllRWxmIjp7ImVhcm5lZCI6dHJ1ZX0sImR5ZUJvb2siOnsiZWFybmVkIjp0cnVlfX0sInJpYmJvblByb2dyZXNzIjoxMCwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjpmYWxzZX0= +`,"./../../saves/Day 17 Complete.txt":`eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0xIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJ3cmFwcGluZ1BhcGVyIiwiZHllcyIsInRveXMiLCJ0cmVlcyIsIndvcmtzaG9wIiwicGxhc3RpYyJdLCJ0aW1lIjoxNjcxNTgyMTY4Mzk2LCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOmZhbHNlLCJvZmZsaW5lVGltZSI6bnVsbCwidGltZVBsYXllZCI6ODgzOTQuMjA1NTE5MzQ0NzMsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6dHJ1ZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE1Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjoxOCwiaXNNYXN0ZXJ5IjpmYWxzZX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiI3LjAyNTE3NTYwOTUyMDg3NTVlNzEiLCJ0b3RhbExvZ3MiOiIxLjI2NTg3ODgxODYxMjgzMTZlNzMiLCJ0cmVlcyI6IjEwIiwic2FwbGluZ3MiOiIzLjA5NDk0ODY3Mzg4MTc2NDZlMjgiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzU2OTg0NyJ9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzY3NDA4OCJ9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiNzcxNTIyOSJ9fSwibWFudWFsQ3V0UHJvZ3Jlc3MiOiIwLjAwMDAwMTkwNzM0ODYzMjgxMjQ5OTQiLCJtYW51YWxQbGFudFByb2dyZXNzIjoiMC4wMDAwMDE5MDczNDg2MzI4MTI0OTk0IiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNyZWF0ZWRTYXBsaW5ncyI6IjMuMzEzNjc3MzM1NDgzNzE5N2UyOCIsIm1hc3RlcnkiOnsibG9ncyI6IjQuODcyMTUyNjU1NTIxNDA4ZTIzIiwidG90YWxMb2dzIjoiNC45MjgzMzg4NDA0MDEzMmUyMyIsInNhcGxpbmdzIjoiNjUzNzUwNTI3NDgzNjguODMiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIxMTMyOTUifSwiMSI6eyJhbW91bnQiOiIxMTMyOTUifSwiMiI6eyJhbW91bnQiOiIzMzU4MjcifX0sImNyZWF0ZWRTYXBsaW5ncyI6IjY1Mzc1ODM1MDc3MjAxLjUxNiJ9LCJtYXN0ZXJlZCI6dHJ1ZX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6IjEyMDAiLCJmb3VuZGF0aW9uQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJnYWluUmVzb3VyY2UiOiIxMDAifSwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTYiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwibWFzdGVyeSI6eyJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiIxMDAiLCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjEuOTkzNzU2MDE5ODc1NTM2NGUxMjYiLCJ0b3RhbENvYWwiOiIxLjk5Mzc1NjAyMDY5MzMwODVlMTI2IiwiYXNoIjoiMy42OTk2OTI4Mzk2NjAyODJlOTkiLCJhY3RpdmVGaXJlcyI6IjAiLCJidWlsZEZpcmUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiMi42NDAxNDc5ODUwNDQzMjc3ZTIxIiwiYnVpbGRCb25maXJlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIyLjY0MDE0Nzk4NTA0NDMyNzdlMjEifSwiYWN0aXZlS2lsbnMiOiI1ODAyIiwiYnVpbGRLaWxuIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiNTgwMiJ9LCJ3YXJtZXJDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMTQ4NTAxNjkwNDYyIn0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIxNDg1MDE2OTA0NjIifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiIxNDU2ODgyNiIsImFtb3VudCI6IjY0OTQwMjcxODQxMzYifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImFjdGl2ZURyaWxscyI6IjMxMjIiLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjMxMjIifSwiZWZmaWNpZW50U21lbHRoZXIiOnsicmVzb3VyY2UiOiIxLjMzNjQ3Nzc5MTMyODI1MmUxNyIsImJvdWdodCI6dHJ1ZX0sImFyc29uaXN0QXNzaXN0YW5jZSI6eyJib3VnaHQiOnRydWV9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOnRydWV9LCJjb2xvcmVkRmlyZSI6eyJib3VnaHQiOnRydWV9LCJtYXN0ZXJ5Ijp7ImNvYWwiOiI5LjA2MjgxMTc2NzIwNzU0NWUzMyIsInRvdGFsQ29hbCI6IjkuMDY4OTIyODc4MzE4NTM1ZTMzIiwiYXNoIjoiMi42NzUyNDM0Nzg3MzIxODhlMTciLCJhY3RpdmVGaXJlcyI6IjEwNjEuODg1Mzg1NDc1NTI5OCIsImJ1aWxkRmlyZSI6eyJhbW91bnQiOiIxMDYxLjg4NTM4NTQ3NTUyOTgifSwiYWN0aXZlQm9uZmlyZXMiOiIyMDA1MDMiLCJidWlsZEJvbmZpcmUiOnsiYW1vdW50IjoiMjAwNTAzIn0sImFjdGl2ZUtpbG5zIjoiNjcxIiwiYnVpbGRLaWxuIjp7ImFtb3VudCI6IjY3MSJ9LCJhY3RpdmVEcmlsbHMiOiIxNjUiLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjE2NSJ9LCJ3YXJtZXJDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudFNtZWx0aGVyIjp7ImJvdWdodCI6dHJ1ZX0sImFyc29uaXN0QXNzaXN0YW5jZSI6eyJib3VnaHQiOmZhbHNlfSwicmVmaW5lZENvYWwiOnsiYm91Z2h0IjpmYWxzZX0sImNvbG9yZWRGaXJlIjp7ImJvdWdodCI6ZmFsc2V9LCJoZWF0ZWRDdXR0ZXJzIjp7ImFtb3VudCI6Ijk3OTgifSwiaGVhdGVkUGxhbnRlcnMiOnsiYW1vdW50IjoiOTc5OCJ9LCJtb3JlRmVydGlsaXplciI6eyJhbW91bnQiOiIyNTM1In19LCJtYXN0ZXJlZCI6dHJ1ZX0sImVsdmVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTI4OTEyMTYzMzQ2MDE3NzQiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzE5OCJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xMDAwMDAwMDAyNTc4OTI5MX0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA2MTk0ODYxODY4NTc0NjI1IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjMxOTgifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTMyMDAwMDAwMjU3NDMxOH0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMjY1NDAxMzc4MTEwNjY2MiIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI3Mzc5In0sImFtb3VudE9mVGltZXNEb25lIjowLjkyMDAwMDAwMDI1NzQ4ODJ9LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA1OTk4ODYwNjU1NjUyODMyIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMjcwIn0sImFtb3VudE9mVGltZXNEb25lIjowLjQ5NjAwMDAwMDI1NjQ4NjgzfSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDExNTU0MTQ0NjU5NjQ3ODgiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDU2MDAwMDAwMjU0MDIyMX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDYzNDg2ODkxOTgzNjg3MDEiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiIxMzkifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjU2MDAwMDAwMjUzMjcxOH0sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNzkxMDM5MTg3MzUzODk2NiIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjk0MDAwMDAwMDI1MjY5NTF9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6MH0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU5MzI0Nzg2NTA4ODQyMjYiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NjQwMDAwMDAyNTQxNzR9LCJraWxuRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIxMDIifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNTg4MTcxNDcxMTA3NjkzIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjQ0MDAwMDAwMjUyNTU1MDh9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExMjQwMjU5NzQwNTIwNTE1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44NDQwMDAwMDAwMTk5NDE3fSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDkwNjYzNDY2OTY5MzU5MjIiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjc2ODAwMDAwMDAxNDQ3NTN9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwODUwNjU4MTczNzE4NzM4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45MDAwMDAwMDAyODY0NjgxfSwibWluaW5nRHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwiaGVhdnlEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDEwNjY3NjQ4MTA0NTExMjc2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzA0MDAwMDAwMTA4MDYzNSwiYm91Z2h0Ijp0cnVlfSwib2lsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTQwOTMxNTE2MTY5Mzk5MjgiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NjgwMDAwMDAxMDMyOTg3LCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxMzU5Mzg5MjMzNTA3NDU5IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMTAyOTAwMywiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTA2NzAyMDA4OTEyMjIxODQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42MDQwMDAwMDAxMjA0MzI2LCJib3VnaHQiOnRydWV9LCJkeWVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDIxNTYxODQ3OTE4NTIzMzkiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43MzIwMDAwMDAwNTcxODM4LCJib3VnaHQiOnRydWV9LCJwbGFzdGljRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAzMTk0MTEzNTA3MTExODc4NyIsImFtb3VudE9mVGltZXNEb25lIjowLjI2ODAwMDAwMDA0ODk0Mjg3LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZSwibWFzdGVyeSI6eyJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA0MTMxNjU0NDIxNDE3MzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MS4wNDU5MTg5MDcwMzg4Njc1ZS0xMSwiYm91Z2h0Ijp0cnVlfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNDE3ODU1MjQwNDQ3Njg3MSIsImFtb3VudE9mVGltZXNEb25lIjowLjQwODAwMDAwMDAxMjUyMSwiYm91Z2h0Ijp0cnVlfSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDQyMTUwMjE3MzkzNzgxNTUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43OTQwMDAwMDAwMDc1MzU4LCJib3VnaHQiOnRydWV9LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE1MDM4Mjk4OTI4Mjc0MzUyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzAyMDAwMDAwMDQ2NDYyLCJib3VnaHQiOnRydWV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAyNTk5Nzc2NTA5MzU4NjA5IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzI2MDAwMDAwMDQ5NzkzOSwiYm91Z2h0Ijp0cnVlfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAyMjMzNjY3MDQzMTIwMjgiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41OTIwMDAwMDAwNDc3ODk5LCJib3VnaHQiOnRydWV9LCJzbWFsbEZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjg3MzA2MDg2NjAzMDM0MTQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44NzYwMDAwMDAwNDkyMDI4LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImJvbmZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTcyNzM2MjAzOTgxMTIyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjU4MDAwMDAwMDQ5ODg5OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJraWxuRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE1MzM4NTUyOTg1NDA5OTgxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjk0MDAwMDAwMDUwMDM5LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA4NDIwODY4MzQ3NDYyMDg1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODgwMDAwMDAwMDAwODg1NCwiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDUyOTQxMTc2NDcwNzI1NzciLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMDQwMDAwMDAwMDA5MzI4NiwiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMzg2MjUwOTgxOTA3NTQwNSIsImFtb3VudE9mVGltZXNEb25lIjowLjQzMjAwMDAwMDAwMjIzMzI2LCJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwiaGVhdnlEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExNDU0NTQ1NDU0NTQ1MjczIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTAzOTk5OTk5OTk5ODg3NiwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJvaWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsImJvdWdodCI6dHJ1ZX0sImR5ZUVsZiI6eyJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJwbGFzdGljRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDM1MzM3MDQ0NzEwNjE2MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NDAwMDAwMDAwMDA3OTM1LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiNC44ODUyMTMyMDE1MzU2MzZlODciLCJ0b3RhbFBhcGVyIjoiNC44ODUyMTgwOTYyMDAxMjM1ZTg3IiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5In0sImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjgifSwicGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjgifSwiZXhwYW5kZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY4In0sImhlYXRlZEN1dHRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjgifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjgifSwiZmVydGlsaXplckJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE2OCJ9LCJzbWFsbEZpcmVCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjgifSwiYm9uZmlyZUJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE2OCJ9LCJraWxuQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY4In0sInBhcGVyQm9vayI6eyJhbW91bnQiOiIxMiJ9LCJib3hCb29rIjp7ImFtb3VudCI6IjEzIn0sImNsb3RoQm9vayI6eyJhbW91bnQiOiIxNjgifSwibWluaW5nRHJpbGxCb29rIjp7ImFtb3VudCI6MH0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6IjEzNiJ9LCJvaWxCb29rIjp7ImFtb3VudCI6IjEzNiJ9LCJtZXRhbEJvb2siOnsiYW1vdW50IjoiMTM2In0sImNvYWxEcmlsbEJvb2siOnsiYW1vdW50IjoiMTM2In0sImR5ZUJvb2siOnsiYW1vdW50IjowfSwicHJpbWFyeUR5ZUJvb2siOnsiYW1vdW50IjoiMTY4In0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjoiMTY4In0sInBsYXN0aWNCb29rIjp7ImFtb3VudCI6IjE2OCJ9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYm9va1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsicGFwZXIiOiIzLjIzNDg3MjQwNDc0MjA0OWUyMyIsInRvdGFsUGFwZXIiOiIzLjIzNDg3NTMwMTUyMjI2NzhlMjMiLCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJwbGFudGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiZXhwYW5kZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiZmVydGlsaXplckJvb2siOnsiYW1vdW50IjoiNDcifSwic21hbGxGaXJlQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJib25maXJlQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJraWxuQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiNyJ9LCJib3hCb29rIjp7ImFtb3VudCI6IjcifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjQ3In0sImNvYWxEcmlsbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxIn0sIm9pbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJtZXRhbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJwcmltYXJ5RHllQm9vayI6eyJhbW91bnQiOjB9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCb29rIjp7ImFtb3VudCI6IjQ3In19LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJib29rVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJib3hlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJib3hlcyI6IjguMDUzMzM4NjIzNTA4NDAyZTc0IiwidG90YWxCb3hlcyI6IjguMDUzMzY2MjQ2OTU5MDUzZTc0IiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6MH0sInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiNTUzIn0sImFzaEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMjQ1In0sImNvYWxCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjE5MCJ9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3czVXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnV5YWJsZXMyIjp7Im9yZUJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxMjgifSwibWV0YWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiODcifSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI3MyJ9fSwibWFzdGVyeSI6eyJib3hlcyI6IjYuMDE0OTA5ODc4NTc1NDI5ZTE2IiwidG90YWxCb3hlcyI6IjYuMDE0OTEzNTI3NTQwMTMxZTE2IiwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3czVXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNDcifSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjMwIn0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMjUifX0sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwibWV0YWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9fX0sIm1hc3RlcmVkIjp0cnVlfSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMS43ODUzNzg2MTYzNjY2OTk2ZTI2IiwiYmVzdE9yZSI6IjQuMjU4NTg3ODA3NzgzNjc4ZTI2Iiwib3JlUHJvZ3Jlc3MiOiIwLjU4NTc5NzQxNzY3ODEzMDIiLCJtZXRhbCI6IjMuODE0NzIxMTMzNjY1MDU3ZTUxIiwiYmVzdE1ldGFsIjoiMy44MTgxMzQ0NjY5OTgzNjg2ZTUxIiwidG90YWxNZXRhbCI6IjQuNTUyOTkxNTcyMTQzMTc4ZTUxIiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwib3JlRHJpbGwiOnsiYW1vdW50IjoiOTUyODcyIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiI3MTU2MiJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiI2OTU3NiJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwibWFzdGVyeSI6eyJvcmUiOiI5Mjc1NzIxMjAuNDQyNjM2NSIsImJlc3RPcmUiOiIxOTUzMzA5MDA3LjA0NDA5OCIsIm9yZVByb2dyZXNzIjoiMC41MzEwMzEyNjYxMzgyMzQ2IiwibWV0YWwiOiIzLjY1MzIyOTE5NTExMTA0ZTE2IiwiYmVzdE1ldGFsIjoiMy42NTMyMjkxOTUxMTEwNGUxNiIsInRvdGFsTWV0YWwiOiIzLjY1MzI1NzAzMDYzMjQwNWUxNiIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjI3MCJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMjcifSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMjQifX0sIm1hc3RlcmVkIjp0cnVlfSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiIxLjM1MzMxNjIyODEwODA3MDRlMTciLCJ0b3RhbENsb3RoIjoiMi45MTY2NDM5NDAxMzcwMDgzZTE3Iiwid29vbCI6IjkuNjA5NDE2NjczODY1MTgyZTE2Iiwic2hlZXAiOiI5LjkyNzI4NjQ2MjQ5MDc3M2UxNiIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIxMzU2OSJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiMTM0MTUifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiMTk5MDUifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjEsIm1hc3RlcnkiOnsiY2xvdGgiOiIxMTE0NTEiLCJ0b3RhbENsb3RoIjoiMTE4OTAxIiwid29vbCI6IjYyMzIwIiwic2hlZXAiOiI3NjQwMyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyNDgifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjMxMCJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI0MTQifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjguOTc1NzQ5NTM3Mjg5ODllMjEiLCJ0b3RhbE9pbCI6IjkuMDExMTI4MDg3MzMxNzc3ZTIxIiwiZGVwdGgiOiI3Nzk4OSIsImRyaWxsUHJvZ3Jlc3MiOiI5LjAwNDk1NjkxNzgyODMwNmUzNSIsImFjdGl2ZUhlYXZ5IjoiODE2IiwiYnVpbGRIZWF2eSI6eyJhbW91bnQiOiI4MTYifSwiYWN0aXZlSGVhdnkyIjoiMzgwIiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiMzgwIn0sImFjdGl2ZUV4dHJhY3RvciI6Ijg3IiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiODcifSwiYWN0aXZlUHVtcCI6IjgyIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjgyIn0sImFjdGl2ZUJ1cm5lciI6IjUxOSIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6IjUxOSJ9LCJhY3RpdmVTbWVsdGVyIjoiMzI3IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjMyNyJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjp0cnVlLCJyb3czVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7Im9pbCI6IjUwODA2MDY5MS44MzU4MzA2IiwidG90YWxPaWwiOiI1MTE0MTQ2NDEuODM1ODMwNiIsImRlcHRoIjoiMjMwOTMiLCJkcmlsbFByb2dyZXNzIjoiMTM1NTcyNTUyMzE2NC43ODEyIiwiYWN0aXZlSGVhdnkiOiIxMDMiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjEwMyJ9LCJhY3RpdmVIZWF2eTIiOiI0MSIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjQxIn0sImFjdGl2ZUV4dHJhY3RvciI6IjExIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlUHVtcCI6IjExIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjExIn0sImFjdGl2ZUJ1cm5lciI6IjI1IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMjUifSwiYWN0aXZlU21lbHRlciI6IjEyIiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjEyIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMi4xMDc3NTYzMTM4NTI2MzNlMTciLCJ0b3RhbFBsYXN0aWMiOiIzLjU0MzMwOTU5NjM4NDY1NzVlMTciLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjU0NCJ9LCJhY3RpdmVSZWZpbmVyeSI6IjU0NCIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiMTE3NjAxNyJ9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjoiMTE3NjAxNyJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjExNzYwMTcifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJtYXN0ZXJ5Ijp7InBsYXN0aWMiOiIxNjQwMDcwLjQ1MjIzMjkxMiIsInRvdGFsUGxhc3RpYyI6IjE2NjE5MTAuNDUyMjMyOTEyIiwiYWN0aXZlUmVmaW5lcnkiOiI0NiIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiNDYifSwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOnRydWV9LCJib3hUb29scyI6eyJib3VnaHQiOnRydWV9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOiI2NjEifSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6IjY2MSJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjY2MSJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOiI3NjI3OTgzMjc1Ny44OTkxOSIsImJ1eWFibGUiOnsiYW1vdW50IjoiODAxIn19LCJ5ZWxsb3ciOnsiYW1vdW50IjoiMTg4OTIyNDg3Mzg2LjcwOTc1IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI3NjcifX0sImJsdWUiOnsiYW1vdW50IjoiMjU3MjYyNzI1ODguNjE2MzkiLCJidXlhYmxlIjp7ImFtb3VudCI6IjczNSJ9fSwib3JhbmdlIjp7ImFtb3VudCI6IjQxNTc2IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI2ODMifX0sImdyZWVuIjp7ImFtb3VudCI6IjMyMTk2IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI1ODkifX0sInB1cnBsZSI6eyJhbW91bnQiOiIzMDMyMCIsImJ1eWFibGUiOnsiYW1vdW50IjoiNTc1In19LCJibGFjayI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjE0NyJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1In19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNSJ9fSwiYmx1ZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTQifX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTIifX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNCJ9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI0In19fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIzMTI3NDY4LjIyOTc1OTUwMTgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNjI0ODQ1Ni4yMTU2NjA1NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI5Mzc2NDUxLjQzODk2MTQ0MyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEyNDk2MzI3LjM5NTk2NDYxNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxNTYyMzk4My4yMDc5NDI2MyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc4MDg4Mi45MTMyNTQxMiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjIxOTA3NDkzLjM5MDE1MzU0NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyNTAwNjQzNi4wMzM4ODIzMjciLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImZpcmVFbGZUcmFpbmluZyI6eyIyIjp7InN0YXRlIjp0cnVlLCJleHAiOjB9fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyODE5MzUwNy43OTA3MTA5ODIiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEwNDMwOTA0LjQ2MzY2NDMwNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIxMTQ3MDIyNC41MDQ5ODIzNDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIzNzQ4OTM1NS4wNDcwMTA3NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY29hbERyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0MDYyMzY4NS4wNDA5MTI3NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwibWV0YWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjUwMDQ2MDI3Ljk5OTYwOTU4IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjQ2ODYwMzcxLjU0ODQxMTg3NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNDM3Mzk3MzUuNjE1MTU0MzkiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImR5ZUVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTMxMjc0MDAuNjQ3NjM2MTUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjU2MzQyNzcwLjQ1NjgxNTUyIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19fSwiY3VycmVudFNob3duIjoiVGluc2VsIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6IjEwNDYifSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJmb2N1c011bHRpcGxpZXIiOiIxLjAwNjE1NzgzMjc4NzQ5ODciLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowLCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c011bHRpIjoiMi40NTU5MTY0ODI3MjUwMTEiLCJtYXN0ZXJ5Ijp7ImVsZlRyYWluaW5nIjp7ImJvbmZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm9pbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImR5ZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwidGVhY2hpbmciOnsiYm91Z2h0IjpmYWxzZX0sInNjaG9vbHMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzTXVsdGkiOiIxLjAxMjY5ODQ3NTQyMDExODciLCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjB9fSwid3JhcHBpbmdQYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJ3cmFwcGluZ1BhcGVyIjp7ImNocmlzdG1hcyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjY0In19LCJyYWluYm93Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNDYifX0sImphenp5Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiODEifX0sInN1bnNoaW5lIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTUifX0sIm9jZWFuIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTAifX0sImJlYWNoIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTcifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWlsZXN0b25lcyI6eyJwcmltYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhQcmltYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlOb1Jlc2V0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhTZWNvbmRhcnkiOnsiZWFybmVkIjpmYWxzZX0sInVubG9ja0R5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwidW5sb2NrRHllRWxmTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJsZXR0ZXJzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxldHRlcnMiOiIxLjMwOTQ4NTQxMzA1MjYzMjZlNTQiLCJ0b3RhbExldHRlcnMiOiIyLjYxODk3MDgyNjEwNTI2NTVlNTQiLCJwcm9jZXNzaW5nUHJvZ3Jlc3MiOiI0LjQxMzczODg1NTQ4NzgxM2UtMjgiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjoiMTIifSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjoiMjMifSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6IjQzIn19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsIm1hc3RlcnkiOnsibGV0dGVycyI6IjEyNTU4MDA1LjU3MTUxMDg1IiwidG90YWxMZXR0ZXJzIjoiMTI1NTgwMDUuNTcxNTEwODUiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjowfSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6MH19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sInJpYmJvbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJyaWJib24iOiIxNiIsIm1pbGVzdG9uZXMiOnsic2Vjb25kYXJ5RHllRWxmIjp7ImVhcm5lZCI6dHJ1ZX0sImR5ZUJvb2siOnsiZWFybmVkIjp0cnVlfX0sInJpYmJvblByb2dyZXNzIjoxMCwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInRveXMiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGhlcyI6IjE1MSIsIndvb2RlbkJsb2NrcyI6Ijk3IiwidHJ1Y2tzIjoiMTYwIiwidG90YWxUb3lzIjoiNTAwIiwiYnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIxNTEifSwiMSI6eyJhbW91bnQiOiI5NyJ9LCIyIjp7ImFtb3VudCI6IjE2MCJ9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWV9fSwiYXV0b1BhdXNlIjp0cnVlLCJ1c2luZ0xvZyI6ZmFsc2V9 +`,"./../../saves/Day 18 Complete.txt":`eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0zIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJmYWN0b3J5IiwidG95cyIsImNvYWwiLCJtYW5hZ2VtZW50Iiwid3JhcHBpbmdQYXBlciJdLCJ0aW1lIjoxNjcxNzM0NzU2NzExLCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOmZhbHNlLCJvZmZsaW5lVGltZSI6bnVsbCwidGltZVBsYXllZCI6OTAwMTMuMTUyNTE5MzY1MDUsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMTkiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjoxOSwiaXNNYXN0ZXJ5IjpmYWxzZX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiI3LjAzMjM2ODgyMzEyMDcyNmU3MSIsInRvdGFsTG9ncyI6IjEuMzM2MjIyNDg2MDA0OTQ1ZTczIiwidHJlZXMiOiIxMCIsInNhcGxpbmdzIjoiMy4wOTUwMjA4MTQ0OTc1Mzc3ZTI4Iiwicm93MVVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjM1Njk4NDcifSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjM2NzQwODgifSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6Ijc3MTUyMjkifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDAwMDE5MDczNDg2MzI4MTI0OTk0IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjcmVhdGVkU2FwbGluZ3MiOiIzLjMxMzc0OTQ3NjA5NTY1NjdlMjgiLCJtYXN0ZXJ5Ijp7ImxvZ3MiOiI0Ljg3MjE1MjY1NTUyMTQwOGUyMyIsInRvdGFsTG9ncyI6IjQuOTI4MzM4ODQwNDAxMzJlMjMiLCJzYXBsaW5ncyI6IjY1Mzc1MDUyNzQ4MzY4LjgzIiwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MUJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiMTEzMjk1In0sIjEiOnsiYW1vdW50IjoiMTEzMjk1In0sIjIiOnsiYW1vdW50IjoiMzM1ODI3In19LCJjcmVhdGVkU2FwbGluZ3MiOiI2NTM3NTgzNTA3NzIwMS41MTYifSwibWFzdGVyZWQiOnRydWV9LCJ3b3Jrc2hvcCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiIxMjAwIiwiZm91bmRhdGlvbkNvbnZlcnNpb24iOnsiYmFzZVJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiZ2FpblJlc291cmNlIjoiMTAwIn0sIm1pbGVzdG9uZXMiOnsibG9nR2Fpbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1vcmVQbGFudHNNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNCI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU2Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsIm1hc3RlcnkiOnsiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiI4LjI3NzcxMzU2MzUyMjIyN2UxMjciLCJ0b3RhbENvYWwiOiIxLjA2NjA5NDQyNDI3NjA3NjRlMTI4IiwiYXNoIjoiMy43OTUzNjQyNzU0ODY5MTNlMTAwIiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMCJ9LCJhY3RpdmVCb25maXJlcyI6IjIuNjQwMTQ3OTg1MDQ0MzI3N2UyMSIsImJ1aWxkQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMi42NDAxNDc5ODUwNDQzMjc3ZTIxIn0sImFjdGl2ZUtpbG5zIjoiNTg1OSIsImJ1aWxkS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjU4NTkifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjE5NzYyNDY3MzE3NSJ9LCJoZWF0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMTk3NjI0NjczMTc1In0sIm1vcmVGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiI4NzA5MDE5NTc2MTIyIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJhY3RpdmVEcmlsbHMiOiIzMTk0IiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIzMTk0In0sImVmZmljaWVudFNtZWx0aGVyIjp7InJlc291cmNlIjoiMS4zMzY0Nzc3OTEzMjgyNTJlMTciLCJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0Ijp0cnVlfSwicmVmaW5lZENvYWwiOnsiYm91Z2h0Ijp0cnVlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwibWFzdGVyeSI6eyJjb2FsIjoiOS4wNjI4MTE3NjcyMDc1NDVlMzMiLCJ0b3RhbENvYWwiOiI5LjA2ODkyMjg3ODMxODUzNWUzMyIsImFzaCI6IjIuNjc1MjQzNDc4NzMyMTg4ZTE3IiwiYWN0aXZlRmlyZXMiOiIxMDYxLjg4NTM4NTQ3NTUyOTgiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMTA2MS44ODUzODU0NzU1Mjk4In0sImFjdGl2ZUJvbmZpcmVzIjoiMjAwNTAzIiwiYnVpbGRCb25maXJlIjp7ImFtb3VudCI6IjIwMDUwMyJ9LCJhY3RpdmVLaWxucyI6IjY3MSIsImJ1aWxkS2lsbiI6eyJhbW91bnQiOiI2NzEifSwiYWN0aXZlRHJpbGxzIjoiMTY1IiwiYnVpbGREcmlsbCI6eyJhbW91bnQiOiIxNjUifSwid2FybWVyQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiYXNpY0ZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZFBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0IjpmYWxzZX0sInJlZmluZWRDb2FsIjp7ImJvdWdodCI6ZmFsc2V9LCJjb2xvcmVkRmlyZSI6eyJib3VnaHQiOmZhbHNlfSwiaGVhdGVkQ3V0dGVycyI6eyJhbW91bnQiOiI5Nzk4In0sImhlYXRlZFBsYW50ZXJzIjp7ImFtb3VudCI6Ijk3OTgifSwibW9yZUZlcnRpbGl6ZXIiOnsiYW1vdW50IjoiMjUzNSJ9fSwibWFzdGVyZWQiOnRydWV9LCJlbHZlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAxNDk3MTc5NzQ3NzgwMDE5NyIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIzMTk4In0sImFtb3VudE9mVGltZXNEb25lIjowLjI2NDAwMDAwMDM3NTUwMzR9LCJwbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwODQ2MjAyNzQ2NzU2MDY0IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjMxOTgifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDk2MDAwMDAwMzc1MTU1OTl9LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDQ5MjExNzkzODAwODMzNzkiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiNzM3OSJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wODQwMDAwMDAzNzUyMTIzOH0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDgyNjYwMjYyNTQ2NDMwMTEiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjYwMDAwMDAwMzczODd9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMzQyMjU4MDA2NDkzOTQyMzMiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjIwMDAwMDAwMzcxNDA1Mn0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDYzODg0ODQ4NzU3NjExNTgiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiIxMzkifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjYwMDAwMDAwMzcwOTE0MX0sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNzk1MDE4NzU1MDkxOTE0MSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjk0NDAwMDAwMDM3MDMzNzV9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6MH0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU5NzIyNzQzMjgyNjIyNSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjQ2ODAwMDAwMDM3MTU4ODk1fSwia2lsbkVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMTAyIn0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDMyNDg2NjY0ODI1NDYyMzY0IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDQ4MDAwMDAwMzcwMTUxOTV9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzNjk0ODA1MTk1MDcyNzE3MyIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTgwMDAwMDAwMDE5MTExNTR9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMDQxNDE3Mjc4Mzk3NjkxIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44OTIwMDAwMDAwMjU5OTQ3fSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDkzODk3NjU0Njg0MTE2MzciLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjk2NDAwMDAwMDM4OTE3NzF9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDE4MjEzMTUwNTE2NzQwOTk1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTg0MDAwMDAwMTY5NzAzNTMsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA1MjQ2ODE4NTY0MDkxMDk0IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDQ4MDAwMDAwMTY1MDUyMzcsImJvdWdodCI6dHJ1ZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA0NzQ3NTU5MjgyMjIzNjczNCIsImFtb3VudE9mVGltZXNEb25lIjowLjQzNjAwMDAwMDE2NDY1NCwiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDE4MjM4Njc4MzgzODUwMDciLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wODQwMDAwMDAxODIwNzI2NSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAyMjcwMjI2MTMzMjg5MzY1OCIsImFtb3VudE9mVGltZXNEb25lIjowLjczNjAwMDAwMDE3NDcxMjUsImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDMyMzM5MDkxODQ1MDA0NSIsImFtb3VudE9mVGltZXNEb25lIjowLjI3MjAwMDAwMDE2NjU4NTIsImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjp0cnVlfSwiMTAiOnsiZWFybmVkIjp0cnVlfSwiMTEiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJtYXN0ZXJ5Ijp7ImVsdmVzIjp7ImN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDQxMzE2NTQ0MjE0MTczMyIsImFtb3VudE9mVGltZXNEb25lIjoxLjA0NTkxODkwNzAzODg2NzVlLTExLCJib3VnaHQiOnRydWV9LCJwbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA0MTc4NTUyNDA0NDc2ODcxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDA4MDAwMDAwMDEyNTIxLCJib3VnaHQiOnRydWV9LCJleHBhbmRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNDIxNTAyMTczOTM3ODE1NSIsImFtb3VudE9mVGltZXNEb25lIjowLjc5NDAwMDAwMDAwNzUzNTgsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTUwMzgyOTg5MjgyNzQzNTIiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMDIwMDAwMDAwNDY0NjIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDI1OTk3NzY1MDkzNTg2MDkiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43MjYwMDAwMDAwNDk3OTM5LCJib3VnaHQiOnRydWV9LCJmZXJ0aWxpemVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDIyMzM2NjcwNDMxMjAyOCIsImFtb3VudE9mVGltZXNEb25lIjowLjU5MjAwMDAwMDA0Nzc4OTksImJvdWdodCI6dHJ1ZX0sInNtYWxsRmlyZUVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAyODczMDYwODY2MDMwMzQxNCIsImFtb3VudE9mVGltZXNEb25lIjowLjg3NjAwMDAwMDA0OTIwMjgsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwiYm9uZmlyZUVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxNzI3MzYyMDM5ODExMjIiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yNTgwMDAwMDAwNDk4ODk5LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTUzMzg1NTI5ODU0MDk5ODEiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42OTQwMDAwMDAwNTAwMzksInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwicGFwZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDg0MjA4NjgzNDc0NjIwODUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44ODAwMDAwMDAwMDA4ODU0LCJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNTI5NDExNzY0NzA3MjU3NyIsImFtb3VudE9mVGltZXNEb25lIjowLjMwNDAwMDAwMDAwMDkzMjg2LCJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzODYyNTA5ODE5MDc1NDA1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDMyMDAwMDAwMDAyMjMzMjYsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExNDU0NTQ1NDU0NTQ1MjczIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTAzOTk5OTk5OTk5ODg3NiwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJoZWF2eURyaWxsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExNDU0NTQ1NDU0NTQ1MjczIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTAzOTk5OTk5OTk5ODg3NiwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDExNDU0NTQ1NDU0NTQ1MjczIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTAzOTk5OTk5OTk5ODg3NiwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMzUzMzcwNDQ3MTA2MTYwNSIsImFtb3VudE9mVGltZXNEb25lIjowLjk0MDAwMDAwMDAwMDc5MzUsImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9LCI4Ijp7ImVhcm5lZCI6dHJ1ZX0sIjkiOnsiZWFybmVkIjp0cnVlfSwiMTAiOnsiZWFybmVkIjp0cnVlfSwiMTEiOnsiZWFybmVkIjp0cnVlfX19fSwicGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwicGFwZXIiOiIzLjIzNjI4NjEzNjM2Mzk2NWU4OCIsInRvdGFsUGFwZXIiOiI0LjU5MDkwMjUxMjQyMjE1NmU4OCIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY5In0sInBsYW50ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY5In0sImV4cGFuZGVyc0Jvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE2OSJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY5In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY5In0sImZlcnRpbGl6ZXJCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjkifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTY5In0sImJvbmZpcmVCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxNjkifSwia2lsbkJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE2OSJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiMTIifSwiYm94Qm9vayI6eyJhbW91bnQiOiIxMyJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiMTY5In0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxMzcifSwib2lsQm9vayI6eyJhbW91bnQiOiIxMzcifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjEzNyJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjEzNyJ9LCJkeWVCb29rIjp7ImFtb3VudCI6MH0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6IjE2OSJ9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6IjE2OSJ9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiIxNjkifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7InBhcGVyIjoiMy4yMzQ4NzI0MDQ3NDIwNDllMjMiLCJ0b3RhbFBhcGVyIjoiMy4yMzQ4NzUzMDE1MjIyNjc4ZTIzIiwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sImV4cGFuZGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sImZlcnRpbGl6ZXJCb29rIjp7ImFtb3VudCI6IjQ3In0sInNtYWxsRmlyZUJvb2siOnsiYW1vdW50IjoiNDcifSwiYm9uZmlyZUJvb2siOnsiYW1vdW50IjoiNDcifSwia2lsbkJvb2siOnsiYW1vdW50IjoiNDcifSwicGFwZXJCb29rIjp7ImFtb3VudCI6IjcifSwiYm94Qm9vayI6eyJhbW91bnQiOiI3In0sImNsb3RoQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjEifSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJvaWxCb29rIjp7ImFtb3VudCI6IjEifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjEifSwicHJpbWFyeUR5ZUJvb2siOnsiYW1vdW50IjowfSwic2Vjb25kYXJ5RHllQm9vayI6eyJhbW91bnQiOjB9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiI0NyJ9fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJ1cGdyYWRlczIiOnsiYXNoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiYm9va1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwiYm94ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiYm94ZXMiOiI1LjU5NTcxNzI2OTI3NTU1MmU3NSIsInRvdGFsQm94ZXMiOiI3LjkyMjI3Mjk3MDQyNzExOWU3NSIsImJveGVzQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJnYWluUmVzb3VyY2UiOjB9LCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsicmVzb3VyY2UiOjAsImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjU2MSJ9LCJhc2hCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjI0OCJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIxOTIifX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMTMwIn0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6Ijg4In0sInBsYXN0aWNCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNzQifX0sIm1hc3RlcnkiOnsiYm94ZXMiOiI2LjAxNDkwOTg3ODU3NTQyOWUxNiIsInRvdGFsQm94ZXMiOiI2LjAxNDkxMzUyNzU0MDEzMWUxNiIsInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjQ3In0sImFzaEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIzMCJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjI1In19LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sIm1ldGFsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9yZSI6IjQuNTc5OTUxMTg3NjA4MTkyZTI2IiwiYmVzdE9yZSI6IjUuMTQwNTI4NTQ5MjYwNTI1ZTI3Iiwib3JlUHJvZ3Jlc3MiOiIwLjg4OTc5NzQxNzY3OTgyMzgiLCJtZXRhbCI6IjUuODk4MDg1MDczODY2NjE4ZTUzIiwiYmVzdE1ldGFsIjoiNS44OTgwODUwNzM4NjY2MThlNTMiLCJ0b3RhbE1ldGFsIjoiNi43MjUwMDc5OTIwMzk5MTRlNTMiLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIxMDQzODAxIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIxMDQzODEifSwiYXV0b1NtZWx0RW5hYmxlZCI6dHJ1ZSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMTM0NTE0In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9LCJtYXN0ZXJ5Ijp7Im9yZSI6IjkyNzU3MjEyMC40NDI2MzY1IiwiYmVzdE9yZSI6IjE5NTMzMDkwMDcuMDQ0MDk4Iiwib3JlUHJvZ3Jlc3MiOiIwLjUzMTAzMTI2NjEzODIzNDYiLCJtZXRhbCI6IjMuNjUzMjI5MTk1MTExMDRlMTYiLCJiZXN0TWV0YWwiOiIzLjY1MzIyOTE5NTExMTA0ZTE2IiwidG90YWxNZXRhbCI6IjMuNjUzMjU3MDMwNjMyNDA1ZTE2Iiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwib3JlRHJpbGwiOnsiYW1vdW50IjoiMjcwIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIyNyJ9LCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiIyNCJ9fSwibWFzdGVyZWQiOnRydWV9LCJjbG90aCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjbG90aCI6IjguODAyMjQ1NjE0NDEzOTE2ZTE2IiwidG90YWxDbG90aCI6IjQuMjY5OTYwMTY4MjQ1MDk1ZTE3Iiwid29vbCI6IjkuNjA5NDE2NjczODY1MTgyZTE2Iiwic2hlZXAiOiI5LjkyNzI4NjQ2MjQ5MDc3M2UxNiIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIxMzgyNCJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiMTQwNzYifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiMjA1MjUifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjEsIm1hc3RlcnkiOnsiY2xvdGgiOiIxMTE0NTEiLCJ0b3RhbENsb3RoIjoiMTE4OTAxIiwid29vbCI6IjYyMzIwIiwic2hlZXAiOiI3NjQwMyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyNDgifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjMxMCJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI0MTQifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjQuMjgyMjI0MzUzMDE2MDc4ZTIzIiwidG90YWxPaWwiOiI1LjcwNTUwMzgwMjg1OTUyMWUyMyIsImRlcHRoIjoiODA3ODAiLCJkcmlsbFByb2dyZXNzIjoiMS4yNTU1MDA3MzMxMTIwMjI1ZTM3IiwiYWN0aXZlSGVhdnkiOiI4MzYiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjgzNiJ9LCJhY3RpdmVIZWF2eTIiOiIzODkiLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOiIzODkifSwiYWN0aXZlRXh0cmFjdG9yIjoiODkiLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiI4OSJ9LCJhY3RpdmVQdW1wIjoiODQiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiODQifSwiYWN0aXZlQnVybmVyIjoiNTM2IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiNTM2In0sImFjdGl2ZVNtZWx0ZXIiOiIzMzEiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiMzMxIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsib2lsIjoiNTA4MDYwNjkxLjgzNTgzMDYiLCJ0b3RhbE9pbCI6IjUxMTQxNDY0MS44MzU4MzA2IiwiZGVwdGgiOiIyMzA5MyIsImRyaWxsUHJvZ3Jlc3MiOiIxMzU1NzI1NTIzMTY0Ljc4MTIiLCJhY3RpdmVIZWF2eSI6IjEwMyIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTAzIn0sImFjdGl2ZUhlYXZ5MiI6IjQxIiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiNDEifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTEiLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIxMSJ9LCJhY3RpdmVQdW1wIjoiMTEiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlQnVybmVyIjoiMjUiLCJidWlsZEJ1cm5lciI6eyJhbW91bnQiOiIyNSJ9LCJhY3RpdmVTbWVsdGVyIjoiMTIiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiMTIifSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9fSwib2lsTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOiIxLjMwODc2NDUzMzc0ODEyZTE5IiwidG90YWxQbGFzdGljIjoiMS44MzU2NTMyMDc2ODk2NTE3ZTE5IiwiYnVpbGRSZWZpbmVyeSI6eyJhbW91bnQiOiI1NDQifSwiYWN0aXZlUmVmaW5lcnkiOiI1NDQiLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImJveFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6IjEzNTgxMDcifSwicGFzc2l2ZUJveGVzIjp7ImFtb3VudCI6IjEzNTgxMDcifSwiY2xvdGhHYWlucyI6eyJhbW91bnQiOiIxMzU4MTA3In19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJwbGFzdGljIjoiMTY0MDA3MC40NTIyMzI5MTIiLCJ0b3RhbFBsYXN0aWMiOiIxNjYxOTEwLjQ1MjIzMjkxMiIsImFjdGl2ZVJlZmluZXJ5IjoiNDYiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjQ2In0sInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiNjYxIn0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiI2NjEifSwiY2xvdGhHYWlucyI6eyJhbW91bnQiOiI2NjEifX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjoiNzYyNzk4MzI3NTcuODk5MTkiLCJidXlhYmxlIjp7ImFtb3VudCI6IjEwMjcifX0sInllbGxvdyI6eyJhbW91bnQiOiIxODg5MjI0ODczODYuNzA5NzUiLCJidXlhYmxlIjp7ImFtb3VudCI6Ijk4MyJ9fSwiYmx1ZSI6eyJhbW91bnQiOiIyNTcyNjI3MjU4OC42MTYzOSIsImJ1eWFibGUiOnsiYW1vdW50IjoiOTQyIn19LCJvcmFuZ2UiOnsiYW1vdW50IjoiNDE1NzYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjcyMiJ9fSwiZ3JlZW4iOnsiYW1vdW50IjoiMzIxOTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjYyMyJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjMwMzIwIiwiYnV5YWJsZSI6eyJhbW91bnQiOiI2MDcifX0sImJsYWNrIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiMTQ4In19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiYmx1ZUR5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZyI6eyJib3VnaHQiOnRydWV9fSwibWFzdGVyeSI6eyJkeWVzIjp7InJlZCI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTUifX0sImdyZWVuIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI1In19LCJibHVlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiIxNCJ9fSwieWVsbG93Ijp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiIxMiJ9fSwicHVycGxlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI0In19LCJvcmFuZ2UiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjQifX19LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sIm1hbmFnZW1lbnQiOnsibWluaW1pemVkIjpmYWxzZSwiZWxmVHJhaW5pbmciOnsiY3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjMxMjc0NjguMjI5NzU5NTAxOCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI2MjQ4NDU2LjIxNTY2MDU0IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjkzNzY0NTEuNDM4OTYxNDQzIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTI0OTYzMjcuMzk1OTY0NjE1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjE1NjIzOTgzLjIwNzk0MjYzIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjE4NzgwODgyLjkxMzI1NDEyIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjE5MDc0OTMuMzkwMTUzNTQ2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib25maXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjI1MDA2NDM2LjAzMzg4MjMyNyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmlyZUVsZlRyYWluaW5nIjp7IjIiOnsic3RhdGUiOnRydWUsImV4cCI6MH19LCJraWxuRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjI4MTkzNTA3Ljc5MDcxMDk4MiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGFwZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTA0MzA5MDQuNDYzNjY0MzA2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjExNDcwMjI0LjUwNDk4MjM0NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjM3NDg5MzU1LjA0NzAxMDc1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjQwNjIzNjg1LjA0MDkxMjc0IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTAwNDYwMjcuOTk5NjA5NTgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sIm9pbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNDY4NjAzNzEuNTQ4NDExODc2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF2eURyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0MzczOTczNS42MTUxNTQzOSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZHllRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI1MzEyNzQwMC42NDc2MzYxNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhc3RpY0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTYzNDI3NzAuNDU2ODE1NTIiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX19LCJjdXJyZW50U2hvd24iOiJUaW5zZWwiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidGVhY2hpbmciOnsiYm91Z2h0Ijp0cnVlfSwic2Nob29scyI6eyJhbW91bnQiOiI1In0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjoiMTA0NiJ9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImZvY3VzTXVsdGlwbGllciI6IjEuMDA2MTU3ODMyNzg3NDk4NyIsInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjAsImFkdmFuY2VkVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX0sImZvY3VzTXVsdGkiOiIxNS4xNjEwMTg2Mzg2NjUiLCJtYXN0ZXJ5Ijp7ImVsZlRyYWluaW5nIjp7ImJvbmZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm9pbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImR5ZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwidGVhY2hpbmciOnsiYm91Z2h0IjpmYWxzZX0sInNjaG9vbHMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzTXVsdGkiOiIxLjAxMjY5ODQ3NTQyMDExODciLCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjB9fSwid3JhcHBpbmdQYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJ3cmFwcGluZ1BhcGVyIjp7ImNocmlzdG1hcyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjY3In19LCJyYWluYm93Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNDcifX0sImphenp5Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiODIifX0sInN1bnNoaW5lIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTcifX0sIm9jZWFuIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTIifX0sImJlYWNoIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTkifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWlsZXN0b25lcyI6eyJwcmltYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhQcmltYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlOb1Jlc2V0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhTZWNvbmRhcnkiOnsiZWFybmVkIjpmYWxzZX0sInVubG9ja0R5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwidW5sb2NrRHllRWxmTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJsZXR0ZXJzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxldHRlcnMiOiIxLjMwOTQ4NTQxMzA1MjYzMjZlNTQiLCJ0b3RhbExldHRlcnMiOiIzLjkyODQ1NjIzOTE1Nzg5OTRlNTQiLCJwcm9jZXNzaW5nUHJvZ3Jlc3MiOiIzLjYwMzgwMjY4NDYxMzU5NDdlLTI4IiwiYnV5YWJsZXMiOnsibWV0YWxCdXlhYmxlIjp7ImFtb3VudCI6IjEyIn0sInBsYXN0aWNCdXlhYmxlIjp7ImFtb3VudCI6IjIzIn0sInBhcGVyQnV5YWJsZSI6eyJhbW91bnQiOiI0MyJ9fSwibWlsZXN0b25lcyI6eyJhdXRvU21lbHRpbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwibWluaW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwiaW5kdXN0cmlhbENydWNpYmxlTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJtYXN0ZXJ5Ijp7ImxldHRlcnMiOiIxMjU1ODAwNS41NzE1MTA4NSIsInRvdGFsTGV0dGVycyI6IjEyNTU4MDA1LjU3MTUxMDg1IiwiYnV5YWJsZXMiOnsibWV0YWxCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBhcGVyQnV5YWJsZSI6eyJhbW91bnQiOjB9fSwibWlsZXN0b25lcyI6eyJhdXRvU21lbHRpbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwibWluaW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwiaW5kdXN0cmlhbENydWNpYmxlTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJyaWJib24iOnsibWluaW1pemVkIjpmYWxzZSwicmliYm9uIjoiMTYiLCJtaWxlc3RvbmVzIjp7InNlY29uZGFyeUR5ZUVsZiI6eyJlYXJuZWQiOnRydWV9LCJkeWVCb29rIjp7ImVhcm5lZCI6dHJ1ZX19LCJyaWJib25Qcm9ncmVzcyI6MTAsImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ0b3lzIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoZXMiOiI3NTAiLCJ3b29kZW5CbG9ja3MiOiIxMDEyLjk5OTk5OTk5OTk5OTkiLCJ0cnVja3MiOiI4MTAiLCJ0b3RhbFRveXMiOiI0ODI0IiwiYnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIzNDEifSwiMSI6eyJhbW91bnQiOiIxLjAwMDAwMDAwMDAwMDAxNDIifSwiMiI6eyJhbW91bnQiOiIzNzcifX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyJtaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU0Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTUiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNiI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2V9LCJmYWN0b3J5Ijp7Im1pbmltaXplZCI6ZmFsc2UsImNvbXBvbmVudHMiOnsiLTF4LTMiOnsidGlja3NEb25lIjowLjc0NDQzNzEyODcwODc0NDIsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoyfSwib3V0cHV0U3RvY2siOnsid2hlZWwiOjB9LCJ0eXBlIjoid2hlZWwifSwiLTF4LTIiOnsidGlja3NEb25lIjowLjc1MjE0NjE0NDU1ODc4MDgsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjozfSwib3V0cHV0U3RvY2siOnsid2hlZWwiOjB9LCJ0eXBlIjoid2hlZWwifSwiLTN4LTMiOnsidGlja3NEb25lIjowLjc0MDgwMzk1ODExNjM2MzMsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MH0sInR5cGUiOiJwbGFzdGljIn0sIi0zeC0yIjp7InRpY2tzRG9uZSI6MC43MzMyNDkzNzYyMjMxNzA4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjB9LCJ0eXBlIjoicGxhc3RpYyJ9LCItMngtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC0xIjp7InRpY2tzRG9uZSI6MC43MzU3NzkyNDYwNTc4MDMxLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjJ4LTEiOnsidGlja3NEb25lIjowLjc0MTI0MjIzMDQ0NjQ3NDYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiMXgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIjJ4LTIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC0zIjp7InRpY2tzRG9uZSI6MC44NzA1NDM3MTYxMTcyMDY4LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjYsIndoZWVsIjo3fSwib3V0cHV0U3RvY2siOnsidHJ1Y2tzIjowfSwidHlwZSI6InRydWNrcyJ9LCItM3gxIjp7InRpY2tzRG9uZSI6MC43NDM1ODM3OTYyODc5NjMzLCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjZ9LCJvdXRwdXRTdG9jayI6eyJ0aHJlYWQiOjB9LCJ0eXBlIjoidGhyZWFkIn0sIi0yeDEiOnsidGlja3NEb25lIjowLjc0MTM4OTkxNjI4NTYwNDIsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6NH0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiMHgzIjp7InRpY2tzRG9uZSI6MC4wMjczMTU3Mjk3MjY0ODQxMDYsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJ0aHJlYWQiOjE2NCwiZHllIjo2MywiY2xvdGgiOjJ9LCJvdXRwdXRTdG9jayI6eyJjbG90aGVzIjowfSwidHlwZSI6ImNsb3RoZXMifSwiLTN4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTEiOnsidGlja3NEb25lIjowLjczMjI1MzM0Njc0ODgyNjcsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTJ4LTEiOnsidGlja3NEb25lIjowLjczOTc3MjE0MzMxNzIyMDMsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTN4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeDMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngzIjp7InRpY2tzRG9uZSI6MC43NDAwNTk1MjM1NTc2OTc4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6MH0sInR5cGUiOiJkeWUifSwiMXgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIweDIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjF4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMHgxIjp7InRpY2tzRG9uZSI6MC43NDQzMDQwMTc4NTc4Mzk4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIjF4MSI6eyJ0aWNrc0RvbmUiOjAuNzM1NjIzODQxMDg5MDY5NSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItMXgxIjp7InRpY2tzRG9uZSI6MC43NDAxNDg5MzI2NzQ5MjMyLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn19LCJlbGZCdXlhYmxlcyI6eyJjbG90aGVzQnV5YWJsZSI6eyJhbW91bnQiOiI0In0sImJsb2Nrc0J1eWFibGUiOnsiYW1vdW50IjoiNSJ9LCJ0cnVja3NCdXlhYmxlIjp7ImFtb3VudCI6IjQifX0sInRhYnMiOnsic2VsZWN0ZWQiOiJmYWN0b3J5In0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOmZhbHNlfQ== +`,"./../../saves/Day 19 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0yIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJmYWN0b3J5Il0sInRpbWUiOjE2NzE3NzI2MTQ4MDgsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjo5MzYxNC42NDg1MTkzNzQ1OCwia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC41IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE1Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE4Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MjAsImlzTWFzdGVyeSI6ZmFsc2V9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiMi4xMzYyMzY5NzYxMzI2MjNlODIiLCJ0b3RhbExvZ3MiOiIxLjAzMTIyODMwODc2Njc5ZTg0IiwidHJlZXMiOiIxMCIsInNhcGxpbmdzIjoiMy42MzUzNzU0MDA4NDAxNzNlMjkiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiNDk4NzI5MyJ9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiNTEzMjkyNSJ9LCIyIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMTIxMTE0NzMifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDAwMDE5MDczNDg2MzI4MTI0OTk0IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjcmVhdGVkU2FwbGluZ3MiOiIzLjgyOTExMTMxNzQ5MjUxMmUyOSIsIm1hc3RlcnkiOnsibG9ncyI6IjQuODcyMTUyNjU1NTIxNDA4ZTIzIiwidG90YWxMb2dzIjoiNC45MjgzMzg4NDA0MDEzMmUyMyIsInNhcGxpbmdzIjoiNjUzNzUwNTI3NDgzNjguODMiLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiIxMTMyOTUifSwiMSI6eyJhbW91bnQiOiIxMTMyOTUifSwiMiI6eyJhbW91bnQiOiIzMzU4MjcifX0sImNyZWF0ZWRTYXBsaW5ncyI6IjY1Mzc1ODM1MDc3MjAxLjUxNiJ9LCJtYXN0ZXJlZCI6dHJ1ZX0sIndvcmtzaG9wIjp7Im1pbmltaXplZCI6ZmFsc2UsImZvdW5kYXRpb25Qcm9ncmVzcyI6IjEzNTQiLCJmb3VuZGF0aW9uQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJnYWluUmVzb3VyY2UiOiIxMDAifSwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTYiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU3Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJtYXN0ZXJ5Ijp7ImZvdW5kYXRpb25Qcm9ncmVzcyI6IjEwMCIsIm1pbGVzdG9uZXMiOnsibG9nR2Fpbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1vcmVQbGFudHNNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImxvZ0dhaW5NaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMSI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTMiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNCI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sImNvYWwiOnsibWluaW1pemVkIjpmYWxzZSwiY29hbCI6IjIuMzkxMTMyNzQwMjI2MTE3ZTE0NiIsInRvdGFsQ29hbCI6IjIuMzkxMTMyNzQwMjU0NzUzM2UxNDYiLCJhc2giOiIyLjQ0NTc4NzkwNTg1NjY1MzRlMTEyIiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMCJ9LCJhY3RpdmVCb25maXJlcyI6IjIuMTY0MjExODE5NTY3MTQ2NWUyNCIsImJ1aWxkQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMi4xNjQyMTE4MTk1NjcxNDY1ZTI0In0sImFjdGl2ZUtpbG5zIjoiNzA5NCIsImJ1aWxkS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjcwOTQifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjE0NTY4ODI2IiwiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjIxMDUzOTU4NTE2NjgifSwiaGVhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjIxMDUzOTU4NTE2NjgifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiIxNDU2ODgyNiIsImFtb3VudCI6IjEwNjc4ODQ1NjkwNDk2MSJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYWN0aXZlRHJpbGxzIjoiMzkzOSIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMzkzOSJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJyZXNvdXJjZSI6IjEuMzM2NDc3NzkxMzI4MjUyZTE3IiwiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6dHJ1ZX0sInJlZmluZWRDb2FsIjp7ImJvdWdodCI6dHJ1ZX0sImNvbG9yZWRGaXJlIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsiY29hbCI6IjkuMDYyODExNzY3MjA3NTQ1ZTMzIiwidG90YWxDb2FsIjoiOS4wNjg5MjI4NzgzMTg1MzVlMzMiLCJhc2giOiIyLjY3NTI0MzQ3ODczMjE4OGUxNyIsImFjdGl2ZUZpcmVzIjoiMTA2MS44ODUzODU0NzU1Mjk4IiwiYnVpbGRGaXJlIjp7ImFtb3VudCI6IjEwNjEuODg1Mzg1NDc1NTI5OCJ9LCJhY3RpdmVCb25maXJlcyI6IjIwMDUwMyIsImJ1aWxkQm9uZmlyZSI6eyJhbW91bnQiOiIyMDA1MDMifSwiYWN0aXZlS2lsbnMiOiI2NzEiLCJidWlsZEtpbG4iOnsiYW1vdW50IjoiNjcxIn0sImFjdGl2ZURyaWxscyI6IjE2NSIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMTY1In0sIndhcm1lckN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50U21lbHRoZXIiOnsiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOmZhbHNlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0IjpmYWxzZX0sImhlYXRlZEN1dHRlcnMiOnsiYW1vdW50IjoiOTc5OCJ9LCJoZWF0ZWRQbGFudGVycyI6eyJhbW91bnQiOiI5Nzk4In0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6IjI1MzUifX0sIm1hc3RlcmVkIjp0cnVlfSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwODU0NTMxODcwODkxNjAwNSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIzMTk4In0sImFtb3VudE9mVGltZXNEb25lIjowLjc5MjAwMDAwMDU3OTc5NzR9LCJwbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMjI2NjQyNTE5MzA0MzIwOSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIzMTk4In0sImFtb3VudE9mVGltZXNEb25lIjowLjYyNDAwMDAwMDU4MTk1MX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxMTgzMzY4MDk4MTI3NjA3MyIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiI3Mzc5In0sImFtb3VudE9mVGltZXNEb25lIjowLjYxMjAwMDAwMDU3OTUwNjN9LCJoZWF0ZWRDdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAyMDcwNDIzOTgwMTM0NDYxNSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImJ1eWFibGUiOnsicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImFtb3VudCI6IjI3MCJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xODgwMDAwMDA1ODAwNzUyN30sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA3ODExMjk3NDg2MTkyNTUzIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMjcwIn0sImFtb3VudE9mVGltZXNEb25lIjowLjk0ODAwMDAwMDU3OTUxOX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc3NDM4MDUwODI5NjI4NTEiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiIxMzkifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzcyMDAwMDAwNTgwNjExNH0sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwOTE2MDE3MzQyMjk1MjExMSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjA1MjAwMDAwMDU4MDI1MDExNn0sImJvbmZpcmVFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNzM5MTM2MjY0NzI0MjQzOSIsInJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjU3NjAwMDAwMDU3NzUxNTR9LCJraWxuRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIxMDIifSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNDgyMDY5NzA3MjQ1NTQxNTUiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xNTIwMDAwMDA1Nzk1OTA3M30sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDg2MDM4OTYxMDQxMjI2NzYiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjYxMjAwMDAwMDAxMzU3MDZ9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMDAxMTk5ODg3MTU3MjczMiIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODU2MDAwMDAwMDkwNzE1OH0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAyOTQ3NDY0NzQwMDAxNTcxIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40ODgwMDAwMDA2MTM0Mzk1fSwibWluaW5nRHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwiaGVhdnlEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDE0MDMyNzMzOTA4OTE2MDA0IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTQwMDAwMDAwMzYwMzI4MiwiYm91Z2h0Ijp0cnVlfSwib2lsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDE4MzA4MTg1MjYxODc1NDk4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjA0MDAwMDAwMzU1NDYzODQsImJvdWdodCI6dHJ1ZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAxMzMxNTU5MjQ0MzM3NjE1NiIsImFtb3VudE9mVGltZXNEb25lIjowLjE5MjAwMDAwMDM1MzEzMjgsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDE0MDM1Mjg2Njk1NjI2OTExIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODQwMDAwMDAwMzY5MDg3NywiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAwMTgzMjY3NTMzMDUzMTk5NjUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41NDAwMDAwMDAzODQ4NzE3LCJib3VnaHQiOnRydWV9LCJwbGFzdGljRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA3MzExMjU4NDU5NjY2MDE1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTc2MDAwMDAwMzcyODc5MSwiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX0sIjgiOnsiZWFybmVkIjp0cnVlfSwiOSI6eyJlYXJuZWQiOnRydWV9LCIxMCI6eyJlYXJuZWQiOnRydWV9LCIxMSI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsIm1hc3RlcnkiOnsiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNDEzMTY1NDQyMTQxNzMzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjEuMDQ1OTE4OTA3MDM4ODY3NWUtMTEsImJvdWdodCI6dHJ1ZX0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDQxNzg1NTI0MDQ0NzY4NzEiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40MDgwMDAwMDAwMTI1MjEsImJvdWdodCI6dHJ1ZX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA0MjE1MDIxNzM5Mzc4MTU1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzk0MDAwMDAwMDA3NTM1OCwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxNTAzODI5ODkyODI3NDM1MiIsImFtb3VudE9mVGltZXNEb25lIjowLjMwMjAwMDAwMDA0NjQ2MiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjU5OTc3NjUwOTM1ODYwOSIsImFtb3VudE9mVGltZXNEb25lIjowLjcyNjAwMDAwMDA0OTc5MzksImJvdWdodCI6dHJ1ZX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjIzMzY2NzA0MzEyMDI4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTkyMDAwMDAwMDQ3Nzg5OSwiYm91Z2h0Ijp0cnVlfSwic21hbGxGaXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDI4NzMwNjA4NjYwMzAzNDE0IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODc2MDAwMDAwMDQ5MjAyOCwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE3MjczNjIwMzk4MTEyMiIsImFtb3VudE9mVGltZXNEb25lIjowLjI1ODAwMDAwMDA0OTg4OTksInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwia2lsbkVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxNTMzODU1Mjk4NTQwOTk4MSIsImFtb3VudE9mVGltZXNEb25lIjowLjY5NDAwMDAwMDA1MDAzOSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwODQyMDg2ODM0NzQ2MjA4NSIsImFtb3VudE9mVGltZXNEb25lIjowLjg4MDAwMDAwMDAwMDg4NTQsImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA1Mjk0MTE3NjQ3MDcyNTc3IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzA0MDAwMDAwMDAwOTMyODYsImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDM4NjI1MDk4MTkwNzU0MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40MzIwMDAwMDAwMDIyMzMyNiwiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImhlYXZ5RHJpbGxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwib2lsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJib3VnaHQiOnRydWV9LCJkeWVFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwicGxhc3RpY0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzNTMzNzA0NDcxMDYxNjA1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTQwMDAwMDAwMDAwNzkzNSwiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX0sIjgiOnsiZWFybmVkIjp0cnVlfSwiOSI6eyJlYXJuZWQiOnRydWV9LCIxMCI6eyJlYXJuZWQiOnRydWV9LCIxMSI6eyJlYXJuZWQiOnRydWV9fX19LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6IjguNTc5NDkxNjcwODU4MjQ2ZTEwMSIsInRvdGFsUGFwZXIiOiI4LjU3OTQ5MTk0MTY4MzAxM2UxMDEiLCJwYXBlckNvbnZlcnNpb24iOnsiZ2FpblJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkifSwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE4MSJ9LCJwbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE4MSJ9LCJleHBhbmRlcnNCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxODEifSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE4MSJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE4MSJ9LCJmZXJ0aWxpemVyQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTgxIn0sInNtYWxsRmlyZUJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjE4MSJ9LCJib25maXJlQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMTgxIn0sImtpbG5Cb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIxODEifSwicGFwZXJCb29rIjp7ImFtb3VudCI6IjEyIn0sImJveEJvb2siOnsiYW1vdW50IjoiMTQifSwiY2xvdGhCb29rIjp7ImFtb3VudCI6IjE4MSJ9LCJtaW5pbmdEcmlsbEJvb2siOnsiYW1vdW50IjowfSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjoiMTUyIn0sIm9pbEJvb2siOnsiYW1vdW50IjoiMTUyIn0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIxNTIifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiIxNTIifSwiZHllQm9vayI6eyJhbW91bnQiOjB9LCJwcmltYXJ5RHllQm9vayI6eyJhbW91bnQiOiIxODEifSwic2Vjb25kYXJ5RHllQm9vayI6eyJhbW91bnQiOiIxODEifSwicGxhc3RpY0Jvb2siOnsiYW1vdW50IjoiMTgxIn19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJ1cGdyYWRlczIiOnsiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJib29rVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwibWFzdGVyeSI6eyJwYXBlciI6IjMuMjM0ODcyNDA0NzQyMDQ5ZTIzIiwidG90YWxQYXBlciI6IjMuMjM0ODc1MzAxNTIyMjY3OGUyMyIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6IjQ3In0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6IjQ3In0sImtpbG5Cb29rIjp7ImFtb3VudCI6IjQ3In0sInBhcGVyQm9vayI6eyJhbW91bnQiOiI3In0sImJveEJvb2siOnsiYW1vdW50IjoiNyJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiNDcifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiIxIn0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6IjEifSwib2lsQm9vayI6eyJhbW91bnQiOiIxIn0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIxIn0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjowfSwicGxhc3RpY0Jvb2siOnsiYW1vdW50IjoiNDcifX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiMS4wMDI5MjExMzg4Nzk1NTMxZTg4IiwidG90YWxCb3hlcyI6IjEuMDEzMDg3ODAzNTIyNTc4OGU4OCIsImJveGVzQ29udmVyc2lvbiI6eyJiYXNlUmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJnYWluUmVzb3VyY2UiOjB9LCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJyZXNvdXJjZSI6MCwiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsicmVzb3VyY2UiOjAsImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjY3NCJ9LCJhc2hCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOjAsImFtb3VudCI6IjMwMyJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiIyMzQifX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMTY0In0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjExNSJ9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6Ijk4In19LCJtYXN0ZXJ5Ijp7ImJveGVzIjoiNi4wMTQ5MDk4Nzg1NzU0MjllMTYiLCJ0b3RhbEJveGVzIjoiNi4wMTQ5MTM1Mjc1NDAxMzFlMTYiLCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI0NyJ9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMzAifSwiY29hbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIyNSJ9fSwiYnV5YWJsZXMyIjp7Im9yZUJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH19fSwibWFzdGVyZWQiOnRydWV9LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiIxLjY5NzYwNDY2ODE1MTE2NWUzMCIsImJlc3RPcmUiOiIxLjkwNjY4ODY5NjE2NDc1MjdlMzAiLCJvcmVQcm9ncmVzcyI6IjAuMTM3Nzk3NDE3NjgwNjc2NjYiLCJtZXRhbCI6IjYuMTY1NjU5NTU4ODMyMTYyNWU1NyIsImJlc3RNZXRhbCI6IjYuMTY1NjU5NTU4ODMyMTYyNWU1NyIsInRvdGFsTWV0YWwiOiI2LjE4OTkzNDIwNjYyMDg3NGU1NyIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjI0MTYyNzAifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjI0MTYyNyJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiIzMzUzNzkifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsib3JlIjoiOTI3NTcyMTIwLjQ0MjYzNjUiLCJiZXN0T3JlIjoiMTk1MzMwOTAwNy4wNDQwOTgiLCJvcmVQcm9ncmVzcyI6IjAuNTMxMDMxMjY2MTM4MjM0NiIsIm1ldGFsIjoiMy42NTMyMjkxOTUxMTEwNGUxNiIsImJlc3RNZXRhbCI6IjMuNjUzMjI5MTk1MTExMDRlMTYiLCJ0b3RhbE1ldGFsIjoiMy42NTMyNTcwMzA2MzI0MDVlMTYiLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIyNzAifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjI3In0sImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjI0In19LCJtYXN0ZXJlZCI6dHJ1ZX0sImNsb3RoIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoIjoiMi40MDQ3MTIyOTgzNTczMjY0ZTE3IiwidG90YWxDbG90aCI6IjcuNTU0ODk3MDI4MDQzODYxZTE3Iiwid29vbCI6IjEuOTg1MTYxNjY5NDM2MzA1ZTE3Iiwic2hlZXAiOiIyLjAzMTY1MTU3ODUyMzYxN2UxNyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyMDQzOSJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiMTk5MDcifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiMjk5NzAifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjEsIm1hc3RlcnkiOnsiY2xvdGgiOiIxMTE0NTEiLCJ0b3RhbENsb3RoIjoiMTE4OTAxIiwid29vbCI6IjYyMzIwIiwic2hlZXAiOiI3NjQwMyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyNDgifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjMxMCJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI0MTQifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjEuODk0NzU3NTQ1MDA4MzQ0N2UyNCIsInRvdGFsT2lsIjoiNS4yNzk0NzA5ODE3NDc4MThlMjQiLCJkZXB0aCI6IjEwNDAxMyIsImRyaWxsUHJvZ3Jlc3MiOiIxLjc0NTc1NDgwOTE5NjIwNGU0NyIsImFjdGl2ZUhlYXZ5IjoiMTAzNCIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTAzNCJ9LCJhY3RpdmVIZWF2eTIiOiI0ODEiLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOiI0ODEifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTEwIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTEwIn0sImFjdGl2ZVB1bXAiOiIxMDQiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTA0In0sImFjdGl2ZUJ1cm5lciI6IjY1NCIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6IjY1NCJ9LCJhY3RpdmVTbWVsdGVyIjoiMzY4IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjM2OCJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOnRydWUsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjp0cnVlLCJyb3czVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7Im9pbCI6IjUwODA2MDY5MS44MzU4MzA2IiwidG90YWxPaWwiOiI1MTE0MTQ2NDEuODM1ODMwNiIsImRlcHRoIjoiMjMwOTMiLCJkcmlsbFByb2dyZXNzIjoiMTM1NTcyNTUyMzE2NC43ODEyIiwiYWN0aXZlSGVhdnkiOiIxMDMiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjEwMyJ9LCJhY3RpdmVIZWF2eTIiOiI0MSIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjQxIn0sImFjdGl2ZUV4dHJhY3RvciI6IjExIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlUHVtcCI6IjExIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjExIn0sImFjdGl2ZUJ1cm5lciI6IjI1IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMjUifSwiYWN0aXZlU21lbHRlciI6IjEyIiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjEyIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMy41NzAzNTU0NzkyOTMyNTNlMjEiLCJ0b3RhbFBsYXN0aWMiOiI0LjQ3NTgxODg1NDM1Njk1N2UyMSIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiNTQ0In0sImFjdGl2ZVJlZmluZXJ5IjoiNTQ0IiwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOnRydWV9LCJib3hUb29scyI6eyJib3VnaHQiOnRydWV9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOiIyODEwOTE2In0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiIyODEwOTE2In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMjgxMDkxNiJ9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm1hc3RlcnkiOnsicGxhc3RpYyI6IjE2NDAwNzAuNDUyMjMyOTEyIiwidG90YWxQbGFzdGljIjoiMTY2MTkxMC40NTIyMzI5MTIiLCJhY3RpdmVSZWZpbmVyeSI6IjQ2IiwiYnVpbGRSZWZpbmVyeSI6eyJhbW91bnQiOiI0NiJ9LCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImJveFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6IjY2MSJ9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjoiNjYxIn0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiNjYxIn19fSwibWFzdGVyZWQiOnRydWV9LCJkeWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImR5ZXMiOnsicmVkIjp7ImFtb3VudCI6Ijc2Mjc5ODMyNzU3Ljg5OTE5IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxMjE3In19LCJ5ZWxsb3ciOnsiYW1vdW50IjoiMTg4OTIyNDg3Mzg2LjcwOTc1IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxMTY1In19LCJibHVlIjp7ImFtb3VudCI6IjI1NzI2MjcyNTg4LjYxNjM5IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxMTE2In19LCJvcmFuZ2UiOnsiYW1vdW50IjoiNDE1NzYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjgxMCJ9fSwiZ3JlZW4iOnsiYW1vdW50IjoiMzIxOTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjY5OSJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjMwMzIwIiwiYnV5YWJsZSI6eyJhbW91bnQiOiI2ODEifX0sImJsYWNrIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiMjMwIn19LCJ3aGl0ZSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjIzMCJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1In19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNSJ9fSwiYmx1ZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTQifX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTIifX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNCJ9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI0In19fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIzMTI3NDY4LjIyOTc1OTUwMTgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNjI0ODQ1Ni4yMTU2NjA1NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI5Mzc2NDUxLjQzODk2MTQ0MyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEyNDk2MzI3LjM5NTk2NDYxNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxNTYyMzk4My4yMDc5NDI2MyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc4MDg4Mi45MTMyNTQxMiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjIxOTA3NDkzLjM5MDE1MzU0NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyNTAwNjQzNi4wMzM4ODIzMjciLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImZpcmVFbGZUcmFpbmluZyI6eyIyIjp7InN0YXRlIjp0cnVlLCJleHAiOjB9fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyODE5MzUwNy43OTA3MTA5ODIiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEwNDMwOTA0LjQ2MzY2NDMwNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm94RWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIxMTQ3MDIyNC41MDQ5ODIzNDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIzNzQ4OTM1NS4wNDcwMTA3NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiY29hbERyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0MDYyMzY4NS4wNDA5MTI3NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwibWV0YWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjUwMDQ2MDI3Ljk5OTYwOTU4IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjQ2ODYwMzcxLjU0ODQxMTg3NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNDM3Mzk3MzUuNjE1MTU0MzkiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImR5ZUVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTMxMjc0MDAuNjQ3NjM2MTUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjU2MzQyNzcwLjQ1NjgxNTUyIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19fSwiY3VycmVudFNob3duIjoiVGluc2VsIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6IjEwNDYifSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJmb2N1c011bHRpcGxpZXIiOiIxLjAwNjE1NzgzMjc4NzQ5ODciLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowLCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c011bHRpIjoiMS4xNDM1OTc3ODM1MjYyODk2IiwibWFzdGVyeSI6eyJlbGZUcmFpbmluZyI6eyJib25maXJlRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiYm94RWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXZ5RHJpbGxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJraWxuRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwibWV0YWxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJkeWVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwbGFzdGljRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiYWR2YW5jZWRVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJmb2N1c011bHRpIjoiMS4wMTI2OTg0NzU0MjAxMTg3IiwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sIndyYXBwaW5nUGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwid3JhcHBpbmdQYXBlciI6eyJjaHJpc3RtYXMiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI2NyJ9fSwicmFpbmJvdyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjQ4In19LCJqYXp6eSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjgzIn19LCJzdW5zaGluZSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjU3In19LCJvY2VhbiI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjUyIn19LCJiZWFjaCI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjU5In19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm1pbGVzdG9uZXMiOnsicHJpbWFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlCb29zdCI6eyJlYXJuZWQiOmZhbHNlfSwiYnV5TWF4UHJpbWFyeSI6eyJlYXJuZWQiOmZhbHNlfSwic2Vjb25kYXJ5Tm9SZXNldCI6eyJlYXJuZWQiOmZhbHNlfSwiYnV5TWF4U2Vjb25kYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJ1bmxvY2tEeWVFbGYiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsInVubG9ja0R5ZUVsZk1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fSwibGV0dGVycyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsZXR0ZXJzIjoiMS4zMDk0ODU0MTMwNTI2MzI2ZTU0IiwidG90YWxMZXR0ZXJzIjoiNi41NDc0MjcwNjUyNjMxNjNlNTQiLCJwcm9jZXNzaW5nUHJvZ3Jlc3MiOiIyLjc5MTQ5MzU1NjEwNTI3NTZlLTI4IiwiYnV5YWJsZXMiOnsibWV0YWxCdXlhYmxlIjp7ImFtb3VudCI6IjEyIn0sInBsYXN0aWNCdXlhYmxlIjp7ImFtb3VudCI6IjIzIn0sInBhcGVyQnV5YWJsZSI6eyJhbW91bnQiOiI0MyJ9fSwibWlsZXN0b25lcyI6eyJhdXRvU21lbHRpbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwibWluaW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwiaW5kdXN0cmlhbENydWNpYmxlTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJtYXN0ZXJ5Ijp7ImxldHRlcnMiOiIxMjU1ODAwNS41NzE1MTA4NSIsInRvdGFsTGV0dGVycyI6IjEyNTU4MDA1LjU3MTUxMDg1IiwiYnV5YWJsZXMiOnsibWV0YWxCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBhcGVyQnV5YWJsZSI6eyJhbW91bnQiOjB9fSwibWlsZXN0b25lcyI6eyJhdXRvU21lbHRpbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwibWluaW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwiaW5kdXN0cmlhbENydWNpYmxlTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJyaWJib24iOnsibWluaW1pemVkIjpmYWxzZSwicmliYm9uIjoiMTYiLCJtaWxlc3RvbmVzIjp7InNlY29uZGFyeUR5ZUVsZiI6eyJlYXJuZWQiOnRydWV9LCJkeWVCb29rIjp7ImVhcm5lZCI6dHJ1ZX19LCJyaWJib25Qcm9ncmVzcyI6MTAsImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ0b3lzIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoZXMiOiIxNTAwIiwid29vZGVuQmxvY2tzIjoiMjYzMS4wMDAwMDAwMDAwMDEiLCJ0cnVja3MiOiIyMTcwLjgxOTIiLCJ0b3RhbFRveXMiOiIyOTExNyIsImJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiMzQxIn0sIjEiOnsiYW1vdW50IjoiMS4wMDAwMDAwMDAwMDAwMTQyIn0sIjIiOnsiYW1vdW50IjoiMzc3In19LCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsibWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNCI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTYiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNyI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU4Ijp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZX0sImZhY3RvcnkiOnsibWluaW1pemVkIjpmYWxzZSwiY29tcG9uZW50cyI6eyItNXgtNSI6eyJ0aWNrc0RvbmUiOjEuMzE5NzY0MjYwNTU2NzA3NSwiZGlyZWN0aW9uIjoiTEVGVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi01eC00Ijp7InRpY2tzRG9uZSI6MC43ODE0OTg5MDEyNDU2NTUyLCJkaXJlY3Rpb24iOiJVUCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi0zeC01Ijp7InRpY2tzRG9uZSI6MS4zMTk0MzA0ODkwNTkxNDg4LCJkaXJlY3Rpb24iOiJVUCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjUwfSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjowfSwidHlwZSI6InRocmVhZCJ9LCItM3gtNCI6eyJ0aWNrc0RvbmUiOjAuNzgwNTM5OTQxODM2OCwiZGlyZWN0aW9uIjoiTEVGVCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjUwLCJwbGFzdGljIjoxNX0sIm91dHB1dFN0b2NrIjp7InN0dWZmaW5nIjowfSwidHlwZSI6InN0dWZmaW5nIn0sIi00eC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC01Ijp7InRpY2tzRG9uZSI6Mi40NTExMTA2MzU3NTEzNTIsImRpcmVjdGlvbiI6IlVQIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjowLCJ0aHJlYWQiOjQ4fSwib3V0cHV0U3RvY2siOnsiYnV0dG9ucyI6MH0sInR5cGUiOiJidXR0b24ifSwiMXgtNCI6eyJ0aWNrc0RvbmUiOjAuODUwMTIwMjk2ODc1ODA3NywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjF9LCJvdXRwdXRTdG9jayI6eyJidXR0b25zIjoxfSwidHlwZSI6ImJ1dHRvbiJ9LCIzeC01Ijp7InRpY2tzRG9uZSI6MC40NDEyNTY1ODg1MDk4NzU4LCJkaXJlY3Rpb24iOiJVUCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjEwMzM1fSwidHlwZSI6InBsYXN0aWMifSwiMngtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtNCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMXgtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC00Ijp7InRpY2tzRG9uZSI6MC43ODIxNzk3NTc0MTMyMTc5LCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJ0aHJlYWQiOjQ5NCwic3R1ZmZpbmciOjU3OSwiZHllIjo0ODIyLCJidXR0b25zIjo0MTR9LCJvdXRwdXRTdG9jayI6eyJiZWFyIjowfSwidHlwZSI6ImJlYXIifSwiLTJ4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgtMiI6eyJ0aWNrc0RvbmUiOjAuNDM5NjY0Mjg5MTk3MTM5ODUsImRpcmVjdGlvbiI6IkRPV04iLCJvdXRwdXRTdG9jayI6eyJkeWUiOjk2Mzh9LCJ0eXBlIjoiZHllIn0sIi0xeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiNHgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTIiOnsidGlja3NEb25lIjoxLjgwMjYwODk3MTg5ODg4MzEsImRpcmVjdGlvbiI6IkRPV04iLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjF9LCJvdXRwdXRTdG9jayI6eyJidWNrZXQiOjB9LCJ0eXBlIjoiYnVja2V0In0sIjV4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4MCI6eyJ0aWNrc0RvbmUiOjAuNzQzMzU1NzU0MjEyODU5NywiZGlyZWN0aW9uIjoiRE9XTiIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjc5MDF9LCJ0eXBlIjoicGxhc3RpYyJ9LCIzeDAiOnsidGlja3NEb25lIjowLjA4ODY4ODI2ODIwOTA5MjE1LCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjowfSwib3V0cHV0U3RvY2siOnsic2hvdmVsIjowfSwidHlwZSI6InNob3ZlbCJ9LCI0eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCI0eC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMiI6eyJ0aWNrc0RvbmUiOjIuMTAyNjIzMzI0MTA3NjA3LCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJidWNrZXQiOjI0Nywic2hvdmVsIjowfSwib3V0cHV0U3RvY2siOnsic2hvdmVsQnVja2V0IjowfSwidHlwZSI6ImJ1Y2tldFNob3ZlbCJ9LCItM3gtMSI6eyJ0aWNrc0RvbmUiOjAuNDY5NTI0MDc2NTcwODY2MTQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6NzI2Nn0sInR5cGUiOiJwbGFzdGljIn0sIi0xeC0xIjp7InRpY2tzRG9uZSI6MS43NzA3Mzg1NTA2NTcwNTYzLCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjE0NzgsInBsYXN0aWMiOjB9LCJvdXRwdXRTdG9jayI6eyJjaXJjdWl0Qm9hcmQiOjB9LCJ0eXBlIjoiY2lyY3VpdEJvYXJkIn0sIjF4LTEiOnsidGlja3NEb25lIjoxLjMxMDI0NjQzMDM4NDcyMDYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiLTF4MSI6eyJ0aWNrc0RvbmUiOjEuMTgyODg1MDk1NTg2MjM1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjEwNTEsInBsYXN0aWMiOjIsImNpcmN1aXRCb2FyZCI6MTI2MH0sIm91dHB1dFN0b2NrIjp7ImNvbnNvbGUiOjB9LCJ0eXBlIjoiY29uc29sZSJ9LCItMngtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNHgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi01eC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgwIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngwIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMHgtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgwIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeDAiOnsidGlja3NEb25lIjowLjc0NTMzODg0NzA1NDcyMTEsImRpcmVjdGlvbiI6IlVQIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiLTV4MyI6eyJ0aWNrc0RvbmUiOjAuNzc5NzI4MDkzNTA3NjkyOSwiZGlyZWN0aW9uIjoiVVAiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNXg0Ijp7InRpY2tzRG9uZSI6MS4zMTc0NjMwNDY3Mjc0NzY2LCJkaXJlY3Rpb24iOiJMRUZUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTV4NSI6eyJ0aWNrc0RvbmUiOjAuNzc4NjQzNzU2NDc5ODY2MywiZGlyZWN0aW9uIjoiRE9XTiIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi01eDIiOnsidGlja3NEb25lIjoxLjMxNzEzMTc3MTM5MTEzMzUsImRpcmVjdGlvbiI6IkRPV04iLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNXgxIjp7InRpY2tzRG9uZSI6MS4zMDg3MTIyNjM5MjQ2MzEsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTN4NCI6eyJ0aWNrc0RvbmUiOjAuNzQ0NzkwMDg2NzQ4NTg5LCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MzI3fSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjoxNTg0fSwidHlwZSI6InRocmVhZCJ9LCItM3g1Ijp7InRpY2tzRG9uZSI6MC40NzAyNzA0NjE5MDUxOTAwNiwiZGlyZWN0aW9uIjoiRE9XTiIsImlucHV0U3RvY2siOnsiY2xvdGgiOjE3MH0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiLTF4NSI6eyJ0aWNrc0RvbmUiOjAuNzg2OTUwMDAxOTgzMTIwNiwiZGlyZWN0aW9uIjoiVVAiLCJpbnB1dFN0b2NrIjp7InRocmVhZCI6MywiY2xvdGgiOjE4NzIsImR5ZSI6MjI2OH0sIm91dHB1dFN0b2NrIjp7ImNsb3RoZXMiOjB9LCJ0eXBlIjoiY2xvdGhlcyJ9LCItMngxIjp7InRpY2tzRG9uZSI6MC43ODM0MjQyNzcyNjk3MzQ2LCJkaXJlY3Rpb24iOiJMRUZUIiwib3V0cHV0U3RvY2siOnsiZHllIjozODA2fSwidHlwZSI6ImR5ZSJ9LCItNHg1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4NSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eDQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMng0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNHgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eDEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItM3gxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItM3gyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItM3gzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiM3g1Ijp7InRpY2tzRG9uZSI6MC41NTEwNjI5ODU4Mzk5MTQ4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIjF4NSI6eyJ0aWNrc0RvbmUiOjAuNTQyMTYwMDA3OTM5NjQ5MSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjo2NX0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiMHg1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeDUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn19LCJlbGZCdXlhYmxlcyI6eyJjbG90aGVzQnV5YWJsZSI6eyJhbW91bnQiOiI1In0sImJsb2Nrc0J1eWFibGUiOnsiYW1vdW50IjoiOCJ9LCJ0cnVja3NCdXlhYmxlIjp7ImFtb3VudCI6IjYifSwiYmVhcnNCdXlhYmxlIjp7InJlc291cmNlIjoiODU1OCIsImFtb3VudCI6IjUifSwiYnVja2V0QnV5YWJsZSI6eyJyZXNvdXJjZSI6IjMxMjAiLCJhbW91bnQiOiI0In0sImNvbnNvbGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjI3ODEiLCJhbW91bnQiOiI0In19LCJ0YWJzIjp7InNlbGVjdGVkIjoiZGFzaGJvYXJkIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJiZWFycyI6Ijg1NTgiLCJidWNrZXRBbmRTaG92ZWxzIjoiMzEyMCIsImNvbnNvbGVzIjoiMjc4MSIsImZhY3RvcnlCdXlhYmxlcyI6eyJleHBhbmRGYWN0b3J5Ijp7ImFtb3VudCI6IjQifSwib2lsRnVlbCI6eyJhbW91bnQiOiIyIn0sImNhcnJ5VG95cyI6eyJhbW91bnQiOiI0In19LCJ1cGdyYWRlcyI6eyIwIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjEiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9fSwiMiI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX19fX19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjpmYWxzZX0=","./../../saves/Day 20 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJmYWN0b3J5Il0sInRpbWUiOjE2NzE4NTg5Mjc0NzksImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjoxNDAxMTIuOTY5MDAwMDQ1MDYsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNSIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjEiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MjEsImlzTWFzdGVyeSI6ZmFsc2V9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiMS4xMjQ5Nzg5NTE3MjgxNDc0ZTkxIiwidG90YWxMb2dzIjoiMS4xMjU5NzkwNTI3MTQxNTA3ZTkxIiwic2FwbGluZ3MiOiIyLjQ3NTE5NzM3MjU1NDMwNWUzMSIsInJvdzFVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIyIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiNjE0MzIyOSJ9LCIxIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI2MzIyNjE1In0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjE2MDUzNzYwIn19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjAwMDAwMTkwNzM0ODYzMjgxMjQ5OTQiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY3JlYXRlZFNhcGxpbmdzIjoiMi43NDYyNzM5NDE3MjQ5NjRlMzEiLCJtYXN0ZXJ5Ijp7ImxvZ3MiOiIxLjgwODE1NDQ5NzEwMzA2MzllMjciLCJ0b3RhbExvZ3MiOiIxLjgwODE1NDY5ODE4MDYxMWUyNyIsInNhcGxpbmdzIjoiMzM4OTMwMDQ2MTc4NTc2NSIsImNyZWF0ZWRTYXBsaW5ncyI6IjMzODkzMDA3NDYyNjcwMTEuNSIsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjE0NzIyNSJ9LCIxIjp7ImFtb3VudCI6IjE0NzIyNSJ9LCIyIjp7ImFtb3VudCI6IjMwNjYxMyJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTQ2MCIsImZvdW5kYXRpb25Db252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoxMDB9LCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsIm1hc3RlcnkiOnsiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY29hbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjb2FsIjoiOS4yNDg5OTQwMDc4MjkxNjVlMTU4IiwidG90YWxDb2FsIjoiOS4yNDg5OTQwMDc4MjkxNjVlMTU4IiwiYXNoIjoiNC4xMDMwNzUyNDUzMzA0NjRlMTE5IiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiMS41MzU5NDg3MjE0MTQ4NzA0ZTI2IiwiYnVpbGRCb25maXJlIjp7InJlc291cmNlIjoiMzAxNyIsImFtb3VudCI6IjEuNTM1OTQ4NzIxNDE0ODcwNGUyNiJ9LCJhY3RpdmVLaWxucyI6IjgwNzkiLCJidWlsZEtpbG4iOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjgwNzkifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiNTQ1NjQwODQ2LjE1MzM1OTkiLCJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7InJlc291cmNlIjoiMzAxNyIsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjExODE3MzA5MDA1MTgyIn0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiMTE4MTczMDkwMDUxODIifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImFtb3VudCI6IjU2Mjg0OTMzNDE5OTA4NiJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYWN0aXZlRHJpbGxzIjoiNDU0MSIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiNDU0MSJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0Ijp0cnVlfSwicmVmaW5lZENvYWwiOnsiYm91Z2h0Ijp0cnVlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwibWFzdGVyeSI6eyJjb2FsIjoiMS4yNjI3MzMwNDU5NjIyMjIxZTM1IiwidG90YWxDb2FsIjoiMS4yNjI3ODQxNTcwNzMzMjU0ZTM1IiwiYXNoIjoiNi4xODY4OTY0MDQ0MjAyMzRlMTgiLCJhY3RpdmVGaXJlcyI6IjE0ODAxLjQ1NjI3NjEzMjUyMSIsImJ1aWxkRmlyZSI6eyJhbW91bnQiOiIxNDgwMS40NTYyNzYxMzI1MjEifSwiYWN0aXZlQm9uZmlyZXMiOiIyMTQ1OTciLCJidWlsZEJvbmZpcmUiOnsiYW1vdW50IjoiMjE0NTk3In0sImFjdGl2ZUtpbG5zIjoiMTAwMyIsImJ1aWxkS2lsbiI6eyJhbW91bnQiOiIxMDAzIn0sImFjdGl2ZURyaWxscyI6IjE0MSIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMTY3In0sIndhcm1lckN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50U21lbHRoZXIiOnsiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOmZhbHNlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0IjpmYWxzZX0sImhlYXRlZEN1dHRlcnMiOnsiYW1vdW50IjoiMTIwNzEifSwiaGVhdGVkUGxhbnRlcnMiOnsiYW1vdW50IjoiMTIwNzEifSwibW9yZUZlcnRpbGl6ZXIiOnsiYW1vdW50IjoiMzU1NyJ9fSwibWFzdGVyZWQiOnRydWV9LCJlbHZlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU1MjQ5NTExMTI1MTU0MjgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODM2MDAwMDAxNjM3NTM2Nn0sInBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDk1MTI3MDE0ODU0Mjk1OTgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjM2MDAwMDAxNjM1MzUzODR9LCJleHBhbmRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTg0MTAifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDg5MDE1MTM1NTk5MjQwNzkiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODY4MDAwMDAxNjM2Nzc5OX0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwODc5NTkwMjAyODMxNTQyOCIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NzYwMDAwMDE2MzMzMTY1N30sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiIzNjMifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc4OTEwMjM4Njg1NjMyNDYiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTg0MDAwMDAxNjQ0MTc3OH0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYW1vdW50IjoiMjU1In0sImJ1eVByb2dyZXNzIjoiMC4wMDEwNDgxMTUwNjk1NTMwNzM5IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjgwNDAwMDAwMTY0MTcwMzl9LCJzbWFsbEZpcmVFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMzAxNyJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA1NTA5MTgyNzMwMDIyMzYzIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjcyMDAwMDAwMTYzOTE0Mjh9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIzMDE3IiwiYW1vdW50IjoiNDEwIn0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDY1MTE2NDk5MjA0ODU1NzEiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTQ0MDAwMDAxNjQ5MTI1NH0sImtpbG5FbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTQ0In0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTExOTY0MTY4OTA2Njk4MTYiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjkyMDAwMDAxNjUwMTczMTV9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA5NjAxNzMxNjAxNjcxMzU0IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMDgwMDAwMDAwMDMzMzIzfSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDUwMTk4MDk5MDU5NzkzMDU1IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wMjgwMDAwMDA1Mzk3MTYyOTd9LCJjbG90aEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNDMzMjg2MDcyMTc5NzM5MzYiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjIzNjAwMDAwMTkwMDQ1MDIzfSwibWluaW5nRHJpbGxFbGYiOnsidG9nZ2xlIjpmYWxzZSwiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwiaGVhdnlEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA0OTYzMzk3MTIwNjY0MTgxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDcyMDAwMDAwNDU1OTAxMTYsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDAwNzUzMTY2NDAyOTExNDUzOCIsImFtb3VudE9mVGltZXNEb25lIjowLjg0ODAwMDAwMDQ1Mzg5NzIsImJvdWdodCI6dHJ1ZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA1Mzc5NjA1MTcxNTE0OTIzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjkyMDAwMDAwNDQ5ODE3OCwiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU4NDM5NjIzNTAwMzcyNTciLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xMTYwMDAwMDA0NjQ4NjUxNCwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA3MzUxNTE3OTExMDc2MjcyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzc2MDAwMDAxNDU2NTEwOCwiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMTQ1NTM0NzM0MjQzNTQzNjgiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zNTYwMDAwMDE0NDUxNjAzLCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE0MzYxODE0MTQ4ODg4NDcyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDM0MDAwMDAwMDI0MTIyMiwiYm91Z2h0Ijp0cnVlfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU5MTQ2ODEyOTI5ODYwNDMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42MTAwMDAwMDAwMjQyNjgsImJvdWdodCI6dHJ1ZX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzMTQ4NjIyMDAxMzQ3MDU4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzkwMDAwMDAwMDI1MDI2MiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzMDA1MDA3Mjc1NzEwNzg0NiIsImFtb3VudE9mVGltZXNEb25lIjowLjEyNDAwMDAwMDAyNzU2NjA2LCJib3VnaHQiOnRydWV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMDI0ODIxMzI4NDg2MzM2NjEzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODUyMDAwMDAwMDI3NzIzOSwiYm91Z2h0Ijp0cnVlfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMDgxNTAyMTIxNDkxNjk1ODMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41NzYwMDAwMDAwMjc4ODU4LCJib3VnaHQiOnRydWV9LCJzbWFsbEZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjIwMDM1MTgwMjE1NDk1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTMyMDAwMDAwMDE5Mzg3NSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDEzMDY0OTU0NzY3MDQ1MTQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43NjQwMDAwMDAwMTkzNTI4LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTk3ODg3NzcxMzM4ODM2NiIsImFtb3VudE9mVGltZXNEb25lIjowLjI5MjAwMDAwMDAxOTM4ODc1LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDc4MTcwMTIyMzYxOTY1MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yMDgwMDAwMDAwMDQ1NDQxLCJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwOTU1MTMxMTQzMzczMDAxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDAwMDAwMDAwMDA0Njg0NiwiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjg5ODE3OTYwNTUxMDk4MjQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44NzYwMDAwMDAwMTQzOTUsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJoZWF2eURyaWxsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjE3MjcyNzI3MjcyODYxMjYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NTYwMDAwMDAwMDAyMDY5LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjY0NTg4NDY5NzU5NzI5MzYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NDAwMDAwMDAwMTQ0MjM1LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiNS44MzQ1MjE1NzM4NzYyODVlMTExIiwidG90YWxQYXBlciI6IjUuODM0NTIxNTczODc3NDNlMTExIiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE4OSJ9LCJwbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxODkifSwiZXhwYW5kZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE4OSJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE4OSJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxODkifSwiZmVydGlsaXplckJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxODkifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE4OSJ9LCJib25maXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE4OSJ9LCJraWxuQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE4OSJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiMTIifSwiYm94Qm9vayI6eyJhbW91bnQiOiIxNCJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiMTg5In0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxNjEifSwib2lsQm9vayI6eyJhbW91bnQiOiIxNjEifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjE2MSJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjE2MSJ9LCJkeWVCb29rIjp7ImFtb3VudCI6MH0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6IjE4OSJ9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6IjE4OSJ9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiIxODkifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsicGFwZXIiOiIxLjQ5MjQwOTQ2MTU4ODE1N2UyOCIsInRvdGFsUGFwZXIiOiIxLjQ5MjQwOTQ2MTU4ODI3OWUyOCIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6IjU5In0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6IjU5In0sImtpbG5Cb29rIjp7ImFtb3VudCI6IjU5In0sInBhcGVyQm9vayI6eyJhbW91bnQiOiI4In0sImJveEJvb2siOnsiYW1vdW50IjoiOCJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiNTkifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiIxIn0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6IjEifSwib2lsQm9vayI6eyJhbW91bnQiOiIxIn0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIxIn0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjowfSwicGxhc3RpY0Jvb2siOnsiYW1vdW50IjoiNTkifX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiOS44NzMwODgyMDA2MDQzNjhlOTYiLCJ0b3RhbEJveGVzIjoiMS4wODgzMTg5MjEwNzIzNjg1ZTk3IiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMifSwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiI3MzkifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiIzMzQifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiMjU4In19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjE4NCJ9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxMzEifSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxMTIifX0sIm1hc3RlcnkiOnsiYm94ZXMiOiIxLjk1NzA1MjEzOTIxNDc4OWUyMCIsInRvdGFsQm94ZXMiOiIxLjk1NzA1MjEzOTQwNDg3ZTIwIiwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3czVXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNjEifSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjQwIn0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMzMifX0sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwibWV0YWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9fX0sIm1hc3RlcmVkIjp0cnVlLCJidXlhYmxlczMiOnsicHJlc2VudEJ1eWFibGUiOnsiYW1vdW50IjoiMzQifX19LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiIxLjY4NDc0OTU5NjE5MDExMjRlMzQiLCJiZXN0T3JlIjoiMi4xNzg4OTUzODg2NzI3NTFlMzQiLCJvcmVQcm9ncmVzcyI6IjAuMjM4NTExMDE4MzAzOTU1MTYiLCJtZXRhbCI6IjMuMzg5NDU5NjQ5NDA1MTQxN2U2NCIsImJlc3RNZXRhbCI6IjMuMzg5NDU5NjQ5NDA1MTQxN2U2NCIsInRvdGFsTWV0YWwiOiIzLjM4OTQ1OTY1NDM0ODQ2MmU2NCIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjQyNjMwNDYifSwiaW5kdXN0cmlhbENydWNpYmxlIjp7ImFtb3VudCI6IjM2OTkzMSJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiI0ODU1ODAifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsib3JlIjoiMzQxMDQzNjgxNS43MjE3MTIiLCJiZXN0T3JlIjoiMzgyODQzODY3NC4wMTIzODciLCJvcmVQcm9ncmVzcyI6IjAuMTE2NzgzMDY1MjIxNjM2NCIsIm1ldGFsIjoiMS4wNzk1MDI0NTk3MzE5NTg1ZTE3IiwiYmVzdE1ldGFsIjoiMS4wNzk1MDI0NTk3MzE5NTg1ZTE3IiwidG90YWxNZXRhbCI6IjEuMDgwMjUzNDI2Mzk1NDc3M2UxNyIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjI3OSJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMjgifSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMjUifX0sIm1hc3RlcmVkIjp0cnVlfSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiIxLjExMDcxNDM1OTM3NjA5MDZlMTkiLCJ0b3RhbENsb3RoIjoiMS4xMzE4NDM2NDU3NDk2OGUxOSIsIndvb2wiOiI3LjU0MTkxNTc3MjI2Nzg2M2UxOCIsInNoZWVwIjoiNy44MDEwOTgyNDE2Mjg1OWUxOCIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyNjY0NyJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiMjU5MjcifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiMzg4MTEifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjEsIm1hc3RlcnkiOnsiY2xvdGgiOiIxMDEwMTA5MDQiLCJ0b3RhbENsb3RoIjoiMTAxMDE4MzU0Iiwid29vbCI6IjY1MDY0MDc4Iiwic2hlZXAiOiI2MTMwNDQwNyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIzOTUifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjQyOSJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI2MzQifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjMuNTI0MTA4NDE2MjgyMTI2NmUyNSIsInRvdGFsT2lsIjoiNC42MzkxNzEzODk4MjA4MDNlMjUiLCJkZXB0aCI6IjEwOTE4NCIsImRyaWxsUHJvZ3Jlc3MiOiI4LjEzMzMxOTA3MjY2MTc5MWU0OSIsImFjdGl2ZUhlYXZ5IjoiMTE5NSIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTE5NSJ9LCJhY3RpdmVIZWF2eTIiOiI1NTYiLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOiI1NTYifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTI3IiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTI3In0sImFjdGl2ZVB1bXAiOiIxMjAiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTIwIn0sImFjdGl2ZUJ1cm5lciI6Ijc0NCIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6Ijc0NCJ9LCJhY3RpdmVTbWVsdGVyIjoiMzk2IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjM5NiJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOmZhbHNlLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjpmYWxzZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsib2lsIjoiMTEzNzI2NDY3My4wNTQ1MDE4IiwidG90YWxPaWwiOiIxMTQwNjE4NjIzLjA1NDUwMjIiLCJkZXB0aCI6IjIzNjQyIiwiZHJpbGxQcm9ncmVzcyI6IjQ0MDE5NzM2NDM2NjUuOTYzIiwiYWN0aXZlSGVhdnkiOiIxMDQiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjEwNCJ9LCJhY3RpdmVIZWF2eTIiOiI0MyIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjQzIn0sImFjdGl2ZUV4dHJhY3RvciI6IjExIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlUHVtcCI6IjExIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjExIn0sImFjdGl2ZUJ1cm5lciI6IjI2IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMjYifSwiYWN0aXZlU21lbHRlciI6IjEzIiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjEzIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMi41NTE2NDkwODczNzQ1MTg2ZTIyIiwidG90YWxQbGFzdGljIjoiMi41NTgxMzIzNTQ4NDU1ODllMjIiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjU2NSJ9LCJhY3RpdmVSZWZpbmVyeSI6IjU2NSIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiNDM5Nzg1MSJ9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjoiNDM5Nzg1MSJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjQzOTc4NTEifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJtYXN0ZXJ5Ijp7InBsYXN0aWMiOiI0NDU3MDk0LjQ1NzIwOTMxOSIsInRvdGFsUGxhc3RpYyI6IjQ0Nzg5MzQuNDU3MjA5MzI5IiwiYWN0aXZlUmVmaW5lcnkiOiI3OCIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiNzgifSwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOnRydWV9LCJib3hUb29scyI6eyJib3VnaHQiOnRydWV9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOiIxMzE2In0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiIxMzE2In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMTMxNiJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOiIyODI0MDIyOTk0MzEuNTgwNDQiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1MzcifX0sInllbGxvdyI6eyJhbW91bnQiOiIxNTMwNDQxMDAyODkuNzg3OTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE0NzIifX0sImJsdWUiOnsiYW1vdW50IjoiMjAxMDkyMjU0OTkuNzgyNDc1IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxNDEwIn19LCJvcmFuZ2UiOnsiYW1vdW50IjoiNDQ1MTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjkwMSJ9fSwiZ3JlZW4iOnsiYW1vdW50IjoiMzM4MDQiLCJidXlhYmxlIjp7ImFtb3VudCI6Ijc3NiJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjMyMjc2IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI3NTcifX0sImJsYWNrIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiMjkwIn19LCJ3aGl0ZSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjI5MCJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnsiMCI6ZmFsc2V9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjI1In19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiOCJ9fSwiYmx1ZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTcifX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMjEifX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiOCJ9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI4In19fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMzEyODM1MS4yNzQwNDMzNzg0IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJwbGFudGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI2MjY0NjA0LjUzNTU0ODUyNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI5MzcyMDcyLjgyNjc2MTQ1NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEyNDk2NjgzLjYzOTEwMzk4NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMTU2MzgzMzguNDk5MTYxMDIyIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjE4NzQ0MzY4LjY1Mzk4MDE2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjE4NjgxNzguNTYwMzQ3Njk1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib25maXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjI0OTkyOTgwLjcyMzg1NzEwNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwia2lsbkVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyODExNjI0OS4yMTIwNDAyNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGFwZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTA0Mzc2NDcuMjc3NDc0NTYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImJveEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMTQ1NjM4Ny43MzQ3MjEwNDgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiIzNzU2Mzk3Ni40MjAzMjAwODYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0MDYyOTE4NS42MjQ5NjA3MSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwibWV0YWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjQ5OTg1ODA0LjE5NDgwMzQ0IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNDY4NjMxMzYuMTAzNTkwMTE2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF2eURyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQzNzM2NDMzLjM3MTc4NDI3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJkeWVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNTM0MzY3MTcuODcxNDcyNjA1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJwbGFzdGljRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI1NjUyMzc4MC4xMjE2NzY4MjUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX19LCJjdXJyZW50U2hvd24iOiJTdGFyIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6IjIyOTQifSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJmb2N1c011bHRpcGxpZXIiOiIxLjE2MTYzMDkyMDY4MDI5MTUiLCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowLCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c011bHRpIjoiMi43NTIyNDQ1NzkzOTcxMTk4IiwibWFzdGVyeSI6eyJlbGZUcmFpbmluZyI6eyJib25maXJlRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiYm94RWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY2xvdGhFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXZ5RHJpbGxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJraWxuRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwibWV0YWxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJvaWxFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJkeWVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwbGFzdGljRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fX0sInRlYWNoaW5nIjp7ImJvdWdodCI6ZmFsc2V9LCJzY2hvb2xzIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbXMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiYWR2YW5jZWRVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ1cGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwidXBncmFkZXMyIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJmb2N1c011bHRpIjoiMS4xNjk2NDkwNTMyMDIxNzk3IiwiZm9jdXNUYXJnZXRzIjp7fSwiZm9jdXNDb29sZG93biI6MCwiZm9jdXNUaW1lIjowfX0sIndyYXBwaW5nUGFwZXIiOnsibWluaW1pemVkIjpmYWxzZSwid3JhcHBpbmdQYXBlciI6eyJjaHJpc3RtYXMiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI3MCJ9fSwicmFpbmJvdyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjUwIn19LCJqYXp6eSI6eyJidXlhYmxlIjp7ImFtb3VudCI6Ijg2In19LCJzdW5zaGluZSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjYwIn19LCJvY2VhbiI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjU1In19LCJiZWFjaCI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjYyIn19fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm1pbGVzdG9uZXMiOnsicHJpbWFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlCb29zdCI6eyJlYXJuZWQiOmZhbHNlfSwiYnV5TWF4UHJpbWFyeSI6eyJlYXJuZWQiOmZhbHNlfSwic2Vjb25kYXJ5Tm9SZXNldCI6eyJlYXJuZWQiOmZhbHNlfSwiYnV5TWF4U2Vjb25kYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJ1bmxvY2tEeWVFbGYiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsInVubG9ja0R5ZUVsZk1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fSwibGV0dGVycyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsZXR0ZXJzIjoiODAwMDAwMDAwMCIsInRvdGFsTGV0dGVycyI6IjMuNTU2MjYyMzk2OTI4MTgzNWUyNDg4IiwicHJvY2Vzc2luZ1Byb2dyZXNzIjoiMi4xMjExMDk1MTY2NjgzMTRlLTEyNDUiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjoiMjMifSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjoiMzgifSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6Ijg2In19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJtYXN0ZXJ5Ijp7ImxldHRlcnMiOiIxMjM3Mjk4LjEwMDYyNTA0MzMiLCJ0b3RhbExldHRlcnMiOiIxMjM3Mjk4LjEwMDYyNTA0MzMiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjowfSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6MH19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sInJpYmJvbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJyaWJib24iOiI5NSIsIm1pbGVzdG9uZXMiOnsic2Vjb25kYXJ5RHllRWxmIjp7ImVhcm5lZCI6dHJ1ZX0sImR5ZUJvb2siOnsiZWFybmVkIjp0cnVlfX0sInJpYmJvblByb2dyZXNzIjoxMCwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInRveXMiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGhlcyI6IjI2MTc1Mi4zMjE3OTQwOTYiLCJ3b29kZW5CbG9ja3MiOiI4MjM3NjMuNTQ2ODk5OTAwMSIsInRydWNrcyI6IjEzMTA5OC40MTA3NTEzMTk5MyIsInRvdGFsVG95cyI6IjM4NDY5MjIuNDg1MzU2NzMzIiwiYnV5YWJsZXMiOnsiMCI6eyJhbW91bnQiOiI3MjkifSwiMSI6eyJhbW91bnQiOiIzMTkifSwiMiI6eyJhbW91bnQiOiIzOTI5In19LCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsibWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNCI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTYiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNyI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU4Ijp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZX0sImZhY3RvcnkiOnsibWluaW1pemVkIjpmYWxzZSwiY29tcG9uZW50cyI6eyItNHgtNiI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMzI5OTIsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJ3b29kIjo1MX0sIm91dHB1dFN0b2NrIjp7InBsYW5rIjoxfSwidHlwZSI6InBsYW5rIn0sIi0yeC02Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAzMjk5MiwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYW5rIjoyfSwib3V0cHV0U3RvY2siOnsiYm94IjoxfSwidHlwZSI6ImJveE1ha2VyIn0sIi01eC02Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtNiI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMzQ0MTMsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsid29vZCI6MH0sInR5cGUiOiJ3b29kIn0sIi0yeC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNHgtNCI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMzQ0MTMsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiZHllIjozfSwidHlwZSI6ImR5ZSJ9LCItMngtNCI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMzU0NzksImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJkeWUiOjEwMDgsInBsYXN0aWMiOjYwMCwiY2xvdGgiOjEyMiwiYm94IjozMDN9LCJ0eXBlIjoicHJlc2VudCJ9LCIweC00Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAzMjk5MiwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjozfSwidHlwZSI6InBsYXN0aWMifSwiLTJ4LTIiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDMyOTkyLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi0yeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTV4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgtNCI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMzE1NzEsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsid29vZCI6MH0sInR5cGUiOiJ3b29kIn0sIi01eDQiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDI1ODg3LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjUsInBsYXN0aWMiOjY1NDgsImNpcmN1aXRCb2FyZCI6NjR9LCJvdXRwdXRTdG9jayI6eyJjb25zb2xlIjowfSwidHlwZSI6ImNvbnNvbGUifSwiLTV4MiI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjU4ODcsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJtZXRhbCI6MTMsInBsYXN0aWMiOjE5Nzc0fSwib3V0cHV0U3RvY2siOnsiY2lyY3VpdEJvYXJkIjowfSwidHlwZSI6ImNpcmN1aXRCb2FyZCJ9LCItNXgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNngxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4MSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4MSI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjczMDgsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6M30sInR5cGUiOiJwbGFzdGljIn0sIi03eDEiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDI3MzA4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIi02eDQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItNHg0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCItM3g0Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyNTg4NywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjozfSwidHlwZSI6InBsYXN0aWMifSwiLTd4NCI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjU4ODcsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiMXgzIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyNTg4NywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJ3b29kIjowfSwidHlwZSI6Indvb2QifSwiMngzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDMiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDI1ODg3LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsid29vZCI6NX0sIm91dHB1dFN0b2NrIjp7InBsYW5rIjoxfSwidHlwZSI6InBsYW5rIn0sIjR4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4MyI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjQ0NjYsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFuayI6NjM2OX0sIm91dHB1dFN0b2NrIjp7ImJsb2NrIjowfSwidHlwZSI6ImJsb2NrcyJ9LCIyeDYiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE0NjA3LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjIsIndoZWVsIjoxMTUyMn0sIm91dHB1dFN0b2NrIjp7InRydWNrcyI6MH0sInR5cGUiOiJ0cnVja3MifSwiMHg2Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyNDQ2NiwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjE4NTk1LCJtZXRhbCI6Mjl9LCJvdXRwdXRTdG9jayI6eyJ3aGVlbCI6MX0sInR5cGUiOiJ3aGVlbCJ9LCI0eDYiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDI0NDY2LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6MTg1OTAsIm1ldGFsIjoyOH0sIm91dHB1dFN0b2NrIjp7IndoZWVsIjoxfSwidHlwZSI6IndoZWVsIn0sIjF4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjN4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4NiI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjQ0NjYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6M30sInR5cGUiOiJwbGFzdGljIn0sIjZ4NiI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjQ0NjYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6M30sInR5cGUiOiJwbGFzdGljIn0sIjJ4NSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMng0Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyNDQ2NiwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJtZXRhbCI6MH0sInR5cGUiOiJtZXRhbCJ9LCI3eC0zIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMTYyNCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjU5ODJ9LCJvdXRwdXRTdG9jayI6eyJidWNrZXQiOjB9LCJ0eXBlIjoiYnVja2V0In0sIjh4LTIiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDIxNjI0LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6MTE5NjF9LCJvdXRwdXRTdG9jayI6eyJzaG92ZWwiOjB9LCJ0eXBlIjoic2hvdmVsIn0sIjd4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCI4eC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCI3eC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCI4eC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCI3eC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCI4eDAiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDIyMTU2LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiYnVja2V0IjowLCJzaG92ZWwiOjB9LCJvdXRwdXRTdG9jayI6eyJzaG92ZWxCdWNrZXQiOjB9LCJ0eXBlIjoiYnVja2V0U2hvdmVsIn0sIjd4LTUiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDIxNjI0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjN9LCJ0eXBlIjoicGxhc3RpYyJ9LCI4eC00Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMTYyNCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjozfSwidHlwZSI6InBsYXN0aWMifSwiMXgtMSI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjAwMjUsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJ0aHJlYWQiOjQsImNsb3RoIjo0MDYsImR5ZSI6MTc3OTUsIndvb2QiOjExfSwib3V0cHV0U3RvY2siOnsiY2xvdGhlcyI6MH0sInR5cGUiOiJjbG90aGVzIn0sIjB4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgtMSI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMjE2MjQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiZHllIjozfSwidHlwZSI6ImR5ZSJ9LCIxeC0zIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMDAyNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCIxeC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC00Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMDAyNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCIzeC00Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMDAyNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCI1eC0xIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMDAyNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCIyeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCI0eC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC0xIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAyMDczNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjowfSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjowfSwidHlwZSI6InRocmVhZCJ9LCI0eDAiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDIwMDI1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjk1fSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjowfSwidHlwZSI6InRocmVhZCJ9LCI2eDAiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDIwMDI1LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIjV4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gwIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIweDIiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE4OTU5LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCIxeDIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtMSI6eyJ0aWNrc0RvbmUiOjEuMDI1MDAwMDAwMDAwMTQ0NSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InRocmVhZCI6MTc5MSwic3R1ZmZpbmciOjE3NzIsImR5ZSI6MTc0NzgsImJ1dHRvbnMiOjJ9LCJvdXRwdXRTdG9jayI6eyJiZWFyIjowfSwidHlwZSI6ImJlYXIifSwiLTh4LTEiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE3MzYsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MX0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiLTd4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTZ4LTMiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE3MzYsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MX0sIm91dHB1dFN0b2NrIjp7InN0dWZmaW5nIjowfSwidHlwZSI6InN0dWZmaW5nIn0sIi02eC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTd4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi02eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgwIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAxNzM2LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6M30sInR5cGUiOiJkeWUifSwiLTh4LTMiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE3MzYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTZ4LTUiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE3MzYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTR4LTEiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDE2MTE3LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6MTUzODl9LCJvdXRwdXRTdG9jayI6eyJidXR0b25zIjoxfSwidHlwZSI6ImJ1dHRvbiJ9LCItNXgtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeC0xIjp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAxNjExNywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjozfSwidHlwZSI6InBsYXN0aWMifSwiLTF4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC02Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgtNyI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMDg4MzQsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoxMzA1NH0sIm91dHB1dFN0b2NrIjp7IndoZWVsIjoxfSwidHlwZSI6IndoZWVsIn0sIjB4LTciOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDA4ODM0LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6MTMwNDh9LCJvdXRwdXRTdG9jayI6eyJidXR0b25zIjoxfSwidHlwZSI6ImJ1dHRvbiJ9LCIyeC01Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAwODgzNCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjoxfSwib3V0cHV0U3RvY2siOnsic3R1ZmZpbmciOjB9LCJ0eXBlIjoic3R1ZmZpbmcifSwiMXgtNyI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMDkzNjcsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJtZXRhbCI6MSwicGxhc3RpYyI6MTMwMDF9LCJvdXRwdXRTdG9jayI6eyJjaXJjdWl0Qm9hcmQiOjB9LCJ0eXBlIjoiY2lyY3VpdEJvYXJkIn0sIjB4LTYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjF4LTYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjF4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeC03Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIweC04Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC04Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC03Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC04Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCItM3gtNyI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMTAyNTUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6M30sInR5cGUiOiJwbGFzdGljIn0sIi0yeC04Ijp7InRpY2tzRG9uZSI6MC4wODUwMDAwMDAwMDAwODgzNCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjozfSwidHlwZSI6InBsYXN0aWMifSwiM3gtNyI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMDg4MzQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6M30sInR5cGUiOiJwbGFzdGljIn0sIjN4LTgiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDA5NTQ0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjN4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjR4LTUiOnsidGlja3NEb25lIjowLjA4NTAwMDAwMDAwMDA4ODM0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIjF4NSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4NSI6eyJ0aWNrc0RvbmUiOjAuMDg1MDAwMDAwMDAwMDM2MzgsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifX0sImVsZkJ1eWFibGVzIjp7ImNsb3RoZXNCdXlhYmxlIjp7ImFtb3VudCI6IjE3In0sImJsb2Nrc0J1eWFibGUiOnsiYW1vdW50IjoiMTkifSwidHJ1Y2tzQnV5YWJsZSI6eyJhbW91bnQiOiIxNiJ9LCJiZWFyc0J1eWFibGUiOnsicmVzb3VyY2UiOiIyMzQ4IiwiYW1vdW50IjoiMTgifSwiYnVja2V0QnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE1MjUiLCJhbW91bnQiOiIxNyJ9LCJjb25zb2xlc0J1eWFibGUiOnsicmVzb3VyY2UiOiIxNTAxIiwiYW1vdW50IjoiMTkifX0sInRhYnMiOnsic2VsZWN0ZWQiOiJkYXNoYm9hcmQifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJlYXJzIjoiMTY3MTY0LjYxNjE2OTA4NjkiLCJidWNrZXRBbmRTaG92ZWxzIjoiMjYyMjY0LjU0NzY0Mjk0NjM2IiwiY29uc29sZXMiOiI4MjYyNzQuMTQ5ODA4ODM1NCIsImZhY3RvcnlCdXlhYmxlcyI6eyJleHBhbmRGYWN0b3J5Ijp7ImFtb3VudCI6IjUifSwib2lsRnVlbCI6eyJhbW91bnQiOiIzIn0sImNhcnJ5VG95cyI6eyJhbW91bnQiOiI5In19LCJ1cGdyYWRlcyI6eyIwIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjEiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9fSwiMiI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX19LCIzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjQiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX19fSwicHJlc2VudHMiOiI4MDAxODA5NTUzLjYyMDY0IiwiZmFjdG9yeUJ1eWFibGVzMiI6eyJjYXJyeUJveGVzIjp7ImFtb3VudCI6IjE1In19fX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOnRydWUsImRldlNvZWVkIjoxfQ==","./../../saves/Day 21 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJyZWluZGVlciJdLCJ0aW1lIjoxNjcxOTI2MzE5OTYzLCJhdXRvc2F2ZSI6dHJ1ZSwib2ZmbGluZVByb2QiOmZhbHNlLCJvZmZsaW5lVGltZSI6bnVsbCwidGltZVBsYXllZCI6MTQwODE3LjgxMzAwMDAzNTIsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNiIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMjIiOnsib3BlbmVkIjpmYWxzZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIzIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9fSwiZGF5IjoyMiwiaXNNYXN0ZXJ5IjpmYWxzZX0sInRyZWVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxvZ3MiOiIxLjAxOTQyMzU0NDM1Nzg5MThlOTkiLCJ0b3RhbExvZ3MiOiIxLjAyOTQyMzY0NDM2NzUwNDJlOTkiLCJzYXBsaW5ncyI6IjQuMzMxNTY3Mzk5Mjk2Nzg1ZTMxIiwicm93MVVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI3NzY0MDcxIn0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6Ijc5OTA3ODYifSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMjIwMTE2MzEifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDAwMDE5MDczNDg2MzI4MTI0OTk0IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjcmVhdGVkU2FwbGluZ3MiOiI0LjQ2MDc0Mjk0ODIwOTI0OTVlMzEiLCJtYXN0ZXJ5Ijp7ImxvZ3MiOiIxLjgwODE1NDQ5NzEwMzA2MzllMjciLCJ0b3RhbExvZ3MiOiIxLjgwODE1NDY5ODE4MDYxMWUyNyIsInNhcGxpbmdzIjoiMzM4OTMwMDQ2MTc4NTc2NSIsImNyZWF0ZWRTYXBsaW5ncyI6IjMzODkzMDA3NDYyNjcwMTEuNSIsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjE0NzIyNSJ9LCIxIjp7ImFtb3VudCI6IjE0NzIyNSJ9LCIyIjp7ImFtb3VudCI6IjMwNjYxMyJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTU4OSIsImZvdW5kYXRpb25Db252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoxMDB9LCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsIm1hc3RlcnkiOnsiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY29hbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjb2FsIjoiMS44ODk2NDg3NTI5NjQyMDE0ZTE3NCIsInRvdGFsQ29hbCI6IjEuODg5NjQ4ODUyOTYzODQyNGUxNzQiLCJhc2giOiIxLjY1MDkyMjkzODI5NTg1NDhlMTI3IiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiMS42NTA0MzE2NDM3NDA1NDk1ZTI4IiwiYnVpbGRCb25maXJlIjp7InJlc291cmNlIjoiMzAxNyIsImFtb3VudCI6IjEuNjUwNDMxNjQzNzQwNTQ5NWUyOCJ9LCJhY3RpdmVLaWxucyI6IjkxNTYiLCJidWlsZEtpbG4iOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjkxNTYifSwid2FybWVyQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiNTQ1NjQwODQ2LjE1MzM1OTkiLCJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7InJlc291cmNlIjoiMzAxNyIsImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImJldHRlckZlcnRpbGl6ZXIiOnsiYm91Z2h0Ijp0cnVlfSwidW5sb2NrS2lsbiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjgzMjE3NDYwNzkzNzQxIn0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYW1vdW50IjoiODMyMTc0NjA3OTM3NDEifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImFtb3VudCI6IjI5MjYxMTc3OTcxNTU5MzMifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImFjdGl2ZURyaWxscyI6IjUyNTciLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjUyNTcifSwiZWZmaWNpZW50U21lbHRoZXIiOnsiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6dHJ1ZX0sInJlZmluZWRDb2FsIjp7ImJvdWdodCI6dHJ1ZX0sImNvbG9yZWRGaXJlIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsiY29hbCI6IjEuMjYyNzMzMDQ1OTYyMjIyMWUzNSIsInRvdGFsQ29hbCI6IjEuMjYyNzg0MTU3MDczMzI1NGUzNSIsImFzaCI6IjYuMTg2ODk2NDA0NDIwMjM0ZTE4IiwiYWN0aXZlRmlyZXMiOiIxNDgwMS40NTYyNzYxMzI1MjEiLCJidWlsZEZpcmUiOnsiYW1vdW50IjoiMTQ4MDEuNDU2Mjc2MTMyNTIxIn0sImFjdGl2ZUJvbmZpcmVzIjoiMjE0NTk3IiwiYnVpbGRCb25maXJlIjp7ImFtb3VudCI6IjIxNDU5NyJ9LCJhY3RpdmVLaWxucyI6IjEwMDMiLCJidWlsZEtpbG4iOnsiYW1vdW50IjoiMTAwMyJ9LCJhY3RpdmVEcmlsbHMiOiIxNDEiLCJidWlsZERyaWxsIjp7ImFtb3VudCI6IjE2NyJ9LCJ3YXJtZXJDdXR0ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sIndhcm1lclBsYW50ZXJzIjp7ImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7ImJvdWdodCI6dHJ1ZX0sImRlZGljYXRlZEN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudFNtZWx0aGVyIjp7ImJvdWdodCI6dHJ1ZX0sImFyc29uaXN0QXNzaXN0YW5jZSI6eyJib3VnaHQiOmZhbHNlfSwicmVmaW5lZENvYWwiOnsiYm91Z2h0IjpmYWxzZX0sImNvbG9yZWRGaXJlIjp7ImJvdWdodCI6ZmFsc2V9LCJoZWF0ZWRDdXR0ZXJzIjp7ImFtb3VudCI6IjEyMDcxIn0sImhlYXRlZFBsYW50ZXJzIjp7ImFtb3VudCI6IjEyMDcxIn0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6IjM1NTcifX0sIm1hc3RlcmVkIjp0cnVlfSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI2NDUxIn0sImJ1eVByb2dyZXNzIjoiMC4wMDAzOTU1MjI3NTYzNjQ2Mzk5IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjcwMDAwMDAwMTczNjgzOTN9LCJwbGFudGVyc0VsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI2NDUxIn0sImJ1eVByb2dyZXNzIjoiMC4wMDA3NjU3MDAwMzc2Mzk2NTY0IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjEwMDAwMDAwMTczNDUxNDR9LCJleHBhbmRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTg0MTAifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDcxNTkyMDkxMzQxMjYxMTMiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzMyMDAwMDAxNzM1OTk3M30sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwNzA1MzU5NzYwMjUxNjM1MSIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zNDAwMDAwMDE3MzI1OTA4fSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwNTM1NTY3Nzc0Mjc0NzYzIiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjM3NjAwMDAwMTc0MzQ0OTN9LCJmZXJ0aWxpemVyRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImFtb3VudCI6IjI1NSJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwMDU5MTE0NjUyNDMwMDE4NzMiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTc2MDAwMDAxNzQxMDU2Mn0sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIzMDE3In0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc1Mjk0NzUzMTUzMDEzNjIiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODkyMDAwMDAxNzM4NDk1fSwiYm9uZmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMzAxNyIsImFtb3VudCI6IjQxMCJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA4NTMxOTQyNTA1NzY1NjgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzE2MDAwMDAxNzQ4MzkyNH0sImtpbG5FbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTQ0In0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDgyNzg2OTY1NzI3MTcyNTEiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDYwMDAwMDAxNzQ5NDE1MzN9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxMzI5MDA0MzI4OTUzMjgzIiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41ODAwMDAwMDAwMDM3NzA0fSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDMxODY0NzY1NzI4MTM3IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44MzYwMDAwMDA1NTU3MjAyfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDIyMDg1NDk4MTAwNzUwMzkiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjA0NDAwMDAwMTk5MzIzOTgzNX0sIm1pbmluZ0RyaWxsRWxmIjp7InRvZ2dsZSI6ZmFsc2UsImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sImhlYXZ5RHJpbGxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNzU5ODcwMDY4Njk4MTMzMyIsImFtb3VudE9mVGltZXNEb25lIjowLjI1MjAwMDAwMDQ4NzUyLCJib3VnaHQiOnRydWV9LCJvaWxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwMzU1MzcyMDk1ODQ2ODAyMzUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wMjgwMDAwMDA0ODU0NDE0OSwiYm91Z2h0Ijp0cnVlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDM1MDEzMjgxOTIyMDgxMjI0IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTUyMDAwMDAwNDgxNTAwMywiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDg0MDI1MzE3MjM2MDM0MDQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yOTYwMDAwMDA0OTY1NDA4NSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA5MzcxODEwNDk2MzU1ODk1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTQ4MDAwMDAxNTU1NzQ5MywiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMTMwMTQyMzU1MDY1ODMwNjYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMjgwMDAwMDE1NDQzODE4LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE0MzYxODE0MTQ4ODg4NDcyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDM0MDAwMDAwMDI0MTIyMiwiYm91Z2h0Ijp0cnVlfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU5MTQ2ODEyOTI5ODYwNDMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42MTAwMDAwMDAwMjQyNjgsImJvdWdodCI6dHJ1ZX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzMTQ4NjIyMDAxMzQ3MDU4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzkwMDAwMDAwMDI1MDI2MiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzMDA1MDA3Mjc1NzEwNzg0NiIsImFtb3VudE9mVGltZXNEb25lIjowLjEyNDAwMDAwMDAyNzU2NjA2LCJib3VnaHQiOnRydWV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMDI0ODIxMzI4NDg2MzM2NjEzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODUyMDAwMDAwMDI3NzIzOSwiYm91Z2h0Ijp0cnVlfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMDgxNTAyMTIxNDkxNjk1ODMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41NzYwMDAwMDAwMjc4ODU4LCJib3VnaHQiOnRydWV9LCJzbWFsbEZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjIwMDM1MTgwMjE1NDk1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTMyMDAwMDAwMDE5Mzg3NSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDEzMDY0OTU0NzY3MDQ1MTQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43NjQwMDAwMDAwMTkzNTI4LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTk3ODg3NzcxMzM4ODM2NiIsImFtb3VudE9mVGltZXNEb25lIjowLjI5MjAwMDAwMDAxOTM4ODc1LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDc4MTcwMTIyMzYxOTY1MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yMDgwMDAwMDAwMDQ1NDQxLCJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwOTU1MTMxMTQzMzczMDAxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDAwMDAwMDAwMDA0Njg0NiwiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjg5ODE3OTYwNTUxMDk4MjQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44NzYwMDAwMDAwMTQzOTUsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJoZWF2eURyaWxsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjE3MjcyNzI3MjcyODYxMjYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NTYwMDAwMDAwMDAyMDY5LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjY0NTg4NDY5NzU5NzI5MzYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NDAwMDAwMDAwMTQ0MjM1LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiOS43MjY2OTc2OTAwNDU2MWUxMjEiLCJ0b3RhbFBhcGVyIjoiOS43MjY3OTc2OTAwNDkzMDRlMTIxIiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE5NyJ9LCJwbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxOTcifSwiZXhwYW5kZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE5NyJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE5NyJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxOTcifSwiZmVydGlsaXplckJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIxOTcifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE5NyJ9LCJib25maXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE5NyJ9LCJraWxuQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjE5NyJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiMTIifSwiYm94Qm9vayI6eyJhbW91bnQiOiIxNSJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiMTk3In0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxNzEifSwib2lsQm9vayI6eyJhbW91bnQiOiIxNzEifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjE3MSJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjE3MSJ9LCJkeWVCb29rIjp7ImFtb3VudCI6MH0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6IjE5NyJ9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6IjE5NyJ9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiIxOTcifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsicGFwZXIiOiIxLjQ5MjQwOTQ2MTU4ODE1N2UyOCIsInRvdGFsUGFwZXIiOiIxLjQ5MjQwOTQ2MTU4ODI3OWUyOCIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6IjU5In0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6IjU5In0sImtpbG5Cb29rIjp7ImFtb3VudCI6IjU5In0sInBhcGVyQm9vayI6eyJhbW91bnQiOiI4In0sImJveEJvb2siOnsiYW1vdW50IjoiOCJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiNTkifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiIxIn0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6IjEifSwib2lsQm9vayI6eyJhbW91bnQiOiIxIn0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIxIn0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjowfSwicGxhc3RpY0Jvb2siOnsiYW1vdW50IjoiNTkifX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiMy40OTUzODk4OTMzMzgzMjllMTA2IiwidG90YWxCb3hlcyI6IjMuNDk1NDkwOTAzNDM4NTg2NGUxMDYiLCJib3hlc0NvbnZlcnNpb24iOnsiYmFzZVJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJnYWluUmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyJ9LCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImFtb3VudCI6Ijg0OCJ9LCJhc2hCb3hlc0J1eWFibGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImFtb3VudCI6IjM4NSJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiIyOTgifX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMjE2In0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjE1NiJ9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjEzNSJ9fSwibWFzdGVyeSI6eyJib3hlcyI6IjEuOTU3MDUyMTM5MjE0Nzg5ZTIwIiwidG90YWxCb3hlcyI6IjEuOTU3MDUyMTM5NDA0ODdlMjAiLCJ1cGdyYWRlcyI6eyJsb2dzVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImR5ZVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInhwVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX0sImJ1eWFibGVzIjp7ImxvZ0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiI2MSJ9LCJhc2hCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNDAifSwiY29hbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIzMyJ9fSwiYnV5YWJsZXMyIjp7Im9yZUJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwbGFzdGljQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH19fSwibWFzdGVyZWQiOnRydWUsImJ1eWFibGVzMyI6eyJwcmVzZW50QnV5YWJsZSI6eyJhbW91bnQiOiI2NSJ9fX0sIm1ldGFsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9yZSI6IjkuMzQwNDE3NTc0OTU0OTg5ZTM2IiwiYmVzdE9yZSI6IjEuMjI1NDcxNjc4NDA1NzJlMzciLCJvcmVQcm9ncmVzcyI6IjAuMjQ2NTExMDE4MzA1MTQ0IiwibWV0YWwiOiIzLjY0NjUwMzA2OTQ1MTA0NjNlNjkiLCJiZXN0TWV0YWwiOiIzLjY0NjUwMzA2OTQ1MTA0NjNlNjkiLCJ0b3RhbE1ldGFsIjoiMy42NTY1MDMwNjk0NTA3NTU2ZTY5Iiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwib3JlRHJpbGwiOnsiYW1vdW50IjoiNzY1NDc2NyJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiNzY1NDc3In0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjEwNjg2NzUifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsib3JlIjoiMzQxMDQzNjgxNS43MjE3MTIiLCJiZXN0T3JlIjoiMzgyODQzODY3NC4wMTIzODciLCJvcmVQcm9ncmVzcyI6IjAuMTE2NzgzMDY1MjIxNjM2NCIsIm1ldGFsIjoiMS4wNzk1MDI0NTk3MzE5NTg1ZTE3IiwiYmVzdE1ldGFsIjoiMS4wNzk1MDI0NTk3MzE5NTg1ZTE3IiwidG90YWxNZXRhbCI6IjEuMDgwMjUzNDI2Mzk1NDc3M2UxNyIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjI3OSJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMjgifSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMjUifX0sIm1hc3RlcmVkIjp0cnVlfSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiI3LjQ1NDEyNjU3OTE2MTIwNGUxNyIsInRvdGFsQ2xvdGgiOiIxLjAwOTU2NzA1NTIyNjQ5NjFlMjAiLCJ3b29sIjoiNi42OTI2MTk3NzgzNDc1MTRlMTkiLCJzaGVlcCI6IjYuOTg2ODQ0NDUzNzQ1ODY0ZTE5IiwiYnVpbGRQZW5zIjp7ImFtb3VudCI6IjM0MzYzIn0sImJldHRlclNoZWFycyI6eyJhbW91bnQiOiIzMzEyOCJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI0OTg5OSJ9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1ldGFsVXBncmFkZXMiOnsibWV0YWxVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYnJlZWRpbmdQcm9ncmVzcyI6MSwic2hlYXJpbmdQcm9ncmVzcyI6MSwic3Bpbm5pbmdQcm9ncmVzcyI6MSwibWFzdGVyeSI6eyJjbG90aCI6IjEwMTAxMDkwNCIsInRvdGFsQ2xvdGgiOiIxMDEwMTgzNTQiLCJ3b29sIjoiNjUwNjQwNzgiLCJzaGVlcCI6IjYxMzA0NDA3IiwiYnVpbGRQZW5zIjp7ImFtb3VudCI6IjM5NSJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiNDI5In0sImZhc3RlclNwaW5uaW5nIjp7ImFtb3VudCI6IjYzNCJ9LCJ0cmVlc1VwZ3JhZGVzIjp7InRyZWVzVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1ldGFsVXBncmFkZXMiOnsibWV0YWxVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwicGFwZXJVcGdyYWRlcyI6eyJwYXBlclVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJvaWwiOnsibWluaW1pemVkIjpmYWxzZSwib2lsIjoiMy4wMzk1MzQ1OTcxMTAwOTZlMjQiLCJ0b3RhbE9pbCI6IjUuNDE5MDE2NDMzMjQ3NjA2ZTI1IiwiZGVwdGgiOiIxMTA5NjIiLCJkcmlsbFByb2dyZXNzIjoiNS4zNjEzOTIwOTAzMjY5NDQ1ZTUwIiwiYWN0aXZlSGVhdnkiOiIxMzg2IiwiYnVpbGRIZWF2eSI6eyJhbW91bnQiOiIxMzg2In0sImFjdGl2ZUhlYXZ5MiI6IjY0NSIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjY0NSJ9LCJhY3RpdmVFeHRyYWN0b3IiOiIxNDciLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIxNDcifSwiYWN0aXZlUHVtcCI6IjEzOSIsImJ1aWxkUHVtcCI6eyJhbW91bnQiOiIxMzkifSwiYWN0aXZlQnVybmVyIjoiODM2IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiODM2In0sImFjdGl2ZVNtZWx0ZXIiOiI0MjYiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiNDI2In0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6ZmFsc2UsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwicm93M1VwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwibWFzdGVyeSI6eyJvaWwiOiIxMTM3MjY0NjczLjA1NDUwMTgiLCJ0b3RhbE9pbCI6IjExNDA2MTg2MjMuMDU0NTAyMiIsImRlcHRoIjoiMjM2NDIiLCJkcmlsbFByb2dyZXNzIjoiNDQwMTk3MzY0MzY2NS45NjMiLCJhY3RpdmVIZWF2eSI6IjEwNCIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTA0In0sImFjdGl2ZUhlYXZ5MiI6IjQzIiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiNDMifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTEiLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIxMSJ9LCJhY3RpdmVQdW1wIjoiMTEiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlQnVybmVyIjoiMjYiLCJidWlsZEJ1cm5lciI6eyJhbW91bnQiOiIyNiJ9LCJhY3RpdmVTbWVsdGVyIjoiMTMiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiMTMifSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9fSwib2lsTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOiIzLjk5NzcyMTM5NzE4NDgxZTIyIiwidG90YWxQbGFzdGljIjoiNS4wMDQyMDQ2NjQ2NTU3NTVlMjIiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjU2NSJ9LCJhY3RpdmVSZWZpbmVyeSI6IjU2NSIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiNjY5MTc2NyJ9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjoiNjY5MTc2NyJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjY2OTE3NjcifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJtYXN0ZXJ5Ijp7InBsYXN0aWMiOiI0NDU3MDk0LjQ1NzIwOTMxOSIsInRvdGFsUGxhc3RpYyI6IjQ0Nzg5MzQuNDU3MjA5MzI5IiwiYWN0aXZlUmVmaW5lcnkiOiI3OCIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiNzgifSwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOnRydWV9LCJib3hUb29scyI6eyJib3VnaHQiOnRydWV9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOiIxMzE2In0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiIxMzE2In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMTMxNiJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOiIyODI0MDIyOTk0MzEuNTgwNDQiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE2MjEifX0sInllbGxvdyI6eyJhbW91bnQiOiIxNTMwNDQxMDAyODkuNzg3OTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1NTIifX0sImJsdWUiOnsiYW1vdW50IjoiMjAxMDkyMjU0OTkuNzgyNDc1IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxNDg2In19LCJvcmFuZ2UiOnsiYW1vdW50IjoiNDQ1MTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjEwMzcifX0sImdyZWVuIjp7ImFtb3VudCI6IjMzODA0IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI4OTIifX0sInB1cnBsZSI6eyJhbW91bnQiOiIzMjI3NiIsImJ1eWFibGUiOnsiYW1vdW50IjoiODcwIn19LCJibGFjayI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjMwNiJ9fSwid2hpdGUiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiIzMDYifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7IjAiOmZhbHNlfSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7ImR5ZXMiOnsicmVkIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiIyNSJ9fSwiZ3JlZW4iOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjgifX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjE3In19LCJ5ZWxsb3ciOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjIxIn19LCJwdXJwbGUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjgifX0sIm9yYW5nZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiOCJ9fX0sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiYmx1ZUR5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZyI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwibWFuYWdlbWVudCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbGZUcmFpbmluZyI6eyJjdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjMxMjgzNTEuMjc0MDQzMzc4NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNjI2NDYwNC41MzU1NDg1MjYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiOTM3MjA3Mi44MjY3NjE0NTYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMjQ5NjY4My42MzkxMDM5ODYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImhlYXRlZFBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjE1NjM4MzM4LjQ5OTE2MTAyMiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc0NDM2OC42NTM5ODAxNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjIxODY4MTc4LjU2MDM0NzY5NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyNDk5Mjk4MC43MjM4NTcxMDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjgxMTYyNDkuMjEyMDQwMjYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEwNDM3NjQ3LjI3NzQ3NDU2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTE0NTYzODcuNzM0NzIxMDQ4IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMzc1NjM5NzYuNDIwMzIwMDg2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNDA2MjkxODUuNjI0OTYwNzEiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sIm1ldGFsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0OTk4NTgwNC4xOTQ4MDM0NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwib2lsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ2ODYzMTM2LjEwMzU5MDExNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0MzczNjQzMy4zNzE3ODQyNyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZHllRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjUzNDM2NzE3Ljg3MTQ3MjYwNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhc3RpY0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTY1MjM3ODAuMTIxNjc2ODI1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19fSwiY3VycmVudFNob3duIjoiU3RhciIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0ZWFjaGluZyI6eyJib3VnaHQiOnRydWV9LCJzY2hvb2xzIjp7ImFtb3VudCI6IjUifSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOiIyMjk0In0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZm9jdXNNdWx0aXBsaWVyIjoiMS4xNjE2MzA5MjA2ODAyOTE1IiwidXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX0sImZvY3VzVGFyZ2V0cyI6e30sImZvY3VzQ29vbGRvd24iOjAsImZvY3VzVGltZSI6MCwiYWR2YW5jZWRVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGVzMiI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNNdWx0aSI6IjE1LjkwOTcyMDIxODE0ODAzOCIsIm1hc3RlcnkiOnsiZWxmVHJhaW5pbmciOnsiYm9uZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImJveEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNsb3RoRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY29hbERyaWxsRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiY3V0dGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZXhwYW5kZXJzRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImhlYXRlZFBsYW50ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF2eURyaWxsRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwia2lsbkVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm1ldGFsRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwib2lsRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGFwZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJwbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiZHllRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhc3RpY0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX19LCJ0ZWFjaGluZyI6eyJib3VnaHQiOmZhbHNlfSwic2Nob29scyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImFkdmFuY2VkVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwidXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sInVwZ3JhZGVzMiI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9fSwiZm9jdXNNdWx0aSI6IjEuMTY5NjQ5MDUzMjAyMTc5NyIsImZvY3VzVGFyZ2V0cyI6e30sImZvY3VzQ29vbGRvd24iOjAsImZvY3VzVGltZSI6MH19LCJ3cmFwcGluZ1BhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsIndyYXBwaW5nUGFwZXIiOnsiY2hyaXN0bWFzIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNzIifX0sInJhaW5ib3ciOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI1MSJ9fSwiamF6enkiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI5MCJ9fSwic3Vuc2hpbmUiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI2MSJ9fSwib2NlYW4iOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI1NiJ9fSwiYmVhY2giOnsiYnV5YWJsZSI6eyJhbW91bnQiOiI2NCJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJtaWxlc3RvbmVzIjp7InByaW1hcnlCb29zdCI6eyJlYXJuZWQiOmZhbHNlfSwic2Vjb25kYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sImJ1eU1heFByaW1hcnkiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeU5vUmVzZXQiOnsiZWFybmVkIjpmYWxzZX0sImJ1eU1heFNlY29uZGFyeSI6eyJlYXJuZWQiOmZhbHNlfSwidW5sb2NrRHllRWxmIjp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJ1bmxvY2tEeWVFbGZNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX0sImxldHRlcnMiOnsibWluaW1pemVkIjpmYWxzZSwibGV0dGVycyI6IjgwMDAwMDAwMDAiLCJ0b3RhbExldHRlcnMiOiIzLjU1NjI2MjM5NjkyODE4MzVlMjQ4OCIsInByb2Nlc3NpbmdQcm9ncmVzcyI6IjIuMTIxMTA5NTE2NjY4MzE0ZS0xMjQ1IiwiYnV5YWJsZXMiOnsibWV0YWxCdXlhYmxlIjp7ImFtb3VudCI6IjIzIn0sInBsYXN0aWNCdXlhYmxlIjp7ImFtb3VudCI6IjM4In0sInBhcGVyQnV5YWJsZSI6eyJhbW91bnQiOiI4NiJ9fSwibWlsZXN0b25lcyI6eyJhdXRvU21lbHRpbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwibWluaW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwiaW5kdXN0cmlhbENydWNpYmxlTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY29sbGFwc2VNaWxlc3RvbmVzIjpmYWxzZSwibWFzdGVyeSI6eyJsZXR0ZXJzIjoiMTIzNzI5OC4xMDA2MjUwNDMzIiwidG90YWxMZXR0ZXJzIjoiMTIzNzI5OC4xMDA2MjUwNDMzIiwiYnV5YWJsZXMiOnsibWV0YWxCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBhcGVyQnV5YWJsZSI6eyJhbW91bnQiOjB9fSwibWlsZXN0b25lcyI6eyJhdXRvU21lbHRpbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwibWluaW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sInN5bmVyZ3lNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwiaW5kdXN0cmlhbENydWNpYmxlTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJyaWJib24iOnsibWluaW1pemVkIjpmYWxzZSwicmliYm9uIjoiOTYiLCJtaWxlc3RvbmVzIjp7InNlY29uZGFyeUR5ZUVsZiI6eyJlYXJuZWQiOnRydWV9LCJkeWVCb29rIjp7ImVhcm5lZCI6dHJ1ZX19LCJyaWJib25Qcm9ncmVzcyI6MTAsImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJ0b3lzIjp7Im1pbmltaXplZCI6ZmFsc2UsImNsb3RoZXMiOiIxMDY1NjYwLjg0ODY1NDg3MTgiLCJ3b29kZW5CbG9ja3MiOiIzMzM1MTM3LjY2NTAwOTEzNyIsInRydWNrcyI6IjExMjUxMTAuNjk1MTMzMzk3OCIsInRvdGFsVG95cyI6IjEwMjM4MTA4LjkzNTQ1MDA3MyIsImJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiNzI5In0sIjEiOnsiYW1vdW50IjoiMzE5In0sIjIiOnsiYW1vdW50IjoiMzkyOSJ9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU2Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lOCI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2V9LCJmYWN0b3J5Ijp7Im1pbmltaXplZCI6ZmFsc2UsImNvbXBvbmVudHMiOnsiLTR4LTYiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDU1MDgzLCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsid29vZCI6NDV9LCJvdXRwdXRTdG9jayI6eyJwbGFuayI6MH0sInR5cGUiOiJwbGFuayJ9LCItMngtNiI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNTQ4MTcsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFuayI6Mn0sIm91dHB1dFN0b2NrIjp7ImJveCI6MH0sInR5cGUiOiJib3hNYWtlciJ9LCItNXgtNiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC02Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTZ4LTYiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDU2NTA0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCItMngtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4LTQiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDU2NTA0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6MTIwfSwidHlwZSI6ImR5ZSJ9LCItMngtNCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNTc1NywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7ImR5ZSI6ODg2LCJwbGFzdGljIjo0NzMsImNsb3RoIjoxMjAsImJveCI6Mjk5LCJidXR0b25zIjoxfSwidHlwZSI6InByZXNlbnQifSwiMHgtNCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNTUwODMsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTIwfSwidHlwZSI6InBsYXN0aWMifSwiLTJ4LTIiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDU1MDgzLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi0yeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTV4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgtNCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNTM2NiwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJ3b29kIjowfSwidHlwZSI6Indvb2QifSwiLTV4NCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDc5OCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7Im1ldGFsIjozLCJwbGFzdGljIjo5OTQ1LCJjaXJjdWl0Qm9hcmQiOjYyfSwib3V0cHV0U3RvY2siOnsiY29uc29sZSI6MH0sInR5cGUiOiJjb25zb2xlIn0sIi01eDIiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDQ3OTgsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJtZXRhbCI6MTAsInBsYXN0aWMiOjMwMjE1fSwib3V0cHV0U3RvY2siOnsiY2lyY3VpdEJvYXJkIjowfSwidHlwZSI6ImNpcmN1aXRCb2FyZCJ9LCItNXgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNngxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4MSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4MSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDk0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjEyMH0sInR5cGUiOiJwbGFzdGljIn0sIi03eDEiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDQ5NCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJtZXRhbCI6MH0sInR5cGUiOiJtZXRhbCJ9LCItNng0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4NCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4NCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDc5OCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjoxMjB9LCJ0eXBlIjoicGxhc3RpYyJ9LCItN3g0Ijp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0Nzk4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjF4MyI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDc5OCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJ3b29kIjowfSwidHlwZSI6Indvb2QifSwiMngzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDMiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDQ3OTgsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJ3b29kIjoyfSwib3V0cHV0U3RvY2siOnsicGxhbmsiOjB9LCJ0eXBlIjoicGxhbmsifSwiNHgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiNXgzIjp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0NjU1NywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYW5rIjo5ODg4fSwib3V0cHV0U3RvY2siOnsiYmxvY2siOjB9LCJ0eXBlIjoiYmxvY2tzIn0sIjJ4NiI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzU1OSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7Im1ldGFsIjozLCJ3aGVlbCI6MTE1Mjd9LCJvdXRwdXRTdG9jayI6eyJ0cnVja3MiOjB9LCJ0eXBlIjoidHJ1Y2tzIn0sIjB4NiI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDY1NTcsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoyOTA0NCwibWV0YWwiOjI5fSwib3V0cHV0U3RvY2siOnsid2hlZWwiOjB9LCJ0eXBlIjoid2hlZWwifSwiNHg2Ijp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0NjU1NywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjI5MDM0LCJtZXRhbCI6Mjh9LCJvdXRwdXRTdG9jayI6eyJ3aGVlbCI6MH0sInR5cGUiOiJ3aGVlbCJ9LCIxeDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCI1eDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeDYiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDQ2NTU3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjEyMH0sInR5cGUiOiJwbGFzdGljIn0sIjZ4NiI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDY1NTcsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTIwfSwidHlwZSI6InBsYXN0aWMifSwiMng1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIyeDQiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDQ2NTU3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjd4LTMiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDQzNzE0LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6OTM4M30sIm91dHB1dFN0b2NrIjp7ImJ1Y2tldCI6MH0sInR5cGUiOiJidWNrZXQifSwiOHgtMiI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDM3MTQsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoxODg4Nn0sIm91dHB1dFN0b2NrIjp7InNob3ZlbCI6MH0sInR5cGUiOiJzaG92ZWwifSwiN3gtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjh4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjd4LTIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjh4LTMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjd4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjh4MCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDMwMDQsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJidWNrZXQiOjAsInNob3ZlbCI6M30sIm91dHB1dFN0b2NrIjp7InNob3ZlbEJ1Y2tldCI6MH0sInR5cGUiOiJidWNrZXRTaG92ZWwifSwiN3gtNSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDM3MTQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTIwfSwidHlwZSI6InBsYXN0aWMifSwiOHgtNCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDM3MTQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTIwfSwidHlwZSI6InBsYXN0aWMifSwiMXgtMSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDE3OCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InRocmVhZCI6MSwiY2xvdGgiOjQwNSwiZHllIjoyODI0Nywid29vZCI6MTF9LCJvdXRwdXRTdG9jayI6eyJjbG90aGVzIjowfSwidHlwZSI6ImNsb3RoZXMifSwiMHgtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC0xIjp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0MzcxNCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJkeWUiOjEyMH0sInR5cGUiOiJkeWUifSwiMXgtMyI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDIxMTYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMXgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMngtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMngtNCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDIxMTYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiM3gtNCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDIxMTYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiNXgtMSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwNDIxMTYsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMngtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiNHgtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzkxODUsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MH0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiNHgwIjp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0MjExNiwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjo5M30sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiNngwIjp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0MjExNiwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCI1eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjN4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgyIjp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDA0MTA1LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCIxeDIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtMSI6eyJ0aWNrc0RvbmUiOjEuMjQ1MDAwMDAwMDAwMjYwOCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InRocmVhZCI6Mjk2NCwic3R1ZmZpbmciOjI5NDQsImR5ZSI6MjkwOTcsImJ1dHRvbnMiOjN9LCJvdXRwdXRTdG9jayI6eyJiZWFyIjowfSwidHlwZSI6ImJlYXIifSwiLTh4LTEiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDM4OTYsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MX0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiLTd4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTZ4LTMiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDM4MjUsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MX0sIm91dHB1dFN0b2NrIjp7InN0dWZmaW5nIjowfSwidHlwZSI6InN0dWZmaW5nIn0sIi02eC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTd4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi02eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgwIjp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDAzOTQ1LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6MTIwfSwidHlwZSI6ImR5ZSJ9LCItOHgtMyI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzk0NSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNngtNSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzk0NSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNHgtMSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzgyMSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjI1ODM0fSwib3V0cHV0U3RvY2siOnsiYnV0dG9ucyI6MH0sInR5cGUiOiJidXR0b24ifSwiLTV4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngtMSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzgyMSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjoxMjB9LCJ0eXBlIjoicGxhc3RpYyJ9LCItMXgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC03Ijp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDAzMDkyNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjIzNTAyfSwib3V0cHV0U3RvY2siOnsid2hlZWwiOjB9LCJ0eXBlIjoid2hlZWwifSwiMHgtNyI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzA5MjUsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoyMzQ5NX0sIm91dHB1dFN0b2NrIjp7ImJ1dHRvbnMiOjB9LCJ0eXBlIjoiYnV0dG9uIn0sIjJ4LTUiOnsidGlja3NEb25lIjowLjMwNTAwMDAwMDAwMDI5NTA0LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjB9LCJvdXRwdXRTdG9jayI6eyJzdHVmZmluZyI6MH0sInR5cGUiOiJzdHVmZmluZyJ9LCIxeC03Ijp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDAzMTYzNSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7Im1ldGFsIjoyLCJwbGFzdGljIjoyMzQ0OX0sIm91dHB1dFN0b2NrIjp7ImNpcmN1aXRCb2FyZCI6MH0sInR5cGUiOiJjaXJjdWl0Qm9hcmQifSwiMHgtNiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMXgtNiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMHgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMXgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4LTciOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgtOCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjF4LTgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjJ4LTciOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjJ4LTgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC03Ijp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDAzMjM0NiwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjoxMjB9LCJ0eXBlIjoicGxhc3RpYyJ9LCItMngtOCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzA5MjUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTIwfSwidHlwZSI6InBsYXN0aWMifSwiM3gtNyI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzA5MjUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTIwfSwidHlwZSI6InBsYXN0aWMifSwiM3gtOCI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzE2MzUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiM3gtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiNHgtNSI6eyJ0aWNrc0RvbmUiOjAuMzA1MDAwMDAwMDAwMzA5MjUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMXg1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHg1Ijp7InRpY2tzRG9uZSI6MC4zMDUwMDAwMDAwMDAyNTczLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn19LCJlbGZCdXlhYmxlcyI6eyJjbG90aGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxOCJ9LCJibG9ja3NCdXlhYmxlIjp7ImFtb3VudCI6IjIwIn0sInRydWNrc0J1eWFibGUiOnsiYW1vdW50IjoiMTcifSwiYmVhcnNCdXlhYmxlIjp7InJlc291cmNlIjoiMjM0OCIsImFtb3VudCI6IjE4In0sImJ1Y2tldEJ1eWFibGUiOnsicmVzb3VyY2UiOiIxNTI1IiwiYW1vdW50IjoiMTgifSwiY29uc29sZXNCdXlhYmxlIjp7InJlc291cmNlIjoiMTUwMSIsImFtb3VudCI6IjIwIn19LCJ0YWJzIjp7InNlbGVjdGVkIjoiZGFzaGJvYXJkIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJiZWFycyI6IjE4MjM5NjkuMTMwMzQ0MTg0OCIsImJ1Y2tldEFuZFNob3ZlbHMiOiIxMDY2Njk4LjY1MzM4MTQ5MyIsImNvbnNvbGVzIjoiMzMzODIxNC44NjkzOTcxMTE3IiwiZmFjdG9yeUJ1eWFibGVzIjp7ImV4cGFuZEZhY3RvcnkiOnsiYW1vdW50IjoiNiJ9LCJvaWxGdWVsIjp7ImFtb3VudCI6IjMifSwiY2FycnlUb3lzIjp7ImFtb3VudCI6IjExIn19LCJ1cGdyYWRlcyI6eyIwIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjEiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9fSwiMiI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX19LCIzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjQiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX19fSwicHJlc2VudHMiOiIzODE4NzIxMzU1Mi4xNTgxNiIsImZhY3RvcnlCdXlhYmxlczIiOnsiY2FycnlCb3hlcyI6eyJhbW91bnQiOiIxNyJ9fX0sInJlaW5kZWVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInJlaW5kZWVyIjp7ImRvbm5lciI6eyJ0aW1lc0ZlZCI6IjEzNS4yNzQzNzE3ODkxOTQ5NiIsInByb2dyZXNzIjoiMi45OTk3NjE3MzI1NDUyNjUyIn0sImJsaXR6ZW4iOnsidGltZXNGZWQiOiIyMzMuMDExMzY5NzQyNzY2ODciLCJwcm9ncmVzcyI6IjIuOTk5NzYxNzMyNTQ1MjY1MiJ9LCJydWRvbHBoIjp7InRpbWVzRmVkIjoiMTQzLjUwNDk1NjU0OTc5NTY4IiwicHJvZ3Jlc3MiOiIxLjI5OTAwMDAwMDAwMDAwMDIifSwidml4ZW4iOnsidGltZXNGZWQiOiIxNDMuNDk0NjA0MDYwOTA0MDQiLCJwcm9ncmVzcyI6IjIuMDQ3OTk5OTk5OTk5OTk5In0sImNvbWV0Ijp7InRpbWVzRmVkIjoiMTMzLjg5NjUwNzcxMjg1MTI3IiwicHJvZ3Jlc3MiOjB9LCJjdXBpZCI6eyJ0aW1lc0ZlZCI6IjE1Ny4xODM3NzYxOTYwODc3NiIsInByb2dyZXNzIjoiMS42NDAwMDAwMDAwMDAwMDAxIn0sImRhc2hlciI6eyJ0aW1lc0ZlZCI6IjE1OS4xNTQ5MTgzNDQwODQzNiIsInByb2dyZXNzIjoiMi4zNTA5OTk5OTk5OTk5OTkifSwiZGFuY2VyIjp7InRpbWVzRmVkIjoiMjI3LjYxNjM3NjU1MTc4MzMiLCJwcm9ncmVzcyI6IjAuOTE5OTI2OTMxMzEzODgxIn0sInByYW5jZXIiOnsidGltZXNGZWQiOiIxNjguMDk4ODcxODk1NTA5NDMiLCJwcm9ncmVzcyI6IjIuOTk5NzYxNzMyNTQ1MjY1MiJ9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRpbWVTaW5jZUZvY3VzIjo5LjcwMDk5OTk5OTk5OTk5OSwiY3Vyck11bHRpcGxpZXIiOiIzLjk5OTY4MjMxMDA2MDM1MyIsImN1cnJUYXJnZXRzIjp7IkRhbmNlciI6dHJ1ZSwiRG9ubmVyIjp0cnVlLCJCbGl0emVuIjp0cnVlLCJQcmFuY2VyIjp0cnVlfSwiY3VyckNvb2xkb3duIjowLjI5OTAwMDAwMDAwMDAwNjg3LCJ1cGdyYWRlcyI6eyJ1cGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNCI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNiI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNyI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlOCI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlOSI6eyJib3VnaHQiOnRydWV9fSwiY3JpdCI6Mn0sInNsZWlnaCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTMiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTYiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTgiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsInNsZWlnaCI6eyJhbW91bnQiOjB9fSwicm91dGluZyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjaXRpZXNDb21wbGV0ZWQiOjAsImN1cnJlbnRDaXR5IjpbWzAsMiw4XSxbMiwwLDVdLFs4LDUsMF1dLCJyb3V0ZUluZGV4IjowLCJjaGVja1JvdXRlUHJvZ3Jlc3MiOjAsIm5ld0NpdHlQcm9ncmVzcyI6MCwiYm9vc3RQcm9ncmVzcyI6MCwicmVkdW5kYW50UHJvZ3Jlc3MiOjAsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJyb3V0ZXNUb1NraXAiOltdLCJyZWR1bmRhbmNpZXNSZW1vdmVkIjowLCJtZXRhQnV5YWJsZXMiOnsibWV0YWwiOnsiYW1vdW50IjowfSwiY29uc29sZSI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb20iOnsiYW1vdW50IjowfSwidGljayI6eyJhbW91bnQiOjB9fSwibWlsZXN0b25lcyI6eyJtaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJtaWxlc3RvbmUyIjp7ImVhcm5lZCI6ZmFsc2V9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJtaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJtaWxlc3RvbmU1Ijp7ImVhcm5lZCI6ZmFsc2V9LCJtaWxlc3RvbmU2Ijp7ImVhcm5lZCI6ZmFsc2V9LCJtaWxlc3RvbmU3Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJtZXRhTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9LCI1Ijp7ImVhcm5lZCI6ZmFsc2V9LCI2Ijp7ImVhcm5lZCI6ZmFsc2V9fSwiY29sbGFwc2VNZXRhTWlsZXN0b25lcyI6dHJ1ZX19LCJhdXRvUGF1c2UiOnRydWUsInVzaW5nTG9nIjp0cnVlLCJkZXZTb2VlZCI6MX0=","./../../saves/Day 22 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJzbGVpZ2giXSwidGltZSI6MTY3MTkxMzIwODk5MywiYXV0b3NhdmUiOnRydWUsIm9mZmxpbmVQcm9kIjpmYWxzZSwib2ZmbGluZVRpbWUiOm51bGwsInRpbWVQbGF5ZWQiOjE0MTEwMy45MzgwMDAwMjE5NCwia2VlcEdvaW5nIjpmYWxzZSwibW9kSUQiOiJhZHZlbnQtaW5jcmVtZW50YWwiLCJtb2RWZXJzaW9uIjoiMC42IiwibGF5ZXJzIjp7Im1haW4iOnsibWluaW1pemVkIjpmYWxzZSwiZGF5cyI6eyIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjQiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjciOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjExIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEyIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjEzIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE1Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE2Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE4Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjE5Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIwIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIyIjp7Im9wZW5lZCI6ZmFsc2UsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MjMsImlzTWFzdGVyeSI6ZmFsc2V9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiMi4wMzQ5ODA5MDY5ODA1ODE4ZTEwNSIsInRvdGFsTG9ncyI6IjIuMDM0OTgwOTE2OTgwODRlMTA1Iiwic2FwbGluZ3MiOiIzLjI1MjMxMTMwMDgzOTQyZTMxIiwicm93MVVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sIjQiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiMyI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI5MzM3NTgwIn0sIjEiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6Ijk2MTAyNDIifSwiMiI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMjgyMTI0MTAifX0sIm1hbnVhbEN1dFByb2dyZXNzIjoiMC4wMDAwMDE5MDczNDg2MzI4MTI0OTk0IiwibWFudWFsUGxhbnRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjcmVhdGVkU2FwbGluZ3MiOiIxLjQ1MDAxODk5NjExMzAzODVlMzIiLCJtYXN0ZXJ5Ijp7ImxvZ3MiOiIxLjgwODE1NDQ5NzEwMzA2MzllMjciLCJ0b3RhbExvZ3MiOiIxLjgwODE1NDY5ODE4MDYxMWUyNyIsInNhcGxpbmdzIjoiMzM4OTMwMDQ2MTc4NTc2NSIsImNyZWF0ZWRTYXBsaW5ncyI6IjMzODkzMDA3NDYyNjcwMTEuNSIsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjE0NzIyNSJ9LCIxIjp7ImFtb3VudCI6IjE0NzIyNSJ9LCIyIjp7ImFtb3VudCI6IjMwNjYxMyJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTcwMCIsImZvdW5kYXRpb25Db252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoxMDB9LCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsIm1hc3RlcnkiOnsiZm91bmRhdGlvblByb2dyZXNzIjoiMTAwIiwibWlsZXN0b25lcyI6eyJsb2dHYWluTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvQ3V0TWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJhdXRvUGxhbnRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibW9yZVBsYW50c01pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibG9nR2Fpbk1pbGVzdG9uZTMiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUxIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwiY29hbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjb2FsIjoiMi4wOTA0NDMwNjUwOTAyMTY0ZTE4NCIsInRvdGFsQ29hbCI6IjIuMDkwNDQzMDY1MDkyMTMxM2UxODQiLCJhc2giOiIxLjA2NjY5MTE2OTM2NzE1NTJlMTMzIiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIwIn0sImFjdGl2ZUJvbmZpcmVzIjoiNi4xNDczNzgyNDQxMTk0ODFlMjkiLCJidWlsZEJvbmZpcmUiOnsicmVzb3VyY2UiOiIzMDE3IiwiYW1vdW50IjoiNi4xNDczNzgyNDQxMTk0ODFlMjkifSwiYWN0aXZlS2lsbnMiOiI5OTI1IiwiYnVpbGRLaWxuIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiI5OTI1In0sIndhcm1lckN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZX0sImJhc2ljRmVydGlsaXplciI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYm91Z2h0Ijp0cnVlfSwidW5sb2NrQm9uZmlyZSI6eyJyZXNvdXJjZSI6IjMwMTciLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImJvdWdodCI6dHJ1ZX0sImhlYXRlZEN1dHRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiIzNjU3MTE4NzY4OTczMjcifSwiaGVhdGVkUGxhbnRlcnMiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiIzNjU3MTE4NzY4OTczMjcifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiI1NDU2NDA4NDYuMTUzMzU5OSIsImFtb3VudCI6IjEuMjMzNzE4ODY0NjQ4NTU0MmUxNiJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYWN0aXZlRHJpbGxzIjoiNTcyOCIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiNTcyOCJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJib3VnaHQiOnRydWV9LCJhcnNvbmlzdEFzc2lzdGFuY2UiOnsiYm91Z2h0Ijp0cnVlfSwicmVmaW5lZENvYWwiOnsiYm91Z2h0Ijp0cnVlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwibWFzdGVyeSI6eyJjb2FsIjoiMS4yNjI3MzMwNDU5NjIyMjIxZTM1IiwidG90YWxDb2FsIjoiMS4yNjI3ODQxNTcwNzMzMjU0ZTM1IiwiYXNoIjoiNi4xODY4OTY0MDQ0MjAyMzRlMTgiLCJhY3RpdmVGaXJlcyI6IjE0ODAxLjQ1NjI3NjEzMjUyMSIsImJ1aWxkRmlyZSI6eyJhbW91bnQiOiIxNDgwMS40NTYyNzYxMzI1MjEifSwiYWN0aXZlQm9uZmlyZXMiOiIyMTQ1OTciLCJidWlsZEJvbmZpcmUiOnsiYW1vdW50IjoiMjE0NTk3In0sImFjdGl2ZUtpbG5zIjoiMTAwMyIsImJ1aWxkS2lsbiI6eyJhbW91bnQiOiIxMDAzIn0sImFjdGl2ZURyaWxscyI6IjE0MSIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMTY3In0sIndhcm1lckN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50U21lbHRoZXIiOnsiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOmZhbHNlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0IjpmYWxzZX0sImhlYXRlZEN1dHRlcnMiOnsiYW1vdW50IjoiMTIwNzEifSwiaGVhdGVkUGxhbnRlcnMiOnsiYW1vdW50IjoiMTIwNzEifSwibW9yZUZlcnRpbGl6ZXIiOnsiYW1vdW50IjoiMzU1NyJ9fSwibWFzdGVyZWQiOnRydWV9LCJlbHZlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDM4MTQ2NjIyNTc4NDIzNTUiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjg0MDAwMDAxNzc1NjIyNX0sInBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjY0NTEifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc1MjM3ODgwMTQyNzUwNTciLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDg0MDAwMDAxNzczNTAzNjR9LCJleHBhbmRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiYW1vdW50IjoiMTg0MTAifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDY5Njc5NjM3MTcwNzQwMDUiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzE2MDAwMDAxNzc0ODY1OH0sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImFtb3VudCI6IjM2MyJ9LCJidXlQcm9ncmVzcyI6IjAuMDAwNjg2MjM1MjE4NTQ2Njc0MSIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMjQwMDAwMDE3NzExODIxNn0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJhbW91bnQiOiIzNjMifSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDMzMzU4MDU1ODg5ODEzNjEiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMTkyMDAwMDAxNzgyMDkxMX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjU0NTY0MDg0Ni4xNTMzNTk5IiwiYW1vdW50IjoiMjU1In0sImJ1eVByb2dyZXNzIjoiMC4wMDAyOTA1MjUyNTYzOTg3MDc2MyIsInJlc291cmNlIjoiMTE3OTk5Nzg4MTA4NC45NzY4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4xNzYwMDAwMDE3Nzk3MTI1M30sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTgwMDc2NTQwMTI0NTkuMzYiLCJhbW91bnQiOiIzMDE3In0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDk4NDEyNDg0ODM5NTM2MzgiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMDkyMDAwMDAxNzc3MjA4MjR9LCJib25maXJlRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIzMDE3IiwiYW1vdW50IjoiNDEwIn0sInRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMDg2NTIxOTM5ODg1MjkzMDMiLCJyZXNvdXJjZSI6IjExNzk5OTc4ODEwODQuOTc2OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzMyMDAwMDAxNzg3MTkzMzZ9LCJraWxuRWxmIjp7ImJ1eWFibGUiOnsicmVzb3VyY2UiOiIxODAwNzY1NDAxMjQ1OS4zNiIsImFtb3VudCI6IjE0NCJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDEwODI5MDQ0MjYzMTUyNDk2IiwicmVzb3VyY2UiOiIxMTc5OTk3ODgxMDg0Ljk3NjgiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjI4MDAwMDAwMTc4ODE5NTZ9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxMzI5MDA0MzI4OTYxNjg2IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41ODAwMDAwMDAwMDQzNjU1fSwiYm94RWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDYxMDMxNDMyMzk1MDM4OTQiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjExNjAwMDAwMDU1Nzg4MDUxfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDc0MjYxMTM5OTAwNTc5MDkiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjQ4ODAwMDAwMjAzNjYyMTF9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTA2MTAxMTE4ODM0Mjg2OTciLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NjgwMDAwMDA1MjcwNzcsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA0ODY2MzkxODU0OTc2NTU5NSIsImFtb3VudE9mVGltZXNEb25lIjowLjEyMDAwMDAwMDUyNDk4OTA1LCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNzA2MDQwNjkzNTk2NDc2OSIsImFtb3VudE9mVGltZXNEb25lIjowLjQwMDAwMDAwMDUyMDk1NDMsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDExNDkwNjc3MTEyODA1MTAzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTEyMDAwMDAwNTM2MDQxLCJib3VnaHQiOnRydWV9LCJkeWVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDAxMDg1MTAzMjM5MDk3MTA3MiIsImFtb3VudE9mVGltZXNEb25lIjowLjc0ODAwMDAwMTU5NDUxMjMsImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDE2NDI3ODYyMjQ3OTE1NTM3IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzUyMDAwMDAxNTgzMjIxLCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJlbHZlcyI6eyJjdXR0ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE0MzYxODE0MTQ4ODg4NDcyIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDM0MDAwMDAwMDI0MTIyMiwiYm91Z2h0Ijp0cnVlfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDU5MTQ2ODEyOTI5ODYwNDMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42MTAwMDAwMDAwMjQyNjgsImJvdWdodCI6dHJ1ZX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzMTQ4NjIyMDAxMzQ3MDU4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzkwMDAwMDAwMDI1MDI2MiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzMDA1MDA3Mjc1NzEwNzg0NiIsImFtb3VudE9mVGltZXNEb25lIjowLjEyNDAwMDAwMDAyNzU2NjA2LCJib3VnaHQiOnRydWV9LCJoZWF0ZWRQbGFudGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMDI0ODIxMzI4NDg2MzM2NjEzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODUyMDAwMDAwMDI3NzIzOSwiYm91Z2h0Ijp0cnVlfSwiZmVydGlsaXplckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwMDgxNTAyMTIxNDkxNjk1ODMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41NzYwMDAwMDAwMjc4ODU4LCJib3VnaHQiOnRydWV9LCJzbWFsbEZpcmVFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjIwMDM1MTgwMjE1NDk1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTMyMDAwMDAwMDE5Mzg3NSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDEzMDY0OTU0NzY3MDQ1MTQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC43NjQwMDAwMDAwMTkzNTI4LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImtpbG5FbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTk3ODg3NzcxMzM4ODM2NiIsImFtb3VudE9mVGltZXNEb25lIjowLjI5MjAwMDAwMDAxOTM4ODc1LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDc4MTcwMTIyMzYxOTY1MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4yMDgwMDAwMDAwMDQ1NDQxLCJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwOTU1MTMxMTQzMzczMDAxIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDAwMDAwMDAwMDA0Njg0NiwiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjg5ODE3OTYwNTUxMDk4MjQiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC44NzYwMDAwMDAwMTQzOTUsImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJoZWF2eURyaWxsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMjE3MjcyNzI3MjcyODYxMjYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45NTYwMDAwMDAwMDAyMDY5LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sIm9pbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJtZXRhbEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDIxNzI3MjcyNzI3Mjg2MTI2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTU2MDAwMDAwMDAwMjA2OSwiYm91Z2h0Ijp0cnVlfSwiZHllRWxmIjp7ImJ1eVByb2dyZXNzIjowLCJhbW91bnRPZlRpbWVzRG9uZSI6MCwiYm91Z2h0IjpmYWxzZX0sInBsYXN0aWNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjY0NTg4NDY5NzU5NzI5MzYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NDAwMDAwMDAwMTQ0MjM1LCJib3VnaHQiOnRydWV9fSwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfSwiOCI6eyJlYXJuZWQiOnRydWV9LCI5Ijp7ImVhcm5lZCI6dHJ1ZX0sIjEwIjp7ImVhcm5lZCI6dHJ1ZX0sIjExIjp7ImVhcm5lZCI6dHJ1ZX19fX0sInBhcGVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInBhcGVyIjoiMS40OTU4MTk4ODQ4ODc0MzM2ZTEyOSIsInRvdGFsUGFwZXIiOiIxLjQ5NTgxOTg4NDg5OTY3MDJlMTI5IiwicGFwZXJDb252ZXJzaW9uIjp7ImdhaW5SZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjIwMiJ9LCJwbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIyMDIifSwiZXhwYW5kZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjIwMiJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjIwMiJ9LCJoZWF0ZWRQbGFudGVyc0Jvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIyMDIifSwiZmVydGlsaXplckJvb2siOnsicmVzb3VyY2UiOiIxNDE4Mi45OTk5OTk5OTk5MjciLCJhbW91bnQiOiIyMDIifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjIwMiJ9LCJib25maXJlQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjIwMiJ9LCJraWxuQm9vayI6eyJyZXNvdXJjZSI6IjE0MTgyLjk5OTk5OTk5OTkyNyIsImFtb3VudCI6IjIwMiJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiMTIifSwiYm94Qm9vayI6eyJhbW91bnQiOiIxNSJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiMjAyIn0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxNzcifSwib2lsQm9vayI6eyJhbW91bnQiOiIxNzcifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjE3NyJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjE3NyJ9LCJkeWVCb29rIjp7ImFtb3VudCI6MH0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6IjIwMiJ9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6IjIwMiJ9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiIyMDIifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsicGFwZXIiOiIxLjQ5MjQwOTQ2MTU4ODE1N2UyOCIsInRvdGFsUGFwZXIiOiIxLjQ5MjQwOTQ2MTU4ODI3OWUyOCIsImJvb2tzIjp7ImN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sInBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJleHBhbmRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sImhlYXRlZEN1dHRlcnNCb29rIjp7ImFtb3VudCI6IjU5In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJmZXJ0aWxpemVyQm9vayI6eyJhbW91bnQiOiI1OSJ9LCJzbWFsbEZpcmVCb29rIjp7ImFtb3VudCI6IjU5In0sImJvbmZpcmVCb29rIjp7ImFtb3VudCI6IjU5In0sImtpbG5Cb29rIjp7ImFtb3VudCI6IjU5In0sInBhcGVyQm9vayI6eyJhbW91bnQiOiI4In0sImJveEJvb2siOnsiYW1vdW50IjoiOCJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiNTkifSwiY29hbERyaWxsQm9vayI6eyJhbW91bnQiOiIxIn0sImhlYXZ5RHJpbGxCb29rIjp7ImFtb3VudCI6IjEifSwib2lsQm9vayI6eyJhbW91bnQiOiIxIn0sIm1ldGFsQm9vayI6eyJhbW91bnQiOiIxIn0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6MH0sInNlY29uZGFyeUR5ZUJvb2siOnsiYW1vdW50IjowfSwicGxhc3RpY0Jvb2siOnsiYW1vdW50IjoiNTkifX0sInVwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJkcmlsbGluZ1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwib2lsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwidXBncmFkZXMyIjp7ImFzaFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ0cmVlVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImJveGVzIjp7Im1pbmltaXplZCI6ZmFsc2UsImJveGVzIjoiMS45NjI0NjY0NzI0MTk2NDU0ZTExMyIsInRvdGFsQm94ZXMiOiIxLjk2MjQ2NjQ3MjQzNTA1NzFlMTEzIiwiYm94ZXNDb252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjE4MDA3NjU0MDEyNDU5LjM2IiwiZ2FpblJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMifSwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsicmVzb3VyY2UiOiI4MDEzLjk5OTk5OTk5OTk5MyIsImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiI5MDEifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjoiODAxMy45OTk5OTk5OTk5OTMiLCJhbW91bnQiOiI0MTAifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6IjgwMTMuOTk5OTk5OTk5OTkzIiwiYW1vdW50IjoiMzE3In19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjIzMiJ9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxNjgifSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxNDYifX0sIm1hc3RlcnkiOnsiYm94ZXMiOiIxLjk1NzA1MjEzOTIxNDc4OWUyMCIsInRvdGFsQm94ZXMiOiIxLjk1NzA1MjEzOTQwNDg3ZTIwIiwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiYXNoVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7Im9yZVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInBsYXN0aWNVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJyb3czVXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJkeWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX19LCJidXlhYmxlcyI6eyJsb2dCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiNjEifSwiYXNoQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjQwIn0sImNvYWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjoiMzMifX0sImJ1eWFibGVzMiI6eyJvcmVCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwibWV0YWxCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOjB9fX0sIm1hc3RlcmVkIjp0cnVlLCJidXlhYmxlczMiOnsicHJlc2VudEJ1eWFibGUiOnsiYW1vdW50IjoiODgifX19LCJtZXRhbCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJvcmUiOiI1LjQyOTQ0MTUxNzMxMjEwMmUzOCIsImJlc3RPcmUiOiI3LjA0MTgzMjU4MTk3MDk1NWUzOCIsIm9yZVByb2dyZXNzIjoiMC4yNDY1MTEwMTgzMDU4NDU2NSIsIm1ldGFsIjoiMS4yNDAxNTEyMjM2NTUxMTIyZTcyIiwiYmVzdE1ldGFsIjoiMS4yNDAxNTEyMjM2NTUxMTIyZTcyIiwidG90YWxNZXRhbCI6IjIuMjI2NzYyNzc3MjUxMTAzNGU3MiIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjEwNzc5NzQ4In0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIxMDc3OTc1In0sImF1dG9TbWVsdEVuYWJsZWQiOnRydWUsImhvdHRlckZvcmdlIjp7ImFtb3VudCI6IjE1NDE5MDgifSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsib3JlIjoiMzQxMDQzNjgxNS43MjE3MTIiLCJiZXN0T3JlIjoiMzgyODQzODY3NC4wMTIzODciLCJvcmVQcm9ncmVzcyI6IjAuMTE2NzgzMDY1MjIxNjM2NCIsIm1ldGFsIjoiMS4wNzk1MDI0NTk3MzE5NTg1ZTE3IiwiYmVzdE1ldGFsIjoiMS4wNzk1MDI0NTk3MzE5NTg1ZTE3IiwidG90YWxNZXRhbCI6IjEuMDgwMjUzNDI2Mzk1NDc3M2UxNyIsInNpbXBsZVBpY2theGUiOnsiYm91Z2h0Ijp0cnVlfSwiZG91YmxlUGlja2F4ZSI6eyJib3VnaHQiOmZhbHNlfSwiY3J1Y2libGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sImluZHVzdHJpYWxGdXJuYWNlIjp7ImJvdWdodCI6dHJ1ZX0sImVmZmljaWVudERyaWxsIjp7ImJvdWdodCI6dHJ1ZX0sIm9yZURyaWxsIjp7ImFtb3VudCI6IjI3OSJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMjgifSwiaG90dGVyRm9yZ2UiOnsiYW1vdW50IjoiMjUifX0sIm1hc3RlcmVkIjp0cnVlfSwiY2xvdGgiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGgiOiIyLjE1MzU0NzIwMTk1MDYxNjNlMTgiLCJ0b3RhbENsb3RoIjoiMS4wMjM2NDg0MDA2NTY4NTE0ZTIwIiwid29vbCI6IjYuODAzMTU2NzY5MDQ0MDMyZTE5Iiwic2hlZXAiOiI3LjA3MDk5NTk2NDM1Njg1NWUxOSIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiI0MDQ4NiJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiMzgzODAifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiNTg0NTcifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjEsIm1hc3RlcnkiOnsiY2xvdGgiOiIxMDEwMTA5MDQiLCJ0b3RhbENsb3RoIjoiMTAxMDE4MzU0Iiwid29vbCI6IjY1MDY0MDc4Iiwic2hlZXAiOiI2MTMwNDQwNyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIzOTUifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjQyOSJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI2MzQifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjIuMjY1MzA4NjkwNDY3MzU0NWUyNSIsInRvdGFsT2lsIjoiNy4zODAzNzE2NjQwMDM4MzVlMjUiLCJkZXB0aCI6IjExMzQxNSIsImRyaWxsUHJvZ3Jlc3MiOiI0LjkyOTA5MDY1MDA3OTE3NWU1MSIsImFjdGl2ZUhlYXZ5IjoiMTUxMSIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTUxMSJ9LCJhY3RpdmVIZWF2eTIiOiI3MDQiLCJidWlsZEhlYXZ5MiI6eyJhbW91bnQiOiI3MDQifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTYwIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTYwIn0sImFjdGl2ZVB1bXAiOiIxNTEiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTUxIn0sImFjdGl2ZUJ1cm5lciI6IjkxMiIsImJ1aWxkQnVybmVyIjp7ImFtb3VudCI6IjkxMiJ9LCJhY3RpdmVTbWVsdGVyIjoiNDQ1IiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjQ0NSJ9LCJkZXB0aE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWREZXB0aE1pbGVzdG9uZXMiOmZhbHNlLCJyb3cxVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJyb3cyVXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9LCI0Ijp7ImJvdWdodCI6dHJ1ZX19LCJvaWxNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZWRPaWxNaWxlc3RvbmVzIjpmYWxzZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsib2lsIjoiMTEzNzI2NDY3My4wNTQ1MDE4IiwidG90YWxPaWwiOiIxMTQwNjE4NjIzLjA1NDUwMjIiLCJkZXB0aCI6IjIzNjQyIiwiZHJpbGxQcm9ncmVzcyI6IjQ0MDE5NzM2NDM2NjUuOTYzIiwiYWN0aXZlSGVhdnkiOiIxMDQiLCJidWlsZEhlYXZ5Ijp7ImFtb3VudCI6IjEwNCJ9LCJhY3RpdmVIZWF2eTIiOiI0MyIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjQzIn0sImFjdGl2ZUV4dHJhY3RvciI6IjExIiwiYnVpbGRFeHRyYWN0b3IiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlUHVtcCI6IjExIiwiYnVpbGRQdW1wIjp7ImFtb3VudCI6IjExIn0sImFjdGl2ZUJ1cm5lciI6IjI2IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiMjYifSwiYWN0aXZlU21lbHRlciI6IjEzIiwiYnVpbGRTbWVsdGVyIjp7ImFtb3VudCI6IjEzIn0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6ZmFsc2V9LCIxIjp7ImJvdWdodCI6ZmFsc2V9LCIyIjp7ImJvdWdodCI6ZmFsc2V9LCIzIjp7ImJvdWdodCI6ZmFsc2V9LCI0Ijp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwicGxhc3RpYyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwbGFzdGljIjoiMS4zNDA2NTQ0ODg1NDgyNTVlMjQiLCJ0b3RhbFBsYXN0aWMiOiIxLjM1MDcxOTMyMTIyMjg2ODhlMjQiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjgxMiJ9LCJhY3RpdmVSZWZpbmVyeSI6IjgxMiIsInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiOTE5OTI2MCJ9LCJwYXNzaXZlQm94ZXMiOnsiYW1vdW50IjoiOTE5OTI2MCJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjkxOTkyNjAifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJtYXN0ZXJ5Ijp7InBsYXN0aWMiOiI0NDU3MDk0LjQ1NzIwOTMxOSIsInRvdGFsUGxhc3RpYyI6IjQ0Nzg5MzQuNDU3MjA5MzI5IiwiYWN0aXZlUmVmaW5lcnkiOiI3OCIsImJ1aWxkUmVmaW5lcnkiOnsiYW1vdW50IjoiNzgifSwidXBncmFkZXMiOnsicGFwZXJUb29scyI6eyJib3VnaHQiOnRydWV9LCJib3hUb29scyI6eyJib3VnaHQiOnRydWV9LCJjbG90aFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX19LCJlbGZVcGdyYWRlcyI6eyJwYXBlckVsZiI6eyJib3VnaHQiOnRydWV9LCJib3hFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhFbGYiOnsiYm91Z2h0Ijp0cnVlfX0sImJ1eWFibGVzIjp7InBhc3NpdmVQYXBlciI6eyJhbW91bnQiOiIxMzE2In0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiIxMzE2In0sImNsb3RoR2FpbnMiOnsiYW1vdW50IjoiMTMxNiJ9fX0sIm1hc3RlcmVkIjp0cnVlfSwiZHllcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJkeWVzIjp7InJlZCI6eyJhbW91bnQiOiIyODI0MDIyOTk0MzEuNTgwNDQiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE2MjUifX0sInllbGxvdyI6eyJhbW91bnQiOiIxNTMwNDQxMDAyODkuNzg3OTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1NTcifX0sImJsdWUiOnsiYW1vdW50IjoiMjAxMDkyMjU0OTkuNzgyNDc1IiwiYnV5YWJsZSI6eyJhbW91bnQiOiIxNDkxIn19LCJvcmFuZ2UiOnsiYW1vdW50IjoiNDQ1MTYiLCJidXlhYmxlIjp7ImFtb3VudCI6IjExMDgifX0sImdyZWVuIjp7ImFtb3VudCI6IjMzODA0IiwiYnV5YWJsZSI6eyJhbW91bnQiOiI5NTMifX0sInB1cnBsZSI6eyJhbW91bnQiOiIzMjI3NiIsImJ1eWFibGUiOnsiYW1vdW50IjoiOTI5In19LCJibGFjayI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjMwNiJ9fSwid2hpdGUiOnsiYnV5YWJsZSI6eyJhbW91bnQiOiIzMDYifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7IjAiOmZhbHNlfSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7ImR5ZXMiOnsicmVkIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiIyNSJ9fSwiZ3JlZW4iOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjgifX0sImJsdWUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjE3In19LCJ5ZWxsb3ciOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjIxIn19LCJwdXJwbGUiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjgifX0sIm9yYW5nZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiOCJ9fX0sInVwZ3JhZGVzIjp7ImJsdWVEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiYmx1ZUR5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZyI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwibWFuYWdlbWVudCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJlbGZUcmFpbmluZyI6eyJjdXR0ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjMxMjgzNTEuMjc0MDQzMzc4NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNjI2NDYwNC41MzU1NDg1MjYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiOTM3MjA3Mi44MjY3NjE0NTYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImhlYXRlZEN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMjQ5NjY4My42MzkxMDM5ODYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImhlYXRlZFBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjE1NjM4MzM4LjQ5OTE2MTAyMiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZmVydGlsaXplckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc0NDM2OC42NTM5ODAxNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwic21hbGxmaXJlRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjIxODY4MTc4LjU2MDM0NzY5NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiYm9uZmlyZUVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIyNDk5Mjk4MC43MjM4NTcxMDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMjgxMTYyNDkuMjEyMDQwMjYiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjEwNDM3NjQ3LjI3NzQ3NDU2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTE0NTYzODcuNzM0NzIxMDQ4IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMzc1NjM5NzYuNDIwMzIwMDg2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiNDA2MjkxODUuNjI0OTYwNzEiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sIm1ldGFsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0OTk4NTgwNC4xOTQ4MDM0NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwib2lsRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ2ODYzMTM2LjEwMzU5MDExNiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiI0MzczNjQzMy4zNzE3ODQyNyIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiZHllRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjUzNDM2NzE3Ljg3MTQ3MjYwNSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhc3RpY0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNTY1MjM3ODAuMTIxNjc2ODI1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19fSwiY3VycmVudFNob3duIjoiU3RhciIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0ZWFjaGluZyI6eyJib3VnaHQiOnRydWV9LCJzY2hvb2xzIjp7ImFtb3VudCI6IjUifSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOiIyMjk0In0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZm9jdXNNdWx0aXBsaWVyIjoiMS4xNjE2MzA5MjA2ODAyOTE1IiwidXBncmFkZXMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX0sImZvY3VzVGFyZ2V0cyI6e30sImZvY3VzQ29vbGRvd24iOjAsImZvY3VzVGltZSI6MCwiYWR2YW5jZWRVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGVzMiI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9fSwiZm9jdXNNdWx0aSI6IjE5Ljc2MjAwMTEyMTg2MDkiLCJtYXN0ZXJ5Ijp7ImVsZlRyYWluaW5nIjp7ImJvbmZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm9pbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImR5ZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwidGVhY2hpbmciOnsiYm91Z2h0IjpmYWxzZX0sInNjaG9vbHMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzTXVsdGkiOiIxLjE2OTY0OTA1MzIwMjE3OTciLCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjB9fSwid3JhcHBpbmdQYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJ3cmFwcGluZ1BhcGVyIjp7ImNocmlzdG1hcyI6eyJidXlhYmxlIjp7ImFtb3VudCI6Ijc1In19LCJyYWluYm93Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTQifX0sImphenp5Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiOTcifX0sInN1bnNoaW5lIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNjQifX0sIm9jZWFuIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTkifX0sImJlYWNoIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNjcifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWlsZXN0b25lcyI6eyJwcmltYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhQcmltYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlOb1Jlc2V0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhTZWNvbmRhcnkiOnsiZWFybmVkIjpmYWxzZX0sInVubG9ja0R5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwidW5sb2NrRHllRWxmTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJsZXR0ZXJzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxldHRlcnMiOiI4MDAwMDAwMDAwIiwidG90YWxMZXR0ZXJzIjoiMy41NTYyNjIzOTY5MjgxODM1ZTI0ODgiLCJwcm9jZXNzaW5nUHJvZ3Jlc3MiOiIyLjEyMTEwOTUxNjY2ODMxNGUtMTI0NSIsImJ1eWFibGVzIjp7Im1ldGFsQnV5YWJsZSI6eyJhbW91bnQiOiIyMyJ9LCJwbGFzdGljQnV5YWJsZSI6eyJhbW91bnQiOiIzOCJ9LCJwYXBlckJ1eWFibGUiOnsiYW1vdW50IjoiODYifX0sIm1pbGVzdG9uZXMiOnsiYXV0b1NtZWx0aW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbmluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJzeW5lcmd5TWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sImluZHVzdHJpYWxDcnVjaWJsZU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsIm1hc3RlcnkiOnsibGV0dGVycyI6IjEyMzcyOTguMTAwNjI1MDQzMyIsInRvdGFsTGV0dGVycyI6IjEyMzcyOTguMTAwNjI1MDQzMyIsImJ1eWFibGVzIjp7Im1ldGFsQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwbGFzdGljQnV5YWJsZSI6eyJhbW91bnQiOjB9LCJwYXBlckJ1eWFibGUiOnsiYW1vdW50IjowfX0sIm1pbGVzdG9uZXMiOnsiYXV0b1NtZWx0aW5nTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbmluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJzeW5lcmd5TWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX0sImluZHVzdHJpYWxDcnVjaWJsZU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwicmliYm9uIjp7Im1pbmltaXplZCI6ZmFsc2UsInJpYmJvbiI6Ijk1IiwibWlsZXN0b25lcyI6eyJzZWNvbmRhcnlEeWVFbGYiOnsiZWFybmVkIjp0cnVlfSwiZHllQm9vayI6eyJlYXJuZWQiOnRydWV9fSwicmliYm9uUHJvZ3Jlc3MiOjEwLCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9fSwidG95cyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjbG90aGVzIjoiMTUyMTI4OS41MTA2NDA3MzU1Iiwid29vZGVuQmxvY2tzIjoiNTExNTYxMS4xMTc3OTIwNzgiLCJ0cnVja3MiOiIxMzkwOTQzLjQ3OTYyNDU0MSIsInRvdGFsVG95cyI6IjEwNjU4MTUyLjMxMzk2ODk0OSIsImJ1eWFibGVzIjp7IjAiOnsiYW1vdW50IjoiNzI5In0sIjEiOnsiYW1vdW50IjoiMzE5In0sIjIiOnsiYW1vdW50IjoiMzkyOSJ9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU2Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lOCI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2V9LCJmYWN0b3J5Ijp7Im1pbmltaXplZCI6ZmFsc2UsImNvbXBvbmVudHMiOnsiLTR4LTYiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDY1ODEsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJ3b29kIjo0Nn0sIm91dHB1dFN0b2NrIjp7InBsYW5rIjowfSwidHlwZSI6InBsYW5rIn0sIi0yeC02Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA2NTgxLCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhbmsiOjV9LCJvdXRwdXRTdG9jayI6eyJib3giOjB9LCJ0eXBlIjoiYm94TWFrZXIifSwiLTV4LTYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItM3gtNiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi02eC02Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA2NzIzLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCItMngtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4LTQiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDY3MjMsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiZHllIjoxNjF9LCJ0eXBlIjoiZHllIn0sIi0yeC00Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA2ODMsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJkeWUiOjg0MiwicGxhc3RpYyI6NDM1LCJjbG90aCI6MTIxLCJib3giOjI5NSwiYnV0dG9ucyI6Miwid2hlZWwiOjEsImNpcmN1aXRCb2FyZCI6MX0sInR5cGUiOiJwcmVzZW50In0sIjB4LTQiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDY1ODEsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTYxfSwidHlwZSI6InBsYXN0aWMifSwiLTJ4LTIiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDY1ODEsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTJ4LTMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgtNCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIi01eC00Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA2NDM5LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCItNXg0Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1ODcsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJtZXRhbCI6MywicGxhc3RpYyI6MTEzMDQsImNpcmN1aXRCb2FyZCI6NjN9LCJvdXRwdXRTdG9jayI6eyJjb25zb2xlIjowfSwidHlwZSI6ImNvbnNvbGUifSwiLTV4MiI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTg3LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjEwLCJwbGFzdGljIjozNDM2OX0sIm91dHB1dFN0b2NrIjp7ImNpcmN1aXRCb2FyZCI6MH0sInR5cGUiOiJjaXJjdWl0Qm9hcmQifSwiLTV4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTV4MSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTZ4MSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eDEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeDEiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDYwMTIsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTYxfSwidHlwZSI6InBsYXN0aWMifSwiLTd4MSI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNjAxMiwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJtZXRhbCI6MH0sInR5cGUiOiJtZXRhbCJ9LCItNng0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4NCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4NCI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTg3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjE2MX0sInR5cGUiOiJwbGFzdGljIn0sIi03eDQiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU4NywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJtZXRhbCI6MH0sInR5cGUiOiJtZXRhbCJ9LCIxeDMiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU4NywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJ3b29kIjowfSwidHlwZSI6Indvb2QifSwiMngzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDMiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU4NywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7Indvb2QiOjR9LCJvdXRwdXRTdG9jayI6eyJwbGFuayI6MH0sInR5cGUiOiJwbGFuayJ9LCI0eDMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCI1eDMiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU3MjgsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFuayI6MTEyODR9LCJvdXRwdXRTdG9jayI6eyJibG9jayI6MH0sInR5cGUiOiJibG9ja3MifSwiMng2Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA0NzY5LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjYsIndoZWVsIjoxMTUzNH0sIm91dHB1dFN0b2NrIjp7InRydWNrcyI6MH0sInR5cGUiOiJ0cnVja3MifSwiMHg2Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1NzI4LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6MzMxOTUsIm1ldGFsIjoyOX0sIm91dHB1dFN0b2NrIjp7IndoZWVsIjowfSwidHlwZSI6IndoZWVsIn0sIjR4NiI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTcyOCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjMzMTg5LCJtZXRhbCI6Mjh9LCJvdXRwdXRTdG9jayI6eyJ3aGVlbCI6MH0sInR5cGUiOiJ3aGVlbCJ9LCIxeDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCI1eDYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeDYiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU3MjgsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTYxfSwidHlwZSI6InBsYXN0aWMifSwiNng2Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1NzI4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjE2MX0sInR5cGUiOiJwbGFzdGljIn0sIjJ4NSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMng0Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1NzI4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjd4LTMiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU0NDQsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoxMDczOH0sIm91dHB1dFN0b2NrIjp7ImJ1Y2tldCI6MH0sInR5cGUiOiJidWNrZXQifSwiOHgtMiI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTQ0NCwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjIxNjM5fSwib3V0cHV0U3RvY2siOnsic2hvdmVsIjowfSwidHlwZSI6InNob3ZlbCJ9LCI3eC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiOHgtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiN3gtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiOHgtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiN3gtNCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiOHgwIjp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1NTE1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiYnVja2V0IjoyLCJzaG92ZWwiOjV9LCJvdXRwdXRTdG9jayI6eyJzaG92ZWxCdWNrZXQiOjB9LCJ0eXBlIjoiYnVja2V0U2hvdmVsIn0sIjd4LTUiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU0NDQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTYxfSwidHlwZSI6InBsYXN0aWMifSwiOHgtNCI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTQ0NCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjoxNjF9LCJ0eXBlIjoicGxhc3RpYyJ9LCIxeC0xIjp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1MjkzLCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsidGhyZWFkIjo1LCJjbG90aCI6NDExLCJkeWUiOjMyNDAwLCJ3b29kIjoxMX0sIm91dHB1dFN0b2NrIjp7ImNsb3RoZXMiOjB9LCJ0eXBlIjoiY2xvdGhlcyJ9LCIweC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTEiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDU0NDQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiZHllIjoxNjF9LCJ0eXBlIjoiZHllIn0sIjF4LTMiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDUyODQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMXgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMngtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMngtNCI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTI4NCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCIzeC00Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1Mjg0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIjV4LTEiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDUyODQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMngtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiNHgtMSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMSI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTM1NSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjoyfSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjowfSwidHlwZSI6InRocmVhZCJ9LCI0eDAiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDUyODQsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6OTN9LCJvdXRwdXRTdG9jayI6eyJ0aHJlYWQiOjB9LCJ0eXBlIjoidGhyZWFkIn0sIjZ4MCI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTI4NCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCI1eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjN4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgyIjp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1MTc3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCIxeDIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtMSI6eyJ0aWNrc0RvbmUiOjAuODcwMDAwMDAwMDAwMzYzMSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InRocmVhZCI6MzQyOCwic3R1ZmZpbmciOjM0MDksImR5ZSI6MzM3MTMsImJ1dHRvbnMiOjB9LCJvdXRwdXRTdG9jayI6eyJiZWFyIjowfSwidHlwZSI6ImJlYXIifSwiLTh4LTEiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDUwMTgsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6Mn0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiLTd4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTZ4LTMiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDUwMTgsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6Mn0sIm91dHB1dFN0b2NrIjp7InN0dWZmaW5nIjowfSwidHlwZSI6InN0dWZmaW5nIn0sIi02eC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNngtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiLTd4MCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi02eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgwIjp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA1MDE4LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6MTYxfSwidHlwZSI6ImR5ZSJ9LCItOHgtMyI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTAxOCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNngtNSI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNTAxOCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNHgtMSI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNDg5MywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjI5OTg5fSwib3V0cHV0U3RvY2siOnsiYnV0dG9ucyI6MH0sInR5cGUiOiJidXR0b24ifSwiLTV4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngtMSI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNDg5MywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjoxNjF9LCJ0eXBlIjoicGxhc3RpYyJ9LCItMXgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTYiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC03Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA0MTY1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6Mjc2NTR9LCJvdXRwdXRTdG9jayI6eyJ3aGVlbCI6MH0sInR5cGUiOiJ3aGVlbCJ9LCIweC03Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA0MTY1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6Mjc2NDR9LCJvdXRwdXRTdG9jayI6eyJidXR0b25zIjowfSwidHlwZSI6ImJ1dHRvbiJ9LCIyeC01Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA0MTY1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjJ9LCJvdXRwdXRTdG9jayI6eyJzdHVmZmluZyI6MH0sInR5cGUiOiJzdHVmZmluZyJ9LCIxeC03Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA0MjE4LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjIsInBsYXN0aWMiOjI3NjA1fSwib3V0cHV0U3RvY2siOnsiY2lyY3VpdEJvYXJkIjowfSwidHlwZSI6ImNpcmN1aXRCb2FyZCJ9LCIweC02Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC02Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIweC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngtNyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC04Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgtOCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMXgtOCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiMngtNyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMngtOCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTciOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDQzMDcsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTYxfSwidHlwZSI6InBsYXN0aWMifSwiLTJ4LTgiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDQxNjUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTYxfSwidHlwZSI6InBsYXN0aWMifSwiM3gtNyI6eyJ0aWNrc0RvbmUiOjAuOTMwMDAwMDAwMDAwNDE2NSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjoxNjF9LCJ0eXBlIjoicGxhc3RpYyJ9LCIzeC04Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDA0MjM2LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjN4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjR4LTUiOnsidGlja3NEb25lIjowLjkzMDAwMDAwMDAwMDQxNjUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMXg1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHg1Ijp7InRpY2tzRG9uZSI6MC45MzAwMDAwMDAwMDAzNjMyLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn19LCJlbGZCdXlhYmxlcyI6eyJjbG90aGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxNyJ9LCJibG9ja3NCdXlhYmxlIjp7ImFtb3VudCI6IjE5In0sInRydWNrc0J1eWFibGUiOnsiYW1vdW50IjoiMTYifSwiYmVhcnNCdXlhYmxlIjp7InJlc291cmNlIjoiMjM0OCIsImFtb3VudCI6IjE4In0sImJ1Y2tldEJ1eWFibGUiOnsicmVzb3VyY2UiOiIxNTI1IiwiYW1vdW50IjoiMTcifSwiY29uc29sZXNCdXlhYmxlIjp7InJlc291cmNlIjoiMTUwMSIsImFtb3VudCI6IjE5In19LCJ0YWJzIjp7InNlbGVjdGVkIjoiZGFzaGJvYXJkIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJiZWFycyI6IjE5MzMxNjQuNDQ4NzgzMDkxIiwiYnVja2V0QW5kU2hvdmVscyI6IjE1MjE4MDEuNzM2NDg5NTg1OCIsImNvbnNvbGVzIjoiNTExODQyOS42MDA3Mjc2MiIsImZhY3RvcnlCdXlhYmxlcyI6eyJleHBhbmRGYWN0b3J5Ijp7ImFtb3VudCI6IjUifSwib2lsRnVlbCI6eyJhbW91bnQiOiIzIn0sImNhcnJ5VG95cyI6eyJhbW91bnQiOiI5In19LCJ1cGdyYWRlcyI6eyIwIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjEiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9fSwiMiI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX19LCIzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjQiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX19fSwicHJlc2VudHMiOiI1ODg4NDkwNTM5NC41NTI4NCIsImZhY3RvcnlCdXlhYmxlczIiOnsiY2FycnlCb3hlcyI6eyJhbW91bnQiOiIxNSJ9fX0sInJlaW5kZWVyIjp7Im1pbmltaXplZCI6ZmFsc2UsInJlaW5kZWVyIjp7ImRvbm5lciI6eyJ0aW1lc0ZlZCI6IjIyNC43MDkzODU0ODkxMTM4NiIsInByb2dyZXNzIjoiNSJ9LCJibGl0emVuIjp7InRpbWVzRmVkIjoiMjI0LjIzMjUxMTQ0NjgyNzQiLCJwcm9ncmVzcyI6IjUifSwicnVkb2xwaCI6eyJ0aW1lc0ZlZCI6IjI0MS42NTQ4NDQ3MDE5NDgyNiIsInByb2dyZXNzIjoiNSJ9LCJ2aXhlbiI6eyJ0aW1lc0ZlZCI6IjIzMi4yNDY0NzA3NDMwMzY3NSIsInByb2dyZXNzIjoiNSJ9LCJjb21ldCI6eyJ0aW1lc0ZlZCI6IjE4NS43MzkxMDEyMjU2MzI5NCIsInByb2dyZXNzIjoiNSJ9LCJjdXBpZCI6eyJ0aW1lc0ZlZCI6IjIxNy43MTc1NTA3OTI4ODk4NSIsInByb2dyZXNzIjoiNSJ9LCJkYXNoZXIiOnsidGltZXNGZWQiOiIyNTUuMjI1ODQ5Mzg4MzgyMTMiLCJwcm9ncmVzcyI6IjUifSwiZGFuY2VyIjp7InRpbWVzRmVkIjoiMTc0LjEzOTgzNzg0Nzg2NDg0IiwicHJvZ3Jlc3MiOiI1In0sInByYW5jZXIiOnsidGltZXNGZWQiOiIxNzMuMTQ0ODY2MjQwMzIwMDMiLCJwcm9ncmVzcyI6IjUifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0aW1lU2luY2VGb2N1cyI6MTYuMzcxMDAwMDAwMDAwMDE2LCJjdXJyTXVsdGlwbGllciI6IjMuOTEyNjg0NDU2NzI2OTY4NyIsImN1cnJUYXJnZXRzIjp7IlJ1ZG9scGgiOnRydWUsIkN1cGlkIjp0cnVlfSwiY3VyckNvb2xkb3duIjowLCJ1cGdyYWRlcyI6eyJ1cGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNCI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNiI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlNyI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlOCI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlOSI6eyJib3VnaHQiOnRydWV9fSwiY3JpdCI6Mn0sInNsZWlnaCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU2Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lOCI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJzbGVpZ2giOnsiYW1vdW50IjoiMTAwIn19LCJyb3V0aW5nIjp7Im1pbmltaXplZCI6ZmFsc2UsImNpdGllc0NvbXBsZXRlZCI6MCwiY3VycmVudENpdHkiOltbMCw3LDVdLFs3LDAsN10sWzUsNywwXV0sInJvdXRlSW5kZXgiOjAsImNoZWNrUm91dGVQcm9ncmVzcyI6MCwibmV3Q2l0eVByb2dyZXNzIjowLCJib29zdFByb2dyZXNzIjowLCJyZWR1bmRhbnRQcm9ncmVzcyI6MCwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInJvdXRlc1RvU2tpcCI6W10sInJlZHVuZGFuY2llc1JlbW92ZWQiOjAsIm1ldGFCdXlhYmxlcyI6eyJtZXRhbCI6eyJhbW91bnQiOjB9LCJjb25zb2xlIjp7ImFtb3VudCI6MH0sImNsYXNzcm9vbSI6eyJhbW91bnQiOjB9LCJ0aWNrIjp7ImFtb3VudCI6MH19LCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTIiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTMiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTUiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTYiOnsiZWFybmVkIjpmYWxzZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsIm1ldGFNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX0sIjUiOnsiZWFybmVkIjpmYWxzZX0sIjYiOnsiZWFybmVkIjpmYWxzZX19LCJjb2xsYXBzZU1ldGFNaWxlc3RvbmVzIjp0cnVlfX0sImF1dG9QYXVzZSI6dHJ1ZSwidXNpbmdMb2ciOnRydWUsImRldlNvZWVkIjoxfQ==","./../../saves/Day 23 Complete.txt":"eyJpZCI6ImFkdmVudC1pbmNyZW1lbnRhbC0wIiwiZGV2U3BlZWQiOjAsIm5hbWUiOiJEZWZhdWx0IFNhdmUiLCJ0YWJzIjpbIm1haW4iLCJyb3V0aW5nIl0sInRpbWUiOjE2NzE5MTU5NDAxNzUsImF1dG9zYXZlIjp0cnVlLCJvZmZsaW5lUHJvZCI6ZmFsc2UsIm9mZmxpbmVUaW1lIjpudWxsLCJ0aW1lUGxheWVkIjoxMDA2MzAuNzcxNTE5Mzg1OTgsImtlZXBHb2luZyI6ZmFsc2UsIm1vZElEIjoiYWR2ZW50LWluY3JlbWVudGFsIiwibW9kVmVyc2lvbiI6IjAuNiIsImxheWVycyI6eyJtYWluIjp7Im1pbmltaXplZCI6ZmFsc2UsImRheXMiOnsiMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxIjp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjIiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI0Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjUiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCI3Ijp7Im9wZW5lZCI6dHJ1ZSwicmVjZW50bHlVcGRhdGVkIjpmYWxzZX0sIjgiOnsib3BlbmVkIjp0cnVlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfSwiOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxMyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxNyI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIxOSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMCI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMSI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMiI6eyJvcGVuZWQiOnRydWUsInJlY2VudGx5VXBkYXRlZCI6ZmFsc2V9LCIyMyI6eyJvcGVuZWQiOmZhbHNlLCJyZWNlbnRseVVwZGF0ZWQiOmZhbHNlfX0sImRheSI6MjQsImlzTWFzdGVyeSI6ZmFsc2V9LCJ0cmVlcyI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJsb2dzIjoiMy41MjkxMzAyODA5NTMxMzU3ZTEwNiIsInRvdGFsTG9ncyI6IjMuNTM5MTMxMjgyMDUxOTIyZTEwNiIsInRyZWVzIjoiMTAiLCJzYXBsaW5ncyI6IjkuOTY2ODQzODMzMTAwMzY2ZTMxIiwicm93MVVwZ3JhZGVzIjp7IjAiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIxIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjMiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCI0Ijp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX0sIjIiOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJib3VnaHQiOnRydWV9LCIzIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiNCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImJvdWdodCI6dHJ1ZX19LCJyb3cxQnV5YWJsZXMiOnsiMCI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6Ijk2ODkwMjUifSwiMSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6Ijk5NzE5NTAifSwiMiI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjI5NjYyMzY3In19LCJtYW51YWxDdXRQcm9ncmVzcyI6IjAuMDAwMDAxOTA3MzQ4NjMyODEyNDk5NCIsIm1hbnVhbFBsYW50UHJvZ3Jlc3MiOiIwLjAwMDAwMTkwNzM0ODYzMjgxMjQ5OTQiLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiY3JlYXRlZFNhcGxpbmdzIjoiMi4wMTIxOTk2MTY4MDI0MTE3ZTMyIiwibWFzdGVyeSI6eyJsb2dzIjoiNC44NzIxNTI2NTU1MjE0MDhlMjMiLCJ0b3RhbExvZ3MiOiI0LjkyODMzODg0MDQwMTMyZTIzIiwic2FwbGluZ3MiOiI2NTM3NTA1Mjc0ODM2OC44MyIsInJvdzFVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzFCdXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjExMzI5NSJ9LCIxIjp7ImFtb3VudCI6IjExMzI5NSJ9LCIyIjp7ImFtb3VudCI6IjMzNTgyNyJ9fSwiY3JlYXRlZFNhcGxpbmdzIjoiNjUzNzU4MzUwNzcyMDEuNTE2In0sIm1hc3RlcmVkIjp0cnVlfSwid29ya3Nob3AiOnsibWluaW1pemVkIjpmYWxzZSwiZm91bmRhdGlvblByb2dyZXNzIjoiMTcxNSIsImZvdW5kYXRpb25Db252ZXJzaW9uIjp7ImJhc2VSZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImdhaW5SZXNvdXJjZSI6IjEwMCJ9LCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUyIjp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmU1Ijp7ImVhcm5lZCI6dHJ1ZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNiI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwibWFzdGVyeSI6eyJmb3VuZGF0aW9uUHJvZ3Jlc3MiOiIxMDAiLCJtaWxlc3RvbmVzIjp7ImxvZ0dhaW5NaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9DdXRNaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sImF1dG9QbGFudE1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwiYXV0b0N1dE1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwiYXV0b1BsYW50TWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtb3JlUGxhbnRzTWlsZXN0b25lMSI6eyJlYXJuZWQiOnRydWV9LCJsb2dHYWluTWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTEiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lMiI6eyJlYXJuZWQiOmZhbHNlfSwiZXh0cmFFeHBhbnNpb25NaWxlc3RvbmUzIjp7ImVhcm5lZCI6ZmFsc2V9LCJleHRyYUV4cGFuc2lvbk1pbGVzdG9uZTQiOnsiZWFybmVkIjpmYWxzZX0sImV4dHJhRXhwYW5zaW9uTWlsZXN0b25lNSI6eyJlYXJuZWQiOmZhbHNlfX19LCJtYXN0ZXJlZCI6dHJ1ZSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e319LCJjb2FsIjp7Im1pbmltaXplZCI6ZmFsc2UsImNvYWwiOiI0LjQyNTUyNDA4MzcwODI2NmUxODgiLCJ0b3RhbENvYWwiOiI0LjQyNTUyNDA4MzcxMTE2M2UxODgiLCJhc2giOiIxLjEwNDUyOTg0MDk3MjMyNDNlMTM1IiwiYWN0aXZlRmlyZXMiOiIwIiwiYnVpbGRGaXJlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMCJ9LCJhY3RpdmVCb25maXJlcyI6IjEuMzM2NTgzOTEzNTkzMzIxNWUzMCIsImJ1aWxkQm9uZmlyZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMS4zMzY1ODM5MTM1OTMzMjE1ZTMwIn0sImFjdGl2ZUtpbG5zIjoiMTAyMTUiLCJidWlsZEtpbG4iOnsicmVzb3VyY2UiOiIxMDI4NDM2MDY2MTA4LjY1OTQiLCJhbW91bnQiOiIxMDIxNSJ9LCJ3YXJtZXJDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJ3YXJtZXJQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJib3VnaHQiOnRydWV9LCJ1bmxvY2tCb25maXJlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRDdXR0ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlfSwiYmV0dGVyRmVydGlsaXplciI6eyJib3VnaHQiOnRydWV9LCJ1bmxvY2tLaWxuIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVycyI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMzY3MTA1NjYyNjU2OTY3In0sImhlYXRlZFBsYW50ZXJzIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIzNjcxMDU2NjI2NTY5NjcifSwibW9yZUZlcnRpbGl6ZXIiOnsicmVzb3VyY2UiOiIxNDU2ODgyNiIsImFtb3VudCI6IjEuMTA3OTI0NDIxOTcxODAyNWUxNiJ9LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwiYWN0aXZlRHJpbGxzIjoiNTk3NCIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiNTk3NCJ9LCJlZmZpY2llbnRTbWVsdGhlciI6eyJyZXNvdXJjZSI6IjEuMzM2NDc3NzkxMzI4MjUyZTE3IiwiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6dHJ1ZX0sInJlZmluZWRDb2FsIjp7ImJvdWdodCI6dHJ1ZX0sImNvbG9yZWRGaXJlIjp7ImJvdWdodCI6dHJ1ZX0sIm1hc3RlcnkiOnsiY29hbCI6IjkuMDYyODExNzY3MjA3NTQ1ZTMzIiwidG90YWxDb2FsIjoiOS4wNjg5MjI4NzgzMTg1MzVlMzMiLCJhc2giOiIyLjY3NTI0MzQ3ODczMjE4OGUxNyIsImFjdGl2ZUZpcmVzIjoiMTA2MS44ODUzODU0NzU1Mjk4IiwiYnVpbGRGaXJlIjp7ImFtb3VudCI6IjEwNjEuODg1Mzg1NDc1NTI5OCJ9LCJhY3RpdmVCb25maXJlcyI6IjIwMDUwMyIsImJ1aWxkQm9uZmlyZSI6eyJhbW91bnQiOiIyMDA1MDMifSwiYWN0aXZlS2lsbnMiOiI2NzEiLCJidWlsZEtpbG4iOnsiYW1vdW50IjoiNjcxIn0sImFjdGl2ZURyaWxscyI6IjE2NSIsImJ1aWxkRHJpbGwiOnsiYW1vdW50IjoiMTY1In0sIndhcm1lckN1dHRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwid2FybWVyUGxhbnRlcnMiOnsiYm91Z2h0Ijp0cnVlfSwiYmFzaWNGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0JvbmZpcmUiOnsiYm91Z2h0Ijp0cnVlfSwiZGVkaWNhdGVkQ3V0dGVycyI6eyJib3VnaHQiOnRydWV9LCJkZWRpY2F0ZWRQbGFudGVycyI6eyJib3VnaHQiOnRydWV9LCJiZXR0ZXJGZXJ0aWxpemVyIjp7ImJvdWdodCI6dHJ1ZX0sInVubG9ja0tpbG4iOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50U21lbHRoZXIiOnsiYm91Z2h0Ijp0cnVlfSwiYXJzb25pc3RBc3Npc3RhbmNlIjp7ImJvdWdodCI6ZmFsc2V9LCJyZWZpbmVkQ29hbCI6eyJib3VnaHQiOmZhbHNlfSwiY29sb3JlZEZpcmUiOnsiYm91Z2h0IjpmYWxzZX0sImhlYXRlZEN1dHRlcnMiOnsiYW1vdW50IjoiOTc5OCJ9LCJoZWF0ZWRQbGFudGVycyI6eyJhbW91bnQiOiI5Nzk4In0sIm1vcmVGZXJ0aWxpemVyIjp7ImFtb3VudCI6IjI1MzUifX0sIm1hc3RlcmVkIjp0cnVlfSwiZWx2ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNDM5ODkzNTI2NDIzNTEyNjUiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzE5OCJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC40NjgwMDAwMDA5MDE0ODMzfSwicGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTA0NTkwMTE3NjUwNjg2NjUiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjoiMzE5OCJ9LCJhbW91bnRPZlRpbWVzRG9uZSI6MC4zMDAwMDAwMDA5MDQyMDU0fSwiZXhwYW5kZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA3NTA1MzYwOTA2NTU4MjYyIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjczNzkifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMjg4MDAwMDAwOTAxNzYwN30sImhlYXRlZEN1dHRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTAyNjMwMTA1NTIxNTU0NzciLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiNzc3NDc4OTk3NjUuNDgzNzgiLCJhbW91bnQiOiIyNzAifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODY0MDAwMDAwOTAyMDA5OX0sImhlYXRlZFBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAzODc5OTQyODIxMTg3MTk5IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYnV5YWJsZSI6eyJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYW1vdW50IjoiMjcwIn0sImFtb3VudE9mVGltZXNEb25lIjowLjYwODAwMDAwMDkwMTY5N30sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMDYxMTcxMjg4NDU2NTY1NzIiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJidXlhYmxlIjp7InJlc291cmNlIjoiMTQ1Njg4MjYiLCJhbW91bnQiOiIxMzkifSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjI4MDAwMDAwOTAzMDQzMX0sInNtYWxsRmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiYW1vdW50IjowfSwidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwNDIyMTUxNDQzMTgwOTczNjQiLCJyZXNvdXJjZSI6Ijc3NzQ3ODk5NzY1LjQ4Mzc4IiwiYm91Z2h0Ijp0cnVlLCJhbW91bnRPZlRpbWVzRG9uZSI6MC42NDgwMDAwMDA5MDIxMTU0fSwiYm9uZmlyZUVsZiI6eyJidXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOjB9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDA3NTU3ODM1OTQwNjE0MDcyIiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjE2MDAwMDAwODk5MjM0MX0sImtpbG5FbGYiOnsiYnV5YWJsZSI6eyJyZXNvdXJjZSI6IjEwMjg0MzYwNjYxMDguNjU5NCIsImFtb3VudCI6IjEwMiJ9LCJ0b2dnbGUiOnRydWUsImJ1eVByb2dyZXNzIjoiMC4wMDAzMTkzNDg4MDE1MDE1ODQ0IiwicmVzb3VyY2UiOiI3Nzc0Nzg5OTc2NS40ODM3OCIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTgwMDAwMDAwOTAxNTQwNn0sInBhcGVyRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDY2MDM4OTYxMDQwOTc2NTIiLCJib3VnaHQiOnRydWUsImFtb3VudE9mVGltZXNEb25lIjowLjQzNjAwMDAwMDAwNjMyMDJ9LCJib3hFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwNjc2MTk5ODg3MjM2NjEyOSIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTQ0MDAwMDAwMTY5MTM2M30sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDAyNjQ3NTk1NTQ0ODg4NTM5NyIsImJvdWdodCI6dHJ1ZSwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNDM2MDAwMDAxMDAyNDYyMDZ9LCJtaW5pbmdEcmlsbEVsZiI6eyJ0b2dnbGUiOmZhbHNlLCJidXlQcm9ncmVzcyI6MCwiYW1vdW50T2ZUaW1lc0RvbmUiOjAsImJvdWdodCI6ZmFsc2V9LCJoZWF2eURyaWxsRWxmIjp7InRvZ2dsZSI6dHJ1ZSwiYnV5UHJvZ3Jlc3MiOiIwLjAwMTMwNzU4MTA1Mzk5NzkwNTUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45MjQwMDAwMDA4NDg1ODY1LCJib3VnaHQiOnRydWV9LCJvaWxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAwMDgwNzYwMTI0NzczNjIxMTYiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC4wNjgwMDAwMDA4NDMzNjIzMywiYm91Z2h0Ijp0cnVlfSwibWV0YWxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMTE5MTExODY5Mjc3MTAzOTkiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC45MTYwMDAwMDA4NDE0OTk3LCJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGxFbGYiOnsidG9nZ2xlIjp0cnVlLCJidXlQcm9ncmVzcyI6IjAuMDAxMzA3ODM2MzMyNjY4OTk2MiIsImFtb3VudE9mVGltZXNEb25lIjowLjgyNDAwMDAwMDg1NzMxNzYsImJvdWdodCI6dHJ1ZX0sImR5ZUVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNzA1NjczMjM2NjM1MjAxNCIsImFtb3VudE9mVGltZXNEb25lIjowLjA5MjAwMDAwMDcwNjUzNDAyLCJib3VnaHQiOnRydWV9LCJwbGFzdGljRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDA3ODE5MDgxNTEwMDQwMjY2IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNjMyMDAwMDAwNjk0OTAxNiwiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX0sIjgiOnsiZWFybmVkIjp0cnVlfSwiOSI6eyJlYXJuZWQiOnRydWV9LCIxMCI6eyJlYXJuZWQiOnRydWV9LCIxMSI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2UsIm1hc3RlcnkiOnsiZWx2ZXMiOnsiY3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwNDEzMTY1NDQyMTQxNzMzIiwiYW1vdW50T2ZUaW1lc0RvbmUiOjEuMDQ1OTE4OTA3MDM4ODY3NWUtMTEsImJvdWdodCI6dHJ1ZX0sInBsYW50ZXJzRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDQxNzg1NTI0MDQ0NzY4NzEiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40MDgwMDAwMDAwMTI1MjEsImJvdWdodCI6dHJ1ZX0sImV4cGFuZGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA0MjE1MDIxNzM5Mzc4MTU1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNzk0MDAwMDAwMDA3NTM1OCwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkQ3V0dGVyc0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxNTAzODI5ODkyODI3NDM1MiIsImFtb3VudE9mVGltZXNEb25lIjowLjMwMjAwMDAwMDA0NjQ2MiwiYm91Z2h0Ijp0cnVlfSwiaGVhdGVkUGxhbnRlcnNFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjU5OTc3NjUwOTM1ODYwOSIsImFtb3VudE9mVGltZXNEb25lIjowLjcyNjAwMDAwMDA0OTc5MzksImJvdWdodCI6dHJ1ZX0sImZlcnRpbGl6ZXJFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAwMjIzMzY2NzA0MzEyMDI4IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuNTkyMDAwMDAwMDQ3Nzg5OSwiYm91Z2h0Ijp0cnVlfSwic21hbGxGaXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDI4NzMwNjA4NjYwMzAzNDE0IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuODc2MDAwMDAwMDQ5MjAyOCwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJib25maXJlRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDE3MjczNjIwMzk4MTEyMiIsImFtb3VudE9mVGltZXNEb25lIjowLjI1ODAwMDAwMDA0OTg4OTksInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwia2lsbkVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAxNTMzODU1Mjk4NTQwOTk4MSIsImFtb3VudE9mVGltZXNEb25lIjowLjY5NDAwMDAwMDA1MDAzOSwidG9nZ2xlIjp0cnVlLCJib3VnaHQiOnRydWV9LCJwYXBlckVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAwODQyMDg2ODM0NzQ2MjA4NSIsImFtb3VudE9mVGltZXNEb25lIjowLjg4MDAwMDAwMDAwMDg4NTQsImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDA1Mjk0MTE3NjQ3MDcyNTc3IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuMzA0MDAwMDAwMDAwOTMyODYsImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMDM4NjI1MDk4MTkwNzU0MDUiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC40MzIwMDAwMDAwMDIyMzMyNiwiYm91Z2h0Ijp0cnVlfSwiY29hbERyaWxsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sImhlYXZ5RHJpbGxFbGYiOnsiYnV5UHJvZ3Jlc3MiOiIwLjAxMTQ1NDU0NTQ1NDU0NTI3MyIsImFtb3VudE9mVGltZXNEb25lIjowLjUwMzk5OTk5OTk5OTg4NzYsInRvZ2dsZSI6dHJ1ZSwiYm91Z2h0Ijp0cnVlfSwib2lsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJ0b2dnbGUiOnRydWUsImJvdWdodCI6dHJ1ZX0sIm1ldGFsRWxmIjp7ImJ1eVByb2dyZXNzIjoiMC4wMTE0NTQ1NDU0NTQ1NDUyNzMiLCJhbW91bnRPZlRpbWVzRG9uZSI6MC41MDM5OTk5OTk5OTk4ODc2LCJib3VnaHQiOnRydWV9LCJkeWVFbGYiOnsiYnV5UHJvZ3Jlc3MiOjAsImFtb3VudE9mVGltZXNEb25lIjowLCJib3VnaHQiOmZhbHNlfSwicGxhc3RpY0VsZiI6eyJidXlQcm9ncmVzcyI6IjAuMDAzNTMzNzA0NDcxMDYxNjA1IiwiYW1vdW50T2ZUaW1lc0RvbmUiOjAuOTQwMDAwMDAwMDAwNzkzNSwiYm91Z2h0Ijp0cnVlfX0sIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX0sIjUiOnsiZWFybmVkIjp0cnVlfSwiNiI6eyJlYXJuZWQiOnRydWV9LCI3Ijp7ImVhcm5lZCI6dHJ1ZX0sIjgiOnsiZWFybmVkIjp0cnVlfSwiOSI6eyJlYXJuZWQiOnRydWV9LCIxMCI6eyJlYXJuZWQiOnRydWV9LCIxMSI6eyJlYXJuZWQiOnRydWV9fX19LCJwYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJwYXBlciI6IjIuMTA4NTQxODM1MTkwMDczOGUxMzEiLCJ0b3RhbFBhcGVyIjoiMi4xMDg1NDE4MzUyMDA5NzUzZTEzMSIsInBhcGVyQ29udmVyc2lvbiI6eyJnYWluUmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSJ9LCJib29rcyI6eyJjdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjA0In0sInBsYW50ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjA0In0sImV4cGFuZGVyc0Jvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjIwNCJ9LCJoZWF0ZWRDdXR0ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjA0In0sImhlYXRlZFBsYW50ZXJzQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjA0In0sImZlcnRpbGl6ZXJCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIyMDQifSwic21hbGxGaXJlQm9vayI6eyJyZXNvdXJjZSI6IjQwNjkuOTk5OTk5OTk5OTk5IiwiYW1vdW50IjoiMjA0In0sImJvbmZpcmVCb29rIjp7InJlc291cmNlIjoiNDA2OS45OTk5OTk5OTk5OTkiLCJhbW91bnQiOiIyMDQifSwia2lsbkJvb2siOnsicmVzb3VyY2UiOiI0MDY5Ljk5OTk5OTk5OTk5OSIsImFtb3VudCI6IjIwNCJ9LCJwYXBlckJvb2siOnsiYW1vdW50IjoiMTIifSwiYm94Qm9vayI6eyJhbW91bnQiOiIxNSJ9LCJjbG90aEJvb2siOnsiYW1vdW50IjoiMjA0In0sIm1pbmluZ0RyaWxsQm9vayI6eyJhbW91bnQiOjB9LCJoZWF2eURyaWxsQm9vayI6eyJhbW91bnQiOiIxNzkifSwib2lsQm9vayI6eyJhbW91bnQiOiIxNzkifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjE3OSJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjE3OSJ9LCJkeWVCb29rIjp7ImFtb3VudCI6MH0sInByaW1hcnlEeWVCb29rIjp7ImFtb3VudCI6IjIwNCJ9LCJzZWNvbmRhcnlEeWVCb29rIjp7ImFtb3VudCI6IjIwNCJ9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiIyMDQifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHJpbGxpbmdVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm9pbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInVwZ3JhZGVzMiI6eyJhc2hVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImJvb2tVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImNsYXNzcm9vbVVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJtYXN0ZXJ5Ijp7InBhcGVyIjoiMy4yMzQ4NzI0MDQ3NDIwNDllMjMiLCJ0b3RhbFBhcGVyIjoiMy4yMzQ4NzUzMDE1MjIyNjc4ZTIzIiwiYm9va3MiOnsiY3V0dGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwicGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sImV4cGFuZGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiaGVhdGVkQ3V0dGVyc0Jvb2siOnsiYW1vdW50IjoiNDcifSwiaGVhdGVkUGxhbnRlcnNCb29rIjp7ImFtb3VudCI6IjQ3In0sImZlcnRpbGl6ZXJCb29rIjp7ImFtb3VudCI6IjQ3In0sInNtYWxsRmlyZUJvb2siOnsiYW1vdW50IjoiNDcifSwiYm9uZmlyZUJvb2siOnsiYW1vdW50IjoiNDcifSwia2lsbkJvb2siOnsiYW1vdW50IjoiNDcifSwicGFwZXJCb29rIjp7ImFtb3VudCI6IjcifSwiYm94Qm9vayI6eyJhbW91bnQiOiI3In0sImNsb3RoQm9vayI6eyJhbW91bnQiOiI0NyJ9LCJjb2FsRHJpbGxCb29rIjp7ImFtb3VudCI6IjEifSwiaGVhdnlEcmlsbEJvb2siOnsiYW1vdW50IjoiMSJ9LCJvaWxCb29rIjp7ImFtb3VudCI6IjEifSwibWV0YWxCb29rIjp7ImFtb3VudCI6IjEifSwicHJpbWFyeUR5ZUJvb2siOnsiYW1vdW50IjowfSwic2Vjb25kYXJ5RHllQm9vayI6eyJhbW91bnQiOjB9LCJwbGFzdGljQm9vayI6eyJhbW91bnQiOiI0NyJ9fSwidXBncmFkZXMiOnsiY2xvdGhVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImRyaWxsaW5nVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJvaWxVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX19LCJ1cGdyYWRlczIiOnsiYXNoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiYm9va1VwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInRyZWVVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fX0sIm1hc3RlcmVkIjp0cnVlfSwiYm94ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiYm94ZXMiOiIxLjUxNjgwNjA2OTk0MzU2NTNlMTE1IiwidG90YWxCb3hlcyI6IjEuNjE3ODE2MTcwOTUyMzY3N2UxMTUiLCJib3hlc0NvbnZlcnNpb24iOnsiYmFzZVJlc291cmNlIjoiMTAyODQzNjA2NjEwOC42NTk0IiwiZ2FpblJlc291cmNlIjowfSwidXBncmFkZXMiOnsibG9nc1VwZ3JhZGUiOnsicmVzb3VyY2UiOjAsImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsicmVzb3VyY2UiOjAsImJvdWdodCI6dHJ1ZX0sImNvYWxVcGdyYWRlIjp7InJlc291cmNlIjowLCJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiI5MDUifSwiYXNoQm94ZXNCdXlhYmxlIjp7InJlc291cmNlIjowLCJhbW91bnQiOiI0MTcifSwiY29hbEJveGVzQnV5YWJsZSI6eyJyZXNvdXJjZSI6MCwiYW1vdW50IjoiMzIyIn19LCJyb3cyVXBncmFkZXMiOnsib3JlVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwicGxhc3RpY1VwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzNVcGdyYWRlcyI6eyJjbG90aFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ4cFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjIzNCJ9LCJtZXRhbEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxNzIifSwicGxhc3RpY0JveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIxNDkifX0sIm1hc3RlcnkiOnsiYm94ZXMiOiI2LjAxNDkwOTg3ODU3NTQyOWUxNiIsInRvdGFsQm94ZXMiOiI2LjAxNDkxMzUyNzU0MDEzMWUxNiIsInVwZ3JhZGVzIjp7ImxvZ3NVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImFzaFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfSwiY29hbFVwZ3JhZGUiOnsiYm91Z2h0Ijp0cnVlfX0sInJvdzJVcGdyYWRlcyI6eyJvcmVVcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJwbGFzdGljVXBncmFkZSI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7ImNsb3RoVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwiZHllVXBncmFkZSI6eyJib3VnaHQiOmZhbHNlfSwieHBVcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9fSwiYnV5YWJsZXMiOnsibG9nQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjQ3In0sImFzaEJveGVzQnV5YWJsZSI6eyJhbW91bnQiOiIzMCJ9LCJjb2FsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6IjI1In19LCJidXlhYmxlczIiOnsib3JlQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sIm1ldGFsQm94ZXNCdXlhYmxlIjp7ImFtb3VudCI6MH0sInBsYXN0aWNCb3hlc0J1eWFibGUiOnsiYW1vdW50IjowfX19LCJtYXN0ZXJlZCI6dHJ1ZSwiYnV5YWJsZXMzIjp7InByZXNlbnRCdXlhYmxlIjp7ImFtb3VudCI6Ijk0In19fSwibWV0YWwiOnsibWluaW1pemVkIjpmYWxzZSwib3JlIjoiMS4xNDIyMTcxODY4OTM4MzRlNDAiLCJiZXN0T3JlIjoiMS4zNzIxNzEwMjgwMDMwODc0ZTQwIiwib3JlUHJvZ3Jlc3MiOiIwLjA3Mzc5NzQxNzY4NTAwMjAzIiwibWV0YWwiOiI4LjEzODM0ODExNjk1NjEzZTc2IiwiYmVzdE1ldGFsIjoiMS41MDYwNzA1MTc0MzczMjA2ZTc3IiwidG90YWxNZXRhbCI6IjIuNjE1MjE0NDMwMzM2NzFlNzciLCJzaW1wbGVQaWNrYXhlIjp7ImJvdWdodCI6dHJ1ZX0sImRvdWJsZVBpY2theGUiOnsiYm91Z2h0IjpmYWxzZX0sImNydWNpYmxlIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxEcmlsbCI6eyJib3VnaHQiOnRydWV9LCJpbmR1c3RyaWFsRnVybmFjZSI6eyJib3VnaHQiOnRydWV9LCJvcmVEcmlsbCI6eyJhbW91bnQiOiIxMjc1OTExMSJ9LCJpbmR1c3RyaWFsQ3J1Y2libGUiOnsiYW1vdW50IjoiMTI3NTkxMiJ9LCJhdXRvU21lbHRFbmFibGVkIjp0cnVlLCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiIxNzUwNTcyIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJlZmZpY2llbnREcmlsbCI6eyJib3VnaHQiOnRydWV9LCJtYXN0ZXJ5Ijp7Im9yZSI6IjkyNzU3MjEyMC40NDI2MzY1IiwiYmVzdE9yZSI6IjE5NTMzMDkwMDcuMDQ0MDk4Iiwib3JlUHJvZ3Jlc3MiOiIwLjUzMTAzMTI2NjEzODIzNDYiLCJtZXRhbCI6IjMuNjUzMjI5MTk1MTExMDRlMTYiLCJiZXN0TWV0YWwiOiIzLjY1MzIyOTE5NTExMTA0ZTE2IiwidG90YWxNZXRhbCI6IjMuNjUzMjU3MDMwNjMyNDA1ZTE2Iiwic2ltcGxlUGlja2F4ZSI6eyJib3VnaHQiOnRydWV9LCJkb3VibGVQaWNrYXhlIjp7ImJvdWdodCI6ZmFsc2V9LCJjcnVjaWJsZSI6eyJib3VnaHQiOnRydWV9LCJjb2FsRHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwiaW5kdXN0cmlhbEZ1cm5hY2UiOnsiYm91Z2h0Ijp0cnVlfSwiZWZmaWNpZW50RHJpbGwiOnsiYm91Z2h0Ijp0cnVlfSwib3JlRHJpbGwiOnsiYW1vdW50IjoiMjcwIn0sImluZHVzdHJpYWxDcnVjaWJsZSI6eyJhbW91bnQiOiIyNyJ9LCJob3R0ZXJGb3JnZSI6eyJhbW91bnQiOiIyNCJ9fSwibWFzdGVyZWQiOnRydWV9LCJjbG90aCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJjbG90aCI6IjUuMDA3MjExNzM5MzE5NDg1NWUxOSIsInRvdGFsQ2xvdGgiOiIxLjUwNTg3MTM1OTMwMTYzOTVlMjAiLCJ3b29sIjoiOS44NzIwNzIyNTA5MjM5MDFlMTkiLCJzaGVlcCI6IjEuMDM3Nzg3MDkwNDg1NzI5NmUyMCIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiI0MjkwNSJ9LCJiZXR0ZXJTaGVhcnMiOnsiYW1vdW50IjoiNDE4ODEifSwiZmFzdGVyU3Bpbm5pbmciOnsiYW1vdW50IjoiNjIwNjgifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImJyZWVkaW5nUHJvZ3Jlc3MiOjEsInNoZWFyaW5nUHJvZ3Jlc3MiOjEsInNwaW5uaW5nUHJvZ3Jlc3MiOjEsIm1hc3RlcnkiOnsiY2xvdGgiOiIxMTE0NTEiLCJ0b3RhbENsb3RoIjoiMTE4OTAxIiwid29vbCI6IjYyMzIwIiwic2hlZXAiOiI3NjQwMyIsImJ1aWxkUGVucyI6eyJhbW91bnQiOiIyNDgifSwiYmV0dGVyU2hlYXJzIjp7ImFtb3VudCI6IjMxMCJ9LCJmYXN0ZXJTcGlubmluZyI6eyJhbW91bnQiOiI0MTQifSwidHJlZXNVcGdyYWRlcyI6eyJ0cmVlc1VwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInRyZWVzVXBncmFkZTIiOnsiYm91Z2h0Ijp0cnVlfSwidHJlZXNVcGdyYWRlMyI6eyJib3VnaHQiOnRydWV9LCJ0cmVlc1VwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX19LCJtZXRhbFVwZ3JhZGVzIjp7Im1ldGFsVXBncmFkZTEiOnsiYm91Z2h0Ijp0cnVlfSwibWV0YWxVcGdyYWRlMiI6eyJib3VnaHQiOnRydWV9LCJtZXRhbFVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sIm1ldGFsVXBncmFkZTQiOnsiYm91Z2h0Ijp0cnVlfX0sInBhcGVyVXBncmFkZXMiOnsicGFwZXJVcGdyYWRlMSI6eyJib3VnaHQiOnRydWV9LCJwYXBlclVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInBhcGVyVXBncmFkZTMiOnsiYm91Z2h0Ijp0cnVlfSwicGFwZXJVcGdyYWRlNCI6eyJib3VnaHQiOnRydWV9fX0sIm1hc3RlcmVkIjp0cnVlfSwib2lsIjp7Im1pbmltaXplZCI6ZmFsc2UsIm9pbCI6IjMuMDgzNzE2NzYyNDIyNzQyNmUyNiIsInRvdGFsT2lsIjoiNC4yMTc1NjM4OTY3ODcwMzE1ZTI2IiwiZGVwdGgiOiIxMTY2NjkiLCJkcmlsbFByb2dyZXNzIjoiNi43MzI5ODc5NzQwOTYzNzY1ZTUyIiwiYWN0aXZlSGVhdnkiOiIxNTc5IiwiYnVpbGRIZWF2eSI6eyJhbW91bnQiOiIxNTc5In0sImFjdGl2ZUhlYXZ5MiI6IjczNSIsImJ1aWxkSGVhdnkyIjp7ImFtb3VudCI6IjczNSJ9LCJhY3RpdmVFeHRyYWN0b3IiOiIxNjciLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIxNjcifSwiYWN0aXZlUHVtcCI6IjE1OCIsImJ1aWxkUHVtcCI6eyJhbW91bnQiOiIxNTgifSwiYWN0aXZlQnVybmVyIjoiOTQ3IiwiYnVpbGRCdXJuZXIiOnsiYW1vdW50IjoiOTQ3In0sImFjdGl2ZVNtZWx0ZXIiOiI0NTUiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiNDU1In0sImRlcHRoTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfSwiNSI6eyJlYXJuZWQiOnRydWV9LCI2Ijp7ImVhcm5lZCI6dHJ1ZX0sIjciOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZERlcHRoTWlsZXN0b25lcyI6dHJ1ZSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sIm9pbE1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlZE9pbE1pbGVzdG9uZXMiOnRydWUsInJvdzNVcGdyYWRlcyI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX0sIjQiOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsib2lsIjoiNTA4MDYwNjkxLjgzNTgzMDYiLCJ0b3RhbE9pbCI6IjUxMTQxNDY0MS44MzU4MzA2IiwiZGVwdGgiOiIyMzA5MyIsImRyaWxsUHJvZ3Jlc3MiOiIxMzU1NzI1NTIzMTY0Ljc4MTIiLCJhY3RpdmVIZWF2eSI6IjEwMyIsImJ1aWxkSGVhdnkiOnsiYW1vdW50IjoiMTAzIn0sImFjdGl2ZUhlYXZ5MiI6IjQxIiwiYnVpbGRIZWF2eTIiOnsiYW1vdW50IjoiNDEifSwiYWN0aXZlRXh0cmFjdG9yIjoiMTEiLCJidWlsZEV4dHJhY3RvciI6eyJhbW91bnQiOiIxMSJ9LCJhY3RpdmVQdW1wIjoiMTEiLCJidWlsZFB1bXAiOnsiYW1vdW50IjoiMTEifSwiYWN0aXZlQnVybmVyIjoiMjUiLCJidWlsZEJ1cm5lciI6eyJhbW91bnQiOiIyNSJ9LCJhY3RpdmVTbWVsdGVyIjoiMTIiLCJidWlsZFNtZWx0ZXIiOnsiYW1vdW50IjoiMTIifSwiZGVwdGhNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfSwiNyI6eyJlYXJuZWQiOnRydWV9fSwib2lsTWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93MlVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfSwiNCI6eyJib3VnaHQiOnRydWV9fSwicm93M1VwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX0sIjMiOnsiYm91Z2h0IjpmYWxzZX0sIjQiOnsiYm91Z2h0IjpmYWxzZX19fSwibWFzdGVyZWQiOnRydWV9LCJwbGFzdGljIjp7Im1pbmltaXplZCI6ZmFsc2UsInBsYXN0aWMiOiI0LjUxMDMyOTM0MDM2NDExNGUyNSIsInRvdGFsUGxhc3RpYyI6IjQuNTExNDE5ODg2NzAwMjI3ZTI1IiwiYnVpbGRSZWZpbmVyeSI6eyJhbW91bnQiOiI3MTEifSwiYWN0aXZlUmVmaW5lcnkiOiI3MTEiLCJ1cGdyYWRlcyI6eyJwYXBlclRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImJveFRvb2xzIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfX0sImVsZlVwZ3JhZGVzIjp7InBhcGVyRWxmIjp7ImJvdWdodCI6dHJ1ZX0sImJveEVsZiI6eyJib3VnaHQiOnRydWV9LCJjbG90aEVsZiI6eyJib3VnaHQiOnRydWV9fSwiYnV5YWJsZXMiOnsicGFzc2l2ZVBhcGVyIjp7ImFtb3VudCI6IjEwODAzNjM4In0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiIxMDgwMzYzOCJ9LCJjbG90aEdhaW5zIjp7ImFtb3VudCI6IjEwODAzNjM4In19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWFzdGVyeSI6eyJwbGFzdGljIjoiMTY0MDA3MC40NTIyMzI5MTIiLCJ0b3RhbFBsYXN0aWMiOiIxNjYxOTEwLjQ1MjIzMjkxMiIsImFjdGl2ZVJlZmluZXJ5IjoiNDYiLCJidWlsZFJlZmluZXJ5Ijp7ImFtb3VudCI6IjQ2In0sInVwZ3JhZGVzIjp7InBhcGVyVG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiYm94VG9vbHMiOnsiYm91Z2h0Ijp0cnVlfSwiY2xvdGhUb29scyI6eyJib3VnaHQiOnRydWV9fSwiZWxmVXBncmFkZXMiOnsicGFwZXJFbGYiOnsiYm91Z2h0Ijp0cnVlfSwiYm94RWxmIjp7ImJvdWdodCI6dHJ1ZX0sImNsb3RoRWxmIjp7ImJvdWdodCI6dHJ1ZX19LCJidXlhYmxlcyI6eyJwYXNzaXZlUGFwZXIiOnsiYW1vdW50IjoiNjYxIn0sInBhc3NpdmVCb3hlcyI6eyJhbW91bnQiOiI2NjEifSwiY2xvdGhHYWlucyI6eyJhbW91bnQiOiI2NjEifX19LCJtYXN0ZXJlZCI6dHJ1ZX0sImR5ZXMiOnsibWluaW1pemVkIjpmYWxzZSwiZHllcyI6eyJyZWQiOnsiYW1vdW50IjoiNzYyNzk4MzI3NTcuODk5MTkiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE5NDcifX0sInllbGxvdyI6eyJhbW91bnQiOiIxODg5MjI0ODczODYuNzA5NzUiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE4NjQifX0sImJsdWUiOnsiYW1vdW50IjoiMjU3MjYyNzI1ODguNjE2MzkiLCJidXlhYmxlIjp7ImFtb3VudCI6IjE3ODUifX0sIm9yYW5nZSI6eyJhbW91bnQiOiI0MTU3NiIsImJ1eWFibGUiOnsiYW1vdW50IjoiMTE1NiJ9fSwiZ3JlZW4iOnsiYW1vdW50IjoiMzIxOTYiLCJidXlhYmxlIjp7ImFtb3VudCI6Ijk5MyJ9fSwicHVycGxlIjp7ImFtb3VudCI6IjMwMzIwIiwiYnV5YWJsZSI6eyJhbW91bnQiOiI5NjkifX0sImJsYWNrIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiMzY3In19LCJ3aGl0ZSI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjM2NyJ9fX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ1cGdyYWRlcyI6eyJibHVlRHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInJlZER5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJ5ZWxsb3dEeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImJsdWVEeWVVcGcyIjp7ImJvdWdodCI6dHJ1ZX0sImNvYWxVcGciOnsiYm91Z2h0Ijp0cnVlfX0sIm1hc3RlcnkiOnsiZHllcyI6eyJyZWQiOnsiYW1vdW50IjowLCJidXlhYmxlIjp7ImFtb3VudCI6IjE1In19LCJncmVlbiI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNSJ9fSwiYmx1ZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTQifX0sInllbGxvdyI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiMTIifX0sInB1cnBsZSI6eyJhbW91bnQiOjAsImJ1eWFibGUiOnsiYW1vdW50IjoiNCJ9fSwib3JhbmdlIjp7ImFtb3VudCI6MCwiYnV5YWJsZSI6eyJhbW91bnQiOiI0In19fSwidXBncmFkZXMiOnsiYmx1ZUR5ZVVwZyI6eyJib3VnaHQiOnRydWV9LCJyZWREeWVVcGciOnsiYm91Z2h0Ijp0cnVlfSwieWVsbG93RHllVXBnIjp7ImJvdWdodCI6dHJ1ZX0sInllbGxvd0R5ZVVwZzIiOnsiYm91Z2h0Ijp0cnVlfSwicmVkRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJibHVlRHllVXBnMiI6eyJib3VnaHQiOnRydWV9LCJjb2FsVXBnIjp7ImJvdWdodCI6dHJ1ZX19fSwibWFzdGVyZWQiOnRydWV9LCJtYW5hZ2VtZW50Ijp7Im1pbmltaXplZCI6ZmFsc2UsImVsZlRyYWluaW5nIjp7ImN1dHRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc2MDg5MTc3Mi4zMjg0MzgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sInBsYW50ZXJFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTg3NjQwODcxMzguNjE4NjY0IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJleHBhbmRlcnNFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjE4NzY3MjI5MjU5LjE4NDA3NCIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkQ3V0dGVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ4ODI2NzExMDk5LjgzNjg3NiIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwiaGVhdGVkUGxhbnRlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxODc3MzE5NjAyOS42NjE3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJmZXJ0aWxpemVyRWxmVHJhaW5pbmciOnsic3RhdGUiOnRydWUsImV4cCI6IjQ4ODM0NDk4NDk5Ljc2NTA1IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJzbWFsbGZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTg3Nzk3Nzc2MDEuOTM5MDUiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sImJvbmZpcmVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTg3ODI1NjY1MTkuOTI1MDUzIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJmaXJlRWxmVHJhaW5pbmciOnsiMiI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjowfX0sImtpbG5FbGZUcmFpbmluZyI6eyJzdGF0ZSI6dHJ1ZSwiZXhwIjoiMTg3ODYxOTkwMzQuODQ2Nzg2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJwYXBlckVsZlRyYWluaW5nIjp7InN0YXRlIjp0cnVlLCJleHAiOiIxMjk1NTM0NjUzNTQuNDM5IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJib3hFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjU2NjM3OTM5NDM3LjQzMjg3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMTgzNjcwNzY5MDUuNjg2MDY2IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJjb2FsRHJpbGxFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjE2MjI4ODM1NjIzLjY2MzYyIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiNDIxNzc1MTEyOTguMTUxMzgiLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9fX0sIm9pbEVsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMTYyMzUyNzU4NjMuOTAxNTM3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJoZWF2eURyaWxsRWxmVHJhaW5pbmciOnsic3RhdGUiOmZhbHNlLCJleHAiOiI0MjE3MTE4NjY5MS4yNTg3IiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19LCJkeWVFbGZUcmFpbmluZyI6eyJzdGF0ZSI6ZmFsc2UsImV4cCI6IjE4ODExMjcxNTMwLjA1NTg4NSIsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOnRydWV9LCIxIjp7ImVhcm5lZCI6dHJ1ZX0sIjIiOnsiZWFybmVkIjp0cnVlfSwiMyI6eyJlYXJuZWQiOnRydWV9LCI0Ijp7ImVhcm5lZCI6dHJ1ZX19fSwicGxhc3RpY0VsZlRyYWluaW5nIjp7InN0YXRlIjpmYWxzZSwiZXhwIjoiMTg4MTQyNDgwMjYuODMyNzAzIiwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6dHJ1ZX0sIjEiOnsiZWFybmVkIjp0cnVlfSwiMiI6eyJlYXJuZWQiOnRydWV9LCIzIjp7ImVhcm5lZCI6dHJ1ZX0sIjQiOnsiZWFybmVkIjp0cnVlfX19fSwiY3VycmVudFNob3duIjoiVGluc2VsIiwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sInRlYWNoaW5nIjp7ImJvdWdodCI6dHJ1ZX0sInNjaG9vbHMiOnsiYW1vdW50IjoiNSJ9LCJjbGFzc3Jvb21zIjp7ImFtb3VudCI6IjE1NzE2NDcuOTU4MjA5NzQ3NCJ9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6dHJ1ZX0sImZvY3VzTXVsdGlwbGllciI6IjEuMDA2MTU3ODMyNzg3NDk4NyIsInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjAsImFkdmFuY2VkVXBncmFkZSI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfX0sImZvY3VzTXVsdGkiOiIxLjkzOTk4NTM4OTQyOTA2MTciLCJtYXN0ZXJ5Ijp7ImVsZlRyYWluaW5nIjp7ImJvbmZpcmVFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJib3hFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJjbG90aEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImNvYWxEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImN1dHRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImV4cGFuZGVyc0VsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImZlcnRpbGl6ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRDdXR0ZXJFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJoZWF0ZWRQbGFudGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwiaGVhdnlEcmlsbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImtpbG5FbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19LCJtZXRhbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sIm9pbEVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBhcGVyRWxmVHJhaW5pbmciOnsiZXhwIjowLCJtaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjpmYWxzZX0sIjEiOnsiZWFybmVkIjpmYWxzZX0sIjIiOnsiZWFybmVkIjpmYWxzZX0sIjMiOnsiZWFybmVkIjpmYWxzZX0sIjQiOnsiZWFybmVkIjpmYWxzZX19fSwicGxhbnRlckVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInNtYWxsZmlyZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sImR5ZUVsZlRyYWluaW5nIjp7ImV4cCI6MCwibWlsZXN0b25lcyI6eyIwIjp7ImVhcm5lZCI6ZmFsc2V9LCIxIjp7ImVhcm5lZCI6ZmFsc2V9LCIyIjp7ImVhcm5lZCI6ZmFsc2V9LCIzIjp7ImVhcm5lZCI6ZmFsc2V9LCI0Ijp7ImVhcm5lZCI6ZmFsc2V9fX0sInBsYXN0aWNFbGZUcmFpbmluZyI6eyJleHAiOjAsIm1pbGVzdG9uZXMiOnsiMCI6eyJlYXJuZWQiOmZhbHNlfSwiMSI6eyJlYXJuZWQiOmZhbHNlfSwiMiI6eyJlYXJuZWQiOmZhbHNlfSwiMyI6eyJlYXJuZWQiOmZhbHNlfSwiNCI6eyJlYXJuZWQiOmZhbHNlfX19fSwidGVhY2hpbmciOnsiYm91Z2h0IjpmYWxzZX0sInNjaG9vbHMiOnsiYW1vdW50IjowfSwiY2xhc3Nyb29tcyI6eyJhbW91bnQiOjB9LCJjbGFzc3Jvb21VcGdyYWRlIjp7ImJvdWdodCI6ZmFsc2V9LCJhZHZhbmNlZFVwZ3JhZGUiOnsiYm91Z2h0IjpmYWxzZX0sInVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0IjpmYWxzZX0sIjEiOnsiYm91Z2h0IjpmYWxzZX0sIjIiOnsiYm91Z2h0IjpmYWxzZX19LCJ1cGdyYWRlczIiOnsiMCI6eyJib3VnaHQiOmZhbHNlfSwiMSI6eyJib3VnaHQiOmZhbHNlfSwiMiI6eyJib3VnaHQiOmZhbHNlfX0sImZvY3VzTXVsdGkiOiIxLjAxMjY5ODQ3NTQyMDExODciLCJmb2N1c1RhcmdldHMiOnt9LCJmb2N1c0Nvb2xkb3duIjowLCJmb2N1c1RpbWUiOjB9fSwid3JhcHBpbmdQYXBlciI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJ3cmFwcGluZ1BhcGVyIjp7ImNocmlzdG1hcyI6eyJidXlhYmxlIjp7ImFtb3VudCI6IjY3In19LCJyYWluYm93Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNDgifX0sImphenp5Ijp7ImJ1eWFibGUiOnsiYW1vdW50IjoiODMifX0sInN1bnNoaW5lIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTcifX0sIm9jZWFuIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTIifX0sImJlYWNoIjp7ImJ1eWFibGUiOnsiYW1vdW50IjoiNTkifX19LCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fSwibWlsZXN0b25lcyI6eyJwcmltYXJ5Qm9vc3QiOnsiZWFybmVkIjpmYWxzZX0sInNlY29uZGFyeUJvb3N0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhQcmltYXJ5Ijp7ImVhcm5lZCI6ZmFsc2V9LCJzZWNvbmRhcnlOb1Jlc2V0Ijp7ImVhcm5lZCI6ZmFsc2V9LCJidXlNYXhTZWNvbmRhcnkiOnsiZWFybmVkIjpmYWxzZX0sInVubG9ja0R5ZUVsZiI6eyJlYXJuZWQiOmZhbHNlfX0sImNvbGxhcHNlTWlsZXN0b25lcyI6dHJ1ZSwidW5sb2NrRHllRWxmTWlsZXN0b25lIjp7ImVhcm5lZCI6dHJ1ZX19LCJsZXR0ZXJzIjp7Im1pbmltaXplZCI6ZmFsc2UsImxldHRlcnMiOiIxLjMwOTQ4NTQxMzA1MjYzMjZlNTQiLCJ0b3RhbExldHRlcnMiOiI2LjU0NzQyNzA2NTI2MzE2M2U1NCIsInByb2Nlc3NpbmdQcm9ncmVzcyI6IjIuNzkxNDkzNTU2MTA1Mjc1NmUtMjgiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjoiMTIifSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjoiMjMifSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6IjQzIn19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJjb2xsYXBzZU1pbGVzdG9uZXMiOnRydWUsIm1hc3RlcnkiOnsibGV0dGVycyI6IjEyNTU4MDA1LjU3MTUxMDg1IiwidG90YWxMZXR0ZXJzIjoiMTI1NTgwMDUuNTcxNTEwODUiLCJidXlhYmxlcyI6eyJtZXRhbEJ1eWFibGUiOnsiYW1vdW50IjowfSwicGxhc3RpY0J1eWFibGUiOnsiYW1vdW50IjowfSwicGFwZXJCdXlhYmxlIjp7ImFtb3VudCI6MH19LCJtaWxlc3RvbmVzIjp7ImF1dG9TbWVsdGluZ01pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJtaW5pbmdNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfSwic3luZXJneU1pbGVzdG9uZSI6eyJlYXJuZWQiOnRydWV9LCJpbmR1c3RyaWFsQ3J1Y2libGVNaWxlc3RvbmUiOnsiZWFybmVkIjp0cnVlfX19LCJtYXN0ZXJlZCI6dHJ1ZX0sInJpYmJvbiI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJyaWJib24iOiI4MCIsIm1pbGVzdG9uZXMiOnsic2Vjb25kYXJ5RHllRWxmIjp7ImVhcm5lZCI6dHJ1ZX0sImR5ZUJvb2siOnsiZWFybmVkIjp0cnVlfX0sInJpYmJvblByb2dyZXNzIjoxMCwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJnZW5lcmFsVGFiQ29sbGFwc2VkIjp7fX0sInRveXMiOnsibWluaW1pemVkIjpmYWxzZSwiY2xvdGhlcyI6IjMyOTI3NzcuNDg2NzYzMzM1OCIsIndvb2RlbkJsb2NrcyI6IjE1Mjg1OTExLjc2NTYxNTAzNyIsInRydWNrcyI6IjMyNDM3MjkuMDU4MTU2NTA1IiwidG90YWxUb3lzIjoiNTgyNjE1NjEuNjA4NjQ5NDIiLCJidXlhYmxlcyI6eyIwIjp7ImFtb3VudCI6IjM0MSJ9LCIxIjp7ImFtb3VudCI6IjEuMDAwMDAwMDAwMDAwMDE0MiJ9LCIyIjp7ImFtb3VudCI6IjM3NyJ9fSwicm93MVVwZ3JhZGVzIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX19LCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU2Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lOCI6eyJlYXJuZWQiOnRydWV9fSwiZ2VuZXJhbFRhYkNvbGxhcHNlZCI6e30sImNvbGxhcHNlTWlsZXN0b25lcyI6ZmFsc2V9LCJmYWN0b3J5Ijp7Im1pbmltaXplZCI6ZmFsc2UsImNvbXBvbmVudHMiOnsiLTV4LTUiOnsidGlja3NEb25lIjowLjY2OTc2NDI2MDU1NzU3MDEsImRpcmVjdGlvbiI6IkxFRlQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNXgtNCI6eyJ0aWNrc0RvbmUiOjAuNjY2NDk4OTAxMjQ2NTE3MywiZGlyZWN0aW9uIjoiVVAiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItM3gtNSI6eyJ0aWNrc0RvbmUiOjAuNjY5NDMwNDg5MDYwMDExNSwiZGlyZWN0aW9uIjoiVVAiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjozMX0sIm91dHB1dFN0b2NrIjp7InRocmVhZCI6MH0sInR5cGUiOiJ0aHJlYWQifSwiLTN4LTQiOnsidGlja3NEb25lIjowLjY2NTUzOTk0MTgzNzY2MjEsImRpcmVjdGlvbiI6IkxFRlQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjozMCwicGxhc3RpYyI6MTV9LCJvdXRwdXRTdG9jayI6eyJzdHVmZmluZyI6MH0sInR5cGUiOiJzdHVmZmluZyJ9LCItNHgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMXgtNSI6eyJ0aWNrc0RvbmUiOjAuNjY2MTEwNjM1NzUyMjE0MywiZGlyZWN0aW9uIjoiVVAiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjgyMjYsInRocmVhZCI6NDh9LCJvdXRwdXRTdG9jayI6eyJidXR0b25zIjowfSwidHlwZSI6ImJ1dHRvbiJ9LCIxeC00Ijp7InRpY2tzRG9uZSI6MC42NjUxMjAyOTY4NzY2NzE3LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6ODI2MX0sIm91dHB1dFN0b2NrIjp7ImJ1dHRvbnMiOjB9LCJ0eXBlIjoiYnV0dG9uIn0sIjN4LTUiOnsidGlja3NEb25lIjowLjY2NjI1NjU4ODUxMDc0MDQsImRpcmVjdGlvbiI6IlVQIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6MTI0NzZ9LCJ0eXBlIjoicGxhc3RpYyJ9LCIyeC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC00Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIyeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4LTQiOnsidGlja3NEb25lIjowLjY2NzE3OTc1NzQxNDA4LCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJ0aHJlYWQiOjQ2NCwic3R1ZmZpbmciOjU2MCwiZHllIjo4MzU2MCwiYnV0dG9ucyI6MjcyMzh9LCJvdXRwdXRTdG9jayI6eyJiZWFyIjowfSwidHlwZSI6ImJlYXIifSwiLTJ4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC01Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItMXgtMiI6eyJ0aWNrc0RvbmUiOjAuNjY5NjY0Mjg5MTk4MDA0NCwiZGlyZWN0aW9uIjoiRE9XTiIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6MTE3Nzl9LCJ0eXBlIjoiZHllIn0sIi0xeC0zIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiNHgtNSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTIiOnsidGlja3NEb25lIjowLjY2NzYwODk3MTg5OTc0NTIsImRpcmVjdGlvbiI6IkRPV04iLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjcyNDN9LCJvdXRwdXRTdG9jayI6eyJidWNrZXQiOjB9LCJ0eXBlIjoiYnVja2V0In0sIjV4LTUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4MCI6eyJ0aWNrc0RvbmUiOjAuNjY4MzU1NzU0MjEzNzIwMSwiZGlyZWN0aW9uIjoiRE9XTiIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjEwMDUwfSwidHlwZSI6InBsYXN0aWMifSwiM3gwIjp7InRpY2tzRG9uZSI6MC42Njg2ODgyNjgyMDk5NTUyLCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjo0fSwib3V0cHV0U3RvY2siOnsic2hvdmVsIjowfSwidHlwZSI6InNob3ZlbCJ9LCI0eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjV4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCI0eC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIzeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gtMiI6eyJ0aWNrc0RvbmUiOjAuNjY3NjIzMzI0MTA4NDYyNywiZGlyZWN0aW9uIjoiTEVGVCIsImlucHV0U3RvY2siOnsiYnVja2V0Ijo5MTAsInNob3ZlbCI6MH0sIm91dHB1dFN0b2NrIjp7InNob3ZlbEJ1Y2tldCI6MH0sInR5cGUiOiJidWNrZXRTaG92ZWwifSwiLTV4MyI6eyJ0aWNrc0RvbmUiOjAuNjY5NzI4MDkzNTA4NTU0LCJkaXJlY3Rpb24iOiJVUCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi01eDQiOnsidGlja3NEb25lIjowLjY2NzQ2MzA0NjcyODMzOTIsImRpcmVjdGlvbiI6IkxFRlQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNXg1Ijp7InRpY2tzRG9uZSI6MC42Njg2NDM3NTY0ODA3Mjc0LCJkaXJlY3Rpb24iOiJET1dOIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTV4MiI6eyJ0aWNrc0RvbmUiOjAuNjY3MTMxNzcxMzkxOTk2MSwiZGlyZWN0aW9uIjoiRE9XTiIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi0zeDQiOnsidGlja3NEb25lIjowLjY2OTc5MDA4Njc0OTQ1MDMsImRpcmVjdGlvbiI6IkxFRlQiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjozMTF9LCJvdXRwdXRTdG9jayI6eyJ0aHJlYWQiOjI4NTg4fSwidHlwZSI6InRocmVhZCJ9LCItM3g1Ijp7InRpY2tzRG9uZSI6MC42NjUyNzA0NjE5MDYwNTE4LCJkaXJlY3Rpb24iOiJET1dOIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6MTQ0fSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjowfSwidHlwZSI6InRocmVhZCJ9LCItMXg1Ijp7InRpY2tzRG9uZSI6MC42NjY5NTAwMDE5ODM5OTYxLCJkaXJlY3Rpb24iOiJVUCIsImlucHV0U3RvY2siOnsidGhyZWFkIjo1LCJjbG90aCI6MTY2OSwiZHllIjo3ODExOH0sIm91dHB1dFN0b2NrIjp7ImNsb3RoZXMiOjB9LCJ0eXBlIjoiY2xvdGhlcyJ9LCItMngxIjp7InRpY2tzRG9uZSI6MC42Njg0MjQyNzcyNzA1OTY3LCJkaXJlY3Rpb24iOiJMRUZUIiwib3V0cHV0U3RvY2siOnsiZHllIjo4NzU0fSwidHlwZSI6ImR5ZSJ9LCItNHg1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4NSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eDQiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMng0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItNHgzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTR4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeDIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeDMiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItMngyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItMngzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDUiOnsidGlja3NEb25lIjowLjY2NjA2Mjk4NTg0MDc3NzMsImRpcmVjdGlvbiI6IlVQIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiMXg1Ijp7InRpY2tzRG9uZSI6MC42NjcxNjAwMDc5NDA1MTA2LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiY2xvdGgiOjMzLCJwbGFzdGljIjoxfSwib3V0cHV0U3RvY2siOnsidGhyZWFkIjowfSwidHlwZSI6InRocmVhZCJ9LCIweDUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjJ4NSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMXgyIjp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA4NDc1LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsibWV0YWwiOjIxOCwid2hlZWwiOjQ1Mn0sIm91dHB1dFN0b2NrIjp7InRydWNrcyI6MH0sInR5cGUiOiJ0cnVja3MifSwiLTF4MiI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwODQzOSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjIyMTEzfSwib3V0cHV0U3RvY2siOnsid2hlZWwiOjB9LCJ0eXBlIjoid2hlZWwifSwiMXg0Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA4NDM5LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsicGxhc3RpYyI6MjIyMzV9LCJvdXRwdXRTdG9jayI6eyJ3aGVlbCI6MH0sInR5cGUiOiJ3aGVlbCJ9LCItMXg0Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA4NDM5LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjg3NTR9LCJ0eXBlIjoicGxhc3RpYyJ9LCIzeDIiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDg0NzUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiMHg0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIjF4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIjJ4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMng0Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA4MTksImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiMngzIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiMHgtMSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwODExOSwiZGlyZWN0aW9uIjoiVVAiLCJpbnB1dFN0b2NrIjp7Indvb2QiOjksInBsYW5rIjo0fSwib3V0cHV0U3RvY2siOnsicGxhbmsiOjB9LCJ0eXBlIjoicGxhbmsifSwiLTJ4LTEiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDgyMjYsImRpcmVjdGlvbiI6IkxFRlQiLCJpbnB1dFN0b2NrIjp7InBsYW5rIjoyMjQsImR5ZSI6Mn0sIm91dHB1dFN0b2NrIjp7ImJveCI6MH0sInR5cGUiOiJib3hNYWtlciJ9LCItNHgtMSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzc1NywiZGlyZWN0aW9uIjoiRE9XTiIsImlucHV0U3RvY2siOnsiZHllIjoxMjksInBsYXN0aWMiOjQsImNsb3RoIjoyNzE1LCJib3giOjM5OTQsImJ1dHRvbnMiOjIsIndoZWVsIjoyfSwidHlwZSI6InByZXNlbnQifSwiLTR4LTMiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDgxNTUsImRpcmVjdGlvbiI6IkRPV04iLCJvdXRwdXRTdG9jayI6eyJkeWUiOjg3NTR9LCJ0eXBlIjoiZHllIn0sIi0yeC0yIjp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA4MTM3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjg3NTR9LCJ0eXBlIjoicGxhc3RpYyJ9LCIyeC0xIjp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA4MTM3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCIweDEiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDgxMzcsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsid29vZCI6MH0sInR5cGUiOiJ3b29kIn0sIi00eC0yIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItM3gtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIweDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNXgtMiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeDEiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDc5OTUsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTR4MSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzk3NywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNHgwIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiLTZ4LTIiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDc3NjQsImRpcmVjdGlvbiI6IkRPV04iLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjY0Njg0fSwib3V0cHV0U3RvY2siOnsid2hlZWwiOjB9LCJ0eXBlIjoid2hlZWwifSwiLTd4LTIiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgtMiI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzc2NCwiZGlyZWN0aW9uIjoiRE9XTiIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjg3NTR9LCJ0eXBlIjoicGxhc3RpYyJ9LCItMngwIjp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA3NjQsImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjI0Mzk1fSwidHlwZSI6ImNsb3RoIn0sIi0zeDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIi01eC0xIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTV4MSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzUzMywiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjYzOTU2fSwib3V0cHV0U3RvY2siOnsiYnV0dG9ucyI6MH0sInR5cGUiOiJidXR0b24ifSwiLTd4MSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzUzMywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjo4NzU0fSwidHlwZSI6InBsYXN0aWMifSwiLTZ4MSI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi01eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItOHgtMSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzQwOSwiZGlyZWN0aW9uIjoiVVAiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItNngtMSI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzQwOSwiZGlyZWN0aW9uIjoiVVAiLCJpbnB1dFN0b2NrIjp7ImNsb3RoIjoyfSwib3V0cHV0U3RvY2siOnsic3R1ZmZpbmciOjB9LCJ0eXBlIjoic3R1ZmZpbmcifSwiLTd4LTEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItNngyIjp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA3MjY3LCJkaXJlY3Rpb24iOiJET1dOIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiLTh4MyI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzMyLCJkaXJlY3Rpb24iOiJVUCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjg3NTR9LCJ0eXBlIjoicGxhc3RpYyJ9LCItOHgwIjp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA3MjQ5LCJkaXJlY3Rpb24iOiJET1dOIiwiaW5wdXRTdG9jayI6eyJtZXRhbCI6MywicGxhc3RpYyI6NjI4NjZ9LCJvdXRwdXRTdG9jayI6eyJjaXJjdWl0Qm9hcmQiOjB9LCJ0eXBlIjoiY2lyY3VpdEJvYXJkIn0sIi03eDAiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItNngwIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTh4MiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIi04eDEiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItN3gyIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeDEiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDcxNzgsImRpcmVjdGlvbiI6IkRPV04iLCJvdXRwdXRTdG9jayI6eyJ3b29kIjowfSwidHlwZSI6Indvb2QifSwiMngxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3gxIjp7InRpY2tzRG9uZSI6MC45NzUwMDAwMDAwMDA0NjgyLCJkaXJlY3Rpb24iOiJET1dOIiwiaW5wdXRTdG9jayI6eyJ3b29kIjowfSwib3V0cHV0U3RvY2siOnsicGxhbmsiOjB9LCJ0eXBlIjoicGxhbmsifSwiNHgxIjp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiNXgxIjp7InRpY2tzRG9uZSI6MC44NTAwMDAwMDAwMDA3NDI0LCJkaXJlY3Rpb24iOiJMRUZUIiwiaW5wdXRTdG9jayI6eyJwbGFuayI6NH0sIm91dHB1dFN0b2NrIjp7ImJsb2NrIjowfSwidHlwZSI6ImJsb2NrcyJ9LCI1eDQiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDcwNzEsImRpcmVjdGlvbiI6IkRPV04iLCJpbnB1dFN0b2NrIjp7Im1ldGFsIjoxMTQsInBsYXN0aWMiOjYxNzYxfSwib3V0cHV0U3RvY2siOnsiY2lyY3VpdEJvYXJkIjowfSwidHlwZSI6ImNpcmN1aXRCb2FyZCJ9LCI1eDIiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDcxMjUsImRpcmVjdGlvbiI6IlVQIiwib3V0cHV0U3RvY2siOnsibWV0YWwiOjB9LCJ0eXBlIjoibWV0YWwifSwiN3g1Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA3MTA3LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Im1ldGFsIjowfSwidHlwZSI6Im1ldGFsIn0sIjN4NCI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNzEyNSwiZGlyZWN0aW9uIjoiTEVGVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjg3NTR9LCJ0eXBlIjoicGxhc3RpYyJ9LCI3eDYiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDcwODksImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsicGxhc3RpYyI6ODc1NH0sInR5cGUiOiJwbGFzdGljIn0sIjV4MyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkRPV04iLCJ0eXBlIjoiY29udmV5b3IifSwiNHg0Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiNng1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCI1eDUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjZ4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiNXg2Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA2OTY1LCJkaXJlY3Rpb24iOiJVUCIsImlucHV0U3RvY2siOnsibWV0YWwiOjEwOSwicGxhc3RpYyI6MTQ4NTUsImNpcmN1aXRCb2FyZCI6MX0sIm91dHB1dFN0b2NrIjp7ImNvbnNvbGUiOjB9LCJ0eXBlIjoiY29uc29sZSJ9LCItOHg3Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA2NjQ1LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImR5ZSI6ODc1NH0sInR5cGUiOiJkeWUifSwiLTh4OCI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNjc4NywiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJwbGFzdGljIjo4NzU0fSwidHlwZSI6InBsYXN0aWMifSwiLTh4NiI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNjc2OSwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJjbG90aCI6MH0sInR5cGUiOiJjbG90aCJ9LCItOHg1Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA2NjQ1LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7ImNsb3RoIjowfSwidHlwZSI6ImNsb3RoIn0sIi03eDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItN3g3Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiUklHSFQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTd4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi03eDUiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJSSUdIVCIsInR5cGUiOiJjb252ZXlvciJ9LCItNng1Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCItOHg0Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA2MjksImRpcmVjdGlvbiI6IlJJR0hUIiwib3V0cHV0U3RvY2siOnsiY2xvdGgiOjB9LCJ0eXBlIjoiY2xvdGgifSwiLTd4NCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlJJR0hUIiwidHlwZSI6ImNvbnZleW9yIn0sIi02eDQiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDYyMDEsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJjbG90aCI6Mn0sIm91dHB1dFN0b2NrIjp7InN0dWZmaW5nIjowfSwidHlwZSI6InN0dWZmaW5nIn0sIi00eDYiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDYwNTksImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFuayI6MjIyLCJ0aHJlYWQiOjF9LCJvdXRwdXRTdG9jayI6eyJib3giOjB9LCJ0eXBlIjoiYm94TWFrZXIifSwiLTJ4NiI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNjA1OSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7Indvb2QiOjU5LCJwbGFuayI6MX0sIm91dHB1dFN0b2NrIjp7InBsYW5rIjowfSwidHlwZSI6InBsYW5rIn0sIjB4NiI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNjA5NCwiZGlyZWN0aW9uIjoiUklHSFQiLCJvdXRwdXRTdG9jayI6eyJ3b29kIjowfSwidHlwZSI6Indvb2QifSwiMHg3Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA1OTUyLCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7Indvb2QiOjB9LCJ0eXBlIjoid29vZCJ9LCItNng2Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA1NjE0LCJkaXJlY3Rpb24iOiJSSUdIVCIsImlucHV0U3RvY2siOnsiZHllIjoxMTAsInBsYXN0aWMiOjEsImNsb3RoIjoyMjczMSwiYm94Ijo0MTU1LCJ3aGVlbCI6MywiYnV0dG9ucyI6MX0sInR5cGUiOiJwcmVzZW50In0sIi02eDciOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJVUCIsInR5cGUiOiJjb252ZXlvciJ9LCItNng4Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiVVAiLCJ0eXBlIjoiY29udmV5b3IifSwiLTV4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTN4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTF4NyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiLTJ4NyI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IlVQIiwidHlwZSI6ImNvbnZleW9yIn0sIi01eDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi00eDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0zeDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0yeDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIi0xeDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn0sIjB4OCI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiMXg4Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiTEVGVCIsInR5cGUiOiJjb252ZXlvciJ9LCIxeDYiOnsidGlja3NEb25lIjowLjY2NTAwMDAwMDAwMDU5MTcsImRpcmVjdGlvbiI6IlJJR0hUIiwiaW5wdXRTdG9jayI6eyJwbGFzdGljIjoxNTk0OH0sIm91dHB1dFN0b2NrIjp7IndoZWVsIjowfSwidHlwZSI6IndoZWVsIn0sIjJ4OCI6eyJ0aWNrc0RvbmUiOjAuNjY1MDAwMDAwMDAwNTg4MSwiZGlyZWN0aW9uIjoiUklHSFQiLCJpbnB1dFN0b2NrIjp7InBsYXN0aWMiOjE1NzcwfSwib3V0cHV0U3RvY2siOnsiYnV0dG9ucyI6MH0sInR5cGUiOiJidXR0b24ifSwiM3g2Ijp7InRpY2tzRG9uZSI6MC42NjUwMDAwMDAwMDA1OTM0LCJkaXJlY3Rpb24iOiJSSUdIVCIsIm91dHB1dFN0b2NrIjp7InBsYXN0aWMiOjg3NTR9LCJ0eXBlIjoicGxhc3RpYyJ9LCIxeDciOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJET1dOIiwidHlwZSI6ImNvbnZleW9yIn0sIjJ4NiI6eyJ0aWNrc0RvbmUiOjAsImRpcmVjdGlvbiI6IkxFRlQiLCJ0eXBlIjoiY29udmV5b3IifSwiM3g3Ijp7InRpY2tzRG9uZSI6MCwiZGlyZWN0aW9uIjoiRE9XTiIsInR5cGUiOiJjb252ZXlvciJ9LCIzeDgiOnsidGlja3NEb25lIjowLCJkaXJlY3Rpb24iOiJMRUZUIiwidHlwZSI6ImNvbnZleW9yIn19LCJlbGZCdXlhYmxlcyI6eyJjbG90aGVzQnV5YWJsZSI6eyJhbW91bnQiOiIyMSJ9LCJibG9ja3NCdXlhYmxlIjp7ImFtb3VudCI6IjIzIn0sInRydWNrc0J1eWFibGUiOnsiYW1vdW50IjoiMjEifSwiYmVhcnNCdXlhYmxlIjp7InJlc291cmNlIjoiODU1OCIsImFtb3VudCI6IjIzIn0sImJ1Y2tldEJ1eWFibGUiOnsicmVzb3VyY2UiOiIzMTIwIiwiYW1vdW50IjoiMjEifSwiY29uc29sZXNCdXlhYmxlIjp7InJlc291cmNlIjoiMjc4MSIsImFtb3VudCI6IjIyIn19LCJ0YWJzIjp7InNlbGVjdGVkIjoiZGFzaGJvYXJkIn0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJiZWFycyI6IjEzMTMwNjUuMzk3NjA4OTQyNiIsImJ1Y2tldEFuZFNob3ZlbHMiOiIxODIxNjM2LjkzODkyNzQ5NDUiLCJjb25zb2xlcyI6IjY1OTMyNzEuNDQyMDcyNTkiLCJmYWN0b3J5QnV5YWJsZXMiOnsiZXhwYW5kRmFjdG9yeSI6eyJhbW91bnQiOiI5In0sIm9pbEZ1ZWwiOnsiYW1vdW50IjoiNCJ9LCJjYXJyeVRveXMiOnsiYW1vdW50IjoiMTgifX0sInVwZ3JhZGVzIjp7IjAiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9fSwiMSI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfSwiMiI6eyJib3VnaHQiOnRydWV9LCIzIjp7ImJvdWdodCI6dHJ1ZX19LCIyIjp7IjAiOnsiYm91Z2h0Ijp0cnVlfSwiMSI6eyJib3VnaHQiOnRydWV9LCIyIjp7ImJvdWdodCI6dHJ1ZX0sIjMiOnsiYm91Z2h0Ijp0cnVlfX0sIjMiOnsiMCI6eyJib3VnaHQiOnRydWV9LCIxIjp7ImJvdWdodCI6dHJ1ZX0sIjIiOnsiYm91Z2h0Ijp0cnVlfSwiMyI6eyJib3VnaHQiOnRydWV9fSwiNCI6eyIwIjp7ImJvdWdodCI6dHJ1ZX0sIjEiOnsiYm91Z2h0Ijp0cnVlfX19LCJwcmVzZW50cyI6IjQ4Mjg2ODIyNDExOS40OTc1IiwiZmFjdG9yeUJ1eWFibGVzMiI6eyJjYXJyeUJveGVzIjp7ImFtb3VudCI6IjIzIn19fSwicmVpbmRlZXIiOnsibWluaW1pemVkIjpmYWxzZSwicmVpbmRlZXIiOnsiZG9ubmVyIjp7InRpbWVzRmVkIjoiMjE4LjI4MDQ0OTE1OTI5OTYiLCJwcm9ncmVzcyI6IjUifSwiYmxpdHplbiI6eyJ0aW1lc0ZlZCI6IjIzMS4wNzI3MDUyMzA2NzI2OCIsInByb2dyZXNzIjoiNSJ9LCJydWRvbHBoIjp7InRpbWVzRmVkIjoiMjAwLjgxMDE5NTc4NTQzMzg4IiwicHJvZ3Jlc3MiOiI1In0sInZpeGVuIjp7InRpbWVzRmVkIjoiMjExLjA5NjU5MjU1OTE1NTQiLCJwcm9ncmVzcyI6IjUifSwiY29tZXQiOnsidGltZXNGZWQiOiIyNDUuOTc3MzcxNTAxNDY3MDUiLCJwcm9ncmVzcyI6IjUifSwiY3VwaWQiOnsidGltZXNGZWQiOiIyMzAuODUyNzUxODk1MTEyMDIiLCJwcm9ncmVzcyI6IjUifSwiZGFzaGVyIjp7InRpbWVzRmVkIjoiMjQ2LjcxMDc4NDczNjYyNDYiLCJwcm9ncmVzcyI6IjUifSwiZGFuY2VyIjp7InRpbWVzRmVkIjoiMjExLjA5MTQ4NzIxNDUyODU3IiwicHJvZ3Jlc3MiOiI1In0sInByYW5jZXIiOnsidGltZXNGZWQiOiIyMzEuODA0NDk0NTEzNjEwMzQiLCJwcm9ncmVzcyI6IjUifX0sImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJ0aW1lU2luY2VGb2N1cyI6MCwiY3Vyck11bHRpcGxpZXIiOiIxLjUzODc5MjkxNjg4NjczOTQiLCJjdXJyVGFyZ2V0cyI6eyJDb21ldCI6dHJ1ZSwiUHJhbmNlciI6dHJ1ZSwiVml4ZW4iOnRydWV9LCJjdXJyQ29vbGRvd24iOjAsInVwZ3JhZGVzIjp7InVwZ3JhZGUxIjp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGUyIjp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGUzIjp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGU0Ijp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGU1Ijp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGU2Ijp7ImJvdWdodCI6dHJ1ZX0sInVwZ3JhZGU3Ijp7ImJvdWdodCI6ZmFsc2V9LCJ1cGdyYWRlOCI6eyJib3VnaHQiOnRydWV9LCJ1cGdyYWRlOSI6eyJib3VnaHQiOnRydWV9fSwiY3JpdCI6MH0sInNsZWlnaCI6eyJtaW5pbWl6ZWQiOmZhbHNlLCJtaWxlc3RvbmVzIjp7Im1pbGVzdG9uZTEiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmUzIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTQiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNSI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU2Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTciOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lOCI6eyJlYXJuZWQiOnRydWV9fSwiY29sbGFwc2VNaWxlc3RvbmVzIjp0cnVlLCJzbGVpZ2giOnsiYW1vdW50IjoiMTAwIn19LCJyb3V0aW5nIjp7Im1pbmltaXplZCI6ZmFsc2UsImNpdGllc0NvbXBsZXRlZCI6IjUwMDAwMDAiLCJjdXJyZW50Q2l0eSI6W1swLDEwLDcsNywxMywxMSwxMCw4LDEyXSxbMTAsMCwxMCwxMSw4LDE1LDE1LDEyLDEzXSxbNywxMCwwLDEzLDE1LDgsMTMsMTMsMTJdLFs3LDExLDEzLDAsOSwxMywxNCwxMCw3XSxbMTMsOCwxNSw5LDAsMTIsOSw4LDhdLFsxMSwxNSw4LDEzLDEyLDAsMTUsMTMsMTVdLFsxMCwxNSwxMywxNCw5LDE1LDAsOCwxMF0sWzgsMTIsMTMsMTAsOCwxMyw4LDAsMTBdLFsxMiwxMywxMiw3LDgsMTUsMTAsMTAsMF1dLCJyb3V0ZUluZGV4IjozNjIzNTgsImNoZWNrUm91dGVQcm9ncmVzcyI6MCwibmV3Q2l0eVByb2dyZXNzIjoxMCwiYm9vc3RQcm9ncmVzcyI6IjAuMDMxMjUwMDAwMDAwMDAwMDE0IiwicmVkdW5kYW50UHJvZ3Jlc3MiOiIyLjM3MzA0Njg3NTAwMDAwMSIsImdlbmVyYWxUYWJDb2xsYXBzZWQiOnt9LCJyb3V0ZXNUb1NraXAiOlsxLDIsNSw2LDksMTAsMTMsMTQsMTcsMTgsMjEsMjIsMjQsMjcsMjksMzEsMzIsMzUsMzYsMzksNDAsNDMsNDQsNDYsNDksNTEsNTIsNTQsNTcsNTgsNjAsNjIsNjUsNjYsNjksNzEsNzIsNzQsNzcsNzgsODAsODMsODUsODcsODgsOTEsOTMsOTQsOTcsOTksMTAwLDEwMywxMDQsMTA2LDEwOCwxMTEsMTEzLDExNCwxMTYsMTE5LDEyMCwxMjMsMTI1LDEyNiwxMjgsMTMxLDEzMiwxMzUsMTM3LDEzOCwxNDEsMTQyLDE0NSwxNDYsMTQ5LDE1MCwxNTMsMTU0LDE1NywxNTgsMTYxLDE2MiwxNjUsMTY2LDE2OSwxNzAsMTczLDE3NSwxNzYsMTc4LDE4MSwxODMsMTg0LDE4NywxODgsMTkwLDE5MywxOTUsMTk2LDE5OSwyMDAsMjAyLDIwNCwyMDcsMjA5LDIxMCwyMTIsMjE1LDIxNiwyMTksMjIxLDIyMiwyMjQsMjI3LDIyOCwyMzEsMjMzLDIzNCwyMzcsMjM4LDI0MSwyNDIsMjQ0LDI0NywyNDksMjUwLDI1MywyNTQsMjU3LDI1OCwyNjAsMjYzLDI2NCwyNjcsMjY5LDI3MSwyNzIsMjc1LDI3NiwyNzksMjgwLDI4MywyODQsMjg2LDI4OCwyOTEsMjkyLDI5NCwyOTcsMjk5LDMwMCwzMDIsMzA1LDMwNiwzMDksMzExLDMxMiwzMTQsMzE3LDMxOCwzMjEsMzIzLDMyNSwzMjYsMzI4LDMzMSwzMzMsMzM0LDMzNywzMzgsMzQwLDM0MywzNDQsMzQ2LDM0OSwzNTEsMzUyLDM1NSwzNTYsMzU5LDM2MCwzNjMsMzY0LDM2NywzNjgsMzcxLDM3MiwzNzUsMzc3LDM3OCwzODAsMzgzLDM4NSwzODYsMzg5LDM5MCwzOTMsMzk0LDM5NywzOTgsNDAxLDQwMiw0MDUsNDA2LDQwOCw0MTAsNDEzLDQxNSw0MTYsNDE5LDQyMSw0MjMsNDI0LDQyNyw0MjgsNDMwLDQzMyw0MzUsNDM2LDQzOSw0NDEsNDQyLDQ0NCw0NDYsNDQ5LDQ1MCw0NTIsNDU1LDQ1Niw0NTgsNDYxLDQ2Miw0NjQsNDY3LDQ2OSw0NzEsNDcyLDQ3NSw0NzcsNDc4LDQ4MSw0ODIsNDg0LDQ4Nyw0ODksNDkwLDQ5Myw0OTQsNDk3LDQ5OCw1MDAsNTAzLDUwNCw1MDcsNTA5LDUxMSw1MTIsNTE1LDUxNiw1MTksNTIwLDUyMyw1MjQsNTI2LDUyOCw1MzEsNTMyLDUzNCw1MzcsNTM5LDU0MCw1NDIsNTQ1LDU0Niw1NDksNTUxLDU1Miw1NTQsNTU3LDU1OCw1NjEsNTYzLDU2NSw1NjYsNTY4LDU3MSw1NzMsNTc0LDU3Nyw1NzgsNTgwLDU4Myw1ODQsNTg2LDU4OSw1OTEsNTkyLDU5NSw1OTYsNTk5LDYwMCw2MDMsNjA0LDYwNyw2MDgsNjExLDYxMiw2MTUsNjE3LDYxOCw2MjAsNjIzLDYyNCw2MjcsNjI5LDYzMCw2MzMsNjM1LDYzNiw2MzgsNjQxLDY0Miw2NDUsNjQ2LDY0OCw2NTAsNjUzLDY1NCw2NTYsNjU5LDY2MSw2NjMsNjY0LDY2Nyw2NjksNjcwLDY3Myw2NzQsNjc2LDY3OSw2ODEsNjgyLDY4NSw2ODYsNjg5LDY5MCw2OTIsNjk1LDY5Nyw2OTgsNzAxLDcwMyw3MDQsNzA2LDcwOSw3MTEsNzEyLDcxNSw3MTYsNzE4LDcyMCw3MjMsNzI0LDcyNyw3MjgsNzMxLDczMiw3MzUsNzM3LDczOCw3NDAsNzQzLDc0NCw3NDcsNzQ5LDc1MCw3NTMsNzU1LDc1Niw3NTgsNzYxLDc2Miw3NjUsNzY2LDc2OCw3NzAsNzczLDc3NCw3NzcsNzc5LDc4MSw3ODIsNzg0LDc4Nyw3ODksNzkwLDc5Myw3OTQsNzk2LDc5OSw4MDEsODAyLDgwNSw4MDYsODA4LDgxMSw4MTIsODE1LDgxNyw4MTgsODIwLDgyMyw4MjQsODI2LDgyOSw4MzEsODMyLDgzNSw4MzYsODM5LDg0MSw4NDIsODQ0LDg0Nyw4NDksODUwLDg1Myw4NTQsODU3LDg1OCw4NjAsODYzLDg2NCw4NjcsODY5LDg3MSw4NzIsODc1LDg3Niw4NzksODgwLDg4Myw4ODQsODg2LDg4OCw4OTEsODkyLDg5NCw4OTcsODk5LDkwMCw5MDIsOTA1LDkwNiw5MDksOTExLDkxMiw5MTQsOTE3LDkxOCw5MjEsOTIzLDkyNSw5MjYsOTI4LDkzMSw5MzMsOTM0LDkzNyw5MzgsOTQwLDk0Myw5NDQsOTQ2LDk0OSw5NTEsOTUyLDk1NSw5NTYsOTU5LDk2MCw5NjMsOTY0LDk2Nyw5NjgsOTcxLDk3Miw5NzUsOTc3LDk3OCw5ODAsOTgzLDk4NSw5ODYsOTg5LDk5MCw5OTMsOTk0LDk5Nyw5OTgsMTAwMSwxMDAyLDEwMDUsMTAwNiwxMDA4LDEwMTAsMTAxMywxMDE1LDEwMTYsMTAxOSwxMDIxLDEwMjMsMTAyNCwxMDI3LDEwMjgsMTAzMCwxMDMzLDEwMzUsMTAzNiwxMDM5LDEwNDEsMTA0MiwxMDQ0LDEwNDYsMTA0OSwxMDUwLDEwNTIsMTA1NSwxMDU2LDEwNTgsMTA2MSwxMDYyLDEwNjQsMTA2NywxMDY5LDEwNzEsMTA3MiwxMDc1LDEwNzcsMTA3OCwxMDgxLDEwODIsMTA4NCwxMDg3LDEwODksMTA5MCwxMDkzLDEwOTQsMTA5NiwxMDk5LDExMDAsMTEwMywxMTA0LDExMDcsMTEwOCwxMTExLDExMTIsMTExNSwxMTE2LDExMTksMTEyMCwxMTIzLDExMjQsMTEyNywxMTI4LDExMzEsMTEzMiwxMTM0LDExMzcsMTEzOSwxMTQwLDExNDIsMTE0NSwxMTQ2LDExNDksMTE1MSwxMTUyLDExNTQsMTE1NywxMTU4LDExNjEsMTE2MywxMTY1LDExNjYsMTE2OCwxMTcxLDExNzMsMTE3NCwxMTc3LDExNzgsMTE4MCwxMTgzLDExODUsMTE4NiwxMTg5LDExOTAsMTE5MiwxMTk1LDExOTYsMTE5OSwxMjAwLDEyMDMsMTIwNCwxMjA3LDEyMDgsMTIxMSwxMjEyLDEyMTUsMTIxNiwxMjE5LDEyMjAsMTIyMywxMjI1LDEyMjYsMTIyOCwxMjMwLDEyMzMsMTIzNCwxMjM3LDEyMzgsMTI0MSwxMjQyLDEyNDUsMTI0NywxMjQ4LDEyNTAsMTI1MywxMjU1LDEyNTYsMTI1OSwxMjYxLDEyNjMsMTI2NCwxMjY3LDEyNjgsMTI3MCwxMjczLDEyNzUsMTI3NiwxMjc5LDEyODEsMTI4MiwxMjg0LDEyODYsMTI4OSwxMjkwLDEyOTIsMTI5NSwxMjk2LDEyOTgsMTMwMSwxMzAyLDEzMDUsMTMwNywxMzA5LDEzMTAsMTMxMiwxMzE1LDEzMTcsMTMxOCwxMzIxLDEzMjIsMTMyNCwxMzI3LDEzMjksMTMzMCwxMzMzLDEzMzQsMTMzNiwxMzM5LDEzNDAsMTM0MywxMzQ1LDEzNDcsMTM0OCwxMzUxLDEzNTIsMTM1NCwxMzU2LDEzNTksMTM2MCwxMzYzLDEzNjQsMTM2NywxMzY4LDEzNzEsMTM3MiwxMzc0LDEzNzYsMTM3OSwxMzgwLDEzODMsMTM4NSwxMzg2LDEzODksMTM5MSwxMzkyLDEzOTUsMTM5NywxMzk4LDE0MDEsMTQwMywxNDA0LDE0MDYsMTQwOSwxNDEwLDE0MTMsMTQxNCwxNDE3LDE0MTgsMTQyMSwxNDIyLDE0MjUsMTQyNiwxNDI5LDE0MzAsMTQzMiwxNDM1LDE0MzcsMTQzOCwxNDQxLDE0NDIsMTQ0NCwxNDQ3LDE0NDgsMTQ1MCwxNDUzLDE0NTUsMTQ1NiwxNDU5LDE0NjAsMTQ2MywxNDY1LDE0NjYsMTQ2OCwxNDcxLDE0NzMsMTQ3NCwxNDc3LDE0NzgsMTQ4MSwxNDgyLDE0ODQsMTQ4NywxNDg4LDE0OTEsMTQ5MywxNDk1LDE0OTYsMTQ5OSwxNTAwLDE1MDMsMTUwNCwxNTA3LDE1MDgsMTUxMCwxNTEyLDE1MTUsMTUxNiwxNTE4LDE1MjEsMTUyMywxNTI0LDE1MjYsMTUyOSwxNTMwLDE1MzMsMTUzNSwxNTM2LDE1MzgsMTU0MSwxNTQyLDE1NDUsMTU0NywxNTQ5LDE1NTAsMTU1MiwxNTU1LDE1NTcsMTU1OCwxNTYwLDE1NjMsMTU2NCwxNTY3LDE1NjgsMTU3MSwxNTcyLDE1NzUsMTU3NiwxNTc5LDE1ODAsMTU4MywxNTg1LDE1ODcsMTU4OCwxNTkwLDE1OTMsMTU5NCwxNTk2LDE1OTgsMTYwMSwxNjAyLDE2MDUsMTYwNywxNjA4LDE2MTAsMTYxMywxNjE0LDE2MTYsMTYxOSwxNjIxLDE2MjMsMTYyNCwxNjI3LDE2MjksMTYzMCwxNjMzLDE2MzUsMTYzNiwxNjM5LDE2NDEsMTY0MiwxNjQ0LDE2NDYsMTY0OSwxNjUwLDE2NTIsMTY1NSwxNjU3LDE2NTgsMTY2MSwxNjYyLDE2NjUsMTY2NiwxNjY5LDE2NzAsMTY3MiwxNjc1LDE2NzcsMTY3OCwxNjgwLDE2ODIsMTY4NSwxNjg2LDE2ODgsMTY5MSwxNjkzLDE2OTUsMTY5NiwxNjk5LDE3MDEsMTcwMiwxNzA0LDE3MDcsMTcwOCwxNzExLDE3MTIsMTcxNSwxNzE2LDE3MTksMTcyMSwxNzIyLDE3MjQsMTcyNywxNzI5LDE3MzAsMTczMywxNzM0LDE3MzcsMTczOCwxNzQxLDE3NDIsMTc0NSwxNzQ2LDE3NDksMTc1MCwxNzUyLDE3NTQsMTc1NywxNzU5LDE3NjAsMTc2MywxNzY1LDE3NjcsMTc2OCwxNzcxLDE3NzIsMTc3NCwxNzc3LDE3NzksMTc4MCwxNzgzLDE3ODUsMTc4NiwxNzg4LDE3OTAsMTc5MywxNzk0LDE3OTYsMTc5OSwxODAwLDE4MDMsMTgwNSwxODA2LDE4MDgsMTgxMSwxODEyLDE4MTUsMTgxNiwxODE5LDE4MjEsMTgyMiwxODI1LDE4MjcsMTgyOCwxODMwLDE4MzMsMTgzNCwxODM2LDE4MzgsMTg0MSwxODQyLDE4NDUsMTg0NywxODQ5LDE4NTAsMTg1MywxODU0LDE4NTcsMTg1OCwxODYxLDE4NjIsMTg2NCwxODY3LDE4NjksMTg3MCwxODczLDE4NzUsMTg3NiwxODc5LDE4ODAsMTg4MiwxODg0LDE4ODcsMTg4OCwxODkxLDE4OTIsMTg5NSwxODk3LDE4OTksMTkwMCwxOTAyLDE5MDUsMTkwNiwxOTA4LDE5MTAsMTkxMywxOTE0LDE5MTcsMTkxOSwxOTIwLDE5MjIsMTkyNSwxOTI2LDE5MjksMTkzMSwxOTMzLDE5MzQsMTkzNiwxOTM5LDE5NDEsMTk0MiwxOTQ0LDE5NDcsMTk0OCwxOTUxLDE5NTIsMTk1NSwxOTU2LDE5NTksMTk2MCwxOTYzLDE5NjQsMTk2NywxOTY5LDE5NzAsMTk3MiwxOTc0LDE5NzcsMTk3OCwxOTgxLDE5ODIsMTk4NSwxOTg2LDE5ODksMTk5MSwxOTkyLDE5OTQsMTk5NywxOTk5LDIwMDAsMjAwMywyMDA1LDIwMDcsMjAwOCwyMDExLDIwMTIsMjAxNCwyMDE3LDIwMTksMjAyMCwyMDIzLDIwMjUsMjAyNiwyMDI4LDIwMzAsMjAzMywyMDM0LDIwMzYsMjAzOSwyMDQwLDIwNDMsMjA0NSwyMDQ2LDIwNDgsMjA1MSwyMDUyLDIwNTUsMjA1NiwyMDU5LDIwNjEsMjA2MiwyMDY1LDIwNjYsMjA2OCwyMDcwLDIwNzMsMjA3NCwyMDc3LDIwNzgsMjA4MSwyMDgyLDIwODUsMjA4NywyMDg5LDIwOTAsMjA5MywyMDk1LDIwOTcsMjA5OCwyMTAxLDIxMDIsMjEwNCwyMTA3LDIxMDgsMjExMCwyMTEzLDIxMTUsMjExNiwyMTE5LDIxMjAsMjEyMiwyMTI0LDIxMjcsMjEyOCwyMTMxLDIxMzIsMjEzNSwyMTM2LDIxMzksMjE0MCwyMTQyLDIxNDUsMjE0NywyMTQ4LDIxNTAsMjE1MywyMTU0LDIxNTcsMjE1OSwyMTYwLDIxNjIsMjE2NSwyMTY2LDIxNjksMjE3MSwyMTczLDIxNzQsMjE3NiwyMTc5LDIxODEsMjE4MiwyMTg0LDIxODcsMjE4OCwyMTkxLDIxOTIsMjE5NSwyMTk2LDIxOTksMjIwMCwyMjAzLDIyMDQsMjIwNywyMjA5LDIyMTAsMjIxMiwyMjE0LDIyMTcsMjIxOCwyMjIxLDIyMjIsMjIyNSwyMjI2LDIyMjksMjIzMSwyMjMyLDIyMzQsMjIzNywyMjM5LDIyNDAsMjI0MywyMjQ1LDIyNDcsMjI0OCwyMjUxLDIyNTIsMjI1NCwyMjU3LDIyNTksMjI2MCwyMjYzLDIyNjUsMjI2NiwyMjY4LDIyNzAsMjI3MywyMjc0LDIyNzYsMjI3OSwyMjgwLDIyODIsMjI4NSwyMjg2LDIyODksMjI5MSwyMjkzLDIyOTQsMjI5NiwyMjk5LDIzMDEsMjMwMiwyMzA1LDIzMDYsMjMwOCwyMzExLDIzMTMsMjMxNCwyMzE3LDIzMTgsMjMyMCwyMzIzLDIzMjQsMjMyNywyMzI5LDIzMzAsMjMzMiwyMzM1LDIzMzcsMjMzOCwyMzQxLDIzNDIsMjM0NCwyMzQ3LDIzNDgsMjM1MSwyMzUyLDIzNTUsMjM1NiwyMzU5LDIzNjAsMjM2MywyMzY0LDIzNjcsMjM2OCwyMzcxLDIzNzIsMjM3NSwyMzc2LDIzNzksMjM4MCwyMzgyLDIzODUsMjM4NywyMzg4LDIzOTAsMjM5MywyMzk0LDIzOTcsMjM5OSwyNDAxLDI0MDIsMjQwNCwyNDA3LDI0MDksMjQxMCwyNDEzLDI0MTQsMjQxNiwyNDE5LDI0MjAsMjQyMywyNDI1LDI0MjYsMjQyOCwyNDMxLDI0MzIsMjQzNCwyNDM3LDI0MzksMjQ0MCwyNDQzLDI0NDQsMjQ0NywyNDQ4LDI0NTEsMjQ1MiwyNDU1LDI0NTYsMjQ1OSwyNDYwLDI0NjMsMjQ2NSwyNDY2LDI0NjgsMjQ3MSwyNDcyLDI0NzUsMjQ3NywyNDc4LDI0ODEsMjQ4MywyNDg0LDI0ODYsMjQ4OSwyNDkwLDI0OTMsMjQ5NCwyNDk2LDI0OTgsMjUwMSwyNTAyLDI1MDUsMjUwNywyNTA5LDI1MTAsMjUxMiwyNTE1LDI1MTcsMjUxOCwyNTIxLDI1MjMsMjUyNCwyNTI3LDI1MjksMjUzMCwyNTMyLDI1MzQsMjUzNywyNTM4LDI1NDAsMjU0MywyNTQ0LDI1NDYsMjU0OSwyNTUwLDI1NTMsMjU1NSwyNTU3LDI1NTgsMjU2MCwyNTYzLDI1NjUsMjU2NiwyNTY4LDI1NzEsMjU3MiwyNTc1LDI1NzYsMjU3OSwyNTgwLDI1ODMsMjU4NCwyNTg3LDI1ODgsMjU5MSwyNTkzLDI1OTQsMjU5NiwyNTk4LDI2MDEsMjYwMiwyNjA1LDI2MDYsMjYwOSwyNjEwLDI2MTMsMjYxNSwyNjE2LDI2MTgsMjYyMSwyNjIzLDI2MjQsMjYyNywyNjI5LDI2MzEsMjYzMiwyNjM1LDI2MzYsMjYzOCwyNjQxLDI2NDMsMjY0NCwyNjQ3LDI2NDksMjY1MCwyNjUyLDI2NTQsMjY1NywyNjU4LDI2NjAsMjY2MywyNjY0LDI2NjYsMjY2OSwyNjcwLDI2NzIsMjY3NSwyNjc3LDI2NzksMjY4MCwyNjgzLDI2ODUsMjY4NiwyNjg4LDI2OTEsMjY5MiwyNjk1LDI2OTYsMjY5OSwyNzAwLDI3MDMsMjcwNSwyNzA2LDI3MDgsMjcxMSwyNzEzLDI3MTQsMjcxNywyNzE4LDI3MjEsMjcyMiwyNzI1LDI3MjYsMjcyOSwyNzMwLDI3MzMsMjczNCwyNzM2LDI3MzgsMjc0MSwyNzQzLDI3NDQsMjc0NywyNzQ5LDI3NTEsMjc1MiwyNzU1LDI3NTYsMjc1OCwyNzYxLDI3NjMsMjc2NCwyNzY3LDI3NjksMjc3MCwyNzcyLDI3NzQsMjc3NywyNzc4LDI3ODAsMjc4MywyNzg0LDI3ODYsMjc4OSwyNzkwLDI3OTIsMjc5NSwyNzk3LDI3OTksMjgwMCwyODAzLDI4MDUsMjgwNiwyODA4LDI4MTEsMjgxMiwyODE1LDI4MTYsMjgxOSwyODIwLDI4MjMsMjgyNSwyODI2LDI4MjgsMjgzMSwyODMzLDI4MzQsMjgzNywyODM4LDI4NDEsMjg0MiwyODQ1LDI4NDYsMjg0OSwyODUwLDI4NTMsMjg1NCwyODU2LDI4NTgsMjg2MSwyODYzLDI4NjQsMjg2NywyODY5LDI4NzEsMjg3MiwyODc1LDI4NzYsMjg3OCwyODgxLDI4ODMsMjg4NCwyODg3LDI4ODksMjg5MCwyODkyLDI4OTQsMjg5NywyODk4LDI5MDAsMjkwMywyOTA0LDI5MDYsMjkwOSwyOTEwLDI5MTIsMjkxNSwyOTE3LDI5MTksMjkyMCwyOTIzLDI5MjUsMjkyNiwyOTI4LDI5MzEsMjkzMiwyOTM1LDI5MzYsMjkzOSwyOTQwLDI5NDMsMjk0NSwyOTQ2LDI5NDgsMjk1MSwyOTUzLDI5NTQsMjk1NywyOTU4LDI5NjEsMjk2MiwyOTY1LDI5NjYsMjk2OSwyOTcwLDI5NzMsMjk3NCwyOTc2LDI5NzgsMjk4MSwyOTgzLDI5ODQsMjk4NywyOTg5LDI5OTEsMjk5MiwyOTk1LDI5OTYsMjk5OCwzMDAxLDMwMDMsMzAwNCwzMDA3LDMwMDksMzAxMCwzMDEyLDMwMTQsMzAxNywzMDE4LDMwMjAsMzAyMywzMDI0LDMwMjYsMzAyOSwzMDMwLDMwMzMsMzAzNSwzMDM3LDMwMzgsMzA0MCwzMDQzLDMwNDUsMzA0NiwzMDQ4LDMwNTEsMzA1MiwzMDU1LDMwNTYsMzA1OSwzMDYwLDMwNjMsMzA2NCwzMDY3LDMwNjgsMzA3MSwzMDczLDMwNzQsMzA3NiwzMDc4LDMwODEsMzA4MiwzMDg1LDMwODYsMzA4OSwzMDkwLDMwOTMsMzA5NSwzMDk2LDMwOTgsMzEwMSwzMTAzLDMxMDQsMzEwNywzMTA5LDMxMTEsMzExMiwzMTE1LDMxMTYsMzExOCwzMTIxLDMxMjMsMzEyNCwzMTI2LDMxMjksMzEzMCwzMTMyLDMxMzQsMzEzNywzMTM4LDMxNDEsMzE0MywzMTQ0LDMxNDYsMzE0OSwzMTUwLDMxNTIsMzE1NSwzMTU3LDMxNTksMzE2MCwzMTYzLDMxNjUsMzE2NiwzMTY5LDMxNzEsMzE3MiwzMTc1LDMxNzYsMzE3OCwzMTgwLDMxODMsMzE4NSwzMTg2LDMxODgsMzE5MSwzMTkzLDMxOTQsMzE5NywzMTk4LDMyMDEsMzIwMiwzMjA1LDMyMDYsMzIwOSwzMjEwLDMyMTMsMzIxNCwzMjE2LDMyMTksMzIyMSwzMjIzLDMyMjQsMzIyNywzMjI4LDMyMzEsMzIzMiwzMjM1LDMyMzYsMzIzOCwzMjQxLDMyNDIsMzI0NSwzMjQ2LDMyNDksMzI1MCwzMjUzLDMyNTQsMzI1NiwzMjU5LDMyNjEsMzI2MiwzMjY1LDMyNjYsMzI2OCwzMjcxLDMyNzMsMzI3NCwzMjc3LDMyNzgsMzI4MCwzMjgzLDMyODQsMzI4NywzMjg5LDMyOTEsMzI5MiwzMjk1LDMyOTYsMzI5OCwzMzAwLDMzMDMsMzMwNCwzMzA3LDMzMDgsMzMxMSwzMzEyLDMzMTUsMzMxNiwzMzE4LDMzMjAsMzMyMywzMzI0LDMzMjcsMzMyOSwzMzMwLDMzMzMsMzMzNSwzMzM2LDMzMzksMzM0MSwzMzQyLDMzNDUsMzM0NywzMzQ4LDMzNTAsMzM1MywzMzU0LDMzNTcsMzM1OCwzMzYxLDMzNjIsMzM2NSwzMzY3LDMzNjgsMzM3MCwzMzczLDMzNzUsMzM3NiwzMzc5LDMzODAsMzM4MiwzMzg1LDMzODcsMzM4OCwzMzkxLDMzOTIsMzM5NCwzMzk2LDMzOTksMzQwMSwzNDAyLDM0MDQsMzQwNywzNDA4LDM0MTEsMzQxMywzNDE0LDM0MTYsMzQxOSwzNDIwLDM0MjMsMzQyNSwzNDI2LDM0MjksMzQzMCwzNDMyLDM0MzUsMzQzNywzNDM4LDM0NDAsMzQ0MywzNDQ0LDM0NDcsMzQ0OSwzNDUwLDM0NTMsMzQ1NCwzNDU3LDM0NTgsMzQ2MSwzNDYyLDM0NjUsMzQ2NiwzNDY5LDM0NzAsMzQ3MywzNDc0LDM0NzcsMzQ3OCwzNDgxLDM0ODIsMzQ4NSwzNDg3LDM0ODgsMzQ5MCwzNDkzLDM0OTUsMzQ5NiwzNDk5LDM1MDAsMzUwMiwzNTA1LDM1MDcsMzUwOCwzNTExLDM1MTIsMzUxNCwzNTE2LDM1MTksMzUyMSwzNTIyLDM1MjQsMzUyNywzNTI4LDM1MzEsMzUzMywzNTM0LDM1MzcsMzUzOSwzNTQwLDM1NDIsMzU0NSwzNTQ2LDM1NDksMzU1MCwzNTUyLDM1NTUsMzU1NywzNTU4LDM1NjAsMzU2MywzNTY0LDM1NjcsMzU2OCwzNTcxLDM1NzMsMzU3NCwzNTc3LDM1NzgsMzU4MCwzNTgyLDM1ODUsMzU4NiwzNTg5LDM1OTAsMzU5MywzNTk0LDM1OTcsMzU5OSwzNjAwLDM2MDIsMzYwNSwzNjA3LDM2MDgsMzYxMSwzNjEzLDM2MTUsMzYxNiwzNjE5LDM2MjAsMzYyMiwzNjI1LDM2MjcsMzYyOCwzNjMxLDM2MzMsMzYzNCwzNjM2LDM2MzgsMzY0MSwzNjQyLDM2NDQsMzY0NywzNjQ4LDM2NTAsMzY1MywzNjU0LDM2NTYsMzY1OSwzNjYxLDM2NjMsMzY2NCwzNjY3LDM2NjksMzY3MCwzNjcyLDM2NzUsMzY3NiwzNjc5LDM2ODAsMzY4MywzNjg0LDM2ODcsMzY4OSwzNjkwLDM2OTIsMzY5NSwzNjk3LDM2OTgsMzcwMSwzNzAyLDM3MDUsMzcwNiwzNzA5LDM3MTAsMzcxMywzNzE0LDM3MTcsMzcxOCwzNzIxLDM3MjIsMzcyNSwzNzI3LDM3MjgsMzczMCwzNzMzLDM3MzUsMzczNiwzNzM5LDM3NDAsMzc0MiwzNzQ1LDM3NDcsMzc0OCwzNzUxLDM3NTIsMzc1NCwzNzU2LDM3NTksMzc2MSwzNzYyLDM3NjQsMzc2NywzNzY4LDM3NzEsMzc3MywzNzc0LDM3NzcsMzc3OSwzNzgwLDM3ODIsMzc4NSwzNzg2LDM3ODksMzc5MCwzNzkyLDM3OTUsMzc5NywzNzk4LDM4MDAsMzgwMywzODA0LDM4MDcsMzgwOCwzODExLDM4MTMsMzgxNCwzODE3LDM4MTgsMzgyMCwzODIyLDM4MjUsMzgyNiwzODI5LDM4MzAsMzgzMywzODM0LDM4MzcsMzgzOSwzODQwLDM4NDIsMzg0NSwzODQ3LDM4NDgsMzg1MSwzODUzLDM4NTUsMzg1NiwzODU5LDM4NjAsMzg2MiwzODY1LDM4NjcsMzg2OCwzODcxLDM4NzMsMzg3NCwzODc2LDM4NzgsMzg4MSwzODgyLDM4ODQsMzg4NywzODg4LDM4OTAsMzg5MywzODk0LDM4OTYsMzg5OSwzOTAxLDM5MDMsMzkwNCwzOTA3LDM5MDksMzkxMCwzOTEyLDM5MTUsMzkxNiwzOTE5LDM5MjAsMzkyMywzOTI0LDM5MjcsMzkyOSwzOTMwLDM5MzIsMzkzNSwzOTM3LDM5MzgsMzk0MSwzOTQyLDM5NDUsMzk0NiwzOTQ5LDM5NTAsMzk1MywzOTU0LDM5NTcsMzk1OCwzOTYxLDM5NjIsMzk2NSwzOTY3LDM5NjgsMzk3MCwzOTczLDM5NzUsMzk3NiwzOTc5LDM5ODAsMzk4MiwzOTg0LDM5ODcsMzk4OCwzOTkxLDM5OTIsMzk5NSwzOTk2LDM5OTksNDAwMSw0MDAyLDQwMDQsNDAwNyw0MDA4LDQwMTEsNDAxMyw0MDE0LDQwMTcsNDAxOSw0MDIwLDQwMjIsNDAyNSw0MDI2LDQwMjksNDAzMCw0MDMyLDQwMzQsNDAzNyw0MDM4LDQwNDAsNDA0Myw0MDQ1LDQwNDcsNDA0OCw0MDUxLDQwNTMsNDA1NCw0MDU3LDQwNTgsNDA2MCw0MDYzLDQwNjUsNDA2Niw0MDY5LDQwNzAsNDA3Myw0MDc0LDQwNzYsNDA3OSw0MDgwLDQwODMsNDA4NSw0MDg2LDQwODksNDA5MSw0MDkyLDQwOTQsNDA5Nyw0MDk4LDQxMDEsNDEwMiw0MTA1LDQxMDYsNDEwOSw0MTEwLDQxMTMsNDExNCw0MTE3LDQxMTgsNDEyMCw0MTIzLDQxMjUsNDEyNiw0MTI5LDQxMzAsNDEzMiw0MTM1LDQxMzYsNDEzOCw0MTQxLDQxNDMsNDE0NCw0MTQ3LDQxNDgsNDE1MSw0MTUzLDQxNTUsNDE1Niw0MTU5LDQxNjAsNDE2Miw0MTY0LDQxNjcsNDE2OSw0MTcwLDQxNzIsNDE3NSw0MTc2LDQxNzksNDE4MSw0MTgyLDQxODQsNDE4Nyw0MTg4LDQxOTEsNDE5Myw0MTk0LDQxOTcsNDE5OCw0MjAxLDQyMDIsNDIwNSw0MjA2LDQyMDksNDIxMCw0MjEzLDQyMTQsNDIxNyw0MjE4LDQyMjEsNDIyMiw0MjI1LDQyMjYsNDIyOSw0MjMxLDQyMzMsNDIzNCw0MjM3LDQyMzgsNDI0MCw0MjQzLDQyNDQsNDI0Niw0MjQ5LDQyNTEsNDI1Miw0MjU1LDQyNTYsNDI1OCw0MjYwLDQyNjMsNDI2NCw0MjY3LDQyNjgsNDI3MSw0MjcyLDQyNzUsNDI3Niw0Mjc4LDQyODAsNDI4Myw0Mjg0LDQyODcsNDI4OSw0MjkwLDQyOTMsNDI5NSw0Mjk2LDQyOTksNDMwMSw0MzAyLDQzMDQsNDMwNyw0MzA4LDQzMTEsNDMxMyw0MzE0LDQzMTcsNDMxOCw0MzIwLDQzMjMsNDMyNSw0MzI2LDQzMjksNDMzMSw0MzMyLDQzMzQsNDMzNyw0MzM4LDQzNDEsNDM0Miw0MzQ1LDQzNDYsNDM0OSw0MzUwLDQzNTMsNDM1NCw0MzU3LDQzNTgsNDM2MCw0MzYzLDQzNjUsNDM2Niw0MzY5LDQzNzAsNDM3Miw0Mzc1LDQzNzYsNDM3OCw0MzgxLDQzODMsNDM4NCw0Mzg3LDQzODgsNDM5MSw0MzkzLDQzOTUsNDM5Niw0Mzk5LDQ0MDAsNDQwMiw0NDA0LDQ0MDcsNDQwOSw0NDEwLDQ0MTIsNDQxNSw0NDE2LDQ0MTksNDQyMSw0NDIyLDQ0MjQsNDQyNyw0NDI4LDQ0MzEsNDQzMyw0NDM0LDQ0MzcsNDQzOCw0NDQwLDQ0NDMsNDQ0NSw0NDQ2LDQ0NDksNDQ1MSw0NDUyLDQ0NTQsNDQ1Nyw0NDU4LDQ0NjEsNDQ2Miw0NDY0LDQ0NjYsNDQ2OSw0NDcwLDQ0NzIsNDQ3NSw0NDc3LDQ0NzksNDQ4MCw0NDgzLDQ0ODUsNDQ4Niw0NDg5LDQ0OTAsNDQ5Miw0NDk1LDQ0OTcsNDQ5OCw0NTAxLDQ1MDIsNDUwNSw0NTA2LDQ1MDgsNDUxMSw0NTEzLDQ1MTQsNDUxNyw0NTE5LDQ1MjAsNDUyMiw0NTI1LDQ1MjcsNDUyOCw0NTMxLDQ1MzIsNDUzNCw0NTM2LDQ1MzksNDU0MCw0NTQzLDQ1NDQsNDU0Nyw0NTQ4LDQ1NTEsNDU1Myw0NTU0LDQ1NTYsNDU1OSw0NTYwLDQ1NjMsNDU2NSw0NTY2LDQ1NjksNDU3MSw0NTcyLDQ1NzQsNDU3Nyw0NTc4LDQ1ODEsNDU4Miw0NTg0LDQ1ODYsNDU4OSw0NTkwLDQ1OTMsNDU5NSw0NTk3LDQ1OTgsNDYwMCw0NjAzLDQ2MDUsNDYwNiw0NjA5LDQ2MTAsNDYxMiw0NjE1LDQ2MTcsNDYxOCw0NjIxLDQ2MjIsNDYyNCw0NjI3LDQ2MjgsNDYzMSw0NjMzLDQ2MzQsNDYzNiw0NjM5LDQ2NDAsNDY0Miw0NjQ1LDQ2NDcsNDY0OCw0NjUxLDQ2NTIsNDY1NSw0NjU2LDQ2NTksNDY2MCw0NjYzLDQ2NjQsNDY2Nyw0NjY4LDQ2NzEsNDY3Myw0Njc0LDQ2NzYsNDY3OSw0NjgwLDQ2ODMsNDY4NSw0Njg2LDQ2ODksNDY5MSw0NjkyLDQ2OTQsNDY5Nyw0Njk4LDQ3MDEsNDcwMiw0NzA0LDQ3MDYsNDcwOSw0NzEwLDQ3MTIsNDcxNSw0NzE3LDQ3MTksNDcyMCw0NzIzLDQ3MjUsNDcyNiw0NzI5LDQ3MzAsNDczMiw0NzM1LDQ3MzcsNDczOCw0NzQxLDQ3NDIsNDc0NSw0NzQ2LDQ3NDgsNDc1MSw0NzUzLDQ3NTQsNDc1Nyw0NzU5LDQ3NjAsNDc2Miw0NzY1LDQ3NjcsNDc2OCw0NzcxLDQ3NzIsNDc3NCw0Nzc2LDQ3NzksNDc4MCw0NzgzLDQ3ODQsNDc4Nyw0Nzg4LDQ3OTEsNDc5Myw0Nzk0LDQ3OTYsNDc5OSw0ODAwLDQ4MDMsNDgwNSw0ODA2LDQ4MDgsNDgxMSw0ODEyLDQ4MTUsNDgxNyw0ODE4LDQ4MjEsNDgyMiw0ODI0LDQ4MjcsNDgyOSw0ODMwLDQ4MzMsNDgzNSw0ODM2LDQ4MzgsNDg0MSw0ODQyLDQ4NDUsNDg0Niw0ODQ5LDQ4NTAsNDg1Myw0ODU0LDQ4NTcsNDg1OCw0ODYxLDQ4NjIsNDg2NCw0ODY3LDQ4NjksNDg3MCw0ODczLDQ4NzQsNDg3Niw0ODc5LDQ4ODAsNDg4Miw0ODg1LDQ4ODcsNDg4OCw0ODkxLDQ4OTIsNDg5NSw0ODk3LDQ4OTksNDkwMCw0OTAzLDQ5MDQsNDkwNiw0OTA4LDQ5MTEsNDkxMyw0OTE0LDQ5MTYsNDkxOSw0OTIwLDQ5MjMsNDkyNSw0OTI2LDQ5MjgsNDkzMSw0OTMyLDQ5MzUsNDkzNyw0OTM4LDQ5NDEsNDk0Miw0OTQ0LDQ5NDcsNDk0OSw0OTUwLDQ5NTIsNDk1NSw0OTU2LDQ5NTksNDk2MSw0OTYyLDQ5NjUsNDk2Niw0OTY5LDQ5NzAsNDk3Myw0OTc0LDQ5NzcsNDk3OCw0OTgxLDQ5ODIsNDk4NSw0OTg2LDQ5ODksNDk5MCw0OTkzLDQ5OTQsNDk5Nyw0OTk5LDUwMDAsNTAwMiw1MDA1LDUwMDcsNTAwOCw1MDExLDUwMTIsNTAxNCw1MDE3LDUwMTksNTAyMCw1MDIzLDUwMjQsNTAyNiw1MDI4LDUwMzEsNTAzMyw1MDM0LDUwMzYsNTAzOSw1MDQwLDUwNDMsNTA0NSw1MDQ2LDUwNDgsNTA1MSw1MDUyLDUwNTUsNTA1Nyw1MDU4LDUwNjEsNTA2Miw1MDY0LDUwNjcsNTA2OSw1MDcwLDUwNzMsNTA3NSw1MDc2LDUwNzgsNTA4MSw1MDgyLDUwODUsNTA4Niw1MDg5LDUwOTAsNTA5Myw1MDk0LDUwOTcsNTA5OCw1MTAxLDUxMDIsNTEwNCw1MTA3LDUxMDksNTExMCw1MTEzLDUxMTQsNTExNiw1MTE5LDUxMjAsNTEyMiw1MTI1LDUxMjcsNTEyOCw1MTMxLDUxMzIsNTEzNSw1MTM3LDUxMzksNTE0MCw1MTQzLDUxNDQsNTE0Niw1MTQ4LDUxNTEsNTE1Myw1MTU0LDUxNTYsNTE1OSw1MTYwLDUxNjMsNTE2NSw1MTY2LDUxNjgsNTE3MSw1MTcyLDUxNzUsNTE3Nyw1MTc4LDUxODEsNTE4Miw1MTg0LDUxODcsNTE4OSw1MTkwLDUxOTIsNTE5NSw1MTk2LDUxOTksNTIwMSw1MjAyLDUyMDUsNTIwNiw1MjA5LDUyMTAsNTIxMyw1MjE0LDUyMTcsNTIxOCw1MjIxLDUyMjIsNTIyNSw1MjI2LDUyMjksNTIzMCw1MjMzLDUyMzQsNTIzNyw1MjM5LDUyNDAsNTI0Miw1MjQ1LDUyNDcsNTI0OCw1MjUxLDUyNTIsNTI1NCw1MjU3LDUyNTksNTI2MCw1MjYzLDUyNjQsNTI2Niw1MjY4LDUyNzEsNTI3Myw1Mjc0LDUyNzYsNTI3OSw1MjgwLDUyODMsNTI4NCw1Mjg3LDUyODgsNTI5MSw1MjkyLDUyOTUsNTI5Nyw1Mjk4LDUzMDAsNTMwMyw1MzA0LDUzMDcsNTMwOSw1MzEwLDUzMTMsNTMxNSw1MzE2LDUzMTgsNTMyMSw1MzIyLDUzMjUsNTMyNiw1MzI4LDUzMzAsNTMzMyw1MzM0LDUzMzcsNTMzOSw1MzQxLDUzNDIsNTM0NCw1MzQ3LDUzNDksNTM1MCw1MzUzLDUzNTQsNTM1Niw1MzU5LDUzNjEsNTM2Miw1MzY1LDUzNjYsNTM2OCw1MzcxLDUzNzIsNTM3NSw1Mzc3LDUzNzgsNTM4MCw1MzgzLDUzODQsNTM4Niw1Mzg5LDUzOTEsNTM5Miw1Mzk1LDUzOTYsNTM5OSw1NDAwLDU0MDMsNTQwNCw1NDA3LDU0MDgsNTQxMSw1NDEyLDU0MTUsNTQxNyw1NDE4LDU0MjAsNTQyMyw1NDI0LDU0MjcsNTQyOSw1NDMwLDU0MzIsNTQzNSw1NDM2LDU0MzksNTQ0MSw1NDQyLDU0NDUsNTQ0Niw1NDQ4LDU0NTAsNTQ1Myw1NDU0LDU0NTcsNTQ1OSw1NDYxLDU0NjIsNTQ2NSw1NDY2LDU0NjksNTQ3MCw1NDczLDU0NzQsNTQ3Nyw1NDc5LDU0ODEsNTQ4Miw1NDg1LDU0ODYsNTQ4OCw1NDkxLDU0OTIsNTQ5NCw1NDk3LDU0OTgsNTUwMCw1NTAzLDU1MDQsNTUwNiw1NTA5LDU1MTEsNTUxMiw1NTE1LDU1MTYsNTUxOSw1NTIwLDU1MjMsNTUyNCw1NTI3LDU1MjgsNTUzMSw1NTMyLDU1MzUsNTUzNyw1NTM4LDU1NDAsNTU0Myw1NTQ0LDU1NDcsNTU0OSw1NTUwLDU1NTMsNTU1NSw1NTU2LDU1NTgsNTU2MSw1NTYyLDU1NjUsNTU2Niw1NTY4LDU1NzAsNTU3Myw1NTc0LDU1NzcsNTU3OSw1NTgxLDU1ODIsNTU4NCw1NTg3LDU1ODksNTU5MCw1NTkzLDU1OTQsNTU5Niw1NTk5LDU2MDEsNTYwMiw1NjA1LDU2MDYsNTYwOCw1NjExLDU2MTIsNTYxNSw1NjE3LDU2MTgsNTYyMCw1NjIzLDU2MjQsNTYyNiw1NjI5LDU2MzEsNTYzMiw1NjM1LDU2MzYsNTYzOSw1NjQwLDU2NDMsNTY0NCw1NjQ3LDU2NDgsNTY1MSw1NjUyLDU2NTUsNTY1Nyw1NjU4LDU2NjAsNTY2Myw1NjY0LDU2NjcsNTY2OSw1NjcwLDU2NzMsNTY3NSw1Njc2LDU2NzgsNTY4MSw1NjgyLDU2ODUsNTY4Niw1Njg4LDU2OTAsNTY5Myw1Njk0LDU2OTYsNTY5OSw1NzAxLDU3MDMsNTcwNCw1NzA3LDU3MDksNTcxMCw1NzEzLDU3MTQsNTcxNiw1NzE5LDU3MjEsNTcyMiw1NzI1LDU3MjYsNTcyOSw1NzMwLDU3MzIsNTczNSw1NzM3LDU3MzgsNTc0MSw1NzQzLDU3NDQsNTc0Niw1NzQ5LDU3NTEsNTc1Miw1NzU1LDU3NTYsNTc1OCw1NzYxLDU3NjIsNTc2NCw1NzY3LDU3NjksNTc3MCw1NzczLDU3NzQsNTc3Nyw1Nzc4LDU3ODAsNTc4Myw1Nzg0LDU3ODcsNTc4OSw1NzkxLDU3OTIsNTc5NSw1Nzk2LDU3OTksNTgwMCw1ODAzLDU4MDQsNTgwNiw1ODA4LDU4MTEsNTgxMiw1ODE0LDU4MTcsNTgxOSw1ODIwLDU4MjIsNTgyNSw1ODI2LDU4MjksNTgzMSw1ODMyLDU4MzQsNTgzNyw1ODM4LDU4NDEsNTg0Myw1ODQ1LDU4NDYsNTg0OCw1ODUxLDU4NTMsNTg1NCw1ODU3LDU4NTgsNTg2MCw1ODYzLDU4NjQsNTg2Niw1ODY5LDU4NzEsNTg3Miw1ODc1LDU4NzYsNTg3OSw1ODgwLDU4ODMsNTg4NCw1ODg3LDU4ODgsNTg5MSw1ODkyLDU4OTUsNTg5Nyw1ODk4LDU5MDAsNTkwMyw1OTA1LDU5MDYsNTkwOSw1OTEwLDU5MTMsNTkxNCw1OTE3LDU5MTgsNTkyMSw1OTIyLDU5MjUsNTkyNiw1OTI4LDU5MzAsNTkzMyw1OTM1LDU5MzYsNTkzOSw1OTQxLDU5NDMsNTk0NCw1OTQ3LDU5NDgsNTk1MCw1OTUzLDU5NTUsNTk1Niw1OTU5LDU5NjEsNTk2Miw1OTY0LDU5NjYsNTk2OSw1OTcwLDU5NzIsNTk3NSw1OTc2LDU5NzgsNTk4MSw1OTgyLDU5ODQsNTk4Nyw1OTg5LDU5OTEsNTk5Miw1OTk1LDU5OTcsNTk5OCw2MDAxLDYwMDIsNjAwNCw2MDA3LDYwMDksNjAxMCw2MDEzLDYwMTQsNjAxNyw2MDE4LDYwMjAsNjAyMyw2MDI0LDYwMjcsNjAyOSw2MDMxLDYwMzIsNjAzNSw2MDM2LDYwMzksNjA0MCw2MDQzLDYwNDQsNjA0Niw2MDQ4LDYwNTEsNjA1Miw2MDU0LDYwNTcsNjA1OSw2MDYwLDYwNjIsNjA2NSw2MDY2LDYwNjksNjA3MSw2MDcyLDYwNzQsNjA3Nyw2MDc4LDYwODEsNjA4Myw2MDg1LDYwODYsNjA4OCw2MDkxLDYwOTMsNjA5NCw2MDk3LDYwOTgsNjEwMCw2MTAzLDYxMDQsNjEwNiw2MTA5LDYxMTEsNjExMiw2MTE1LDYxMTYsNjExOSw2MTIwLDYxMjMsNjEyNCw2MTI3LDYxMjgsNjEzMSw2MTMyLDYxMzUsNjEzNiw2MTM5LDYxNDAsNjE0Myw2MTQ1LDYxNDYsNjE0OCw2MTUwLDYxNTMsNjE1NCw2MTU3LDYxNTgsNjE2MSw2MTYyLDYxNjUsNjE2Nyw2MTY4LDYxNzAsNjE3Myw2MTc1LDYxNzYsNjE3OSw2MTgxLDYxODMsNjE4NCw2MTg3LDYxODgsNjE5MCw2MTkzLDYxOTUsNjE5Niw2MTk5LDYyMDEsNjIwMiw2MjA0LDYyMDYsNjIwOSw2MjEwLDYyMTIsNjIxNSw2MjE2LDYyMTgsNjIyMSw2MjIyLDYyMjUsNjIyNyw2MjI5LDYyMzAsNjIzMiw2MjM1LDYyMzcsNjIzOCw2MjQxLDYyNDIsNjI0NCw2MjQ3LDYyNDksNjI1MCw2MjUzLDYyNTQsNjI1Niw2MjU5LDYyNjAsNjI2Myw2MjY0LDYyNjcsNjI2OCw2MjcxLDYyNzIsNjI3NSw2Mjc2LDYyNzksNjI4MCw2MjgzLDYyODQsNjI4Nyw2Mjg4LDYyOTEsNjI5Miw2Mjk0LDYyOTcsNjI5OSw2MzAwLDYzMDIsNjMwNSw2MzA2LDYzMDksNjMxMSw2MzEyLDYzMTQsNjMxNyw2MzE4LDYzMjEsNjMyMyw2MzI1LDYzMjYsNjMyOCw2MzMxLDYzMzMsNjMzNCw2MzM3LDYzMzgsNjM0MCw2MzQzLDYzNDUsNjM0Niw2MzQ5LDYzNTAsNjM1Miw2MzU1LDYzNTZdLCJyZWR1bmRhbmNpZXNSZW1vdmVkIjo5MCwibWlsZXN0b25lcyI6eyJtaWxlc3RvbmUxIjp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTIiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lMyI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU0Ijp7ImVhcm5lZCI6dHJ1ZX0sIm1pbGVzdG9uZTUiOnsiZWFybmVkIjp0cnVlfSwibWlsZXN0b25lNiI6eyJlYXJuZWQiOnRydWV9LCJtaWxlc3RvbmU3Ijp7ImVhcm5lZCI6dHJ1ZX19LCJjb2xsYXBzZU1pbGVzdG9uZXMiOmZhbHNlLCJtZXRhQnV5YWJsZXMiOnsibWV0YWwiOnsiYW1vdW50IjoiMiJ9LCJjb25zb2xlIjp7ImFtb3VudCI6IjMxIn0sImNsYXNzcm9vbSI6eyJhbW91bnQiOiIzNyJ9LCJ0aWNrIjp7ImFtb3VudCI6IjYifX0sIm1ldGFNaWxlc3RvbmVzIjp7IjAiOnsiZWFybmVkIjp0cnVlfSwiMSI6eyJlYXJuZWQiOnRydWV9LCIyIjp7ImVhcm5lZCI6dHJ1ZX0sIjMiOnsiZWFybmVkIjp0cnVlfSwiNCI6eyJlYXJuZWQiOnRydWV9LCI1Ijp7ImVhcm5lZCI6dHJ1ZX0sIjYiOnsiZWFybmVkIjp0cnVlfX0sImNvbGxhcHNlTWV0YU1pbGVzdG9uZXMiOnRydWV9fSwiYXV0b1BhdXNlIjp0cnVlLCJ1c2luZ0xvZyI6ZmFsc2V9"},y=Ji(Object.keys(o).reduce((O,v)=>(O.push({label:v.split("/").slice(-1)[0].slice(0,-4),value:o[v]}),O),[]));const u=en({});function w(O){if(u[O]==null){let v=localStorage.getItem(O);if(v==null)u[O]={error:"Save doesn't exist in localStorage",id:O};else if(v==="dW5kZWZpbmVk")u[O]={error:"Save is undefined",id:O};else try{if(v[0]!=="{")if(v[0]==="e")v=decodeURIComponent(escape(atob(v)));else if(v[0]==="\u1BE1")v=Ge.decompressFromUTF16(v);else return console.warn("Unable to determine preset encoding",v),m.value=!0,u[O]={error:"Unable to determine preset encoding",id:O},u[O];u[O]={...JSON.parse(v),id:O}}catch(H){u[O]={error:H,id:O},console.warn(`SavesManager: Failed to load info about save with id ${O}: +${H} +${v}`)}}return u[O]}oe(e,O=>{O&&Object.keys(u).forEach(v=>delete u[v])});const W=b(()=>UI.saves.reduce((O,v)=>(O[v]=w(v),O),{}));function N(O){let v;switch(Qi.id===O?v=hm(Qi[yl]):v=JSON.stringify(W.value[O]),QI.exportEncoding){default:console.warn(`Unknown save encoding: ${QI.exportEncoding}. Defaulting to lz`);case"lz":v=Ge.compressToUTF16(v);break;case"base64":v=btoa(unescape(encodeURIComponent(v)));break;case"plain":break}const H=document.createElement("textarea");H.value=v,document.body.appendChild(H),H.select(),H.setSelectionRange(0,99999),document.execCommand("copy"),document.body.removeChild(H)}function p(O){Qi.id===O&&Fl();const v={...W.value[O],id:gs()};Fl(v),UI.saves.push(v.id)}function f(O){UI.saves=UI.saves.filter(v=>v!==O),localStorage.removeItem(O),u[O]=void 0}function C(O){W.value[Qi.id].time=Qi.time,Fl(),u[Qi.id]=void 0,He(W.value[O]),u[O]=void 0}function D(O){if(Z.value=O,De(()=>{Z.value=null}),O[0]!=="{")if(O[0]==="e")O=decodeURIComponent(escape(atob(O)));else if(O[0]==="\u1BE1")O=Ge.decompressFromUTF16(O);else{console.warn("Unable to determine preset encoding",O);return}const v=JSON.parse(O);v.id=gs(),Fl(v),UI.saves.push(v.id),C(v.id)}function L(O,v){const H=W.value[O];H!=null&&(H.name=v,Qi.id===O?(Qi.name=v,Fl()):(Fl(H),u[O]=void 0))}return(O,v)=>(h(),eI(EI,{modelValue:e.value,"onUpdate:modelValue":v[4]||(v[4]=H=>e.value=H),ref_key:"modal",ref:n},{header:Bi(()=>[dy]),body:Bi(({shown:H})=>[H?(h(),eI(c(zd),{key:0,list:c(UI).saves,handle:".handle",itemKey:mi=>mi},{item:Bi(({element:mi})=>[s(my,{save:c(W)[mi],onOpen:G=>C(mi),onExport:G=>N(mi),onEditName:G=>L(mi,G),onDuplicate:G=>p(mi),onDelete:G=>f(mi)},null,8,["save","onOpen","onExport","onEditName","onDuplicate","onDelete"])]),_:1},8,["list","itemKey"])):oi("",!0)]),footer:Bi(()=>[X("div",cy,[s(td,{modelValue:a.value,"onUpdate:modelValue":v[0]||(v[0]=H=>a.value=H),title:"Import Save",placeholder:"Paste your save here!",class:LI({importingFailed:m.value})},null,8,["modelValue","class"]),X("div",ay,[ty,X("div",Zy,[X("button",{class:"button",onClick:v[1]||(v[1]=H=>C(c(cs)().id))},"New Game"),Object.keys(c(y)).length>0?(h(),eI(Xs,{key:0,options:c(y),modelValue:Z.value,"onUpdate:modelValue":v[2]||(v[2]=H=>D(H)),closeOnSelect:"",placeholder:"Select preset",class:"presets"},null,8,["options","modelValue"])):oi("",!0)])]),X("div",oy,[by,X("button",{class:"button modal-default-button",onClick:v[3]||(v[3]=H=>e.value=!1)}," Close ")])])]),_:1},8,["modelValue"]))}});var Zd=OI(yy,[["__scopeId","data-v-5229ff3f"]]);const Bl=i=>(Ce("data-v-8495e562"),i=i(),he(),i),jy=["src","alt"],uy={key:1,class:"title"},Vy=Bl(()=>X("div",{style:{"flex-grow":"1",cursor:"unset"}},null,-1)),Jy={class:"discord"},Wy={class:"discord-links"},py={key:0},My=["href"],ry=Bl(()=>X("li",null,[X("a",{href:"https://discord.gg/WzejVAx",target:"_blank"},"The Paper Pilot Community")],-1)),wy=Bl(()=>X("li",null,[X("a",{href:"https://discord.gg/F3xveHV",target:"_blank"},"The Modding Tree")],-1)),Ny={href:"https://forums.moddingtree.com/",target:"_blank"},Oy=Bl(()=>X("span",{class:"material-icons"},"forum",-1)),Cy=Bl(()=>X("span",{class:"material-icons"},"info",-1)),hy=Bl(()=>X("span",{class:"material-icons"},"library_books",-1)),Yy=Bl(()=>X("span",{class:"material-icons"},"settings",-1)),vy=Bl(()=>X("span",{class:"material-icons"},"library_books",-1)),Xy=Bl(()=>X("span",{class:"material-icons"},"settings",-1)),zy=Bl(()=>X("span",{class:"material-icons"},"info",-1)),Ry={href:"https://forums.moddingtree.com/",target:"_blank"},Gy=Bl(()=>X("span",{class:"material-icons"},"forum",-1)),fy={class:"discord"},xy={class:"discord-links"},Dy={key:0},Sy=["href"],Ly=Bl(()=>X("li",null,[X("a",{href:"https://discord.gg/WzejVAx",target:"_blank"},"The Paper Pilot Community")],-1)),Ty=Bl(()=>X("li",null,[X("a",{href:"https://discord.gg/F3xveHV",target:"_blank"},"The Modding Tree")],-1)),Fy=iI({__name:"Nav",setup(i){const l=Ji(null),e=Ji(null),n=Ji(null),m=Ji(null),{useHeader:a,banner:Z,title:o,discordName:y,discordLink:u,versionNumber:w}=QI;function W(){window.open(u,"mywindow")}return(N,p)=>(h(),S(M,null,[c(a)?(h(),S("div",Ne({key:0,class:"nav"},N.$attrs),[c(Z)?(h(),S("img",{key:0,src:c(Z),class:"banner",alt:c(o)},null,8,jy)):(h(),S("div",uy,pI(c(o)),1)),X("div",{onClick:p[0]||(p[0]=f=>{var C;return(C=m.value)==null?void 0:C.open()}),class:"version-container"},[s(KI,{display:"Changelog",direction:c(Yi).Down,class:"version"},{default:Bi(()=>[X("span",null,"v"+pI(c(w)),1)]),_:1},8,["direction"])]),Vy,X("div",Jy,[X("span",{onClick:W,class:"material-icons"},"discord"),X("ul",Wy,[c(u)?(h(),S("li",py,[X("a",{href:c(u),target:"_blank"},pI(c(y)),9,My)])):oi("",!0),ry,wy])]),X("div",null,[X("a",Ny,[s(KI,{display:"Forums",direction:c(Yi).Down,yoffset:"5px"},{default:Bi(()=>[Oy]),_:1},8,["direction"])])]),X("div",{onClick:p[1]||(p[1]=f=>{var C;return(C=l.value)==null?void 0:C.open()})},[s(KI,{display:"Info",direction:c(Yi).Down,class:"info"},{default:Bi(()=>[Cy]),_:1},8,["direction"])]),X("div",{onClick:p[2]||(p[2]=f=>{var C;return(C=e.value)==null?void 0:C.open()})},[s(KI,{display:"Saves",direction:c(Yi).Down,xoffset:"-20px"},{default:Bi(()=>[hy]),_:1},8,["direction"])]),X("div",{onClick:p[3]||(p[3]=f=>{var C;return(C=n.value)==null?void 0:C.open()})},[s(KI,{display:"Options",direction:c(Yi).Down,xoffset:"-66px"},{default:Bi(()=>[Yy]),_:1},8,["direction"])])],16)):(h(),S("div",Ne({key:1,class:"overlay-nav"},N.$attrs),[X("div",{onClick:p[4]||(p[4]=f=>{var C;return(C=m.value)==null?void 0:C.open()}),class:"version-container"},[s(KI,{display:"Changelog",direction:c(Yi).Right,xoffset:"25%",class:"version"},{default:Bi(()=>[X("span",null,"v"+pI(c(w)),1)]),_:1},8,["direction"])]),X("div",{onClick:p[5]||(p[5]=f=>{var C;return(C=e.value)==null?void 0:C.open()})},[s(KI,{display:"Saves",direction:c(Yi).Right},{default:Bi(()=>[vy]),_:1},8,["direction"])]),X("div",{onClick:p[6]||(p[6]=f=>{var C;return(C=n.value)==null?void 0:C.open()})},[s(KI,{display:"Options",direction:c(Yi).Right},{default:Bi(()=>[Xy]),_:1},8,["direction"])]),X("div",{onClick:p[7]||(p[7]=f=>{var C;return(C=l.value)==null?void 0:C.open()})},[s(KI,{display:"Info",direction:c(Yi).Right},{default:Bi(()=>[zy]),_:1},8,["direction"])]),X("div",null,[X("a",Ry,[s(KI,{display:"Forums",direction:c(Yi).Right,xoffset:"7px"},{default:Bi(()=>[Gy]),_:1},8,["direction"])])]),X("div",fy,[X("span",{onClick:W,class:"material-icons"},"discord"),X("ul",xy,[c(u)?(h(),S("li",Dy,[X("a",{href:c(u),target:"_blank"},pI(c(y)),9,Sy)])):oi("",!0),Ly,Ty])])],16)),s(Mb,{ref_key:"info",ref:l,changelog:m.value},null,8,["changelog"]),s(Zd,{ref_key:"savesManager",ref:e},null,512),s(Xb,{ref_key:"options",ref:n},null,512),s(mb,{ref_key:"changelog",ref:m},null,512)],64))}});var od=OI(Fy,[["__scopeId","data-v-8495e562"]]);const ys=i=>(Ce("data-v-5cccc039"),i=i(),he(),i),ky={class:"inner-tab"},gy={key:1},Qy=ys(()=>X("br",null,null,-1)),Uy=ys(()=>X("i",null,"advent",-1)),Hy=ys(()=>X("a",{href:"https://discord.gg/WzejVAx",class:"info-modal-discord-link",target:"_blank"},[X("span",{class:"material-icons info-modal-discord"},"discord"),d(" The Paper Pilot Community ")],-1)),Ay=ys(()=>X("h2",null,"It's not December",-1)),Ey=ys(()=>X("div",null," This game is intended to be played as an advent calendar, but it is currently not December. In order to allow players to still enjoy this game, there is a field in the options menu to ignore the month and/or day. You can also change that setting here: ",-1)),By=ys(()=>X("h2",null,"Credits",-1)),Py=iI({__name:"Game",setup(i){const l=se(Qi,"tabs"),e=se(Qi,"ignoreDate"),n=b(()=>Object.keys(CI)),m=QI.useHeader,a=Oe(V.loreBody);function Z(y){const{display:u,minimized:w,name:W,color:N,minimizable:p,nodes:f,minimizedDisplay:C}=y;return{display:u,minimized:w,name:W,color:N,minimizable:p,nodes:f,minimizedDisplay:C}}const o=[{label:"Don't Ignore",value:Kl.AsIntended},{label:"Ignore Month",value:Kl.IgnoreMonth},{label:"Ignore Month and Day",value:Kl.IgnoreDay}];return(y,u)=>(h(),S("div",{class:LI(["tabs-container",{useHeader:c(m)}])},[(h(!0),S(M,null,Zs(c(l),(w,W)=>{var N,p;return h(),S("div",{key:W,class:LI(["tab",c((N=c(CI)[w])==null?void 0:N.classes)]),style:BI(c((p=c(CI)[w])==null?void 0:p.style))},[W===0&&!c(m)?(h(),eI(od,{key:0})):oi("",!0),X("div",ky,[c(n).includes(w)?(h(),eI(lb,Ne({key:0},Z(c(CI)[w]),{index:W,onSetMinimized:f=>c(CI)[w].minimized.value=f}),null,16,["index","onSetMinimized"])):(h(),eI(qI(w),{key:1,index:W},null,8,["index"]))])],6)}),128)),s(EI,{modelValue:c(V).showLoreModal.value,"onUpdate:modelValue":u[0]||(u[0]=w=>c(V).showLoreModal.value=w)},{header:Bi(()=>[X("h2",null,pI(c(V).loreTitle.value),1)]),body:Bi(()=>[c(a)?(h(),eI(qI(c(a)),{key:0})):oi("",!0),c(V).loreScene.value!==-1?(h(),S("div",gy,[s($o,{day:c(V).loreScene.value},null,8,["day"]),Qy,d(" You can help continue the "),Uy,d("ure at: "),Hy])):oi("",!0)]),_:1},8,["modelValue"]),s(EI,{modelValue:c(Qi).ignoreDate===c(Kl).AsIntended&&new Date().getMonth()!==11&&!c(V).dismissedIgnoreDateWarning.value,"onUpdate:modelValue":u[2]||(u[2]=w=>c(V).dismissedIgnoreDateWarning.value=!w)},{header:Bi(()=>[Ay]),body:Bi(()=>[Ey,s(ti),s(Xs,{title:"Ignore Date",options:o,modelValue:c(e),"onUpdate:modelValue":u[1]||(u[1]=w=>dl(e)?e.value=w:null)},null,8,["modelValue"])]),_:1},8,["modelValue"]),s(EI,{modelValue:c(V).creditsOpen.value,"onUpdate:modelValue":u[3]||(u[3]=w=>c(V).creditsOpen.value=w)},{header:Bi(()=>[By]),body:Bi(()=>[X("div",null,[(h(),eI(qI(c(nl)(c(V).credits))))])]),_:1},8,["modelValue"])],2))}});var _y=OI(Py,[["__scopeId","data-v-5cccc039"]]);const xs=i=>(Ce("data-v-4a50ce42"),i=i(),he(),i),qy={class:"game-over-modal-header"},$y=["src","alt"],Ky={class:"game-over-modal-title"},ij=xs(()=>X("h2",null,"Congratulations!",-1)),Ij={key:0},lj=xs(()=>X("br",null,null,-1)),ej=xs(()=>X("div",null," Please check the Discord to discuss the game or to check for new content updates! ",-1)),sj=xs(()=>X("br",null,null,-1)),nj=["href"],mj=xs(()=>X("span",{class:"material-icons game-over-modal-discord"},"discord",-1)),dj=iI({__name:"GameOverScreen",setup(i){const{title:l,logo:e,discordName:n,discordLink:m,versionNumber:a,versionTitle:Z}=QI,o=b(()=>Se(Qi.timePlayed)),y=b(()=>Sn.value&&!Qi.keepGoing),u=se(Qi,"autosave");function w(){Qi.keepGoing=!0}function W(){He(cs())}return(N,p)=>(h(),eI(EI,{"model-value":c(y)},{header:Bi(()=>[X("div",qy,[c(e)?(h(),S("img",{key:0,class:"game-over-modal-logo",src:c(e),alt:c(l)},null,8,$y)):oi("",!0),X("div",Ky,[ij,X("h4",null,"You've beaten "+pI(c(l))+" v"+pI(c(a))+": "+pI(c(Z)),1)])])]),body:Bi(({shown:f})=>[f?(h(),S("div",Ij,[X("div",null,"It took you "+pI(c(o))+" to beat the game.",1),lj,ej,sj,X("div",null,[X("a",{href:c(m),class:"game-over-modal-discord-link"},[mj,d(" "+pI(c(n)),1)],8,nj)]),s(ye,{title:"Autosave",modelValue:c(u),"onUpdate:modelValue":p[0]||(p[0]=C=>dl(u)?u.value=C:null)},null,8,["modelValue"])])):oi("",!0)]),footer:Bi(()=>[X("div",{class:"game-over-footer"},[X("button",{onClick:w,class:"button"},"Keep Going"),X("button",{onClick:W,class:"button danger"},"Play Again")])]),_:1},8,["model-value"]))}});var cj=OI(dj,[["__scopeId","data-v-4a50ce42"]]);const dn=i=>(Ce("data-v-7372ecde"),i=i(),he(),i),aj=dn(()=>X("div",{class:"nan-modal-header"},[X("h2",null,"NaN value detected!")],-1)),tj={key:0},Zj=dn(()=>X("br",null,null,-1)),oj=["href"],bj=dn(()=>X("span",{class:"material-icons nan-modal-discord"},"discord",-1)),yj=dn(()=>X("br",null,null,-1)),jj={class:"nan-footer"},uj=iI({__name:"NaNScreen",setup(i){const{discordName:l,discordLink:e}=QI,n=se(Qi,"autosave"),m=se(rl,"hasNaN"),a=Ji(null),Z=b(()=>{var p;return(p=rl.NaNPath)==null?void 0:p.join(".")}),o=b(()=>{var p;return(p=rl.NaNPath)==null?void 0:p.slice(-1)[0]}),y=b(()=>rl.NaNReceiver&&o.value!=null?rl.NaNReceiver[o.value]:null),u=b({get(){return Qi.devSpeed===0},set(p){Qi.devSpeed=p?null:0}});function w(){rl.NaNReceiver&&o.value!=null&&(rl.NaNReceiver[o.value]=new I(0),rl.hasNaN=!1)}function W(){rl.NaNReceiver&&o.value!=null&&(rl.NaNReceiver[o.value]=new I(1),rl.hasNaN=!1)}function N(){rl.NaNReceiver&&o.value!=null&&(rl.NaNReceiver[o.value]=new I(NaN),rl.hasNaN=!1)}return(p,f)=>(h(),S(M,null,[s(EI,Ne({modelValue:c(m),"onUpdate:modelValue":f[4]||(f[4]=C=>dl(m)?m.value=C:null)},p.$attrs),{header:Bi(()=>[aj]),body:Bi(()=>[X("div",null,[d(' Attempted to assign "'+pI(c(Z))+'" to NaN',1),c(y)?(h(),S("span",tj,pI(" ")+"(previously "+pI(c(di)(c(y)))+")",1)):oi("",!0),d(". Auto-saving has been "+pI(c(n)?"enabled":"disabled")+". Check the console for more details, and consider sharing it with the developers on discord. ",1)]),Zj,X("div",null,[X("a",{href:c(e),class:"nan-modal-discord-link"},[bj,d(" "+pI(c(l)),1)],8,oj)]),yj,s(ye,{title:"Autosave",modelValue:c(n),"onUpdate:modelValue":f[0]||(f[0]=C=>dl(n)?n.value=C:null)},null,8,["modelValue"]),c(QI).enablePausing?(h(),eI(ye,{key:0,title:"Pause game",modelValue:c(u),"onUpdate:modelValue":f[1]||(f[1]=C=>dl(u)?u.value=C:null)},null,8,["modelValue"])):oi("",!0)]),footer:Bi(()=>[X("div",jj,[X("button",{onClick:f[2]||(f[2]=C=>{var D;return(D=a.value)==null?void 0:D.open()}),class:"button"},"Open Saves Manager"),X("button",{onClick:w,class:"button"},"Set to 0"),X("button",{onClick:W,class:"button"},"Set to 1"),c(y)&&c(I).neq(c(y),0)&&c(I).neq(c(y),1)?(h(),S("button",{key:0,onClick:f[3]||(f[3]=C=>m.value=!1),class:"button"}," Set to previous ")):oi("",!0),X("button",{onClick:N,class:"button danger"},"Ignore")])]),_:1},16,["modelValue"]),s(Zd,{ref_key:"savesManager",ref:a},null,512)],64))}});var Vj=OI(uj,[["__scopeId","data-v-7372ecde"]]);const Jj={key:0,class:"tpsDisplay"},Wj={key:0,class:"low"},pj=iI({__name:"TPS",setup(i){const l=b(()=>I.div(rl.lastTenTicks.length,rl.lastTenTicks.reduce((a,Z)=>a+Z,0))),e=Ji([]);AI(()=>{e.value.push(Math.round(l.value.toNumber())),e.value.length>10&&(e.value=e.value.slice(1))});const n=b(()=>e.value.reduce((a,Z)=>I.max(a,Z),0)),m=b(()=>I.sub(l.value,n.value).gt(1));return(a,Z)=>c(l).isNan()?oi("",!0):(h(),S("div",Jj,[d(" TPS: "+pI(c(_)(c(l)))+" ",1),s(Ae,{name:"fade"},{default:Bi(()=>[c(m)?(h(),S("span",Wj,pI(c(_)(c(n))),1)):oi("",!0)]),_:1})]))}});var Mj=OI(pj,[["__scopeId","data-v-46a3ed5b"]]);var rj=iI({__name:"App",setup(i){const l=QI.useHeader,e=b(()=>ae[UI.theme].variables),n=se(UI,"showTPS"),m=b(()=>GI(r(()=>s(M,null,[Bc.map(hi)]))));return(a,Z)=>(h(),S(M,null,[X("div",{id:"modal-root",style:BI(c(e))},null,4),X("div",{class:LI(["app",{useHeader:c(l)}]),style:BI(c(e))},[c(l)?(h(),eI(od,{key:0})):oi("",!0),s(_y),c(c(n))?(h(),eI(Mj,{key:1})):oi("",!0),s(cj),s(Vj),(h(),eI(qI(c(m))))],6)],64))}});var wj=OI(rj,[["__scopeId","data-v-8f3af388"]]);function Nj(i={}){const{immediate:l=!1,onNeedRefresh:e,onOfflineReady:n,onRegistered:m,onRegisteredSW:a,onRegisterError:Z}=i;let o,y,u,w;const W=async(p=!0)=>{await u,p&&(o==null||o.addEventListener("controlling",f=>{f.isUpdate&&window.location.reload()})),await(w==null?void 0:w())};async function N(){if("serviceWorker"in navigator){const{Workbox:p,messageSW:f}=await Os(()=>import("./workbox-window.4a8794bb.js"),[]);w=async()=>{y&&y.waiting&&await f(y.waiting,{type:"SKIP_WAITING"})},o=new p("./sw.js",{scope:"./",type:"classic"}),o.addEventListener("activated",C=>{C.isUpdate||n==null||n()});{const C=()=>{e==null||e()};o.addEventListener("waiting",C),o.addEventListener("externalwaiting",C)}o.register({immediate:l}).then(C=>{y=C,a?a("./sw.js",C):m==null||m(C)}).catch(C=>{Z==null||Z(C)})}}return u=N(),W}function Oj(i={}){const{immediate:l=!0,onNeedRefresh:e,onOfflineReady:n,onRegistered:m,onRegisteredSW:a,onRegisterError:Z}=i,o=Ji(!1),y=Ji(!1);return{updateServiceWorker:Nj({immediate:l,onNeedRefresh(){o.value=!0,e==null||e()},onOfflineReady(){y.value=!0,n==null||n()},onRegistered:m,onRegisteredSW:a,onRegisterError:Z}),offlineReady:y,needRefresh:o}}document.title=QI.title;window.projInfo=QI;if(QI.id==="")throw"Project ID is empty! Please select a unique ID for this project in /src/data/projInfo.json";requestAnimationFrame(async()=>{console.log(`%cMade in Profectus%c +Learn more at www.moddingtree.com`,"font-weight: bold; font-size: 24px; color: #A3BE8C; background: #2E3440; padding: 4px 8px; border-radius: 8px;","padding: 4px;"),await Qc();const{globalBus:i}=await Os(()=>Promise.resolve().then(function(){return Yc}),void 0),{startGameLoop:l}=await Os(()=>import("./gameLoop.b97c9727.js"),["assets/gameLoop.b97c9727.js","assets/@fontsource.c175eac8.css","assets/vue.dd1d82d0.js","assets/amator.8216e0d2.js","assets/bezier-easing.a990b400.js","assets/@vue.359f7754.js","assets/nanoevents.1080beb7.js","assets/lz-string.f2f3b7cf.js","assets/is-plain-object.906d88e8.js","assets/@pixi.051d1bd4.js","assets/eventemitter3.dc5195d7.js","assets/earcut.03899505.js","assets/url.1821b64b.js","assets/querystring.b35d81f8.js","assets/vue-toastification.7ec3a26c.js","assets/vue-toastification.4b5f8ac8.css","assets/vue-next-select.d15705a0.js","assets/vue-next-select.9e6f4164.css","assets/vue-panzoom.f6869ea5.js","assets/panzoom.9e1878dd.js","assets/wheel.f03080ac.js","assets/ngraph.events.083734c6.js","assets/vuedraggable.179e27ef.js","assets/sortablejs.e4e9a931.js","assets/vue-textarea-autosize.35804eaf.js"]),e=window.vue=rd(wj);i.emit("setupVue",e),e.mount("#app"),De(()=>{const n=jm(),{updateServiceWorker:m}=Oj({onNeedRefresh(){n.info("New content available, click here to update.",{timeout:!1,closeOnClick:!1,draggable:!1,icon:{iconClass:"material-icons",iconChildren:"refresh",iconTag:"i"},rtl:!1,onClick(){m()}})},onOfflineReady(){n.info("App ready to work offline")},onRegisterError:console.warn,onRegistered(a){a&&setInterval(()=>a.update(),60*60*1e3)}})}),l()});export{I as D,Os as _,rl as a,QI as b,wo as c,NI as g,sn as l,Qi as p,UI as s}; diff --git a/advent/assets/is-plain-object.906d88e8.js b/advent/assets/is-plain-object.906d88e8.js new file mode 100644 index 000000000..d4e4dc0da --- /dev/null +++ b/advent/assets/is-plain-object.906d88e8.js @@ -0,0 +1,6 @@ +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */function n(t){return Object.prototype.toString.call(t)==="[object Object]"}function o(t){var e,r;return n(t)===!1?!1:(e=t.constructor,e===void 0?!0:(r=e.prototype,!(n(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}export{o as i}; diff --git a/advent/assets/letterbox.e01917c1.png b/advent/assets/letterbox.e01917c1.png new file mode 100644 index 000000000..d7552b5c3 Binary files /dev/null and b/advent/assets/letterbox.e01917c1.png differ diff --git a/advent/assets/log.b9641ef8.svg b/advent/assets/log.b9641ef8.svg new file mode 100644 index 000000000..029611454 --- /dev/null +++ b/advent/assets/log.b9641ef8.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + diff --git a/advent/assets/lz-string.f2f3b7cf.js b/advent/assets/lz-string.f2f3b7cf.js new file mode 100644 index 000000000..20dd9fe89 --- /dev/null +++ b/advent/assets/lz-string.f2f3b7cf.js @@ -0,0 +1 @@ +var O={exports:{}};(function(y){var U=function(){var _=String.fromCharCode,M="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",x={};function m(o,r){if(!x[o]){x[o]={};for(var c=0;c>>8,c[e*2+1]=p%256}return c},decompressFromUint8Array:function(o){if(o==null)return d.decompress(o);for(var r=new Array(o.length/2),c=0,e=r.length;c>1}else{for(t=1,e=0;e>1}h--,h==0&&(h=Math.pow(2,f),f++),delete w[u]}else for(t=p[u],e=0;e>1;h--,h==0&&(h=Math.pow(2,f),f++),p[A]=a++,u=String(v)}if(u!==""){if(Object.prototype.hasOwnProperty.call(w,u)){if(u.charCodeAt(0)<256){for(e=0;e>1}else{for(t=1,e=0;e>1}h--,h==0&&(h=Math.pow(2,f),f++),delete w[u]}else for(t=p[u],e=0;e>1;h--,h==0&&(h=Math.pow(2,f),f++)}for(t=2,e=0;e>1;for(;;)if(n=n<<1,s==r-1){l.push(c(n));break}else s++;return l.join("")},decompress:function(o){return o==null?"":o==""?null:d._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,r,c){var e=[],t=4,p=4,w=3,v="",A=[],u,h,a,f,l,n,s,i={val:c(0),position:r,index:1};for(u=0;u<3;u+=1)e[u]=u;for(a=0,l=Math.pow(2,2),n=1;n!=l;)f=i.val&i.position,i.position>>=1,i.position==0&&(i.position=r,i.val=c(i.index++)),a|=(f>0?1:0)*n,n<<=1;switch(a){case 0:for(a=0,l=Math.pow(2,8),n=1;n!=l;)f=i.val&i.position,i.position>>=1,i.position==0&&(i.position=r,i.val=c(i.index++)),a|=(f>0?1:0)*n,n<<=1;s=_(a);break;case 1:for(a=0,l=Math.pow(2,16),n=1;n!=l;)f=i.val&i.position,i.position>>=1,i.position==0&&(i.position=r,i.val=c(i.index++)),a|=(f>0?1:0)*n,n<<=1;s=_(a);break;case 2:return""}for(e[3]=s,h=s,A.push(s);;){if(i.index>o)return"";for(a=0,l=Math.pow(2,w),n=1;n!=l;)f=i.val&i.position,i.position>>=1,i.position==0&&(i.position=r,i.val=c(i.index++)),a|=(f>0?1:0)*n,n<<=1;switch(s=a){case 0:for(a=0,l=Math.pow(2,8),n=1;n!=l;)f=i.val&i.position,i.position>>=1,i.position==0&&(i.position=r,i.val=c(i.index++)),a|=(f>0?1:0)*n,n<<=1;e[p++]=_(a),s=p-1,t--;break;case 1:for(a=0,l=Math.pow(2,16),n=1;n!=l;)f=i.val&i.position,i.position>>=1,i.position==0&&(i.position=r,i.val=c(i.index++)),a|=(f>0?1:0)*n,n<<=1;e[p++]=_(a),s=p-1,t--;break;case 2:return A.join("")}if(t==0&&(t=Math.pow(2,w),w++),e[s])v=e[s];else if(s===p)v=h+h.charAt(0);else return null;A.push(v),e[p++]=h+v.charAt(0),t--,h=v,t==0&&(t=Math.pow(2,w),w++)}}};return d}();y!=null&&(y.exports=U)})(O);var j=O.exports;export{j as L}; diff --git a/advent/assets/material-icons-base-400-normal.47b692f3.woff b/advent/assets/material-icons-base-400-normal.47b692f3.woff new file mode 100644 index 000000000..3031d46f5 Binary files /dev/null and b/advent/assets/material-icons-base-400-normal.47b692f3.woff differ diff --git a/advent/assets/material-icons-base-400-normal.cc0462d5.woff2 b/advent/assets/material-icons-base-400-normal.cc0462d5.woff2 new file mode 100644 index 000000000..65a3d31c8 Binary files /dev/null and b/advent/assets/material-icons-base-400-normal.cc0462d5.woff2 differ diff --git a/advent/assets/metal.7407f5d1.png b/advent/assets/metal.7407f5d1.png new file mode 100644 index 000000000..c29c3bdda Binary files /dev/null and b/advent/assets/metal.7407f5d1.png differ diff --git a/advent/assets/nanoevents.1080beb7.js b/advent/assets/nanoevents.1080beb7.js new file mode 100644 index 000000000..9d7a85f14 --- /dev/null +++ b/advent/assets/nanoevents.1080beb7.js @@ -0,0 +1 @@ +let h=()=>({events:{},emit(t,...e){(this.events[t]||[]).forEach(s=>s(...e))},on(t,e){return(this.events[t]=this.events[t]||[]).push(e),()=>this.events[t]=(this.events[t]||[]).filter(s=>s!==e)}});export{h as c}; diff --git a/advent/assets/ngraph.events.083734c6.js b/advent/assets/ngraph.events.083734c6.js new file mode 100644 index 000000000..889256b89 --- /dev/null +++ b/advent/assets/ngraph.events.083734c6.js @@ -0,0 +1 @@ +var c=function(r){v(r);var e=l(r);return r.on=e.on,r.off=e.off,r.fire=e.fire,r};function l(n){var r=Object.create(null);return{on:function(e,t,o){if(typeof t!="function")throw new Error("callback is expected to be a function");var f=r[e];return f||(f=r[e]=[]),f.push({callback:t,ctx:o}),n},off:function(e,t){var o=typeof e=="undefined";if(o)return r=Object.create(null),n;if(r[e]){var f=typeof t!="function";if(f)delete r[e];else for(var a=r[e],i=0;i1&&(o=Array.prototype.splice.call(arguments,1));for(var f=0;fc)&&(p=h*d,w+=p),(E<-c||E>c)&&(A=h*E,Z+=A),T=i(O)}function O(){var B=Date.now()-x,F=!1,C=0,M=0;p&&(C=-p*Math.exp(-B/s),C>.5||C<-.5?F=!0:C=p=0),A&&(M=-A*Math.exp(-B/s),M>.5||M<-.5?F=!0:M=A=0),F&&(a(w+C,Z+M),T=i(O))}}function Ft(){return typeof cancelAnimationFrame=="function"?cancelAnimationFrame:clearTimeout}function Lt(){return typeof requestAnimationFrame=="function"?requestAnimationFrame:function(o){return setTimeout(o,16)}}var Nt=Pt;function Pt(o){if(o)return{capture:Ve,release:Ve};var a,u,c,h=!1;return{capture:g,release:i};function g(b){h=!0,u=window.document.onselectstart,c=window.document.ondragstart,window.document.onselectstart=Ye,a=b,a.ondragstart=Ye}function i(){!h||(h=!1,window.document.onselectstart=u,a&&(a.ondragstart=c))}}function Ye(o){return o.stopPropagation(),!1}function Ve(){}var It=Rt;function Rt(){this.x=0,this.y=0,this.scale=1}var de={exports:{}};de.exports=qt;de.exports.canAttach=Ue;function qt(o,a){if(!Ue(o))throw new Error("svg element is required for svg.panzoom to work");var u=o.ownerSVGElement;if(!u)throw new Error("Do not apply panzoom to the root element. Use its child instead (e.g. ). As of March 2016 only FireFox supported transform on the root element");a.disableKeyboardInteraction||u.setAttribute("tabindex",0);var c={getBBox:g,getScreenCTM:i,getOwner:h,applyTransform:x,initTransform:b};return c;function h(){return u}function g(){var s=o.getBBox();return{left:s.x,top:s.y,width:s.width,height:s.height}}function i(){var s=u.getCTM();return s||u.getScreenCTM()}function b(s){var l=o.getCTM();l===null&&(l=document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGMatrix()),s.x=l.e,s.y=l.f,s.scale=l.a,u.removeAttributeNS(null,"viewBox")}function x(s){o.setAttribute("transform","matrix("+s.scale+" 0 0 "+s.scale+" "+s.x+" "+s.y+")")}}function Ue(o){return o&&o.ownerSVGElement&&o.getCTM}var he={exports:{}};he.exports=Yt;he.exports.canAttach=He;function Yt(o,a){var u=He(o);if(!u)throw new Error("panzoom requires DOM element to be attached to the DOM tree");var c=o.parentElement;o.scrollTop=0,a.disableKeyboardInteraction||c.setAttribute("tabindex",0);var h={getBBox:i,getOwner:g,applyTransform:b};return h;function g(){return c}function i(){return{left:0,top:0,width:o.clientWidth,height:o.clientHeight}}function b(x){o.style.transformOrigin="0 0 0",o.style.transform="matrix("+x.scale+", 0, 0, "+x.scale+", "+x.x+", "+x.y+")"}}function He(o){return o&&o.parentElement&&o.style}var Xe=Et.exports,ve=At.exports,Vt=Zt,Xt=zt,Je=Nt,jt=Je(),$t=Je(!0),Kt=It,je=de.exports,$e=he.exports,Wt=1,Gt=1.75,Ke=300,We=200,tr=Qe;function Qe(o,a){a=a||{};var u=a.controller;if(u||(je.canAttach(o)?u=je(o,a):$e.canAttach(o)&&(u=$e(o,a))),!u)throw new Error("Cannot create panzoom for the current type of dom element");var c=u.getOwner(),h={x:0,y:0},g=!1,i=new Kt;u.initTransform&&u.initTransform(i);var b=typeof a.filterKey=="function"?a.filterKey:X,x=typeof a.pinchSpeed=="number"?a.pinchSpeed:1,s=a.bounds,l=typeof a.maxZoom=="number"?a.maxZoom:Number.POSITIVE_INFINITY,d=typeof a.minZoom=="number"?a.minZoom:0,w=typeof a.boundsPadding=="number"?a.boundsPadding:.05,p=typeof a.zoomDoubleClickSpeed=="number"?a.zoomDoubleClickSpeed:Gt,E=a.beforeWheel||X,Z=a.beforeMouseDown||X,A=typeof a.zoomSpeed=="number"?a.zoomSpeed:Wt,T=Ge(a.transformOrigin),j=a.enableTextSelection?$t:jt;_t(s),a.autocenter&&ot();var L,$=0,_=0,O=0,B=null,F=new Date,C,M=!1,N=!1,S,k,oe,ae,ie,D;"smoothScroll"in a&&!a.smoothScroll?D=Ut():D=Xt(dt,xt,a.smoothScroll);var ue,K,U,H=!1;Te();var J={dispose:wt,moveBy:R,moveTo:ce,smoothMoveTo:yt,centerOn:pt,zoomTo:re,zoomAbs:Q,smoothZoom:te,smoothZoomAbs:Bt,showRectangle:nt,pause:et,resume:tt,isPaused:rt,getTransform:at,getMinZoom:it,setMinZoom:ut,getMaxZoom:ct,setMaxZoom:ft,getTransformOrigin:lt,setTransformOrigin:st,getZoomSpeed:vt,setZoomSpeed:mt};Vt(J);var ge=typeof a.initialX=="number"?a.initialX:i.x,pe=typeof a.initialY=="number"?a.initialY:i.y,ye=typeof a.initialZoom=="number"?a.initialZoom:i.scale;return(ge!=i.x||pe!=i.y||ye!=i.scale)&&Q(ge,pe,ye),J;function et(){Se(),H=!0}function tt(){H&&(Te(),H=!1)}function rt(){return H}function nt(e){var t=c.getBoundingClientRect(),r=P(t.width,t.height),n=e.right-e.left,f=e.bottom-e.top;if(!Number.isFinite(n)||!Number.isFinite(f))throw new Error("Invalid rectangle");var v=r.x/n,m=r.y/f,y=Math.min(v,m);i.x=-(e.left+n/2)*y+r.x/2,i.y=-(e.top+f/2)*y+r.y/2,i.scale=y}function P(e,t){if(u.getScreenCTM){var r=u.getScreenCTM(),n=r.a,f=r.d,v=r.e,m=r.f;h.x=e*n-v,h.y=t*f-m}else h.x=e,h.y=t;return h}function ot(){var e,t,r=0,n=0,f=we();if(f)r=f.left,n=f.top,e=f.right-f.left,t=f.bottom-f.top;else{var v=c.getBoundingClientRect();e=v.width,t=v.height}var m=u.getBBox();if(!(m.width===0||m.height===0)){var y=t/m.height,Y=e/m.width,I=Math.min(Y,y);i.x=-(m.left+m.width/2)*I+e/2+r,i.y=-(m.top+m.height/2)*I+t/2+n,i.scale=I}}function at(){return i}function it(){return d}function ut(e){d=e}function ct(){return l}function ft(e){l=e}function lt(){return T}function st(e){T=Ge(e)}function vt(){return A}function mt(e){if(!Number.isFinite(e))throw new Error("Zoom speed should be a number");A=e}function dt(){return{x:i.x,y:i.y}}function ce(e,t){i.x=e,i.y=t,fe(),q("pan"),le()}function xe(e,t){ce(i.x+e,i.y+t)}function fe(){var e=we();if(!!e){var t=!1,r=ht(),n=e.left-r.right;return n>0&&(i.x+=n,t=!0),n=e.right-r.left,n<0&&(i.x+=n,t=!0),n=e.top-r.bottom,n>0&&(i.y+=n,t=!0),n=e.bottom-r.top,n<0&&(i.y+=n,t=!0),t}}function we(){if(!!s){if(typeof s=="boolean"){var e=c.getBoundingClientRect(),t=e.width,r=e.height;return{left:t*w,top:r*w,right:t*(1-w),bottom:r*(1-w)}}return s}}function ht(){var e=u.getBBox(),t=gt(e.left,e.top);return{left:t.x,top:t.y,right:e.width*i.scale+t.x,bottom:e.height*i.scale+t.y}}function gt(e,t){return{x:e*i.scale+i.x,y:t*i.scale+i.y}}function le(){g=!0,L=window.requestAnimationFrame(bt)}function be(e,t,r){if(me(e)||me(t)||me(r))throw new Error("zoom requires valid numbers");var n=i.scale*r;if(nl){if(i.scale===l)return;r=l/i.scale}var f=P(e,t);if(i.x=f.x-r*(f.x-i.x),i.y=f.y-r*(f.y-i.y),s&&w===1&&d===1)i.scale*=r,fe();else{var v=fe();v||(i.scale*=r)}q("zoom"),le()}function Q(e,t,r){var n=r/i.scale;be(e,t,n)}function pt(e){var t=e.ownerSVGElement;if(!t)throw new Error("ui element is required to be within the scene");var r=e.getBoundingClientRect(),n=r.left+r.width/2,f=r.top+r.height/2,v=t.getBoundingClientRect(),m=v.width/2-n,y=v.height/2-f;R(m,y,!0)}function yt(e,t){R(e-i.x,t-i.y,!0)}function R(e,t,r){if(!r)return xe(e,t);ue&&ue.cancel();var n={x:0,y:0},f={x:e,y:t},v=0,m=0;ue=ve(n,f,{step:function(y){xe(y.x-v,y.y-m),v=y.x,m=y.y}})}function xt(e,t){ne(),ce(e,t)}function wt(){Se()}function Te(){c.addEventListener("mousedown",Ze,{passive:!1}),c.addEventListener("dblclick",Ae,{passive:!1}),c.addEventListener("touchstart",Me,{passive:!1}),c.addEventListener("keydown",Ce,{passive:!1}),Xe.addWheelListener(c,Ne,{passive:!1}),le()}function Se(){Xe.removeWheelListener(c,Ne),c.removeEventListener("mousedown",Ze),c.removeEventListener("keydown",Ce),c.removeEventListener("dblclick",Ae),c.removeEventListener("touchstart",Me),L&&(window.cancelAnimationFrame(L),L=0),D.cancel(),Fe(),Le(),j.release(),se()}function bt(){g&&Tt()}function Tt(){g=!1,u.applyTransform(i),q("transform"),L=0}function Ce(e){var t=0,r=0,n=0;if(e.keyCode===38?r=1:e.keyCode===40?r=-1:e.keyCode===37?t=1:e.keyCode===39?t=-1:e.keyCode===189||e.keyCode===109?n=1:(e.keyCode===187||e.keyCode===107)&&(n=-1),!b(e,t,r,n)){if(t||r){e.preventDefault(),e.stopPropagation();var f=c.getBoundingClientRect(),v=Math.min(f.width,f.height),m=.05,y=v*m*t,Y=v*m*r;R(y,Y)}if(n){var I=Pe(n*100),v=T?G():St();re(v.x,v.y,I)}}}function St(){var e=c.getBoundingClientRect();return{x:e.width/2,y:e.height/2}}function Me(e){if(Ct(e),W(),e.touches.length===1)return kt(e,e.touches[0]);e.touches.length===2&&(ie=Ee(e.touches[0],e.touches[1]),U=!0,ke())}function Ct(e){a.onTouch&&!a.onTouch(e)||(e.stopPropagation(),e.preventDefault())}function Mt(e){W(),!(a.onDoubleClick&&!a.onDoubleClick(e))&&(e.preventDefault(),e.stopPropagation())}function kt(e){_=new Date;var t=e.touches[0],r=z(t);C=r;var n=P(r.x,r.y);S=n.x,k=n.y,oe=S,ae=k,D.cancel(),ke()}function ke(){M||(M=!0,document.addEventListener("touchmove",Be),document.addEventListener("touchend",ee),document.addEventListener("touchcancel",ee))}function Be(e){if(e.touches.length===1){e.stopPropagation();var t=e.touches[0],r=z(t),n=P(r.x,r.y),f=n.x-S,v=n.y-k;f!==0&&v!==0&&Ie(),S=n.x,k=n.y,R(f,v)}else if(e.touches.length===2){U=!0;var m=e.touches[0],y=e.touches[1],Y=Ee(m,y),I=1+(Y/ie-1)*x,Re=z(m),qe=z(y);if(S=(Re.x+qe.x)/2,k=(Re.y+qe.y)/2,T){var r=G();S=r.x,k=r.y}re(S,k,I),ie=Y,e.stopPropagation(),e.preventDefault()}}function W(){O&&(clearTimeout(O),O=0)}function De(e){if(!!a.onClick){W();var t=S-oe,r=k-ae,n=Math.sqrt(t*t+r*r);n>5||(O=setTimeout(function(){O=0,a.onClick(e)},Ke))}}function ee(e){if(W(),e.touches.length>0){var t=z(e.touches[0]),r=P(t.x,t.y);S=r.x,k=r.y}else{var n=new Date;if(n-$0&&(t*=100);var r=Pe(t);if(r!==1){var n=T?G():z(e);re(n.x,n.y,r),e.preventDefault()}}}function z(e){var t,r,n=c.getBoundingClientRect();return t=e.clientX-n.left,r=e.clientY-n.top,{x:t,y:r}}function te(e,t,r){var n=i.scale,f={scale:n},v={scale:r*n};D.cancel(),ne(),K=ve(f,v,{step:function(m){Q(e,t,m.scale)},done:Dt})}function Bt(e,t,r){var n=i.scale,f={scale:n},v={scale:r};D.cancel(),ne(),K=ve(f,v,{step:function(m){Q(e,t,m.scale)}})}function G(){var e=c.getBoundingClientRect();return{x:e.width*T.x,y:e.height*T.y}}function re(e,t,r){return D.cancel(),ne(),be(e,t,r)}function ne(){K&&(K.cancel(),K=null)}function Pe(e){var t=Math.sign(e),r=Math.min(.25,Math.abs(A*e/128));return 1-t*r}function Ie(){N||(q("panstart"),N=!0,D.start())}function se(){N&&(U||D.stop(),q("panend"))}function Dt(){q("zoomend")}function q(e){J.fire(e,J)}}function Ge(o){if(!!o){if(typeof o=="object")return(!V(o.x)||!V(o.y))&&_e(o),o;_e()}}function _e(o){throw console.error(o),new Error(["Cannot parse transform origin.","Some good examples:",' "center center" can be achieved with {x: 0.5, y: 0.5}',' "top center" can be achieved with {x: 0.5, y: 0}',' "bottom right" can be achieved with {x: 1, y: 1}'].join(` +`))}function X(){}function _t(o){var a=typeof o;if(!(a==="undefined"||a==="boolean")){var u=V(o.left)&&V(o.top)&&V(o.bottom)&&V(o.right);if(!u)throw new Error("Bounds object is not valid. It can be: undefined, boolean (true|false) or an object {left, top, right, bottom}")}}function V(o){return Number.isFinite(o)}function me(o){return Number.isNaN?Number.isNaN(o):o!==o}function Ut(){return{start:X,stop:X,cancel:X}}function Ht(){if(typeof document=="undefined")return;var o=document.getElementsByTagName("script");if(!o)return;for(var a,u=0;u + + + + + + + + + diff --git a/advent/assets/plastic.b8ac74ff.png b/advent/assets/plastic.b8ac74ff.png new file mode 100644 index 000000000..27bc8282e Binary files /dev/null and b/advent/assets/plastic.b8ac74ff.png differ diff --git a/advent/assets/present.7062e549.svg b/advent/assets/present.7062e549.svg new file mode 100644 index 000000000..8689a5ffc --- /dev/null +++ b/advent/assets/present.7062e549.svg @@ -0,0 +1,51 @@ + + + + diff --git a/advent/assets/presentmaker.3f610bc0.svg b/advent/assets/presentmaker.3f610bc0.svg new file mode 100644 index 000000000..75093c505 --- /dev/null +++ b/advent/assets/presentmaker.3f610bc0.svg @@ -0,0 +1,60 @@ + + + + diff --git a/advent/assets/presents.239bd910.png b/advent/assets/presents.239bd910.png new file mode 100644 index 000000000..1d09e6f2e Binary files /dev/null and b/advent/assets/presents.239bd910.png differ diff --git a/advent/assets/querystring.b35d81f8.js b/advent/assets/querystring.b35d81f8.js new file mode 100644 index 000000000..a57af59e8 --- /dev/null +++ b/advent/assets/querystring.b35d81f8.js @@ -0,0 +1 @@ +var d={};function C(e,r){return Object.prototype.hasOwnProperty.call(e,r)}var I=function(e,r,t,a){r=r||"&",t=t||"=";var n={};if(typeof e!="string"||e.length===0)return n;var f=/\+/g;e=e.split(r);var i=1e3;a&&typeof a.maxKeys=="number"&&(i=a.maxKeys);var l=e.length;i>0&&l>i&&(l=i);for(var p=0;p=0?(m=c.substr(0,s),g=c.substr(s+1)):(m=c,g=""),o=decodeURIComponent(m),y=decodeURIComponent(g),C(n,o)?Array.isArray(n[o])?n[o].push(y):n[o]=[n[o],y]:n[o]=y}return n},u=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}},R=function(e,r,t,a){return r=r||"&",t=t||"=",e===null&&(e=void 0),typeof e=="object"?Object.keys(e).map(function(n){var f=encodeURIComponent(u(n))+t;return Array.isArray(e[n])?e[n].map(function(i){return f+encodeURIComponent(u(i))}).join(r):f+encodeURIComponent(u(e[n]))}).join(r):a?encodeURIComponent(u(a))+t+encodeURIComponent(u(e)):""};d.decode=d.parse=I;d.encode=d.stringify=R;export{d as q}; diff --git a/advent/assets/reindeer.e74a3003.png b/advent/assets/reindeer.e74a3003.png new file mode 100644 index 000000000..520a7085b Binary files /dev/null and b/advent/assets/reindeer.e74a3003.png differ diff --git a/advent/assets/ribbons.4f911bf2.png b/advent/assets/ribbons.4f911bf2.png new file mode 100644 index 000000000..2f84586ef Binary files /dev/null and b/advent/assets/ribbons.4f911bf2.png differ diff --git a/advent/assets/roboto-mono-all-400-normal.66268f92.woff b/advent/assets/roboto-mono-all-400-normal.66268f92.woff new file mode 100644 index 000000000..068df6180 Binary files /dev/null and b/advent/assets/roboto-mono-all-400-normal.66268f92.woff differ diff --git a/advent/assets/roboto-mono-cyrillic-400-normal.8c367f2f.woff2 b/advent/assets/roboto-mono-cyrillic-400-normal.8c367f2f.woff2 new file mode 100644 index 000000000..966b1a040 Binary files /dev/null and b/advent/assets/roboto-mono-cyrillic-400-normal.8c367f2f.woff2 differ diff --git a/advent/assets/roboto-mono-cyrillic-ext-400-normal.eef02d41.woff2 b/advent/assets/roboto-mono-cyrillic-ext-400-normal.eef02d41.woff2 new file mode 100644 index 000000000..184deab2f Binary files /dev/null and b/advent/assets/roboto-mono-cyrillic-ext-400-normal.eef02d41.woff2 differ diff --git a/advent/assets/roboto-mono-greek-400-normal.53a8927b.woff2 b/advent/assets/roboto-mono-greek-400-normal.53a8927b.woff2 new file mode 100644 index 000000000..5e1ac28b0 Binary files /dev/null and b/advent/assets/roboto-mono-greek-400-normal.53a8927b.woff2 differ diff --git a/advent/assets/roboto-mono-latin-400-normal.7295944e.woff2 b/advent/assets/roboto-mono-latin-400-normal.7295944e.woff2 new file mode 100644 index 000000000..f8894bab5 Binary files /dev/null and b/advent/assets/roboto-mono-latin-400-normal.7295944e.woff2 differ diff --git a/advent/assets/roboto-mono-latin-ext-400-normal.820adbd1.woff2 b/advent/assets/roboto-mono-latin-ext-400-normal.820adbd1.woff2 new file mode 100644 index 000000000..f34ae008f Binary files /dev/null and b/advent/assets/roboto-mono-latin-ext-400-normal.820adbd1.woff2 differ diff --git a/advent/assets/rotateLeft.c8791063.svg b/advent/assets/rotateLeft.c8791063.svg new file mode 100644 index 000000000..0962efea0 --- /dev/null +++ b/advent/assets/rotateLeft.c8791063.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/advent/assets/rotateRight.fc51781c.svg b/advent/assets/rotateRight.fc51781c.svg new file mode 100644 index 000000000..7d2adfe0e --- /dev/null +++ b/advent/assets/rotateRight.fc51781c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/advent/assets/santasSack.e8f704d0.png b/advent/assets/santasSack.e8f704d0.png new file mode 100644 index 000000000..fcd45525d Binary files /dev/null and b/advent/assets/santasSack.e8f704d0.png differ diff --git a/advent/assets/sawmill.5767d66f.svg b/advent/assets/sawmill.5767d66f.svg new file mode 100644 index 000000000..e757d829b --- /dev/null +++ b/advent/assets/sawmill.5767d66f.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + diff --git a/advent/assets/shed.7dd96184.svg b/advent/assets/shed.7dd96184.svg new file mode 100644 index 000000000..83d9da551 --- /dev/null +++ b/advent/assets/shed.7dd96184.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + diff --git a/advent/assets/shovel.1ca1dbea.svg b/advent/assets/shovel.1ca1dbea.svg new file mode 100644 index 000000000..da96136e7 --- /dev/null +++ b/advent/assets/shovel.1ca1dbea.svg @@ -0,0 +1,50 @@ + + + + + + + + + + diff --git a/advent/assets/shovelmaker.422bcdb1.svg b/advent/assets/shovelmaker.422bcdb1.svg new file mode 100644 index 000000000..2903bbf92 --- /dev/null +++ b/advent/assets/shovelmaker.422bcdb1.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + diff --git a/advent/assets/sleigh.5a68a873.png b/advent/assets/sleigh.5a68a873.png new file mode 100644 index 000000000..644cf6386 Binary files /dev/null and b/advent/assets/sleigh.5a68a873.png differ diff --git a/advent/assets/sleighWSack.7f1101f4.png b/advent/assets/sleighWSack.7f1101f4.png new file mode 100644 index 000000000..2eed73434 Binary files /dev/null and b/advent/assets/sleighWSack.7f1101f4.png differ diff --git a/advent/assets/snowflake.7c011a13.svg b/advent/assets/snowflake.7c011a13.svg new file mode 100644 index 000000000..b77deecd4 --- /dev/null +++ b/advent/assets/snowflake.7c011a13.svg @@ -0,0 +1,39 @@ + + + + + + + + + + diff --git a/advent/assets/sortablejs.e4e9a931.js b/advent/assets/sortablejs.e4e9a931.js new file mode 100644 index 000000000..c8be5d422 --- /dev/null +++ b/advent/assets/sortablejs.e4e9a931.js @@ -0,0 +1,7 @@ +import{g as Ue}from"./amator.8216e0d2.js";/**! + * Sortable 1.14.0 + * @author RubaXa + * @author owenm + * @license MIT + */function De(o,t){var e=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(o,i).enumerable})),e.push.apply(e,n)}return e}function J(o){for(var t=1;t=0)&&(e[i]=o[i]);return e}function Ve(o,t){if(o==null)return{};var e=$e(o,t),n,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);for(i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(o,n)||(e[n]=o[n]))}return e}function Ze(o){return Qe(o)||Je(o)||tn(o)||en()}function Qe(o){if(Array.isArray(o))return he(o)}function Je(o){if(typeof Symbol!="undefined"&&o[Symbol.iterator]!=null||o["@@iterator"]!=null)return Array.from(o)}function tn(o,t){if(!!o){if(typeof o=="string")return he(o,t);var e=Object.prototype.toString.call(o).slice(8,-1);if(e==="Object"&&o.constructor&&(e=o.constructor.name),e==="Map"||e==="Set")return Array.from(o);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return he(o,t)}}function he(o,t){(t==null||t>o.length)&&(t=o.length);for(var e=0,n=new Array(t);e"&&(t=t.substring(1)),o)try{if(o.matches)return o.matches(t);if(o.msMatchesSelector)return o.msMatchesSelector(t);if(o.webkitMatchesSelector)return o.webkitMatchesSelector(t)}catch{return!1}return!1}}function rn(o){return o.host&&o!==document&&o.host.nodeType?o.host:o.parentNode}function $(o,t,e,n){if(o){e=e||document;do{if(t!=null&&(t[0]===">"?o.parentNode===e&&Zt(o,t):Zt(o,t))||n&&o===e)return o;if(o===e)break}while(o=rn(o))}return null}var Ce=/\s+/g;function T(o,t,e){if(o&&t)if(o.classList)o.classList[e?"add":"remove"](t);else{var n=(" "+o.className+" ").replace(Ce," ").replace(" "+t+" "," ");o.className=(n+(e?" "+t:"")).replace(Ce," ")}}function h(o,t,e){var n=o&&o.style;if(n){if(e===void 0)return document.defaultView&&document.defaultView.getComputedStyle?e=document.defaultView.getComputedStyle(o,""):o.currentStyle&&(e=o.currentStyle),t===void 0?e:e[t];!(t in n)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),n[t]=e+(typeof e=="string"?"":"px")}}function ht(o,t){var e="";if(typeof o=="string")e=o;else do{var n=h(o,"transform");n&&n!=="none"&&(e=n+" "+e)}while(!t&&(o=o.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(e)}function ke(o,t,e){if(o){var n=o.getElementsByTagName(t),i=0,r=n.length;if(e)for(;i=r:a=i<=r,!a)return n;if(n===Q())break;n=lt(n,!1)}return!1}function wt(o,t,e,n){for(var i=0,r=0,a=o.children;r2&&arguments[2]!==void 0?arguments[2]:{},i=n.evt,r=Ve(n,dn);Yt.pluginEvent.bind(g)(t,e,J({dragEl:c,parentEl:A,ghostEl:v,rootEl:C,nextEl:dt,lastDownEl:Ut,cloneEl:I,cloneHidden:at,dragStarted:It,putSortable:F,activeSortable:g.active,originalEvent:i,oldIndex:bt,oldDraggableIndex:Ft,newIndex:W,newDraggableIndex:rt,hideGhostForTarget:Le,unhideGhostForTarget:We,cloneNowHidden:function(){at=!0},cloneNowShown:function(){at=!1},dispatchSortableEvent:function(l){X({sortable:e,name:l,originalEvent:i})}},r))};function X(o){At(J({putSortable:F,cloneEl:I,targetEl:c,rootEl:C,oldIndex:bt,oldDraggableIndex:Ft,newIndex:W,newDraggableIndex:rt},o))}var c,A,v,C,dt,Ut,I,at,bt,W,Ft,rt,Ht,F,vt=!1,Qt=!1,Jt=[],ct,U,ae,le,Ie,Ne,It,gt,Rt,kt=!1,Gt=!1,qt,R,se=[],pe=!1,te=[],ne=typeof document!="undefined",Lt=Fe,Pe=Xt||nt?"cssFloat":"float",hn=ne&&!on&&!Fe&&"draggable"in document.createElement("div"),Be=function(){if(!!ne){if(nt)return!1;var o=document.createElement("x");return o.style.cssText="pointer-events:auto",o.style.pointerEvents==="auto"}}(),He=function(t,e){var n=h(t),i=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),r=wt(t,0,e),a=wt(t,1,e),l=r&&h(r),s=a&&h(a),u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+O(r).width,d=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+O(a).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(r&&l.float&&l.float!=="none"){var f=l.float==="left"?"left":"right";return a&&(s.clear==="both"||s.clear===f)?"vertical":"horizontal"}return r&&(l.display==="block"||l.display==="flex"||l.display==="table"||l.display==="grid"||u>=i&&n[Pe]==="none"||a&&n[Pe]==="none"&&u+d>i)?"vertical":"horizontal"},pn=function(t,e,n){var i=n?t.left:t.top,r=n?t.right:t.bottom,a=n?t.width:t.height,l=n?e.left:e.top,s=n?e.right:e.bottom,u=n?e.width:e.height;return i===l||r===s||i+a/2===l+u/2},gn=function(t,e){var n;return Jt.some(function(i){var r=i[k].options.emptyInsertThreshold;if(!(!r||be(i))){var a=O(i),l=t>=a.left-r&&t<=a.right+r,s=e>=a.top-r&&e<=a.bottom+r;if(l&&s)return n=i}}),n},Ge=function(t){function e(r,a){return function(l,s,u,d){var f=l.options.group.name&&s.options.group.name&&l.options.group.name===s.options.group.name;if(r==null&&(a||f))return!0;if(r==null||r===!1)return!1;if(a&&r==="clone")return r;if(typeof r=="function")return e(r(l,s,u,d),a)(l,s,u,d);var p=(a?l:s).options.group.name;return r===!0||typeof r=="string"&&r===p||r.join&&r.indexOf(p)>-1}}var n={},i=t.group;(!i||zt(i)!="object")&&(i={name:i}),n.name=i.name,n.checkPull=e(i.pull,!0),n.checkPut=e(i.put),n.revertClone=i.revertClone,t.group=n},Le=function(){!Be&&v&&h(v,"display","none")},We=function(){!Be&&v&&h(v,"display","")};ne&&document.addEventListener("click",function(o){if(Qt)return o.preventDefault(),o.stopPropagation&&o.stopPropagation(),o.stopImmediatePropagation&&o.stopImmediatePropagation(),Qt=!1,!1},!0);var ft=function(t){if(c){t=t.touches?t.touches[0]:t;var e=gn(t.clientX,t.clientY);if(e){var n={};for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[k]._onDragOver(n)}}},mn=function(t){c&&c.parentNode[k]._isOutsideThisEl(t.target)};function g(o,t){if(!(o&&o.nodeType&&o.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(o));this.el=o,this.options=t=z({},t),o[k]=this;var e={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(o.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return He(o,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(a,l){a.setData("Text",l.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:g.supportPointer!==!1&&"PointerEvent"in window&&!Mt,emptyInsertThreshold:5};Yt.initializePlugins(this,o,e);for(var n in e)!(n in t)&&(t[n]=e[n]);Ge(t);for(var i in this)i.charAt(0)==="_"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:hn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?y(o,"pointerdown",this._onTapStart):(y(o,"mousedown",this._onTapStart),y(o,"touchstart",this._onTapStart)),this.nativeDraggable&&(y(o,"dragover",this),y(o,"dragenter",this)),Jt.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),z(this,un())}g.prototype={constructor:g,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(gt=null)},_getDirection:function(t,e){return typeof this.options.direction=="function"?this.options.direction.call(this,t,e,c):this.options.direction},_onTapStart:function(t){if(!!t.cancelable){var e=this,n=this.el,i=this.options,r=i.preventOnFilter,a=t.type,l=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,s=(l||t).target,u=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||s,d=i.filter;if(_n(n),!c&&!(/mousedown|pointerdown/.test(a)&&t.button!==0||i.disabled)&&!u.isContentEditable&&!(!this.nativeDraggable&&Mt&&s&&s.tagName.toUpperCase()==="SELECT")&&(s=$(s,i.draggable,n,!1),!(s&&s.animated)&&Ut!==s)){if(bt=N(s),Ft=N(s,i.draggable),typeof d=="function"){if(d.call(this,t,s,this)){X({sortable:e,rootEl:u,name:"filter",targetEl:s,toEl:n,fromEl:n}),B("filter",e,{evt:t}),r&&t.cancelable&&t.preventDefault();return}}else if(d&&(d=d.split(",").some(function(f){if(f=$(u,f.trim(),n,!1),f)return X({sortable:e,rootEl:f,name:"filter",targetEl:s,fromEl:n,toEl:n}),B("filter",e,{evt:t}),!0}),d)){r&&t.cancelable&&t.preventDefault();return}i.handle&&!$(u,i.handle,n,!1)||this._prepareDragStart(t,l,s)}}},_prepareDragStart:function(t,e,n){var i=this,r=i.el,a=i.options,l=r.ownerDocument,s;if(n&&!c&&n.parentNode===r){var u=O(n);if(C=r,c=n,A=c.parentNode,dt=c.nextSibling,Ut=n,Ht=a.group,g.dragged=c,ct={target:c,clientX:(e||t).clientX,clientY:(e||t).clientY},Ie=ct.clientX-u.left,Ne=ct.clientY-u.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,c.style["will-change"]="all",s=function(){if(B("delayEnded",i,{evt:t}),g.eventCanceled){i._onDrop();return}i._disableDelayedDragEvents(),!_e&&i.nativeDraggable&&(c.draggable=!0),i._triggerDragStart(t,e),X({sortable:i,name:"choose",originalEvent:t}),T(c,a.chosenClass,!0)},a.ignore.split(",").forEach(function(d){ke(c,d.trim(),ue)}),y(l,"dragover",ft),y(l,"mousemove",ft),y(l,"touchmove",ft),y(l,"mouseup",i._onDrop),y(l,"touchend",i._onDrop),y(l,"touchcancel",i._onDrop),_e&&this.nativeDraggable&&(this.options.touchStartThreshold=4,c.draggable=!0),B("delayStart",this,{evt:t}),a.delay&&(!a.delayOnTouchOnly||e)&&(!this.nativeDraggable||!(Xt||nt))){if(g.eventCanceled){this._onDrop();return}y(l,"mouseup",i._disableDelayedDrag),y(l,"touchend",i._disableDelayedDrag),y(l,"touchcancel",i._disableDelayedDrag),y(l,"mousemove",i._delayedDragTouchMoveHandler),y(l,"touchmove",i._delayedDragTouchMoveHandler),a.supportPointer&&y(l,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(s,a.delay)}else s()}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){c&&ue(c),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;w(t,"mouseup",this._disableDelayedDrag),w(t,"touchend",this._disableDelayedDrag),w(t,"touchcancel",this._disableDelayedDrag),w(t,"mousemove",this._delayedDragTouchMoveHandler),w(t,"touchmove",this._delayedDragTouchMoveHandler),w(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||t.pointerType=="touch"&&t,!this.nativeDraggable||e?this.options.supportPointer?y(document,"pointermove",this._onTouchMove):e?y(document,"touchmove",this._onTouchMove):y(document,"mousemove",this._onTouchMove):(y(c,"dragend",this),y(C,"dragstart",this._onDragStart));try{document.selection?$t(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,e){if(vt=!1,C&&c){B("dragStarted",this,{evt:e}),this.nativeDraggable&&y(document,"dragover",mn);var n=this.options;!t&&T(c,n.dragClass,!1),T(c,n.ghostClass,!0),g.active=this,t&&this._appendGhost(),X({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(U){this._lastX=U.clientX,this._lastY=U.clientY,Le();for(var t=document.elementFromPoint(U.clientX,U.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(U.clientX,U.clientY),t!==e);)e=t;if(c.parentNode[k]._isOutsideThisEl(t),e)do{if(e[k]){var n=void 0;if(n=e[k]._onDragOver({clientX:U.clientX,clientY:U.clientY,target:t,rootEl:e}),n&&!this.options.dragoverBubble)break}t=e}while(e=e.parentNode);We()}},_onTouchMove:function(t){if(ct){var e=this.options,n=e.fallbackTolerance,i=e.fallbackOffset,r=t.touches?t.touches[0]:t,a=v&&ht(v,!0),l=v&&a&&a.a,s=v&&a&&a.d,u=Lt&&R&&Te(R),d=(r.clientX-ct.clientX+i.x)/(l||1)+(u?u[0]-se[0]:0)/(l||1),f=(r.clientY-ct.clientY+i.y)/(s||1)+(u?u[1]-se[1]:0)/(s||1);if(!g.active&&!vt){if(n&&Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))=0&&(X({rootEl:A,name:"add",toEl:A,fromEl:C,originalEvent:t}),X({sortable:this,name:"remove",toEl:A,originalEvent:t}),X({rootEl:A,name:"sort",toEl:A,fromEl:C,originalEvent:t}),X({sortable:this,name:"sort",toEl:A,originalEvent:t})),F&&F.save()):W!==bt&&W>=0&&(X({sortable:this,name:"update",toEl:A,originalEvent:t}),X({sortable:this,name:"sort",toEl:A,originalEvent:t})),g.active&&((W==null||W===-1)&&(W=bt,rt=Ft),X({sortable:this,name:"end",toEl:A,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){B("nulling",this),C=c=A=v=dt=I=Ut=at=ct=U=It=W=rt=bt=Ft=gt=Rt=F=Ht=g.dragged=g.ghost=g.clone=g.active=null,te.forEach(function(t){t.checked=!0}),te.length=ae=le=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":c&&(this._onDragOver(t),vn(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],e,n=this.el.children,i=0,r=n.length,a=this.options;in.right+i||o.clientX<=n.right&&o.clientY>n.bottom&&o.clientX>=n.left:o.clientX>n.right&&o.clientY>n.top||o.clientX<=n.right&&o.clientY>n.bottom+i}function En(o,t,e,n,i,r,a,l){var s=n?o.clientY:o.clientX,u=n?e.height:e.width,d=n?e.top:e.left,f=n?e.bottom:e.right,p=!1;if(!a){if(l&&qtd+u*r/2:sf-qt)return-Rt}else if(s>d+u*(1-i)/2&&sf-u*r/2)?s>d+u/2?1:-1:0}function Sn(o){return N(c)1&&(m.forEach(function(l){r.addAnimationState({target:l,rect:H?O(l):a}),ie(l),l.fromRect=a,n.removeAnimationState(l)}),H=!1,In(!this.options.removeCloneOnHide,i))},dragOverCompleted:function(e){var n=e.sortable,i=e.isOwner,r=e.insertion,a=e.activeSortable,l=e.parentEl,s=e.putSortable,u=this.options;if(r){if(i&&a._hideClone(),Ot=!1,u.animation&&m.length>1&&(H||!i&&!a.options.sort&&!s)){var d=O(_,!1,!0,!0);m.forEach(function(p){p!==_&&(Ae(p,d),l.appendChild(p))}),H=!0}if(!i)if(H||jt(),m.length>1){var f=Kt;a._showClone(n),a.options.animation&&!Kt&&f&&L.forEach(function(p){a.addAnimationState({target:p,rect:Tt}),p.fromRect=Tt,p.thisAnimationDuration=null})}else a._showClone(n)}},dragOverAnimationCapture:function(e){var n=e.dragRect,i=e.isOwner,r=e.activeSortable;if(m.forEach(function(l){l.thisAnimationDuration=null}),r.options.animation&&!i&&r.multiDrag.isMultiDrag){Tt=z({},n);var a=ht(_,!0);Tt.top-=a.f,Tt.left-=a.e}},dragOverAnimationComplete:function(){H&&(H=!1,jt())},drop:function(e){var n=e.originalEvent,i=e.rootEl,r=e.parentEl,a=e.sortable,l=e.dispatchSortableEvent,s=e.oldIndex,u=e.putSortable,d=u||this.sortable;if(!!n){var f=this.options,p=r.children;if(!mt)if(f.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),T(_,f.selectedClass,!~m.indexOf(_)),~m.indexOf(_))m.splice(m.indexOf(_),1),Ct=null,At({sortable:a,rootEl:i,name:"deselect",targetEl:_,originalEvt:n});else{if(m.push(_),At({sortable:a,rootEl:i,name:"select",targetEl:_,originalEvt:n}),n.shiftKey&&Ct&&a.el.contains(Ct)){var E=N(Ct),b=N(_);if(~E&&~b&&E!==b){var S,P;for(b>E?(P=E,S=b):(P=b,S=E+1);P1){var K=O(_),x=N(_,":not(."+this.options.selectedClass+")");if(!Ot&&f.animation&&(_.thisAnimationDuration=null),d.captureAnimationState(),!Ot&&(f.animation&&(_.fromRect=K,m.forEach(function(D){if(D.thisAnimationDuration=null,D!==_){var V=H?O(D):K;D.fromRect=V,d.addAnimationState({target:D,rect:V})}})),jt(),m.forEach(function(D){p[x]?r.insertBefore(D,p[x]):r.appendChild(D),x++}),s===N(_))){var Y=!1;m.forEach(function(D){if(D.sortableIndex!==N(D)){Y=!0;return}}),Y&&l("update")}m.forEach(function(D){ie(D)}),d.animateAll()}q=d}(i===r||u&&u.lastPutMode!=="clone")&&L.forEach(function(D){D.parentNode&&D.parentNode.removeChild(D)})}},nullingGlobal:function(){this.isMultiDrag=mt=!1,L.length=0},destroyGlobal:function(){this._deselectMultiDrag(),w(document,"pointerup",this._deselectMultiDrag),w(document,"mouseup",this._deselectMultiDrag),w(document,"touchend",this._deselectMultiDrag),w(document,"keydown",this._checkKeyDown),w(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(e){if(!(typeof mt!="undefined"&&mt)&&q===this.sortable&&!(e&&$(e.target,this.options.draggable,this.sortable.el,!1))&&!(e&&e.button!==0))for(;m.length;){var n=m[0];T(n,this.options.selectedClass,!1),m.shift(),At({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:n,originalEvt:e})}},_checkKeyDown:function(e){e.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(e){e.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},z(o,{pluginName:"multiDrag",utils:{select:function(e){var n=e.parentNode[k];!n||!n.options.multiDrag||~m.indexOf(e)||(q&&q!==n&&(q.multiDrag._deselectMultiDrag(),q=n),T(e,n.options.selectedClass,!0),m.push(e))},deselect:function(e){var n=e.parentNode[k],i=m.indexOf(e);!n||!n.options.multiDrag||!~i||(T(e,n.options.selectedClass,!1),m.splice(i,1))}},eventProperties:function(){var e=this,n=[],i=[];return m.forEach(function(r){n.push({multiDragElement:r,index:r.sortableIndex});var a;H&&r!==_?a=-1:H?a=N(r,":not(."+e.options.selectedClass+")"):a=N(r),i.push({multiDragElement:r,index:a})}),{items:Ze(m),clones:[].concat(L),oldIndicies:n,newIndicies:i}},optionListeners:{multiDragKey:function(e){return e=e.toLowerCase(),e==="ctrl"?e="Control":e.length>1&&(e=e.charAt(0).toUpperCase()+e.substr(1)),e}}})}function In(o,t){m.forEach(function(e,n){var i=t.children[e.sortableIndex+(o?Number(n):0)];i?t.insertBefore(e,i):t.appendChild(e)})}function xe(o,t){L.forEach(function(e,n){var i=t.children[e.sortableIndex+(o?Number(n):0)];i?t.insertBefore(e,i):t.appendChild(e)})}function jt(){m.forEach(function(o){o!==_&&o.parentNode&&o.parentNode.removeChild(o)})}g.mount(new Cn);g.mount(Ee,ye);var Nn=Object.freeze(Object.defineProperty({__proto__:null,default:g,MultiDrag:An,Sortable:g,Swap:On},Symbol.toStringTag,{value:"Module"})),xn=Ue(Nn);export{xn as r}; diff --git a/advent/assets/stuffing.21738d78.svg b/advent/assets/stuffing.21738d78.svg new file mode 100644 index 000000000..a8204fc4d --- /dev/null +++ b/advent/assets/stuffing.21738d78.svg @@ -0,0 +1,50 @@ + + + + + + + + + + diff --git a/advent/assets/stuffingmaker.15225150.svg b/advent/assets/stuffingmaker.15225150.svg new file mode 100644 index 000000000..f15ac12c8 --- /dev/null +++ b/advent/assets/stuffingmaker.15225150.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + diff --git a/advent/assets/sws.714ad454.png b/advent/assets/sws.714ad454.png new file mode 100644 index 000000000..f5124866a Binary files /dev/null and b/advent/assets/sws.714ad454.png differ diff --git a/advent/assets/teddyBear.15e16cc2.png b/advent/assets/teddyBear.15e16cc2.png new file mode 100644 index 000000000..4fa77656a Binary files /dev/null and b/advent/assets/teddyBear.15e16cc2.png differ diff --git a/advent/assets/thread.ebec2bc0.svg b/advent/assets/thread.ebec2bc0.svg new file mode 100644 index 000000000..b12a9ca46 --- /dev/null +++ b/advent/assets/thread.ebec2bc0.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/threadmaker.5e4b05d5.svg b/advent/assets/threadmaker.5e4b05d5.svg new file mode 100644 index 000000000..50a12ea82 --- /dev/null +++ b/advent/assets/threadmaker.5e4b05d5.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/tree.35808197.png b/advent/assets/tree.35808197.png new file mode 100644 index 000000000..21ed706e2 Binary files /dev/null and b/advent/assets/tree.35808197.png differ diff --git a/advent/assets/truck.2cfdba76.svg b/advent/assets/truck.2cfdba76.svg new file mode 100644 index 000000000..e788c2630 --- /dev/null +++ b/advent/assets/truck.2cfdba76.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/truck.ed3d0e9b.png b/advent/assets/truck.ed3d0e9b.png new file mode 100644 index 000000000..5f988442b Binary files /dev/null and b/advent/assets/truck.ed3d0e9b.png differ diff --git a/advent/assets/truckmaker.7375630d.svg b/advent/assets/truckmaker.7375630d.svg new file mode 100644 index 000000000..9fbc32858 --- /dev/null +++ b/advent/assets/truckmaker.7375630d.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advent/assets/url.1821b64b.js b/advent/assets/url.1821b64b.js new file mode 100644 index 000000000..5c7a35a8a --- /dev/null +++ b/advent/assets/url.1821b64b.js @@ -0,0 +1,2 @@ +import{c as st}from"./amator.8216e0d2.js";import{q as ct}from"./querystring.b35d81f8.js";var ht={exports:{}};/*! https://mths.be/punycode v1.3.2 by @mathias */(function(s,a){(function(t){var g=a&&!a.nodeType&&a,p=s&&!s.nodeType&&s,d=typeof st=="object"&&st;(d.global===d||d.window===d||d.self===d)&&(t=d);var m,h=2147483647,x=36,y=1,j=26,G=38,b=700,f=72,T=128,k="-",q=/^xn--/,Z=/[^\x20-\x7E]/,r=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=x-y,u=Math.floor,v=String.fromCharCode,z;function O(e){throw RangeError(c[e])}function I(e,o){for(var n=e.length,i=[];n--;)i[n]=o(e[n]);return i}function S(e,o){var n=e.split("@"),i="";n.length>1&&(i=n[0]+"@",e=n[1]),e=e.replace(r,".");var l=e.split("."),w=I(l,o).join(".");return i+w}function K(e){for(var o=[],n=0,i=e.length,l,w;n=55296&&l<=56319&&n65535&&(o-=65536,n+=v(o>>>10&1023|55296),o=56320|o&1023),n+=v(o),n}).join("")}function _(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:x}function W(e,o){return e+22+75*(e<26)-((o!=0)<<5)}function X(e,o,n){var i=0;for(e=n?u(e/b):e>>1,e+=u(e/o);e>F*j>>1;i+=x)e=u(e/F);return u(i+(F+1)*e/(e+G))}function V(e){var o=[],n=e.length,i,l=0,w=T,C=f,M,P,D,$,A,N,U,B,J;for(M=e.lastIndexOf(k),M<0&&(M=0),P=0;P=128&&O("not-basic"),o.push(e.charCodeAt(P));for(D=M>0?M+1:0;D=n&&O("invalid-input"),U=_(e.charCodeAt(D++)),(U>=x||U>u((h-l)/A))&&O("overflow"),l+=U*A,B=N<=C?y:N>=C+j?j:N-C,!(Uu(h/J)&&O("overflow"),A*=J;i=o.length+1,C=X(l-$,i,$==0),u(l/i)>h-w&&O("overflow"),w+=u(l/i),l%=i,o.splice(l++,0,w)}return E(o)}function H(e){var o,n,i,l,w,C,M,P,D,$,A,N=[],U,B,J,tt;for(e=K(e),U=e.length,o=T,n=0,w=f,C=0;C=o&&Au((h-n)/B)&&O("overflow"),n+=(M-o)*B,o=M,C=0;Ch&&O("overflow"),A==o){for(P=n,D=x;$=D<=w?y:D>=w+j?j:D-w,!(P<$);D+=x)tt=P-$,J=x-$,N.push(v(W($+tt%J,0))),P=u(tt/J);N.push(v(W(P,0))),w=X(n,B,i==l),n=0,++i}++n,++o}return N.join("")}function ft(e){return S(e,function(o){return q.test(o)?V(o.slice(4).toLowerCase()):o})}function ut(e){return S(e,function(o){return Z.test(o)?"xn--"+H(o):o})}if(m={version:"1.3.2",ucs2:{decode:K,encode:E},decode:V,encode:H,toASCII:ut,toUnicode:ft},g&&p)if(s.exports==g)p.exports=m;else for(z in m)m.hasOwnProperty(z)&&(g[z]=m[z]);else t.punycode=m})(st)})(ht,ht.exports);var lt={isString:function(s){return typeof s=="string"},isObject:function(s){return typeof s=="object"&&s!==null},isNull:function(s){return s===null},isNullOrUndefined:function(s){return s==null}},pt=ht.exports,L=lt,Ft=Q,jt=Ot,It=qt;function R(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var mt=/^([a-z0-9.+-]+:)/i,xt=/:[0-9]*$/,gt=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,dt=["<",">",'"',"`"," ","\r",` +`," "],yt=["{","}","|","\\","^","`"].concat(dt),et=["'"].concat(yt),nt=["%","/","?",";","#"].concat(et),at=["/","?","#"],bt=255,it=/^[+a-z0-9A-Z_-]{0,63}$/,vt=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Ct={javascript:!0,"javascript:":!0},rt={javascript:!0,"javascript:":!0},Y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},ot=ct;function Q(s,a,t){if(s&&L.isObject(s)&&s instanceof R)return s;var g=new R;return g.parse(s,a,t),g}R.prototype.parse=function(s,a,t){if(!L.isString(s))throw new TypeError("Parameter 'url' must be a string, not "+typeof s);var g=s.indexOf("?"),p=g!==-1&&g127?u+="x":u+=F[v];if(!u.match(it)){var O=r.slice(0,f),I=r.slice(f+1),S=F.match(vt);S&&(O.push(S[1]),I.unshift(S[2])),I.length&&(h="/"+I.join(".")+h),this.hostname=O.join(".");break}}}this.hostname.length>bt?this.hostname="":this.hostname=this.hostname.toLowerCase(),Z||(this.hostname=pt.toASCII(this.hostname));var K=this.port?":"+this.port:"",E=this.hostname||"";this.host=E+K,this.href+=this.host,Z&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),h[0]!=="/"&&(h="/"+h))}if(!Ct[j])for(var f=0,c=et.length;f0?t.host.split("@"):!1;u&&(t.auth=u.shift(),t.host=t.hostname=u.shift())}return t.search=s.search,t.query=s.query,(!L.isNull(t.pathname)||!L.isNull(t.search))&&(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!r.length)return t.pathname=null,t.search?t.path="/"+t.search:t.path=null,t.href=t.format(),t;for(var v=r.slice(-1)[0],z=(t.host||s.host||r.length>1)&&(v==="."||v==="..")||v==="",O=0,I=r.length;I>=0;I--)v=r[I],v==="."?r.splice(I,1):v===".."?(r.splice(I,1),O++):O&&(r.splice(I,1),O--);if(!q&&!Z)for(;O--;O)r.unshift("..");q&&r[0]!==""&&(!r[0]||r[0].charAt(0)!=="/")&&r.unshift(""),z&&r.join("/").substr(-1)!=="/"&&r.push("");var S=r[0]===""||r[0]&&r[0].charAt(0)==="/";if(F){t.hostname=t.host=S?"":r.length?r.shift():"";var u=t.host&&t.host.indexOf("@")>0?t.host.split("@"):!1;u&&(t.auth=u.shift(),t.host=t.hostname=u.shift())}return q=q||t.host&&r.length,q&&!S&&r.unshift(""),r.length?t.pathname=r.join("/"):(t.pathname=null,t.path=null),(!L.isNull(t.pathname)||!L.isNull(t.search))&&(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=s.auth||t.auth,t.slashes=t.slashes||s.slashes,t.href=t.format(),t};R.prototype.parseHost=function(){var s=this.host,a=xt.exec(s);a&&(a=a[0],a!==":"&&(this.port=a.substr(1)),s=s.substr(0,s.length-a.length)),s&&(this.hostname=s)};export{It as f,Ft as p,jt as r}; diff --git a/advent/assets/vue-next-select.9e6f4164.css b/advent/assets/vue-next-select.9e6f4164.css new file mode 100644 index 000000000..e4812d20e --- /dev/null +++ b/advent/assets/vue-next-select.9e6f4164.css @@ -0,0 +1 @@ +.icon.delete{display:flex;justify-content:center;align-items:center;padding:0;margin:0;border:none;background:none;height:8px;width:8px;min-height:8px;min-width:8px;max-height:8px;max-width:8px;cursor:pointer}.icon.arrow-downward{color:#999;border-style:solid;border-width:4px 4px 0;border-color:#999 transparent transparent;content:"";transition:transform .2s linear;cursor:pointer}.icon.arrow-downward.active{transform:rotate(180deg)}.vue-select{position:relative;display:flex;align-items:flex-start;justify-content:flex-start;flex-direction:column;width:150px;border-radius:4px;border:1px solid #999;box-sizing:border-box;outline:none}.vue-select[aria-disabled=true]{background-color:#efefef}.vue-select[aria-disabled=true] *,.vue-select[aria-disabled=true] input{cursor:not-allowed}.vue-select-header{display:flex;width:100%;align-items:center;justify-content:space-between}.vue-select-header .icon.loading,.vue-select-header .icon.arrow-downward{margin-right:4px}.vue-tags{display:flex;flex-wrap:wrap;margin:0;padding:2px;min-height:calc(1rem + 4px);user-select:none}.vue-tags.collapsed{flex-wrap:nowrap;overflow:auto}.vue-tag{display:none;align-items:center;justify-content:center;list-style-type:none;border-radius:4px;background-color:#999;padding:0 4px;margin:2px;min-height:1rem;font-size:.8rem}.vue-tag span{margin-right:4px}.vue-tag.selected{display:flex;align-items:center;justify-content:center;background-color:#999;border-radius:4px;padding:0 4px;font-size:.8rem}.vue-tags[data-removable=false] .vue-tag.selected img:hover{cursor:not-allowed}.vue-select-input-wrapper{position:relative;display:flex;width:100%;align-items:center;justify-content:space-between}.vue-select-input-wrapper .icon.loading{margin-right:4px}.vue-input{display:inline-flex;align-items:center;border-radius:4px;border:none;outline:none;max-width:100%;min-width:0;width:100%;box-sizing:border-box;padding:4px}.vue-select[data-is-focusing=false][aria-disabled=false] .vue-input input,input[readonly]{cursor:default}.vue-input input{border:none;outline:none;width:100%;min-width:0;font-size:.8rem;padding:0}.vue-input input[disabled]{background-color:#efefef}.vue-input input[readonly],.vue-select-header .vue-input input[disabled]{background-color:unset}.vue-dropdown{display:none;position:absolute;background-color:#fff;z-index:1;overflow-y:auto;width:100%;min-width:0;margin:0;padding:0;left:-1px;box-sizing:content-box;border:1px solid #999;list-style-type:none}.vue-select[aria-expanded=true] .vue-dropdown{display:unset}.vue-dropdown[data-visible-length="0"]{border:none}.vue-dropdown-item{list-style-type:none;padding:4px;cursor:pointer;min-height:1rem}.vue-dropdown-item.highlighted{background-color:#41b883}.vue-dropdown-item.disabled{background-color:#efefef;cursor:not-allowed}.vue-dropdown-item.selected{background-color:#f3f3f3}.vue-dropdown-item.selected.highlighted{background-color:#ff6a6a}.vue-dropdown[data-removable=false] .vue-dropdown-item.selected:hover{cursor:not-allowed}.vue-dropdown[data-addable=false][data-multiple=true] .vue-dropdown-item:not(.selected):hover{cursor:not-allowed}.icon.loading{display:inline-block;position:relative;width:8px;min-width:8px;height:8px;min-height:8px}.icon.loading div{box-sizing:border-box;display:block;position:absolute;border:1px solid #999;width:8px;height:8px;border-radius:50%;animation:loading 1s cubic-bezier(.5,0,.5,1) infinite;border-color:#999 transparent transparent transparent}.icon.loading div:nth-child(1){animation-delay:-.08s}.icon.loading div:nth-child(2){animation-delay:-.16s}@keyframes loading{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.inline-flex{display:inline-flex}.vue-select[aria-expanded=true].direction-bottom{border-bottom-left-radius:0;border-bottom-right-radius:0}.vue-select[aria-expanded=true].direction-top{border-top-left-radius:0;border-top-right-radius:0}.vue-select.direction-top .vue-dropdown{bottom:100%;border-top-left-radius:3px;border-top-right-radius:3px}.vue-select.direction-bottom .vue-dropdown{top:100%;border-bottom-left-radius:3px;border-bottom-right-radius:3px} diff --git a/advent/assets/vue-next-select.d15705a0.js b/advent/assets/vue-next-select.d15705a0.js new file mode 100644 index 000000000..06ea2e217 --- /dev/null +++ b/advent/assets/vue-next-select.d15705a0.js @@ -0,0 +1,3 @@ +import"./vue.dd1d82d0.js";import{aE as b,a0 as B,aK as x,a1 as y,bt as $,bu as I,O as q,aJ as ye,aq as re,aa as Ne,aL as Y,$ as z,a8 as X,b6 as ge,_ as Ee,b8 as Le,bs as je,t as F,ay as $e,aD as ze,al as he,G as K,J,q as Ue,z as W,b2 as S,Z as h,af as qe,b1 as j,ar as _,aG as Pe}from"./@vue.359f7754.js";function ie(e){return(ie=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function me(e){return function(t){if(Array.isArray(t))return ne(t)}(e)||function(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||be(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function be(e,t){if(e){if(typeof e=="string")return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ne(e,t):void 0}}function ne(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,l=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[l++]}},e:function(s){throw s},f:g}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var m,u=!0,v=!1;return{s:function(){n=n.call(e)},n:function(){var s=n.next();return u=s.done,s},e:function(s){v=!0,m=s},f:function(){try{u||n.return==null||n.return()}finally{if(v)throw m}}}}var ae={inheritAttrs:!1,name:"vue-input",props:{autocomplete:{required:!1,type:String},modelValue:{required:!0,type:String},placeholder:{required:!0,type:String},disabled:{required:!0,type:Boolean},tabindex:{required:!0,type:Number},autofocus:{required:!0,type:Boolean},comboboxUid:{required:!0,type:Number}},emits:["update:modelValue","input","change","focus","blur","escape"],setup:function(e,t){var n=F(null);return $e(function(){e.autofocus&&n.value.focus()}),ze(function(){e.autofocus&&n.value.focus()}),{handleInput:function(l){t.emit("input",l),t.emit("update:modelValue",l.target.value)},handleChange:function(l){t.emit("change",l),t.emit("update:modelValue",l.target.value)},handleFocus:function(l){t.emit("focus",l)},handleBlur:function(l){t.emit("blur",l)},input:n,handleEscape:function(l){n.value.blur(),t.emit("escape",l)}}}},He={class:"vue-input"},_e=["autocomplete","modelValue","placeholder","disabled","tabindex","autofocus","aria-controls","aria-labelledby"];ae.render=function(e,t,n,l,g,m){return b(),B("div",He,[x(e.$slots,"prepend"),y("input",{ref:"input",autocomplete:n.autocomplete,modelValue:n.modelValue,placeholder:n.placeholder,disabled:n.disabled,onInput:t[0]||(t[0]=function(){return l.handleInput&&l.handleInput.apply(l,arguments)}),onChange:t[1]||(t[1]=function(){return l.handleChange&&l.handleChange.apply(l,arguments)}),onFocus:t[2]||(t[2]=function(){return l.handleFocus&&l.handleFocus.apply(l,arguments)}),onBlur:t[3]||(t[3]=function(){return l.handleBlur&&l.handleBlur.apply(l,arguments)}),onKeyup:t[4]||(t[4]=$(I(function(){return l.handleEscape&&l.handleEscape.apply(l,arguments)},["exact"]),["esc"])),tabindex:n.tabindex,autofocus:n.autofocus,"aria-autocomplete":"list","aria-controls":"vs".concat(n.comboboxUid,"-listbox"),"aria-labelledby":"vs".concat(n.comboboxUid,"-combobox")},null,40,_e),x(e.$slots,"append")])},ae.__file="src/components/input.vue";var le={inheritAttrs:!1,name:"vue-tags",props:{modelValue:{required:!0,type:Array,validator:function(e){return e.every(function(t){return ie(t.key)!==void 0&&t.label!==void 0&&typeof t.selected=="boolean"})}},collapseTags:{type:Boolean}},emits:["click"],setup:function(e,t){return{dataAttrs:he("dataAttrs"),handleClick:function(n){t.emit("click",n)}}}};le.render=function(e,t,n,l,g,m){return b(),B("ul",re({class:["vue-tags",{collapsed:n.collapseTags}],onMousedown:t[0]||(t[0]=I(function(){},["prevent"])),tabindex:"-1",onClick:t[1]||(t[1]=function(){return l.handleClick&&l.handleClick.apply(l,arguments)})},l.dataAttrs),[(b(!0),B(q,null,ye(n.modelValue,function(u){return b(),B(q,{key:u.key},[u.group?z("v-if",!0):(b(),B("li",{key:0,class:K(["vue-tag",{selected:u.selected}])},[x(e.$slots,"default",{option:u},function(){return[y("span",null,J(u.label),1)]})],2))],64)}),128))],16)},le.__file="src/components/tags.vue";var oe={inheritAttrs:!1,name:"vue-dropdown",props:{modelValue:{required:!0,type:Array,validator:function(e){return e.every(function(t){return ie(t.key)!==void 0&&t.label!==void 0&&typeof t.selected=="boolean"})}},comboboxUid:{required:!0,type:Number},maxHeight:{required:!0},highlightedOriginalIndex:{required:!0}},emits:["click-item","mouseenter"],setup:function(e,t){return{dataAttrs:he("dataAttrs"),handleClickItem:function(n,l){l.disabled||t.emit("click-item",n,l)},handleMouseenter:function(n,l){t.emit("mouseenter",n,l)}}}},Ze=["id","aria-multiselectable","aria-busy","aria-disabled"],Re=["onClick","onMouseenter","id","aria-selected","aria-disabled"];oe.render=function(e,t,n,l,g,m){return b(),B("ul",re({class:"vue-dropdown",style:{maxHeight:n.maxHeight+"px"},onMousedown:t[0]||(t[0]=I(function(){},["prevent"]))},l.dataAttrs,{role:"listbox",id:"vs".concat(n.comboboxUid,"-listbox"),"aria-multiselectable":l.dataAttrs["data-multiple"],"aria-busy":l.dataAttrs["data-loading"],"aria-disabled":l.dataAttrs["data-disabled"]}),[(b(!0),B(q,null,ye(n.modelValue,function(u,v){return b(),B(q,{key:u.key},[u.visible&&u.hidden===!1?(b(),B("li",{key:0,onClick:function(s){return l.handleClickItem(s,u)},class:K(["vue-dropdown-item",{selected:u.selected,disabled:u.disabled,highlighted:u.originalIndex===n.highlightedOriginalIndex,group:u.group}]),onMouseenter:function(s){return l.handleMouseenter(s,u)},role:"option",id:"vs".concat(n.comboboxUid,"-option-").concat(v),"aria-selected":!!u.selected||!!u.disabled&&void 0,"aria-disabled":u.disabled},[x(e.$slots,"default",{option:u},function(){return[y("span",null,J(u.label),1)]})],42,Re)):z("v-if",!0)],64)}),128))],16,Ze)},oe.__file="src/components/dropdown.vue";var Be=function(e,t,n){var l=n.valueBy;return l(e)===l(t)},U=function(e,t,n){var l=n.valueBy;return e.some(function(g){return Be(g,t,{valueBy:l})})},D=function(e,t,n){var l=n.valueBy;return e.find(function(g){return l(g)===t})},ee=function(e,t,n){var l=n.max,g=n.valueBy;return U(e,t,{valueBy:g})||e.length>=l?e:e.concat(t)},te=function(e,t,n){var l=n.min,g=n.valueBy;return U(e,t,{valueBy:g})===!1||e.length<=l?e:e.filter(function(m){return Be(m,t,{valueBy:g})===!1})},G=function(e){return h(function(){return typeof e.value=="function"?e.value:typeof e.value=="string"?function(t){return e.value.split(".").reduce(function(n,l){return n[l]},t)}:function(t){return t}})},We=function(e,t){var n=h(function(){return e.value.reduce(function(u,v){return Object.assign(u,(s={},c=v.originalIndex,f=v,c in s?Object.defineProperty(s,c,{value:f,enumerable:!0,configurable:!0,writable:!0}):s[c]=f,s));var s,c,f},{})}),l=function(u){var v=n.value[u];return v!==void 0&&g(v)!==!1&&(t.value=u,!0)},g=function(u){return!u.disabled&&!u.hidden&&u.visible},m=h(function(){return e.value.some(function(u){return g(u)})});return S(function(){if(m.value===!1&&(t.value=null),t.value!==null&&e.value.length<=t.value){var u,v=N(e.value.reverse());try{for(v.s();!(u=v.n()).done;){var s=u.value;if(l(s.originalIndex))break}}catch(V){v.e(V)}finally{v.f()}}if(t.value===null||g(e.value[t.value])===!1){var c,f=N(e.value);try{for(f.s();!(c=f.n()).done;){var E=c.value;if(l(E.originalIndex))break}}catch(V){f.e(V)}finally{f.f()}}}),{pointerForward:function(){if(m.value!==!1&&t.value!==null)for(var u=t.value+1,v=0;u!==t.value&&v++u.value.$el.clientHeight+u.value.$el.scrollTop&&i++n.min,"data-total-length":n.options.length,"data-multiple":e.multiple,"data-loading":e.loading,"data-disabled":e.disabled}});Pe("dataAttrs",ve);var L=h(function(){return w.value.filter(function(a){return a.selected}).filter(function(a){return!a.group})}),Ce=h(function(){return e.multiple?L.value.length===0?e.placeholder:L.value.length===1?"1 option selected":L.value.length+" options selected":L.value.length===0?e.placeholder:L.value[0].label+""}),Te=h(function(){var a=L.value.map(function(o){return o.originalOption});return e.multiple?a:a[0]||l.value}),fe=F();return j(function(){return[e.openDirection,c.value]},function(){var a,o;fe.value=(o=(a=e.openDirection)!==null&&a!==void 0?a:function(){if(m.value!==void 0&&window!==void 0)return window.innerHeight-m.value.getBoundingClientRect().bottom>=e.maxHeight?"bottom":"top"}())!==null&&o!==void 0?o:"bottom"},{immediate:!0}),{instance:g,isFocusing:c,wrapper:m,dropdown:u,input:v,focus:f,blur:E,toggle:function(){c.value?E():f()},searchingInputValue:V,handleInputForInput:function(a){t.emit("search:input",a)},handleChangeForInput:function(a){t.emit("search:change",a)},handleFocusForInput:function(a){f()},handleBlurForInput:function(a){E()},optionsWithInfo:w,addOrRemoveOption:function(a,o){e.disabled||(o.group&&e.multiple?we(a,o):Me(a,o),ke(),e.closeOnSelect===!0&&(c.value=!1),e.clearOnSelect===!0&&V.value&&pe())},dataAttrs:ve,innerPlaceholder:Ce,selected:Te,highlightedOriginalIndex:Z,pointerForward:function(){Fe(),_(H)},pointerBackward:function(){Ve(),_(H)},pointerFirst:function(){var a,o=N(n.options.keys());try{for(o.s();!(a=o.n()).done;){var i=a.value;if(P(i))break}}catch(r){o.e(r)}finally{o.f()}_(H)},pointerLast:function(){var a,o=N(me(n.options.keys()).reverse());try{for(o.s();!(a=o.n()).done;){var i=a.value;if(P(i))break}}catch(r){o.e(r)}finally{o.f()}_(H)},typeAhead:function(a){var o,i;if(!e.searchable){var r=!1;if(Se.test(a.key)?(R+=a.key.toLowerCase(),r=!0):a.code==="Space"&&(R+=" "),r){var M,p=N(Ae.value);try{for(p.s();!(M=p.n()).done;){var k=M.value;if(((i=(o=n.labelBy(n.options[k]))===null||o===void 0?void 0:o.toLowerCase())===null||i===void 0?void 0:i.startsWith(R))===!0&&P(k))break}}catch(C){p.e(C)}finally{p.f()}clearTimeout(se),se=setTimeout(function(){R=""},500)}}},pointerSet:P,direction:fe}},components:{VInput:ae,VTags:le,VDropdown:oe}});ue.__VERSION__="2.10.5";var Ge=["tabindex","id","role","aria-expanded","aria-owns","aria-activedescendant","aria-busy","aria-disabled"],Ke={class:"vue-select-header"},Je={key:0,class:"vue-input"},Qe=["placeholder","autocomplete"],Ye=["onClick"],Xe=y("span",{class:"icon loading"},[y("div"),y("div"),y("div")],-1),et={key:0,class:"vue-select-input-wrapper"},tt=y("span",{class:"icon loading"},[y("div"),y("div"),y("div")],-1);ue.render=function(e,t,n,l,g,m){var u=Y("v-tags"),v=Y("v-input"),s=Y("v-dropdown");return b(),B("div",re({ref:"wrapper",class:["vue-select",["direction-".concat(e.direction)]],tabindex:e.isFocusing?-1:e.tabindex,onFocus:t[9]||(t[9]=function(){return e.focus&&e.focus.apply(e,arguments)}),onBlur:t[10]||(t[10]=function(c){return!e.searchable&&e.blur(c)})},Object.assign({},e.dataAttrs,e.$attrs),{onKeypress:t[11]||(t[11]=$(I(function(){return e.highlightedOriginalIndex!==null&&e.addOrRemoveOption(e.$event,e.optionsWithInfo[e.highlightedOriginalIndex])},["prevent","exact"]),["enter"])),onKeydown:[t[12]||(t[12]=$(I(function(){return e.pointerForward&&e.pointerForward.apply(e,arguments)},["prevent","exact"]),["down"])),t[13]||(t[13]=$(I(function(){return e.pointerBackward&&e.pointerBackward.apply(e,arguments)},["prevent","exact"]),["up"])),t[14]||(t[14]=$(I(function(){return e.pointerFirst&&e.pointerFirst.apply(e,arguments)},["prevent","exact"]),["home"])),t[15]||(t[15]=$(I(function(){return e.pointerLast&&e.pointerLast.apply(e,arguments)},["prevent","exact"]),["end"])),t[16]||(t[16]=function(){return e.typeAhead&&e.typeAhead.apply(e,arguments)})],id:"vs".concat(e.instance.uid,"-combobox"),role:e.searchable?"combobox":null,"aria-expanded":e.isFocusing,"aria-haspopup":"listbox","aria-owns":"vs".concat(e.instance.uid,"-listbox"),"aria-activedescendant":e.highlightedOriginalIndex===null?null:"vs".concat(e.instance.uid,"-option-").concat(e.highlightedOriginalIndex),"aria-busy":e.loading,"aria-disabled":e.disabled}),[y("div",Ke,[e.multiple&&e.taggable&&e.modelValue.length===0||e.searchable===!1&&e.taggable===!1?(b(),B("div",Je,[x(e.$slots,"label",{selected:e.selected},function(){return[y("input",{placeholder:e.innerPlaceholder,autocomplete:e.autocomplete,readonly:"",onClick:t[0]||(t[0]=function(){return e.focus&&e.focus.apply(e,arguments)})},null,8,Qe)]})])):z("v-if",!0),e.multiple&&e.taggable?(b(),B(q,{key:1},[X(u,{modelValue:e.optionsWithInfo,"collapse-tags":e.collapseTags,tabindex:"-1",onClick:e.focus},{default:ge(function(c){var f=c.option;return[x(e.$slots,"tag",{option:f.originalOption,remove:function(){return e.addOrRemoveOption(e.$event,f)}},function(){return[y("span",null,J(f.label),1),y("img",{src:"data:image/svg+xml;base64,PHN2ZyBpZD0iZGVsZXRlIiBkYXRhLW5hbWU9ImRlbGV0ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNTEyIDUxMiI+PHRpdGxlPmRlbGV0ZTwvdGl0bGU+PHBhdGggZD0iTTI1NiwyNEMzODMuOSwyNCw0ODgsMTI4LjEsNDg4LDI1NlMzODMuOSw0ODgsMjU2LDQ4OCwyNC4wNiwzODMuOSwyNC4wNiwyNTYsMTI4LjEsMjQsMjU2LDI0Wk0wLDI1NkMwLDM5Ny4xNiwxMTQuODQsNTEyLDI1Niw1MTJTNTEyLDM5Ny4xNiw1MTIsMjU2LDM5Ny4xNiwwLDI1NiwwLDAsMTE0Ljg0LDAsMjU2WiIgZmlsbD0iIzViNWI1ZiIvPjxwb2x5Z29uIHBvaW50cz0iMzgyIDE3Mi43MiAzMzkuMjkgMTMwLjAxIDI1NiAyMTMuMjkgMTcyLjcyIDEzMC4wMSAxMzAuMDEgMTcyLjcyIDIxMy4yOSAyNTYgMTMwLjAxIDMzOS4yOCAxNzIuNzIgMzgyIDI1NiAyOTguNzEgMzM5LjI5IDM4MS45OSAzODIgMzM5LjI4IDI5OC43MSAyNTYgMzgyIDE3Mi43MiIgZmlsbD0iIzViNWI1ZiIvPjwvc3ZnPg==",alt:"delete tag",class:"icon delete",onClick:I(function(){return e.addOrRemoveOption(e.$event,f)},["prevent","stop"])},null,8,Ye)]})]}),_:3},8,["modelValue","collapse-tags","onClick"]),x(e.$slots,"toggle",{isFocusing:e.isFocusing,toggle:e.toggle},function(){return[y("span",{class:K(["icon arrow-downward",{active:e.isFocusing}]),onClick:t[1]||(t[1]=function(){return e.toggle&&e.toggle.apply(e,arguments)}),onMousedown:t[2]||(t[2]=I(function(){},["prevent","stop"]))},null,34)]})],64)):(b(),B(q,{key:2},[e.searchable?(b(),Ee(v,{key:0,ref:"input",modelValue:e.searchingInputValue,"onUpdate:modelValue":t[3]||(t[3]=function(c){return e.searchingInputValue=c}),disabled:e.disabled,autocomplete:e.autocomplete,placeholder:e.isFocusing?e.searchPlaceholder:e.innerPlaceholder,onInput:e.handleInputForInput,onChange:e.handleChangeForInput,onFocus:e.handleFocusForInput,onBlur:e.handleBlurForInput,onEscape:e.blur,autofocus:e.autofocus||e.taggable&&e.searchable,tabindex:e.tabindex,comboboxUid:e.instance.uid},null,8,["modelValue","disabled","autocomplete","placeholder","onInput","onChange","onFocus","onBlur","onEscape","autofocus","tabindex","comboboxUid"])):z("v-if",!0),e.loading?x(e.$slots,"loading",{key:1},function(){return[Xe]}):x(e.$slots,"toggle",{key:2,isFocusing:e.isFocusing,toggle:e.toggle},function(){return[y("span",{class:K(["icon arrow-downward",{active:e.isFocusing}]),onClick:t[4]||(t[4]=function(){return e.toggle&&e.toggle.apply(e,arguments)}),onMousedown:t[5]||(t[5]=I(function(){},["prevent","stop"]))},null,34)]})],64))]),e.multiple&&e.taggable&&e.searchable?(b(),B("div",et,[Le(X(v,{ref:"input",modelValue:e.searchingInputValue,"onUpdate:modelValue":t[6]||(t[6]=function(c){return e.searchingInputValue=c}),disabled:e.disabled,autocomplete:e.autocomplete,placeholder:e.isFocusing?e.searchPlaceholder:e.innerPlaceholder,onInput:e.handleInputForInput,onChange:e.handleChangeForInput,onFocus:e.handleFocusForInput,onBlur:e.handleBlurForInput,onEscape:e.blur,autofocus:e.autofocus||e.taggable&&e.searchable,tabindex:e.tabindex,comboboxUid:e.instance.uid},null,8,["modelValue","disabled","autocomplete","placeholder","onInput","onChange","onFocus","onBlur","onEscape","autofocus","tabindex","comboboxUid"]),[[je,e.isFocusing]]),e.loading?x(e.$slots,"loading",{key:0},function(){return[tt]}):z("v-if",!0)])):z("v-if",!0),X(s,{ref:"dropdown",modelValue:e.optionsWithInfo,"onUpdate:modelValue":t[7]||(t[7]=function(c){return e.optionsWithInfo=c}),onClickItem:e.addOrRemoveOption,onMouseenter:t[8]||(t[8]=function(c,f){return e.pointerSet(f.originalIndex)}),comboboxUid:e.instance.uid,maxHeight:e.maxHeight,highlightedOriginalIndex:e.highlightedOriginalIndex},{default:ge(function(c){var f=c.option;return[x(e.$slots,"dropdown-item",{option:f.originalOption},function(){return[y("span",null,J(f.label),1)]})]}),_:3},8,["modelValue","onClickItem","comboboxUid","maxHeight","highlightedOriginalIndex"])],16,Ge)},ue.__file="src/index.vue";export{ue as Y}; diff --git a/advent/assets/vue-panzoom.f6869ea5.js b/advent/assets/vue-panzoom.f6869ea5.js new file mode 100644 index 000000000..c7658ee70 --- /dev/null +++ b/advent/assets/vue-panzoom.f6869ea5.js @@ -0,0 +1 @@ +import{p as r}from"./panzoom.9e1878dd.js";import"./vue.dd1d82d0.js";import{aE as c,_ as m,a8 as u,aK as p}from"./@vue.359f7754.js";var a={name:"panZoom",props:{options:Object,selector:String},data:function(){return{panZoomInstance:null,panZoomInstanceId:null,instanceId:null,defaultOptions:{autocenter:!0,bounds:!0,transformOrigin:{x:.5,y:.5}}}},created:function(){this.instanceId=this.generateRandomId(20)},mounted:function(){if(this.scene){var n=Object.assign({},this.defaultOptions,this.options);this.panZoomInstance=this.$panZoom(this.scene,n),this.panZoomInstanceId=this.instanceId,this.attachEvents()}},computed:{scene:function(){var n,e=this.$el.querySelector(".vue-pan-zoom-scene");return this.selector?n=e.querySelector(this.selector):(n=e.querySelector("svg, object, embed"),n||(n=e.firstChild)),n}},methods:{generateRandomId:function(n){n=n||16;for(var e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",o=e.length,s=[],i=0;ie.maxHeight?(i=e.maxHeight,e.maxHeightScroll=!0):e.maxHeightScroll=!1);var u=i+"px";e.height="".concat(u).concat(a?" !important":"")}),this}},created:function(){this.val=this.value},mounted:function(){this.resize()}};function g(t,e,a,i,u,f,s,l,m,d){typeof s!="boolean"&&(m=l,l=s,s=!1);var n=typeof a=="function"?a.options:a;t&&t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns,n._compiled=!0,u&&(n.functional=!0)),i&&(n._scopeId=i);var o;if(f?(o=function(r){r=r||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,!r&&typeof __VUE_SSR_CONTEXT__!="undefined"&&(r=__VUE_SSR_CONTEXT__),e&&e.call(this,m(r)),r&&r._registeredComponents&&r._registeredComponents.add(f)},n._ssrRegister=o):e&&(o=s?function(){e.call(this,d(this.$root.$options.shadowRoot))}:function(h){e.call(this,l(h))}),o)if(n.functional){var v=n.render;n.render=function(r,c){return o.call(c),v(r,c)}}else{var _=n.beforeCreate;n.beforeCreate=_?[].concat(_,o):[o]}return a}var z=g;const H=p;var y=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("textarea",{directives:[{name:"model",rawName:"v-model",value:t.val,expression:"val"}],style:t.computedStyles,domProps:{value:t.val},on:{focus:t.resize,input:function(i){i.target.composing||(t.val=i.target.value)}}})},x=[];const $=void 0,w=void 0,S=void 0,T=!1;var A=z({render:y,staticRenderFns:x},$,H,w,T,S,void 0,void 0),C="1.1.1",R=function(e){e.component("TextareaAutosize",A)},b={install:R,version:C};typeof window!="undefined"&&window.Vue&&window.Vue.use(b);export{b as p}; diff --git a/advent/assets/vue-toastification.4b5f8ac8.css b/advent/assets/vue-toastification.4b5f8ac8.css new file mode 100644 index 000000000..b701b4171 --- /dev/null +++ b/advent/assets/vue-toastification.4b5f8ac8.css @@ -0,0 +1 @@ +.Vue-Toastification__container{z-index:9999;position:fixed;padding:4px;width:600px;box-sizing:border-box;display:flex;min-height:100%;color:#fff;flex-direction:column;pointer-events:none}@media only screen and (min-width : 600px){.Vue-Toastification__container.top-left,.Vue-Toastification__container.top-right,.Vue-Toastification__container.top-center{top:1em}.Vue-Toastification__container.bottom-left,.Vue-Toastification__container.bottom-right,.Vue-Toastification__container.bottom-center{bottom:1em;flex-direction:column-reverse}.Vue-Toastification__container.top-left,.Vue-Toastification__container.bottom-left{left:1em}.Vue-Toastification__container.top-left .Vue-Toastification__toast,.Vue-Toastification__container.bottom-left .Vue-Toastification__toast{margin-right:auto}@supports not (-moz-appearance: none){.Vue-Toastification__container.top-left .Vue-Toastification__toast--rtl,.Vue-Toastification__container.bottom-left .Vue-Toastification__toast--rtl{margin-right:unset;margin-left:auto}}.Vue-Toastification__container.top-right,.Vue-Toastification__container.bottom-right{right:1em}.Vue-Toastification__container.top-right .Vue-Toastification__toast,.Vue-Toastification__container.bottom-right .Vue-Toastification__toast{margin-left:auto}@supports not (-moz-appearance: none){.Vue-Toastification__container.top-right .Vue-Toastification__toast--rtl,.Vue-Toastification__container.bottom-right .Vue-Toastification__toast--rtl{margin-left:unset;margin-right:auto}}.Vue-Toastification__container.top-center,.Vue-Toastification__container.bottom-center{left:50%;margin-left:-300px}.Vue-Toastification__container.top-center .Vue-Toastification__toast,.Vue-Toastification__container.bottom-center .Vue-Toastification__toast{margin-left:auto;margin-right:auto}}@media only screen and (max-width : 600px){.Vue-Toastification__container{width:100vw;padding:0;left:0;margin:0}.Vue-Toastification__container .Vue-Toastification__toast{width:100%}.Vue-Toastification__container.top-left,.Vue-Toastification__container.top-right,.Vue-Toastification__container.top-center{top:0}.Vue-Toastification__container.bottom-left,.Vue-Toastification__container.bottom-right,.Vue-Toastification__container.bottom-center{bottom:0;flex-direction:column-reverse}}.Vue-Toastification__toast{display:inline-flex;position:relative;max-height:800px;min-height:64px;box-sizing:border-box;margin-bottom:1rem;padding:22px 24px;border-radius:8px;box-shadow:0 1px 10px #0000001a,0 2px 15px #0000000d;justify-content:space-between;font-family:Lato,Helvetica,Roboto,Arial,sans-serif;max-width:600px;min-width:326px;pointer-events:auto;overflow:hidden;transform:translateZ(0);direction:ltr}.Vue-Toastification__toast--rtl{direction:rtl}.Vue-Toastification__toast--default{background-color:#1976d2;color:#fff}.Vue-Toastification__toast--info{background-color:#2196f3;color:#fff}.Vue-Toastification__toast--success{background-color:#4caf50;color:#fff}.Vue-Toastification__toast--error{background-color:#ff5252;color:#fff}.Vue-Toastification__toast--warning{background-color:#ffc107;color:#fff}@media only screen and (max-width : 600px){.Vue-Toastification__toast{border-radius:0;margin-bottom:.5rem}}.Vue-Toastification__toast-body{flex:1;line-height:24px;font-size:16px;word-break:break-word;white-space:pre-wrap}.Vue-Toastification__toast-component-body{flex:1}.Vue-Toastification__toast.disable-transition{animation:none!important}.Vue-Toastification__close-button{font-weight:700;font-size:24px;line-height:24px;background:transparent;outline:none;border:none;padding:0 0 0 10px;cursor:pointer;transition:.3s ease;align-items:center;color:#fff;opacity:.3;transition:visibility 0s,opacity .2s linear}.Vue-Toastification__close-button:hover,.Vue-Toastification__close-button:focus{opacity:1}.Vue-Toastification__toast:not(:hover) .Vue-Toastification__close-button.show-on-hover{opacity:0}.Vue-Toastification__toast--rtl .Vue-Toastification__close-button{padding-left:unset;padding-right:10px}@keyframes scale-x-frames{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Vue-Toastification__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:10000;background-color:#ffffffb3;transform-origin:left;animation:scale-x-frames linear 1 forwards}.Vue-Toastification__toast--rtl .Vue-Toastification__progress-bar{right:0;left:unset;transform-origin:right}.Vue-Toastification__icon{margin:auto 18px auto 0;background:transparent;outline:none;border:none;padding:0;transition:.3s ease;align-items:center;width:20px;height:100%}.Vue-Toastification__toast--rtl .Vue-Toastification__icon{margin:auto 0 auto 18px}@keyframes bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes bounceOutRight{40%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(1000px,0,0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Vue-Toastification__bounce-enter-active.top-left,.Vue-Toastification__bounce-enter-active.bottom-left{animation-name:bounceInLeft}.Vue-Toastification__bounce-enter-active.top-right,.Vue-Toastification__bounce-enter-active.bottom-right{animation-name:bounceInRight}.Vue-Toastification__bounce-enter-active.top-center{animation-name:bounceInDown}.Vue-Toastification__bounce-enter-active.bottom-center{animation-name:bounceInUp}.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-left,.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-left{animation-name:bounceOutLeft}.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-right,.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-right{animation-name:bounceOutRight}.Vue-Toastification__bounce-leave-active:not(.disable-transition).top-center{animation-name:bounceOutUp}.Vue-Toastification__bounce-leave-active:not(.disable-transition).bottom-center{animation-name:bounceOutDown}.Vue-Toastification__bounce-leave-active,.Vue-Toastification__bounce-enter-active{animation-duration:.75s;animation-fill-mode:both}.Vue-Toastification__bounce-move{transition-timing-function:ease-in-out;transition-property:all;transition-duration:.4s}@keyframes fadeOutTop{0%{transform:translateY(0);opacity:1}to{transform:translateY(-50px);opacity:0}}@keyframes fadeOutLeft{0%{transform:translate(0);opacity:1}to{transform:translate(-50px);opacity:0}}@keyframes fadeOutBottom{0%{transform:translateY(0);opacity:1}to{transform:translateY(50px);opacity:0}}@keyframes fadeOutRight{0%{transform:translate(0);opacity:1}to{transform:translate(50px);opacity:0}}@keyframes fadeInLeft{0%{transform:translate(-50px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeInRight{0%{transform:translate(50px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeInTop{0%{transform:translateY(-50px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeInBottom{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.Vue-Toastification__fade-enter-active.top-left,.Vue-Toastification__fade-enter-active.bottom-left{animation-name:fadeInLeft}.Vue-Toastification__fade-enter-active.top-right,.Vue-Toastification__fade-enter-active.bottom-right{animation-name:fadeInRight}.Vue-Toastification__fade-enter-active.top-center{animation-name:fadeInTop}.Vue-Toastification__fade-enter-active.bottom-center{animation-name:fadeInBottom}.Vue-Toastification__fade-leave-active:not(.disable-transition).top-left,.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-left{animation-name:fadeOutLeft}.Vue-Toastification__fade-leave-active:not(.disable-transition).top-right,.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-right{animation-name:fadeOutRight}.Vue-Toastification__fade-leave-active:not(.disable-transition).top-center{animation-name:fadeOutTop}.Vue-Toastification__fade-leave-active:not(.disable-transition).bottom-center{animation-name:fadeOutBottom}.Vue-Toastification__fade-leave-active,.Vue-Toastification__fade-enter-active{animation-duration:.75s;animation-fill-mode:both}.Vue-Toastification__fade-move{transition-timing-function:ease-in-out;transition-property:all;transition-duration:.4s}@keyframes slideInBlurredLeft{0%{transform:translate(-1000px) scaleX(2.5) scaleY(.2);transform-origin:100% 50%;filter:blur(40px);opacity:0}to{transform:translate(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slideInBlurredTop{0%{transform:translateY(-1000px) scaleY(2.5) scaleX(.2);transform-origin:50% 0%;filter:blur(240px);opacity:0}to{transform:translateY(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slideInBlurredRight{0%{transform:translate(1000px) scaleX(2.5) scaleY(.2);transform-origin:0% 50%;filter:blur(40px);opacity:0}to{transform:translate(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slideInBlurredBottom{0%{transform:translateY(1000px) scaleY(2.5) scaleX(.2);transform-origin:50% 100%;filter:blur(240px);opacity:0}to{transform:translateY(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}}@keyframes slideOutBlurredTop{0%{transform:translateY(0) scaleY(1) scaleX(1);transform-origin:50% 0%;filter:blur(0);opacity:1}to{transform:translateY(-1000px) scaleY(2) scaleX(.2);transform-origin:50% 0%;filter:blur(240px);opacity:0}}@keyframes slideOutBlurredBottom{0%{transform:translateY(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}to{transform:translateY(1000px) scaleY(2) scaleX(.2);transform-origin:50% 100%;filter:blur(240px);opacity:0}}@keyframes slideOutBlurredLeft{0%{transform:translate(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}to{transform:translate(-1000px) scaleX(2) scaleY(.2);transform-origin:100% 50%;filter:blur(40px);opacity:0}}@keyframes slideOutBlurredRight{0%{transform:translate(0) scaleY(1) scaleX(1);transform-origin:50% 50%;filter:blur(0);opacity:1}to{transform:translate(1000px) scaleX(2) scaleY(.2);transform-origin:0% 50%;filter:blur(40px);opacity:0}}.Vue-Toastification__slideBlurred-enter-active.top-left,.Vue-Toastification__slideBlurred-enter-active.bottom-left{animation-name:slideInBlurredLeft}.Vue-Toastification__slideBlurred-enter-active.top-right,.Vue-Toastification__slideBlurred-enter-active.bottom-right{animation-name:slideInBlurredRight}.Vue-Toastification__slideBlurred-enter-active.top-center{animation-name:slideInBlurredTop}.Vue-Toastification__slideBlurred-enter-active.bottom-center{animation-name:slideInBlurredBottom}.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-left,.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-left{animation-name:slideOutBlurredLeft}.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-right,.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-right{animation-name:slideOutBlurredRight}.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).top-center{animation-name:slideOutBlurredTop}.Vue-Toastification__slideBlurred-leave-active:not(.disable-transition).bottom-center{animation-name:slideOutBlurredBottom}.Vue-Toastification__slideBlurred-leave-active,.Vue-Toastification__slideBlurred-enter-active{animation-duration:.75s;animation-fill-mode:both}.Vue-Toastification__slideBlurred-move{transition-timing-function:ease-in-out;transition-property:all;transition-duration:.4s} diff --git a/advent/assets/vue-toastification.7ec3a26c.js b/advent/assets/vue-toastification.7ec3a26c.js new file mode 100644 index 000000000..280c722bf --- /dev/null +++ b/advent/assets/vue-toastification.7ec3a26c.js @@ -0,0 +1 @@ +import"./vue.dd1d82d0.js";import{aa as C,y as mt,C as pt,aE as o,a0 as u,I as x,G as b,_ as p,b6 as I,aq as V,aN as M,a7 as $,J as W,aL as y,$ as R,a1 as _,O as N,aV as vt,bu as gt,aK as Tt,bc as Ct,aJ as H,a8 as yt,af as bt,al as Ot,ar as _t,be as St}from"./@vue.359f7754.js";var Et=Object.defineProperty,k=Object.getOwnPropertySymbols,Bt=Object.prototype.hasOwnProperty,It=Object.prototype.propertyIsEnumerable,U=(t,e,s)=>e in t?Et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,q=(t,e)=>{for(var s in e||(e={}))Bt.call(e,s)&&U(t,s,e[s]);if(k)for(var s of k(e))It.call(e,s)&&U(t,s,e[s]);return t},D=t=>typeof t=="function",w=t=>typeof t=="string",J=t=>w(t)&&t.trim().length>0,Dt=t=>typeof t=="number",T=t=>typeof t=="undefined",O=t=>typeof t=="object"&&t!==null,wt=t=>h(t,"tag")&&J(t.tag),K=t=>window.TouchEvent&&t instanceof TouchEvent,Q=t=>h(t,"component")&&Y(t.component),Rt=t=>D(t)||O(t),Y=t=>!T(t)&&(w(t)||Rt(t)||Q(t)),z=t=>O(t)&&["height","width","right","left","top","bottom"].every(e=>Dt(t[e])),h=(t,e)=>(O(t)||D(t))&&e in t,Pt=(t=>()=>t++)(0);function P(t){return K(t)?t.targetTouches[0].clientX:t.clientX}function j(t){return K(t)?t.targetTouches[0].clientY:t.clientY}var Nt=t=>{T(t.remove)?t.parentNode&&t.parentNode.removeChild(t):t.remove()},S=t=>Q(t)?S(t.component):wt(t)?C({render(){return t}}):typeof t=="string"?t:mt(pt(t)),At=t=>{if(typeof t=="string")return t;const e=h(t,"props")&&O(t.props)?t.props:{},s=h(t,"listeners")&&O(t.listeners)?t.listeners:{};return{component:S(t),props:e,listeners:s}},Lt=()=>typeof window!="undefined",F=class{constructor(){this.allHandlers={}}getHandlers(t){return this.allHandlers[t]||[]}on(t,e){const s=this.getHandlers(t);s.push(e),this.allHandlers[t]=s}off(t,e){const s=this.getHandlers(t);s.splice(s.indexOf(e)>>>0,1)}emit(t,e){this.getHandlers(t).forEach(n=>n(e))}},Vt=t=>["on","off","emit"].every(e=>h(t,e)&&D(t[e])),i;(function(t){t.SUCCESS="success",t.ERROR="error",t.WARNING="warning",t.INFO="info",t.DEFAULT="default"})(i||(i={}));var B;(function(t){t.TOP_LEFT="top-left",t.TOP_CENTER="top-center",t.TOP_RIGHT="top-right",t.BOTTOM_LEFT="bottom-left",t.BOTTOM_CENTER="bottom-center",t.BOTTOM_RIGHT="bottom-right"})(B||(B={}));var l;(function(t){t.ADD="add",t.DISMISS="dismiss",t.UPDATE="update",t.CLEAR="clear",t.UPDATE_DEFAULTS="update_defaults"})(l||(l={}));var d="Vue-Toastification",c={type:{type:String,default:i.DEFAULT},classNames:{type:[String,Array],default:()=>[]},trueBoolean:{type:Boolean,default:!0}},Z={type:c.type,customIcon:{type:[String,Boolean,Object,Function],default:!0}},E={component:{type:[String,Object,Function,Boolean],default:"button"},classNames:c.classNames,showOnHover:{type:Boolean,default:!1},ariaLabel:{type:String,default:"close"}},A={timeout:{type:[Number,Boolean],default:5e3},hideProgressBar:{type:Boolean,default:!1},isRunning:{type:Boolean,default:!1}},tt={transition:{type:[Object,String],default:`${d}__bounce`}},Mt={position:{type:String,default:B.TOP_RIGHT},draggable:c.trueBoolean,draggablePercent:{type:Number,default:.6},pauseOnFocusLoss:c.trueBoolean,pauseOnHover:c.trueBoolean,closeOnClick:c.trueBoolean,timeout:A.timeout,hideProgressBar:A.hideProgressBar,toastClassName:c.classNames,bodyClassName:c.classNames,icon:Z.customIcon,closeButton:E.component,closeButtonClassName:E.classNames,showCloseButtonOnHover:E.showOnHover,accessibility:{type:Object,default:()=>({toastRole:"alert",closeButtonLabel:"close"})},rtl:{type:Boolean,default:!1},eventBus:{type:Object,required:!1,default:()=>new F}},$t={id:{type:[String,Number],required:!0,default:0},type:c.type,content:{type:[String,Object,Function],required:!0,default:""},onClick:{type:Function,default:void 0},onClose:{type:Function,default:void 0}},Ft={container:{type:[Object,Function],default:()=>document.body},newestOnTop:c.trueBoolean,maxToasts:{type:Number,default:20},transition:tt.transition,toastDefaults:Object,filterBeforeCreate:{type:Function,default:t=>t},filterToasts:{type:Function,default:t=>t},containerClassName:c.classNames,onMounted:Function,shareAppContext:[Boolean,Object]},f={CORE_TOAST:Mt,TOAST:$t,CONTAINER:Ft,PROGRESS_BAR:A,ICON:Z,TRANSITION:tt,CLOSE_BUTTON:E},et=C({name:"VtProgressBar",props:f.PROGRESS_BAR,data(){return{hasClass:!0}},computed:{style(){return{animationDuration:`${this.timeout}ms`,animationPlayState:this.isRunning?"running":"paused",opacity:this.hideProgressBar?0:1}},cpClass(){return this.hasClass?`${d}__progress-bar`:""}},watch:{timeout(){this.hasClass=!1,this.$nextTick(()=>this.hasClass=!0)}},mounted(){this.$el.addEventListener("animationend",this.animationEnded)},beforeUnmount(){this.$el.removeEventListener("animationend",this.animationEnded)},methods:{animationEnded(){this.$emit("close-toast")}}});function Ht(t,e){return o(),u("div",{style:x(t.style),class:b(t.cpClass)},null,6)}et.render=Ht;var kt=et,st=C({name:"VtCloseButton",props:f.CLOSE_BUTTON,computed:{buttonComponent(){return this.component!==!1?S(this.component):"button"},classes(){const t=[`${d}__close-button`];return this.showOnHover&&t.push("show-on-hover"),t.concat(this.classNames)}}}),Ut=$(" \xD7 ");function zt(t,e){return o(),p(M(t.buttonComponent),V({"aria-label":t.ariaLabel,class:t.classes},t.$attrs),{default:I(()=>[Ut]),_:1},16,["aria-label","class"])}st.render=zt;var jt=st,at={},Gt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"check-circle",class:"svg-inline--fa fa-check-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},Xt=_("path",{fill:"currentColor",d:"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"},null,-1),xt=[Xt];function Wt(t,e){return o(),u("svg",Gt,xt)}at.render=Wt;var qt=at,nt={},Jt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"info-circle",class:"svg-inline--fa fa-info-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},Kt=_("path",{fill:"currentColor",d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"},null,-1),Qt=[Kt];function Yt(t,e){return o(),u("svg",Jt,Qt)}nt.render=Yt;var G=nt,ot={},Zt={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"exclamation-circle",class:"svg-inline--fa fa-exclamation-circle fa-w-16",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},te=_("path",{fill:"currentColor",d:"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"},null,-1),ee=[te];function se(t,e){return o(),u("svg",Zt,ee)}ot.render=se;var ae=ot,rt={},ne={"aria-hidden":"true",focusable:"false","data-prefix":"fas","data-icon":"exclamation-triangle",class:"svg-inline--fa fa-exclamation-triangle fa-w-18",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 576 512"},oe=_("path",{fill:"currentColor",d:"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"},null,-1),re=[oe];function ie(t,e){return o(),u("svg",ne,re)}rt.render=ie;var le=rt,it=C({name:"VtIcon",props:f.ICON,computed:{customIconChildren(){return h(this.customIcon,"iconChildren")?this.trimValue(this.customIcon.iconChildren):""},customIconClass(){return w(this.customIcon)?this.trimValue(this.customIcon):h(this.customIcon,"iconClass")?this.trimValue(this.customIcon.iconClass):""},customIconTag(){return h(this.customIcon,"iconTag")?this.trimValue(this.customIcon.iconTag,"i"):"i"},hasCustomIcon(){return this.customIconClass.length>0},component(){return this.hasCustomIcon?this.customIconTag:Y(this.customIcon)?S(this.customIcon):this.iconTypeComponent},iconTypeComponent(){return{[i.DEFAULT]:G,[i.INFO]:G,[i.SUCCESS]:qt,[i.ERROR]:le,[i.WARNING]:ae}[this.type]},iconClasses(){const t=[`${d}__icon`];return this.hasCustomIcon?t.concat(this.customIconClass):t}},methods:{trimValue(t,e=""){return J(t)?t.trim():e}}});function ce(t,e){return o(),p(M(t.component),{class:b(t.iconClasses)},{default:I(()=>[$(W(t.customIconChildren),1)]),_:1},8,["class"])}it.render=ce;var ue=it,lt=C({name:"VtToast",components:{ProgressBar:kt,CloseButton:jt,Icon:ue},inheritAttrs:!1,props:Object.assign({},f.CORE_TOAST,f.TOAST),data(){return{isRunning:!0,disableTransitions:!1,beingDragged:!1,dragStart:0,dragPos:{x:0,y:0},dragRect:{}}},computed:{classes(){const t=[`${d}__toast`,`${d}__toast--${this.type}`,`${this.position}`].concat(this.toastClassName);return this.disableTransitions&&t.push("disable-transition"),this.rtl&&t.push(`${d}__toast--rtl`),t},bodyClasses(){return[`${d}__toast-${w(this.content)?"body":"component-body"}`].concat(this.bodyClassName)},draggableStyle(){return this.dragStart===this.dragPos.x?{}:this.beingDragged?{transform:`translateX(${this.dragDelta}px)`,opacity:1-Math.abs(this.dragDelta/this.removalDistance)}:{transition:"transform 0.2s, opacity 0.2s",transform:"translateX(0)",opacity:1}},dragDelta(){return this.beingDragged?this.dragPos.x-this.dragStart:0},removalDistance(){return z(this.dragRect)?(this.dragRect.right-this.dragRect.left)*this.draggablePercent:0}},mounted(){this.draggable&&this.draggableSetup(),this.pauseOnFocusLoss&&this.focusSetup()},beforeUnmount(){this.draggable&&this.draggableCleanup(),this.pauseOnFocusLoss&&this.focusCleanup()},methods:{hasProp:h,getVueComponentFromObj:S,closeToast(){this.eventBus.emit(l.DISMISS,this.id)},clickHandler(){this.onClick&&this.onClick(this.closeToast),this.closeOnClick&&(!this.beingDragged||this.dragStart===this.dragPos.x)&&this.closeToast()},timeoutHandler(){this.closeToast()},hoverPause(){this.pauseOnHover&&(this.isRunning=!1)},hoverPlay(){this.pauseOnHover&&(this.isRunning=!0)},focusPause(){this.isRunning=!1},focusPlay(){this.isRunning=!0},focusSetup(){addEventListener("blur",this.focusPause),addEventListener("focus",this.focusPlay)},focusCleanup(){removeEventListener("blur",this.focusPause),removeEventListener("focus",this.focusPlay)},draggableSetup(){const t=this.$el;t.addEventListener("touchstart",this.onDragStart,{passive:!0}),t.addEventListener("mousedown",this.onDragStart),addEventListener("touchmove",this.onDragMove,{passive:!1}),addEventListener("mousemove",this.onDragMove),addEventListener("touchend",this.onDragEnd),addEventListener("mouseup",this.onDragEnd)},draggableCleanup(){const t=this.$el;t.removeEventListener("touchstart",this.onDragStart),t.removeEventListener("mousedown",this.onDragStart),removeEventListener("touchmove",this.onDragMove),removeEventListener("mousemove",this.onDragMove),removeEventListener("touchend",this.onDragEnd),removeEventListener("mouseup",this.onDragEnd)},onDragStart(t){this.beingDragged=!0,this.dragPos={x:P(t),y:j(t)},this.dragStart=P(t),this.dragRect=this.$el.getBoundingClientRect()},onDragMove(t){this.beingDragged&&(t.preventDefault(),this.isRunning&&(this.isRunning=!1),this.dragPos={x:P(t),y:j(t)})},onDragEnd(){this.beingDragged&&(Math.abs(this.dragDelta)>=this.removalDistance?(this.disableTransitions=!0,this.$nextTick(()=>this.closeToast())):setTimeout(()=>{this.beingDragged=!1,z(this.dragRect)&&this.pauseOnHover&&this.dragRect.bottom>=this.dragPos.y&&this.dragPos.y>=this.dragRect.top&&this.dragRect.left<=this.dragPos.x&&this.dragPos.x<=this.dragRect.right?this.isRunning=!1:this.isRunning=!0}))}}}),de=["role"];function he(t,e){const s=y("Icon"),n=y("CloseButton"),v=y("ProgressBar");return o(),u("div",{class:b(t.classes),style:x(t.draggableStyle),onClick:e[0]||(e[0]=(...a)=>t.clickHandler&&t.clickHandler(...a)),onMouseenter:e[1]||(e[1]=(...a)=>t.hoverPause&&t.hoverPause(...a)),onMouseleave:e[2]||(e[2]=(...a)=>t.hoverPlay&&t.hoverPlay(...a))},[t.icon?(o(),p(s,{key:0,"custom-icon":t.icon,type:t.type},null,8,["custom-icon","type"])):R("v-if",!0),_("div",{role:t.accessibility.toastRole||"alert",class:b(t.bodyClasses)},[typeof t.content=="string"?(o(),u(N,{key:0},[$(W(t.content),1)],2112)):(o(),p(M(t.getVueComponentFromObj(t.content)),V({key:1,"toast-id":t.id},t.hasProp(t.content,"props")?t.content.props:{},vt(t.hasProp(t.content,"listeners")?t.content.listeners:{}),{onCloseToast:t.closeToast}),null,16,["toast-id","onCloseToast"]))],10,de),t.closeButton?(o(),p(n,{key:1,component:t.closeButton,"class-names":t.closeButtonClassName,"show-on-hover":t.showCloseButtonOnHover,"aria-label":t.accessibility.closeButtonLabel,onClick:gt(t.closeToast,["stop"])},null,8,["component","class-names","show-on-hover","aria-label","onClick"])):R("v-if",!0),t.timeout?(o(),p(v,{key:2,"is-running":t.isRunning,"hide-progress-bar":t.hideProgressBar,timeout:t.timeout,onCloseToast:t.timeoutHandler},null,8,["is-running","hide-progress-bar","timeout","onCloseToast"])):R("v-if",!0)],38)}lt.render=he;var fe=lt,ct=C({name:"VtTransition",props:f.TRANSITION,emits:["leave"],methods:{hasProp:h,leave(t){t instanceof HTMLElement&&(t.style.left=t.offsetLeft+"px",t.style.top=t.offsetTop+"px",t.style.width=getComputedStyle(t).width,t.style.position="absolute")}}});function me(t,e){return o(),p(Ct,{tag:"div","enter-active-class":t.transition.enter?t.transition.enter:`${t.transition}-enter-active`,"move-class":t.transition.move?t.transition.move:`${t.transition}-move`,"leave-active-class":t.transition.leave?t.transition.leave:`${t.transition}-leave-active`,onLeave:t.leave},{default:I(()=>[Tt(t.$slots,"default")]),_:3},8,["enter-active-class","move-class","leave-active-class","onLeave"])}ct.render=me;var pe=ct,ut=C({name:"VueToastification",devtools:{hide:!0},components:{Toast:fe,VtTransition:pe},props:Object.assign({},f.CORE_TOAST,f.CONTAINER,f.TRANSITION),data(){return{count:0,positions:Object.values(B),toasts:{},defaults:{}}},computed:{toastArray(){return Object.values(this.toasts)},filteredToasts(){return this.defaults.filterToasts(this.toastArray)}},beforeMount(){const t=this.eventBus;t.on(l.ADD,this.addToast),t.on(l.CLEAR,this.clearToasts),t.on(l.DISMISS,this.dismissToast),t.on(l.UPDATE,this.updateToast),t.on(l.UPDATE_DEFAULTS,this.updateDefaults),this.defaults=this.$props},mounted(){this.setup(this.container)},methods:{async setup(t){D(t)&&(t=await t()),Nt(this.$el),t.appendChild(this.$el)},setToast(t){T(t.id)||(this.toasts[t.id]=t)},addToast(t){t.content=At(t.content);const e=Object.assign({},this.defaults,t.type&&this.defaults.toastDefaults&&this.defaults.toastDefaults[t.type],t),s=this.defaults.filterBeforeCreate(e,this.toastArray);s&&this.setToast(s)},dismissToast(t){const e=this.toasts[t];!T(e)&&!T(e.onClose)&&e.onClose(),delete this.toasts[t]},clearToasts(){Object.keys(this.toasts).forEach(t=>{this.dismissToast(t)})},getPositionToasts(t){const e=this.filteredToasts.filter(s=>s.position===t).slice(0,this.defaults.maxToasts);return this.defaults.newestOnTop?e.reverse():e},updateDefaults(t){T(t.container)||this.setup(t.container),this.defaults=Object.assign({},this.defaults,t)},updateToast({id:t,options:e,create:s}){this.toasts[t]?(e.timeout&&e.timeout===this.toasts[t].timeout&&e.timeout++,this.setToast(Object.assign({},this.toasts[t],e))):s&&this.addToast(Object.assign({},{id:t},e))},getClasses(t){return[`${d}__container`,t].concat(this.defaults.containerClassName)}}});function ve(t,e){const s=y("Toast"),n=y("VtTransition");return o(),u("div",null,[(o(!0),u(N,null,H(t.positions,v=>(o(),u("div",{key:v},[yt(n,{transition:t.defaults.transition,class:b(t.getClasses(v))},{default:I(()=>[(o(!0),u(N,null,H(t.getPositionToasts(v),a=>(o(),p(s,V({key:a.id},a),null,16))),128))]),_:2},1032,["transition","class"])]))),128))])}ut.render=ve;var ge=ut,X=(t={},e=!0)=>{const s=t.eventBus=t.eventBus||new F;e&&_t(()=>{const a=St(ge,q({},t)),r=a.mount(document.createElement("div")),g=t.onMounted;if(T(g)||g(r,a),t.shareAppContext){const m=t.shareAppContext;m===!0?console.warn(`[${d}] App to share context with was not provided.`):(a._context.components=m._context.components,a._context.directives=m._context.directives,a._context.mixins=m._context.mixins,a._context.provides=m._context.provides,a.config.globalProperties=m.config.globalProperties)}});const n=(a,r)=>{const g=Object.assign({},{id:Pt(),type:i.DEFAULT},r,{content:a});return s.emit(l.ADD,g),g.id};n.clear=()=>s.emit(l.CLEAR,void 0),n.updateDefaults=a=>{s.emit(l.UPDATE_DEFAULTS,a)},n.dismiss=a=>{s.emit(l.DISMISS,a)};function v(a,{content:r,options:g},m=!1){const ft=Object.assign({},g,{content:r});s.emit(l.UPDATE,{id:a,options:ft,create:m})}return n.update=v,n.success=(a,r)=>n(a,Object.assign({},r,{type:i.SUCCESS})),n.info=(a,r)=>n(a,Object.assign({},r,{type:i.INFO})),n.error=(a,r)=>n(a,Object.assign({},r,{type:i.ERROR})),n.warning=(a,r)=>n(a,Object.assign({},r,{type:i.WARNING})),n},Te=()=>{const t=()=>console.warn(`[${d}] This plugin does not support SSR!`);return new Proxy(t,{get(){return t}})};function L(t){return Lt()?Vt(t)?X({eventBus:t},!1):X(t,!0):Te()}var dt=Symbol("VueToastification"),ht=new F,Ce=(t,e)=>{(e==null?void 0:e.shareAppContext)===!0&&(e.shareAppContext=t);const s=L(q({eventBus:ht},e));t.provide(dt,s)},Oe=t=>{if(t)return L(t);const e=bt()?Ot(dt,void 0):void 0;return e||L(ht)},_e=Ce;export{_e as s,Oe as u}; diff --git a/advent/assets/vue.dd1d82d0.js b/advent/assets/vue.dd1d82d0.js new file mode 100644 index 000000000..fd4227d2d --- /dev/null +++ b/advent/assets/vue.dd1d82d0.js @@ -0,0 +1 @@ +import{g as u}from"./amator.8216e0d2.js";import{r as c,i as f,N as n,e as p,c as S,a as h,E as v,R,b as C,d as y,f as g,g as w,h as b,j as E,k as T,l as x,m as k,n as M,o as D,p as P,q as V,s as A,t as B,u as H,v as N,w as F,x as U,y as z,z as I,A as K,B as O,C as j,D as _,F as q,G as W,H as L,I as G,J as $,K as J,L as Q,M as X,O as Y,P as Z,S as ee,Q as ae,T as se,U as te,V as oe,W as re,X as ne,Y as ie,Z as ce,_ as le,$ as de,a0 as me,a1 as ue,a2 as fe,a3 as pe,a4 as Se,a5 as he,a6 as ve,a7 as Re,a8 as Ce,a9 as ye,aa as ge,ab as we,ac as be,ad as Ee,ae as Te,af as xe,ag as ke,ah as Me,ai as De,aj as Pe,ak as Ve,al as Ae,am as Be,an as He,ao as Ne,ap as Fe,aq as Ue,ar as ze,as as Ie,at as Ke,au as Oe,av as je,aw as _e,ax as qe,ay as We,az as Le,aA as Ge,aB as $e,aC as Je,aD as Qe,aE as Xe,aF as Ye,aG as Ze,aH as ea,aI as aa,aJ as sa,aK as ta,aL as oa,aM as ra,aN as na,aO as ia,aP as ca,aQ as la,aR as da,aS as ma,aT as ua,aU as fa,aV as pa,aW as Sa,aX as ha,aY as va,aZ as Ra,a_ as Ca,a$ as ya,b0 as ga,b1 as wa,b2 as ba,b3 as Ea,b4 as Ta,b5 as xa,b6 as ka,b7 as Ma,b8 as Da,b9 as Pa,ba as Va,bb as Aa,bc as Ba,bd as Ha,be as Na,bf as Fa,bg as Ua,bh as za,bi as Ia,bj as Ka,bk as Oa,bl as ja,bm as _a,bn as qa,bo as Wa,bp as La,bq as Ga,br as $a,bs as Ja,bt as Qa,bu as Xa}from"./@vue.359f7754.js";const i=Object.create(null);function l(e,d){if(!f(e))if(e.nodeType)e=e.innerHTML;else return n;const t=e,o=i[t];if(o)return o;if(e[0]==="#"){const a=document.querySelector(e);e=a?a.innerHTML:""}const s=p({hoistStatic:!0,onError:void 0,onWarn:n},d);!s.isCustomElement&&typeof customElements!="undefined"&&(s.isCustomElement=a=>!!customElements.get(a));const{code:m}=S(e,s),r=new Function("Vue",m)(h);return r._rc=!0,i[t]=r}c(l);var Ya=Object.freeze(Object.defineProperty({__proto__:null,compile:l,EffectScope:v,ReactiveEffect:R,customRef:C,effect:y,effectScope:g,getCurrentScope:w,isProxy:b,isReactive:E,isReadonly:T,isRef:x,isShallow:k,markRaw:M,onScopeDispose:D,proxyRefs:P,reactive:V,readonly:A,ref:B,shallowReactive:H,shallowReadonly:N,shallowRef:F,stop:U,toRaw:z,toRef:I,toRefs:K,triggerRef:O,unref:j,camelize:_,capitalize:q,normalizeClass:W,normalizeProps:L,normalizeStyle:G,toDisplayString:$,toHandlerKey:J,BaseTransition:Q,Comment:X,Fragment:Y,KeepAlive:Z,Static:ee,Suspense:ae,Teleport:se,Text:te,callWithAsyncErrorHandling:oe,callWithErrorHandling:re,cloneVNode:ne,compatUtils:ie,computed:ce,createBlock:le,createCommentVNode:de,createElementBlock:me,createElementVNode:ue,createHydrationRenderer:fe,createPropsRestProxy:pe,createRenderer:Se,createSlots:he,createStaticVNode:ve,createTextVNode:Re,createVNode:Ce,defineAsyncComponent:ye,defineComponent:ge,defineEmits:we,defineExpose:be,defineProps:Ee,get devtools(){return Te},getCurrentInstance:xe,getTransitionRawChildren:ke,guardReactiveProps:Me,h:De,handleError:Pe,initCustomFormatter:Ve,inject:Ae,isMemoSame:Be,isRuntimeOnly:He,isVNode:Ne,mergeDefaults:Fe,mergeProps:Ue,nextTick:ze,onActivated:Ie,onBeforeMount:Ke,onBeforeUnmount:Oe,onBeforeUpdate:je,onDeactivated:_e,onErrorCaptured:qe,onMounted:We,onRenderTracked:Le,onRenderTriggered:Ge,onServerPrefetch:$e,onUnmounted:Je,onUpdated:Qe,openBlock:Xe,popScopeId:Ye,provide:Ze,pushScopeId:ea,queuePostFlushCb:aa,registerRuntimeCompiler:c,renderList:sa,renderSlot:ta,resolveComponent:oa,resolveDirective:ra,resolveDynamicComponent:na,resolveFilter:ia,resolveTransitionHooks:ca,setBlockTracking:la,setDevtoolsHook:da,setTransitionHooks:ma,ssrContextKey:ua,ssrUtils:fa,toHandlers:pa,transformVNodeArgs:Sa,useAttrs:ha,useSSRContext:va,useSlots:Ra,useTransitionState:Ca,version:ya,warn:ga,watch:wa,watchEffect:ba,watchPostEffect:Ea,watchSyncEffect:Ta,withAsyncContext:xa,withCtx:ka,withDefaults:Ma,withDirectives:Da,withMemo:Pa,withScopeId:Va,Transition:Aa,TransitionGroup:Ba,VueElement:Ha,createApp:Na,createSSRApp:Fa,defineCustomElement:Ua,defineSSRCustomElement:za,hydrate:Ia,initDirectivesForSSR:Ka,render:Oa,useCssModule:ja,useCssVars:_a,vModelCheckbox:qa,vModelDynamic:Wa,vModelRadio:La,vModelSelect:Ga,vModelText:$a,vShow:Ja,withKeys:Qa,withModifiers:Xa},Symbol.toStringTag,{value:"Module"})),as=u(Ya);export{as as r}; diff --git a/advent/assets/vuedraggable.179e27ef.js b/advent/assets/vuedraggable.179e27ef.js new file mode 100644 index 000000000..0169306b8 --- /dev/null +++ b/advent/assets/vuedraggable.179e27ef.js @@ -0,0 +1,4 @@ +import{c as jt,b as Ct}from"./amator.8216e0d2.js";import{r as Lt}from"./vue.dd1d82d0.js";import{r as Ft}from"./sortablejs.e4e9a931.js";var Pt={exports:{}};(function(Rt,Dt){(function(bt,o){Rt.exports=o(Lt,Ft)})(typeof self!="undefined"?self:jt,function(Tt,bt){return function(o){var g={};function t(r){if(g[r])return g[r].exports;var e=g[r]={i:r,l:!1,exports:{}};return o[r].call(e.exports,e,e.exports,t),e.l=!0,e.exports}return t.m=o,t.c=g,t.d=function(r,e,n){t.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:n})},t.r=function(r){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},t.t=function(r,e){if(e&1&&(r=t(r)),e&8||e&4&&typeof r=="object"&&r&&r.__esModule)return r;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:r}),e&2&&typeof r!="string")for(var a in r)t.d(n,a,function(i){return r[i]}.bind(null,a));return n},t.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(e,"a",e),e},t.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},t.p="",t(t.s="fb15")}({"00ee":function(o,g,t){var r=t("b622"),e=r("toStringTag"),n={};n[e]="z",o.exports=String(n)==="[object z]"},"0366":function(o,g,t){var r=t("1c0b");o.exports=function(e,n,a){if(r(e),n===void 0)return e;switch(a){case 0:return function(){return e.call(n)};case 1:return function(i){return e.call(n,i)};case 2:return function(i,f){return e.call(n,i,f)};case 3:return function(i,f,s){return e.call(n,i,f,s)}}return function(){return e.apply(n,arguments)}}},"057f":function(o,g,t){var r=t("fc6a"),e=t("241c").f,n={}.toString,a=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],i=function(f){try{return e(f)}catch{return a.slice()}};o.exports.f=function(s){return a&&n.call(s)=="[object Window]"?i(s):e(r(s))}},"06cf":function(o,g,t){var r=t("83ab"),e=t("d1e7"),n=t("5c6c"),a=t("fc6a"),i=t("c04e"),f=t("5135"),s=t("0cfb"),u=Object.getOwnPropertyDescriptor;g.f=r?u:function(c,m){if(c=a(c),m=i(m,!0),s)try{return u(c,m)}catch{}if(f(c,m))return n(!e.f.call(c,m),c[m])}},"0cfb":function(o,g,t){var r=t("83ab"),e=t("d039"),n=t("cc12");o.exports=!r&&!e(function(){return Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a!=7})},"13d5":function(o,g,t){var r=t("23e7"),e=t("d58f").left,n=t("a640"),a=t("ae40"),i=n("reduce"),f=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!i||!f},{reduce:function(u){return e(this,u,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(o,g,t){var r=t("c6b6"),e=t("9263");o.exports=function(n,a){var i=n.exec;if(typeof i=="function"){var f=i.call(n,a);if(typeof f!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return f}if(r(n)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return e.call(n,a)}},"159b":function(o,g,t){var r=t("da84"),e=t("fdbc"),n=t("17c2"),a=t("9112");for(var i in e){var f=r[i],s=f&&f.prototype;if(s&&s.forEach!==n)try{a(s,"forEach",n)}catch{s.forEach=n}}},"17c2":function(o,g,t){var r=t("b727").forEach,e=t("a640"),n=t("ae40"),a=e("forEach"),i=n("forEach");o.exports=!a||!i?function(s){return r(this,s,arguments.length>1?arguments[1]:void 0)}:[].forEach},"1be4":function(o,g,t){var r=t("d066");o.exports=r("document","documentElement")},"1c0b":function(o,g){o.exports=function(t){if(typeof t!="function")throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(o,g,t){var r=t("b622"),e=r("iterator"),n=!1;try{var a=0,i={next:function(){return{done:!!a++}},return:function(){n=!0}};i[e]=function(){return this},Array.from(i,function(){throw 2})}catch{}o.exports=function(f,s){if(!s&&!n)return!1;var u=!1;try{var l={};l[e]=function(){return{next:function(){return{done:u=!0}}}},f(l)}catch{}return u}},"1d80":function(o,g){o.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},"1dde":function(o,g,t){var r=t("d039"),e=t("b622"),n=t("2d00"),a=e("species");o.exports=function(i){return n>=51||!r(function(){var f=[],s=f.constructor={};return s[a]=function(){return{foo:1}},f[i](Boolean).foo!==1})}},"23cb":function(o,g,t){var r=t("a691"),e=Math.max,n=Math.min;o.exports=function(a,i){var f=r(a);return f<0?e(f+i,0):n(f,i)}},"23e7":function(o,g,t){var r=t("da84"),e=t("06cf").f,n=t("9112"),a=t("6eeb"),i=t("ce4e"),f=t("e893"),s=t("94ca");o.exports=function(u,l){var c=u.target,m=u.global,h=u.stat,O,E,I,p,L,F;if(m?E=r:h?E=r[c]||i(c,{}):E=(r[c]||{}).prototype,E)for(I in l){if(L=l[I],u.noTargetGet?(F=e(E,I),p=F&&F.value):p=E[I],O=s(m?I:c+(h?".":"#")+I,u.forced),!O&&p!==void 0){if(typeof L==typeof p)continue;f(L,p)}(u.sham||p&&p.sham)&&n(L,"sham",!0),a(E,I,L,u)}}},"241c":function(o,g,t){var r=t("ca84"),e=t("7839"),n=e.concat("length","prototype");g.f=Object.getOwnPropertyNames||function(i){return r(i,n)}},"25f0":function(o,g,t){var r=t("6eeb"),e=t("825a"),n=t("d039"),a=t("ad6d"),i="toString",f=RegExp.prototype,s=f[i],u=n(function(){return s.call({source:"a",flags:"b"})!="/a/b"}),l=s.name!=i;(u||l)&&r(RegExp.prototype,i,function(){var m=e(this),h=String(m.source),O=m.flags,E=String(O===void 0&&m instanceof RegExp&&!("flags"in f)?a.call(m):O);return"/"+h+"/"+E},{unsafe:!0})},"2ca0":function(o,g,t){var r=t("23e7"),e=t("06cf").f,n=t("50c4"),a=t("5a34"),i=t("1d80"),f=t("ab13"),s=t("c430"),u="".startsWith,l=Math.min,c=f("startsWith"),m=!s&&!c&&!!function(){var h=e(String.prototype,"startsWith");return h&&!h.writable}();r({target:"String",proto:!0,forced:!m&&!c},{startsWith:function(O){var E=String(i(this));a(O);var I=n(l(arguments.length>1?arguments[1]:void 0,E.length)),p=String(O);return u?u.call(E,p,I):E.slice(I,I+p.length)===p}})},"2d00":function(o,g,t){var r=t("da84"),e=t("342f"),n=r.process,a=n&&n.versions,i=a&&a.v8,f,s;i?(f=i.split("."),s=f[0]+f[1]):e&&(f=e.match(/Edge\/(\d+)/),(!f||f[1]>=74)&&(f=e.match(/Chrome\/(\d+)/),f&&(s=f[1]))),o.exports=s&&+s},"342f":function(o,g,t){var r=t("d066");o.exports=r("navigator","userAgent")||""},"35a1":function(o,g,t){var r=t("f5df"),e=t("3f8c"),n=t("b622"),a=n("iterator");o.exports=function(i){if(i!=null)return i[a]||i["@@iterator"]||e[r(i)]}},"37e8":function(o,g,t){var r=t("83ab"),e=t("9bf2"),n=t("825a"),a=t("df75");o.exports=r?Object.defineProperties:function(f,s){n(f);for(var u=a(s),l=u.length,c=0,m;l>c;)e.f(f,m=u[c++],s[m]);return f}},"3bbe":function(o,g,t){var r=t("861d");o.exports=function(e){if(!r(e)&&e!==null)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},"3ca3":function(o,g,t){var r=t("6547").charAt,e=t("69f3"),n=t("7dd0"),a="String Iterator",i=e.set,f=e.getterFor(a);n(String,"String",function(s){i(this,{type:a,string:String(s),index:0})},function(){var u=f(this),l=u.string,c=u.index,m;return c>=l.length?{value:void 0,done:!0}:(m=r(l,c),u.index+=m.length,{value:m,done:!1})})},"3f8c":function(o,g){o.exports={}},4160:function(o,g,t){var r=t("23e7"),e=t("17c2");r({target:"Array",proto:!0,forced:[].forEach!=e},{forEach:e})},"428f":function(o,g,t){var r=t("da84");o.exports=r},"44ad":function(o,g,t){var r=t("d039"),e=t("c6b6"),n="".split;o.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(a){return e(a)=="String"?n.call(a,""):Object(a)}:Object},"44d2":function(o,g,t){var r=t("b622"),e=t("7c73"),n=t("9bf2"),a=r("unscopables"),i=Array.prototype;i[a]==null&&n.f(i,a,{configurable:!0,value:e(null)}),o.exports=function(f){i[a][f]=!0}},"44e7":function(o,g,t){var r=t("861d"),e=t("c6b6"),n=t("b622"),a=n("match");o.exports=function(i){var f;return r(i)&&((f=i[a])!==void 0?!!f:e(i)=="RegExp")}},4930:function(o,g,t){var r=t("d039");o.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},"4d64":function(o,g,t){var r=t("fc6a"),e=t("50c4"),n=t("23cb"),a=function(i){return function(f,s,u){var l=r(f),c=e(l.length),m=n(u,c),h;if(i&&s!=s){for(;c>m;)if(h=l[m++],h!=h)return!0}else for(;c>m;m++)if((i||m in l)&&l[m]===s)return i||m||0;return!i&&-1}};o.exports={includes:a(!0),indexOf:a(!1)}},"4de4":function(o,g,t){var r=t("23e7"),e=t("b727").filter,n=t("1dde"),a=t("ae40"),i=n("filter"),f=a("filter");r({target:"Array",proto:!0,forced:!i||!f},{filter:function(u){return e(this,u,arguments.length>1?arguments[1]:void 0)}})},"4df4":function(o,g,t){var r=t("0366"),e=t("7b0b"),n=t("9bdd"),a=t("e95a"),i=t("50c4"),f=t("8418"),s=t("35a1");o.exports=function(l){var c=e(l),m=typeof this=="function"?this:Array,h=arguments.length,O=h>1?arguments[1]:void 0,E=O!==void 0,I=s(c),p=0,L,F,S,P,C,K;if(E&&(O=r(O,h>2?arguments[2]:void 0,2)),I!=null&&!(m==Array&&a(I)))for(P=I.call(c),C=P.next,F=new m;!(S=C.call(P)).done;p++)K=E?n(P,O,[S.value,p],!0):S.value,f(F,p,K);else for(L=i(c.length),F=new m(L);L>p;p++)K=E?O(c[p],p):c[p],f(F,p,K);return F.length=p,F}},"4fad":function(o,g,t){var r=t("23e7"),e=t("6f53").entries;r({target:"Object",stat:!0},{entries:function(a){return e(a)}})},"50c4":function(o,g,t){var r=t("a691"),e=Math.min;o.exports=function(n){return n>0?e(r(n),9007199254740991):0}},5135:function(o,g){var t={}.hasOwnProperty;o.exports=function(r,e){return t.call(r,e)}},5319:function(o,g,t){var r=t("d784"),e=t("825a"),n=t("7b0b"),a=t("50c4"),i=t("a691"),f=t("1d80"),s=t("8aa5"),u=t("14c3"),l=Math.max,c=Math.min,m=Math.floor,h=/\$([$&'`]|\d\d?|<[^>]*>)/g,O=/\$([$&'`]|\d\d?)/g,E=function(I){return I===void 0?I:String(I)};r("replace",2,function(I,p,L,F){var S=F.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,P=F.REPLACE_KEEPS_$0,C=S?"$":"$0";return[function(b,G){var R=f(this),M=b==null?void 0:b[I];return M!==void 0?M.call(b,R,G):p.call(String(R),b,G)},function(T,b){if(!S&&P||typeof b=="string"&&b.indexOf(C)===-1){var G=L(p,T,this,b);if(G.done)return G.value}var R=e(T),M=String(this),W=typeof b=="function";W||(b=String(b));var z=R.global;if(z){var rt=R.unicode;R.lastIndex=0}for(var w=[];;){var Q=u(R,M);if(Q===null||(w.push(Q),!z))break;var k=String(Q[0]);k===""&&(R.lastIndex=s(M,a(R.lastIndex),rt))}for(var q="",Z=0,X=0;X=Z&&(q+=M.slice(Z,ot)+_,Z=ot+Y.length)}return q+M.slice(Z)}];function K(T,b,G,R,M,W){var z=G+T.length,rt=R.length,w=O;return M!==void 0&&(M=n(M),w=h),p.call(W,w,function(Q,k){var q;switch(k.charAt(0)){case"$":return"$";case"&":return T;case"`":return b.slice(0,G);case"'":return b.slice(z);case"<":q=M[k.slice(1,-1)];break;default:var Z=+k;if(Z===0)return Q;if(Z>rt){var X=m(Z/10);return X===0?Q:X<=rt?R[X-1]===void 0?k.charAt(1):R[X-1]+k.charAt(1):Q}q=R[Z-1]}return q===void 0?"":q})}})},5692:function(o,g,t){var r=t("c430"),e=t("c6cd");(o.exports=function(n,a){return e[n]||(e[n]=a!==void 0?a:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"\xA9 2020 Denis Pushkarev (zloirock.ru)"})},"56ef":function(o,g,t){var r=t("d066"),e=t("241c"),n=t("7418"),a=t("825a");o.exports=r("Reflect","ownKeys")||function(f){var s=e.f(a(f)),u=n.f;return u?s.concat(u(f)):s}},"5a34":function(o,g,t){var r=t("44e7");o.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},"5c6c":function(o,g){o.exports=function(t,r){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:r}}},"5db7":function(o,g,t){var r=t("23e7"),e=t("a2bf"),n=t("7b0b"),a=t("50c4"),i=t("1c0b"),f=t("65f0");r({target:"Array",proto:!0},{flatMap:function(u){var l=n(this),c=a(l.length),m;return i(u),m=f(l,0),m.length=e(m,l,l,c,0,1,u,arguments.length>1?arguments[1]:void 0),m}})},6547:function(o,g,t){var r=t("a691"),e=t("1d80"),n=function(a){return function(i,f){var s=String(e(i)),u=r(f),l=s.length,c,m;return u<0||u>=l?a?"":void 0:(c=s.charCodeAt(u),c<55296||c>56319||u+1===l||(m=s.charCodeAt(u+1))<56320||m>57343?a?s.charAt(u):c:a?s.slice(u,u+2):(c-55296<<10)+(m-56320)+65536)}};o.exports={codeAt:n(!1),charAt:n(!0)}},"65f0":function(o,g,t){var r=t("861d"),e=t("e8b5"),n=t("b622"),a=n("species");o.exports=function(i,f){var s;return e(i)&&(s=i.constructor,typeof s=="function"&&(s===Array||e(s.prototype))?s=void 0:r(s)&&(s=s[a],s===null&&(s=void 0))),new(s===void 0?Array:s)(f===0?0:f)}},"69f3":function(o,g,t){var r=t("7f9a"),e=t("da84"),n=t("861d"),a=t("9112"),i=t("5135"),f=t("f772"),s=t("d012"),u=e.WeakMap,l,c,m,h=function(S){return m(S)?c(S):l(S,{})},O=function(S){return function(P){var C;if(!n(P)||(C=c(P)).type!==S)throw TypeError("Incompatible receiver, "+S+" required");return C}};if(r){var E=new u,I=E.get,p=E.has,L=E.set;l=function(S,P){return L.call(E,S,P),P},c=function(S){return I.call(E,S)||{}},m=function(S){return p.call(E,S)}}else{var F=f("state");s[F]=!0,l=function(S,P){return a(S,F,P),P},c=function(S){return i(S,F)?S[F]:{}},m=function(S){return i(S,F)}}o.exports={set:l,get:c,has:m,enforce:h,getterFor:O}},"6eeb":function(o,g,t){var r=t("da84"),e=t("9112"),n=t("5135"),a=t("ce4e"),i=t("8925"),f=t("69f3"),s=f.get,u=f.enforce,l=String(String).split("String");(o.exports=function(c,m,h,O){var E=O?!!O.unsafe:!1,I=O?!!O.enumerable:!1,p=O?!!O.noTargetGet:!1;if(typeof h=="function"&&(typeof m=="string"&&!n(h,"name")&&e(h,"name",m),u(h).source=l.join(typeof m=="string"?m:"")),c===r){I?c[m]=h:a(m,h);return}else E?!p&&c[m]&&(I=!0):delete c[m];I?c[m]=h:e(c,m,h)})(Function.prototype,"toString",function(){return typeof this=="function"&&s(this).source||i(this)})},"6f53":function(o,g,t){var r=t("83ab"),e=t("df75"),n=t("fc6a"),a=t("d1e7").f,i=function(f){return function(s){for(var u=n(s),l=e(u),c=l.length,m=0,h=[],O;c>m;)O=l[m++],(!r||a.call(u,O))&&h.push(f?[O,u[O]]:u[O]);return h}};o.exports={entries:i(!0),values:i(!1)}},"73d9":function(o,g,t){var r=t("44d2");r("flatMap")},7418:function(o,g){g.f=Object.getOwnPropertySymbols},"746f":function(o,g,t){var r=t("428f"),e=t("5135"),n=t("e538"),a=t("9bf2").f;o.exports=function(i){var f=r.Symbol||(r.Symbol={});e(f,i)||a(f,i,{value:n.f(i)})}},7839:function(o,g){o.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(o,g,t){var r=t("1d80");o.exports=function(e){return Object(r(e))}},"7c73":function(o,g,t){var r=t("825a"),e=t("37e8"),n=t("7839"),a=t("d012"),i=t("1be4"),f=t("cc12"),s=t("f772"),u=">",l="<",c="prototype",m="script",h=s("IE_PROTO"),O=function(){},E=function(S){return l+m+u+S+l+"/"+m+u},I=function(S){S.write(E("")),S.close();var P=S.parentWindow.Object;return S=null,P},p=function(){var S=f("iframe"),P="java"+m+":",C;return S.style.display="none",i.appendChild(S),S.src=String(P),C=S.contentWindow.document,C.open(),C.write(E("document.F=Object")),C.close(),C.F},L,F=function(){try{L=document.domain&&new ActiveXObject("htmlfile")}catch{}F=L?I(L):p();for(var S=n.length;S--;)delete F[c][n[S]];return F()};a[h]=!0,o.exports=Object.create||function(P,C){var K;return P!==null?(O[c]=r(P),K=new O,O[c]=null,K[h]=P):K=F(),C===void 0?K:e(K,C)}},"7dd0":function(o,g,t){var r=t("23e7"),e=t("9ed3"),n=t("e163"),a=t("d2bb"),i=t("d44e"),f=t("9112"),s=t("6eeb"),u=t("b622"),l=t("c430"),c=t("3f8c"),m=t("ae93"),h=m.IteratorPrototype,O=m.BUGGY_SAFARI_ITERATORS,E=u("iterator"),I="keys",p="values",L="entries",F=function(){return this};o.exports=function(S,P,C,K,T,b,G){e(C,P,K);var R=function(X){if(X===T&&w)return w;if(!O&&X in z)return z[X];switch(X){case I:return function(){return new C(this,X)};case p:return function(){return new C(this,X)};case L:return function(){return new C(this,X)}}return function(){return new C(this)}},M=P+" Iterator",W=!1,z=S.prototype,rt=z[E]||z["@@iterator"]||T&&z[T],w=!O&&rt||R(T),Q=P=="Array"&&z.entries||rt,k,q,Z;if(Q&&(k=n(Q.call(new S)),h!==Object.prototype&&k.next&&(!l&&n(k)!==h&&(a?a(k,h):typeof k[E]!="function"&&f(k,E,F)),i(k,M,!0,!0),l&&(c[M]=F))),T==p&&rt&&rt.name!==p&&(W=!0,w=function(){return rt.call(this)}),(!l||G)&&z[E]!==w&&f(z,E,w),c[P]=w,T)if(q={values:R(p),keys:b?w:R(I),entries:R(L)},G)for(Z in q)(O||W||!(Z in z))&&s(z,Z,q[Z]);else r({target:P,proto:!0,forced:O||W},q);return q}},"7f9a":function(o,g,t){var r=t("da84"),e=t("8925"),n=r.WeakMap;o.exports=typeof n=="function"&&/native code/.test(e(n))},"825a":function(o,g,t){var r=t("861d");o.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},"83ab":function(o,g,t){var r=t("d039");o.exports=!r(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})},8418:function(o,g,t){var r=t("c04e"),e=t("9bf2"),n=t("5c6c");o.exports=function(a,i,f){var s=r(i);s in a?e.f(a,s,n(0,f)):a[s]=f}},"861d":function(o,g){o.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},8875:function(o,g,t){var r,e,n;(function(a,i){e=[],r=i,n=typeof r=="function"?r.apply(g,e):r,n!==void 0&&(o.exports=n)})(typeof self!="undefined"?self:this,function(){function a(){var i=Object.getOwnPropertyDescriptor(document,"currentScript");if(!i&&"currentScript"in document&&document.currentScript||i&&i.get!==a&&document.currentScript)return document.currentScript;try{throw new Error}catch(L){var f=/.*at [^(]*\((.*):(.+):(.+)\)$/ig,s=/@([^@]*):(\d+):(\d+)\s*$/ig,u=f.exec(L.stack)||s.exec(L.stack),l=u&&u[1]||!1,c=u&&u[2]||!1,m=document.location.href.replace(document.location.hash,""),h,O,E,I=document.getElementsByTagName("script");l===m&&(h=document.documentElement.outerHTML,O=new RegExp("(?:[^\\n]+?\\n){0,"+(c-2)+"}[^<]* diff --git a/advent/index.html b/advent/index.html new file mode 100644 index 000000000..27df40b2b --- /dev/null +++ b/advent/index.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + Advent Incremental + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/advent/manifest.webmanifest b/advent/manifest.webmanifest new file mode 100644 index 000000000..b8da3ce51 --- /dev/null +++ b/advent/manifest.webmanifest @@ -0,0 +1 @@ +{"name":"Advent Incremental","short_name":"Advent Incremental","start_url":"./","display":"standalone","background_color":"#ffffff","lang":"en","scope":"./","description":"An incremental game you play a day at a time, leading up to Christmas!","theme_color":"#2E3440","icons":[{"src":"pwa-192x192.png","sizes":"192x192","type":"image/png"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png"},{"src":"pwa-512x512.png","sizes":"512x512","type":"image/png","purpose":"any maskable"}]} diff --git a/advent/pwa-192x192.png b/advent/pwa-192x192.png new file mode 100644 index 000000000..00eaafdb4 Binary files /dev/null and b/advent/pwa-192x192.png differ diff --git a/advent/pwa-512x512.png b/advent/pwa-512x512.png new file mode 100644 index 000000000..1ad85e8aa Binary files /dev/null and b/advent/pwa-512x512.png differ diff --git a/advent/robots.txt b/advent/robots.txt new file mode 100644 index 000000000..c2a49f4fb --- /dev/null +++ b/advent/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / diff --git a/advent/sw.js b/advent/sw.js new file mode 100644 index 000000000..761afbdc6 --- /dev/null +++ b/advent/sw.js @@ -0,0 +1 @@ +if(!self.define){let s,e={};const i=(i,l)=>(i=new URL(i+".js",l).href,e[i]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()})).then((()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s})));self.define=(l,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const t=s=>i(s,r),o={module:{uri:r},exports:u,require:t};e[r]=Promise.all(l.map((s=>o[s]||t(s)))).then((s=>(n(...s),u)))}}define(["./workbox-7369c0e1"],(function(s){"use strict";self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"assets/@fontsource.c175eac8.css",revision:null},{url:"assets/@pixi.051d1bd4.js",revision:null},{url:"assets/@vue.359f7754.js",revision:null},{url:"assets/amator.8216e0d2.js",revision:null},{url:"assets/bezier-easing.a990b400.js",revision:null},{url:"assets/earcut.03899505.js",revision:null},{url:"assets/eventemitter3.dc5195d7.js",revision:null},{url:"assets/gameLoop.b97c9727.js",revision:null},{url:"assets/index.88096596.css",revision:null},{url:"assets/index.c658358f.js",revision:null},{url:"assets/is-plain-object.906d88e8.js",revision:null},{url:"assets/lz-string.f2f3b7cf.js",revision:null},{url:"assets/nanoevents.1080beb7.js",revision:null},{url:"assets/ngraph.events.083734c6.js",revision:null},{url:"assets/panzoom.9e1878dd.js",revision:null},{url:"assets/querystring.b35d81f8.js",revision:null},{url:"assets/sortablejs.e4e9a931.js",revision:null},{url:"assets/url.1821b64b.js",revision:null},{url:"assets/vue-next-select.9e6f4164.css",revision:null},{url:"assets/vue-next-select.d15705a0.js",revision:null},{url:"assets/vue-panzoom.f6869ea5.js",revision:null},{url:"assets/vue-textarea-autosize.35804eaf.js",revision:null},{url:"assets/vue-toastification.4b5f8ac8.css",revision:null},{url:"assets/vue-toastification.7ec3a26c.js",revision:null},{url:"assets/vue.dd1d82d0.js",revision:null},{url:"assets/vuedraggable.179e27ef.js",revision:null},{url:"assets/wheel.f03080ac.js",revision:null},{url:"assets/workbox-window.4a8794bb.js",revision:null},{url:"index.html",revision:"b6c8d0288bd0a81cd2804a412e2ff714"},{url:"favicon.ico",revision:"eead31eb5b19fa3bdc34af83d898c0b7"},{url:"robots.txt",revision:"5e0bd1c281a62a380d7a948085bfe2d1"},{url:"apple-touch-icon.png",revision:"26e53bb981d06c8069ffd9d2a14fce0e"},{url:"pwa-192x192.png",revision:"a16785d9e890858c5b508e0ef6954aaf"},{url:"pwa-512x512.png",revision:"b84004b93fd62ef6599ff179372861a1"},{url:"manifest.webmanifest",revision:"5f32ad2a77eb001e1b6a588835dc1efc"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))})); diff --git a/advent/workbox-7369c0e1.js b/advent/workbox-7369c0e1.js new file mode 100644 index 000000000..30d535213 --- /dev/null +++ b/advent/workbox-7369c0e1.js @@ -0,0 +1 @@ +define(["exports"],(function(t){"use strict";try{self["workbox:core:6.5.3"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:6.5.3"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return a().registerRoute(o),o}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter((t=>t&&t.length>0)).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:6.5.3"]&&_()}catch(t){}function p(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class y{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class g{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let R;async function m(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,c=function(){if(void 0===R){const t=new Response("");if("body"in t)try{new Response(t.body),R=!0}catch(t){R=!1}R=!1}return R}()?i.body:await i.blob();return new Response(c,o)}function v(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class q{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const U=new Set;try{self["workbox:strategies:6.5.3"]&&_()}catch(t){}function L(t){return"string"==typeof t?new Request(t):t}class b{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new q,this.g=[],this.R=[...t.plugins],this.m=new Map;for(const t of this.R)this.m.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=L(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=L(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=L(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.v(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=v(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===v(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of U)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=L(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.m.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.g.push(t),t}async doneWaiting(){let t;for(;t=this.g.shift();)await t}destroy(){this.p.resolve(null)}async v(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class C{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new b(this,{event:e,request:s,params:n}),r=this.q(i,s,e);return[r,this.U(r,i,s,e)]}async q(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.L(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async U(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class E extends C{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this._=!1!==t.fallbackToNetwork,this.plugins.push(E.copyRedirectedCacheableResponsesPlugin)}async L(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.C(t,e):await this.O(t,e))}async O(t,e){let n;const i=e.params||{};if(!this._)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.N(),await e.cachePut(t,n.clone()))}return n}async C(t,e){this.N();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}N(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==E.copyRedirectedCacheableResponsesPlugin&&(n===E.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(E.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}E.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},E.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await m(t):t};class O{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.k=new Map,this.K=new Map,this.P=new Map,this.l=new E({cacheName:f(t),plugins:[...e,new g({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.T||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.T=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=p(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.k.has(i)&&this.k.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.k.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.P.has(t)&&this.P.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.P.set(t,n.integrity)}if(this.k.set(i,t),this.K.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return d(t,(async()=>{const e=new y;this.strategy.plugins.push(e);for(const[e,s]of this.k){const n=this.P.get(s),i=this.K.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return d(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.k.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.k}getCachedURLs(){return[...this.k.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.k.get(e.href)}getIntegrityForCacheKey(t){return this.P.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let x;const N=()=>(x||(x=new O),x);class k extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super((t=>this.W(t)),t),this.j=e,this.M=s}W({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.M)if(t.test(s))return!1;return!!this.j.some((t=>t.test(s)))}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",(t=>{const e=f();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter((s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t));return await Promise.all(s.map((t=>self.caches.delete(t)))),s})(e).then((t=>{})))}))},t.createHandlerBoundToURL=function(t){return N().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){N().precache(t)}(t),function(t){const e=N();h(new k(e,t))}(e)},t.registerRoute=h})); diff --git a/assets/app.88fb6cf0.js b/assets/app.88fb6cf0.js new file mode 100644 index 000000000..2e6edaed1 --- /dev/null +++ b/assets/app.88fb6cf0.js @@ -0,0 +1 @@ +import{s,Z as i,$ as u,a0 as c,a1 as l,a2 as d,a3 as f,a4 as m,a5 as h,a6 as A,a7 as g,a8 as P,d as v,u as y,j as C,y as w,a9 as _,aa as b,ab as E,ac as R}from"./chunks/framework.1169fbc9.js";import{t as D}from"./chunks/theme.c36cb2db.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=p(D),j=v({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function O(){const e=T(),a=S();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",d),a.component("ClientOnly",f),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function S(){return h(j)}function T(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),s&&(e=!1),r},o.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp}; diff --git a/assets/babblemmscreenshot.7646b6c2.png b/assets/babblemmscreenshot.7646b6c2.png new file mode 100644 index 000000000..04f0f12e8 Binary files /dev/null and b/assets/babblemmscreenshot.7646b6c2.png differ diff --git a/assets/chunks/framework.1169fbc9.js b/assets/chunks/framework.1169fbc9.js new file mode 100644 index 000000000..85efe6a2b --- /dev/null +++ b/assets/chunks/framework.1169fbc9.js @@ -0,0 +1,2 @@ +function ns(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const te={},dt=[],Pe=()=>{},Vi=()=>!1,qi=/^on[^a-z]/,Bt=e=>qi.test(e),ss=e=>e.startsWith("onUpdate:"),ie=Object.assign,rs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zi=Object.prototype.hasOwnProperty,z=(e,t)=>zi.call(e,t),j=Array.isArray,ht=e=>pn(e)==="[object Map]",Tr=e=>pn(e)==="[object Set]",K=e=>typeof e=="function",se=e=>typeof e=="string",is=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",Ar=e=>ee(e)&&K(e.then)&&K(e.catch),Sr=Object.prototype.toString,pn=e=>Sr.call(e),Yi=e=>pn(e).slice(8,-1),Or=e=>pn(e)==="[object Object]",os=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Pt=ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),gn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ji=/-(\w)/g,Le=gn(e=>e.replace(Ji,(t,n)=>n?n.toUpperCase():"")),Xi=/\B([A-Z])/g,lt=gn(e=>e.replace(Xi,"-$1").toLowerCase()),mn=gn(e=>e.charAt(0).toUpperCase()+e.slice(1)),en=gn(e=>e?`on${mn(e)}`:""),Lt=(e,t)=>!Object.is(e,t),Fn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Qi=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Zi=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let Fs;const Un=()=>Fs||(Fs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ls(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(eo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function cs(e){let t="";if(se(e))t=e;else if(j(e))for(let n=0;nse(e)?e:e==null?"":j(e)||ee(e)&&(e.toString===Sr||!K(e.toString))?JSON.stringify(e,Ir,2):String(e),Ir=(e,t)=>t&&t.__v_isRef?Ir(e,t.value):ht(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:Tr(t)?{[`Set(${t.size})`]:[...t.values()]}:ee(t)&&!j(t)&&!Or(t)?String(t):t;let be;class io{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Fr=e=>(e.w&ze)>0,Mr=e=>(e.n&ze)>0,co=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(d==="length"||d>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":j(e)?os(n)&&l.push(o.get("length")):(l.push(o.get(st)),ht(e)&&l.push(o.get(Wn)));break;case"delete":j(e)||(l.push(o.get(st)),ht(e)&&l.push(o.get(Wn)));break;case"set":ht(e)&&l.push(o.get(st));break}if(l.length===1)l[0]&&Vn(l[0]);else{const c=[];for(const u of l)u&&c.push(...u);Vn(as(c))}}function Vn(e,t){const n=j(e)?e:[...e];for(const s of n)s.computed&&Ls(s);for(const s of n)s.computed||Ls(s)}function Ls(e,t){(e!==Se||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function uo(e,t){var n;return(n=rn.get(e))==null?void 0:n.get(t)}const fo=ns("__proto__,__v_isRef,__isVue"),$r=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(is)),ho=fs(),po=fs(!1,!0),go=fs(!0),Ns=mo();function mo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=Y(this);for(let i=0,o=this.length;i{e[t]=function(...n){Ct();const s=Y(this)[t].apply(this,n);return xt(),s}}),e}function _o(e){const t=Y(this);return me(t,"has",e),t.hasOwnProperty(e)}function fs(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?Mo:kr:t?Br:Dr).get(s))return s;const o=j(s);if(!e){if(o&&z(Ns,r))return Reflect.get(Ns,r,i);if(r==="hasOwnProperty")return _o}const l=Reflect.get(s,r,i);return(is(r)?$r.has(r):fo(r))||(e||me(s,"get",r),t)?l:le(l)?o&&os(r)?l:l.value:ee(l)?e?bn(l):yn(l):l}}const yo=Hr(),bo=Hr(!0);function Hr(e=!1){return function(n,s,r,i){let o=n[s];if(yt(o)&&le(o)&&!le(r))return!1;if(!e&&(!on(r)&&!yt(r)&&(o=Y(o),r=Y(r)),!j(n)&&le(o)&&!le(r)))return o.value=r,!0;const l=j(n)&&os(s)?Number(s)e,_n=e=>Reflect.getPrototypeOf(e);function Kt(e,t,n=!1,s=!1){e=e.__v_raw;const r=Y(e),i=Y(t);n||(t!==i&&me(r,"get",t),me(r,"get",i));const{has:o}=_n(r),l=s?ds:n?gs:Nt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Wt(e,t=!1){const n=this.__v_raw,s=Y(n),r=Y(e);return t||(e!==r&&me(s,"has",e),me(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Vt(e,t=!1){return e=e.__v_raw,!t&&me(Y(e),"iterate",st),Reflect.get(e,"size",e)}function $s(e){e=Y(e);const t=Y(this);return _n(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function Hs(e,t){t=Y(t);const n=Y(this),{has:s,get:r}=_n(n);let i=s.call(n,e);i||(e=Y(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Lt(t,o)&&He(n,"set",e,t):He(n,"add",e,t),this}function js(e){const t=Y(this),{has:n,get:s}=_n(t);let r=n.call(t,e);r||(e=Y(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&He(t,"delete",e,void 0),i}function Ds(){const e=Y(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function qt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=Y(o),c=t?ds:e?gs:Nt;return!e&&me(l,"iterate",st),o.forEach((u,d)=>s.call(r,c(u),c(d),i))}}function zt(e,t,n){return function(...s){const r=this.__v_raw,i=Y(r),o=ht(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),d=n?ds:t?gs:Nt;return!t&&me(i,"iterate",c?Wn:st),{next(){const{value:h,done:b}=u.next();return b?{value:h,done:b}:{value:l?[d(h[0]),d(h[1])]:d(h),done:b}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:this}}function To(){const e={get(i){return Kt(this,i)},get size(){return Vt(this)},has:Wt,add:$s,set:Hs,delete:js,clear:Ds,forEach:qt(!1,!1)},t={get(i){return Kt(this,i,!1,!0)},get size(){return Vt(this)},has:Wt,add:$s,set:Hs,delete:js,clear:Ds,forEach:qt(!1,!0)},n={get(i){return Kt(this,i,!0)},get size(){return Vt(this,!0)},has(i){return Wt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!1)},s={get(i){return Kt(this,i,!0,!0)},get size(){return Vt(this,!0)},has(i){return Wt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=zt(i,!1,!1),n[i]=zt(i,!0,!1),t[i]=zt(i,!1,!0),s[i]=zt(i,!0,!0)}),[e,n,t,s]}const[Ao,So,Oo,Po]=To();function hs(e,t){const n=t?e?Po:Oo:e?So:Ao;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Io={get:hs(!1,!1)},Ro={get:hs(!1,!0)},Fo={get:hs(!0,!1)},Dr=new WeakMap,Br=new WeakMap,kr=new WeakMap,Mo=new WeakMap;function Lo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function No(e){return e.__v_skip||!Object.isExtensible(e)?0:Lo(Yi(e))}function yn(e){return yt(e)?e:ps(e,!1,jr,Io,Dr)}function $o(e){return ps(e,!1,Eo,Ro,Br)}function bn(e){return ps(e,!0,xo,Fo,kr)}function ps(e,t,n,s,r){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=No(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function pt(e){return yt(e)?pt(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function on(e){return!!(e&&e.__v_isShallow)}function Ur(e){return pt(e)||yt(e)}function Y(e){const t=e&&e.__v_raw;return t?Y(t):e}function It(e){return sn(e,"__v_skip",!0),e}const Nt=e=>ee(e)?yn(e):e,gs=e=>ee(e)?bn(e):e;function ms(e){We&&Se&&(e=Y(e),Nr(e.dep||(e.dep=as())))}function _s(e,t){e=Y(e);const n=e.dep;n&&Vn(n)}function le(e){return!!(e&&e.__v_isRef===!0)}function ge(e){return Wr(e,!1)}function Kr(e){return Wr(e,!0)}function Wr(e,t){return le(e)?e:new Ho(e,t)}class Ho{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Y(t),this._value=n?t:Nt(t)}get value(){return ms(this),this._value}set value(t){const n=this.__v_isShallow||on(t)||yt(t);t=n?t:Y(t),Lt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Nt(t),_s(this))}}function Vr(e){return le(e)?e.value:e}const jo={get:(e,t,n)=>Vr(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return le(r)&&!le(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function qr(e){return pt(e)?e:new Proxy(e,jo)}class Do{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>ms(this),()=>_s(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Bo(e){return new Do(e)}class ko{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return uo(Y(this._object),this._key)}}class Uo{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ko(e,t,n){return le(e)?e:K(e)?new Uo(e):ee(e)&&arguments.length>1?Wo(e,t,n):ge(e)}function Wo(e,t,n){const s=e[t];return le(s)?s:new ko(e,t,n)}class Vo{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new us(t,()=>{this._dirty||(this._dirty=!0,_s(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=Y(this);return ms(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function qo(e,t,n=!1){let s,r;const i=K(e);return i?(s=e,r=Pe):(s=e.get,r=e.set),new Vo(s,r,i||!r,n)}function Ve(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){vn(i,t,n)}return r}function Ee(e,t,n,s){if(K(e)){const i=Ve(e,t,n,s);return i&&Ar(i)&&i.catch(o=>{vn(o,t,n)}),i}const r=[];for(let i=0;i>>1;Ht(ue[s])Me&&ue.splice(t,1)}function Xo(e){j(e)?gt.push(...e):(!$e||!$e.includes(e,e.allowRecurse?et+1:et))&>.push(e),Yr()}function Bs(e,t=$t?Me+1:0){for(;tHt(n)-Ht(s)),et=0;et<$e.length;et++)$e[et]();$e=null,et=0}}const Ht=e=>e.id==null?1/0:e.id,Qo=(e,t)=>{const n=Ht(e)-Ht(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Jr(e){qn=!1,$t=!0,ue.sort(Qo);const t=Pe;try{for(Me=0;Mese(A)?A.trim():A)),h&&(r=n.map(Qi))}let l,c=s[l=en(t)]||s[l=en(Le(t))];!c&&i&&(c=s[l=en(lt(t))]),c&&Ee(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ee(u,e,6,r)}}function Xr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!K(e)){const c=u=>{const d=Xr(u,t,!0);d&&(l=!0,ie(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ee(e)&&s.set(e,null),null):(j(i)?i.forEach(c=>o[c]=null):ie(o,i),ee(e)&&s.set(e,o),o)}function Cn(e,t){return!e||!Bt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,lt(t))||z(e,t))}let fe=null,xn=null;function cn(e){const t=fe;return fe=e,xn=e&&e.type.__scopeId||null,t}function va(e){xn=e}function wa(){xn=null}function Go(e,t=fe,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Zs(-1);const i=cn(t);let o;try{o=e(...r)}finally{cn(i),s._d&&Zs(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Mn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:u,render:d,renderCache:h,data:b,setupState:A,ctx:P,inheritAttrs:O}=e;let B,g;const w=cn(e);try{if(n.shapeFlag&4){const E=r||s;B=Ae(d.call(E,E,h,i,A,b,P)),g=c}else{const E=t;B=Ae(E.length>1?E(i,{attrs:c,slots:l,emit:u}):E(i,null)),g=t.props?c:el(c)}}catch(E){Mt.length=0,vn(E,e,1),B=ae(ve)}let H=B;if(g&&O!==!1){const E=Object.keys(g),{shapeFlag:D}=H;E.length&&D&7&&(o&&E.some(ss)&&(g=tl(g,o)),H=Ye(H,g))}return n.dirs&&(H=Ye(H),H.dirs=H.dirs?H.dirs.concat(n.dirs):n.dirs),n.transition&&(H.transition=n.transition),B=H,cn(w),B}const el=e=>{let t;for(const n in e)(n==="class"||n==="style"||Bt(n))&&((t||(t={}))[n]=e[n]);return t},tl=(e,t)=>{const n={};for(const s in e)(!ss(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function nl(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ks(s,o,u):!!o;if(c&8){const d=t.dynamicProps;for(let h=0;he.__isSuspense;function Qr(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):Xo(e)}function Zr(e,t){return En(e,null,t)}function Ca(e,t){return En(e,null,{flush:"post"})}const Yt={};function qe(e,t,n){return En(e,t,n)}function En(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=te){var l;const c=Rr()===((l=oe)==null?void 0:l.scope)?oe:null;let u,d=!1,h=!1;if(le(e)?(u=()=>e.value,d=on(e)):pt(e)?(u=()=>e,s=!0):j(e)?(h=!0,d=e.some(E=>pt(E)||on(E)),u=()=>e.map(E=>{if(le(E))return E.value;if(pt(E))return ft(E);if(K(E))return Ve(E,c,2)})):K(e)?t?u=()=>Ve(e,c,2):u=()=>{if(!(c&&c.isUnmounted))return b&&b(),Ee(e,c,3,[A])}:u=Pe,t&&s){const E=u;u=()=>ft(E())}let b,A=E=>{b=w.onStop=()=>{Ve(E,c,4)}},P;if(Dt)if(A=Pe,t?n&&Ee(t,c,3,[u(),h?[]:void 0,A]):u(),r==="sync"){const E=Zl();P=E.__watcherHandles||(E.__watcherHandles=[])}else return Pe;let O=h?new Array(e.length).fill(Yt):Yt;const B=()=>{if(w.active)if(t){const E=w.run();(s||d||(h?E.some((D,q)=>Lt(D,O[q])):Lt(E,O)))&&(b&&b(),Ee(t,c,3,[E,O===Yt?void 0:h&&O[0]===Yt?[]:O,A]),O=E)}else w.run()};B.allowRecurse=!!t;let g;r==="sync"?g=B:r==="post"?g=()=>he(B,c&&c.suspense):(B.pre=!0,c&&(B.id=c.uid),g=()=>bs(B));const w=new us(u,g);t?n?B():O=w.run():r==="post"?he(w.run.bind(w),c&&c.suspense):w.run();const H=()=>{w.stop(),c&&c.scope&&rs(c.scope.effects,w)};return P&&P.push(H),H}function il(e,t,n){const s=this.proxy,r=se(e)?e.includes(".")?Gr(s,e):()=>s[e]:e.bind(s,s);let i;K(t)?i=t:(i=t.handler,n=t);const o=oe;vt(this);const l=En(r,i.bind(s),n);return o?vt(o):rt(),l}function Gr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{ft(n,t)});else if(Or(e))for(const n in e)ft(e[n],t);return e}function Fe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o{e.isMounted=!0}),ii(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],ei={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},ll={name:"BaseTransition",props:ei,setup(e,{slots:t}){const n=Pn(),s=ol();let r;return()=>{const i=t.default&&ni(t.default(),!0);if(!i||!i.length)return;let o=i[0];if(i.length>1){for(const O of i)if(O.type!==ve){o=O;break}}const l=Y(e),{mode:c}=l;if(s.isLeaving)return Ln(o);const u=Us(o);if(!u)return Ln(o);const d=zn(u,l,s,n);Yn(u,d);const h=n.subTree,b=h&&Us(h);let A=!1;const{getTransitionKey:P}=u.type;if(P){const O=P();r===void 0?r=O:O!==r&&(r=O,A=!0)}if(b&&b.type!==ve&&(!tt(u,b)||A)){const O=zn(b,l,s,n);if(Yn(b,O),c==="out-in")return s.isLeaving=!0,O.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},Ln(o);c==="in-out"&&u.type!==ve&&(O.delayLeave=(B,g,w)=>{const H=ti(s,b);H[String(b.key)]=b,B._leaveCb=()=>{g(),B._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=w})}return o}}},cl=ll;function ti(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function zn(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:h,onLeave:b,onAfterLeave:A,onLeaveCancelled:P,onBeforeAppear:O,onAppear:B,onAfterAppear:g,onAppearCancelled:w}=t,H=String(e.key),E=ti(n,e),D=(m,F)=>{m&&Ee(m,s,9,F)},q=(m,F)=>{const M=F[1];D(m,F),j(m)?m.every(J=>J.length<=1)&&M():m.length<=1&&M()},U={mode:i,persisted:o,beforeEnter(m){let F=l;if(!n.isMounted)if(r)F=O||l;else return;m._leaveCb&&m._leaveCb(!0);const M=E[H];M&&tt(e,M)&&M.el._leaveCb&&M.el._leaveCb(),D(F,[m])},enter(m){let F=c,M=u,J=d;if(!n.isMounted)if(r)F=B||c,M=g||u,J=w||d;else return;let I=!1;const W=m._enterCb=L=>{I||(I=!0,L?D(J,[m]):D(M,[m]),U.delayedLeave&&U.delayedLeave(),m._enterCb=void 0)};F?q(F,[m,W]):W()},leave(m,F){const M=String(e.key);if(m._enterCb&&m._enterCb(!0),n.isUnmounting)return F();D(h,[m]);let J=!1;const I=m._leaveCb=W=>{J||(J=!0,F(),W?D(P,[m]):D(A,[m]),m._leaveCb=void 0,E[M]===e&&delete E[M])};E[M]=e,b?q(b,[m,I]):I()},clone(m){return zn(m,t,n,s)}};return U}function Ln(e){if(Tn(e))return e=Ye(e),e.children=null,e}function Us(e){return Tn(e)?e.children?e.children[0]:void 0:e}function Yn(e,t){e.shapeFlag&6&&e.component?Yn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ni(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iie({name:e.name},t,{setup:e}))():e}const mt=e=>!!e.type.__asyncLoader,Tn=e=>e.type.__isKeepAlive;function al(e,t){ri(e,"a",t)}function ul(e,t){ri(e,"da",t)}function ri(e,t,n=oe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(An(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Tn(r.parent.vnode)&&fl(s,t,n,r),r=r.parent}}function fl(e,t,n,s){const r=An(t,e,s,!0);Sn(()=>{rs(s[t],r)},n)}function An(e,t,n=oe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Ct(),vt(n);const l=Ee(t,n,e,o);return rt(),xt(),l});return s?r.unshift(i):r.push(i),i}}const je=e=>(t,n=oe)=>(!Dt||e==="sp")&&An(e,(...s)=>t(...s),n),dl=je("bm"),Et=je("m"),hl=je("bu"),pl=je("u"),ii=je("bum"),Sn=je("um"),gl=je("sp"),ml=je("rtg"),_l=je("rtc");function yl(e,t=oe){An("ec",e,t)}const vs="components";function xa(e,t){return li(vs,e,!0,t)||e}const oi=Symbol.for("v-ndc");function Ea(e){return se(e)?li(vs,e,!1)||e:e||oi}function li(e,t,n=!0,s=!1){const r=fe||oe;if(r){const i=r.type;if(e===vs){const l=Jl(i,!1);if(l&&(l===t||l===Le(t)||l===mn(Le(t))))return i}const o=Ks(r[e]||i[e],t)||Ks(r.appContext[e],t);return!o&&s?i:o}}function Ks(e,t){return e&&(e[t]||e[Le(t)]||e[mn(Le(t))])}function Ta(e,t,n,s){let r;const i=n&&n[s];if(j(e)||se(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;ldn(t)?!(t.type===ve||t.type===pe&&!ci(t.children)):!0)?e:null}function Sa(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:en(s)]=e[s];return n}const Jn=e=>e?xi(e)?Ts(e)||e.proxy:Jn(e.parent):null,Rt=ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Jn(e.parent),$root:e=>Jn(e.root),$emit:e=>e.emit,$options:e=>ws(e),$forceUpdate:e=>e.f||(e.f=()=>bs(e.update)),$nextTick:e=>e.n||(e.n=wn.bind(e.proxy)),$watch:e=>il.bind(e)}),Nn=(e,t)=>e!==te&&!e.__isScriptSetup&&z(e,t),bl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const A=o[t];if(A!==void 0)switch(A){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Nn(s,t))return o[t]=1,s[t];if(r!==te&&z(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&z(u,t))return o[t]=3,i[t];if(n!==te&&z(n,t))return o[t]=4,n[t];Xn&&(o[t]=0)}}const d=Rt[t];let h,b;if(d)return t==="$attrs"&&me(e,"get",t),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&z(n,t))return o[t]=4,n[t];if(b=c.config.globalProperties,z(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Nn(r,t)?(r[t]=n,!0):s!==te&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&z(e,o)||Nn(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Rt,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Oa(){return vl().slots}function vl(){const e=Pn();return e.setupContext||(e.setupContext=Ti(e))}function Ws(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Xn=!0;function wl(e){const t=ws(e),n=e.proxy,s=e.ctx;Xn=!1,t.beforeCreate&&Vs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:d,beforeMount:h,mounted:b,beforeUpdate:A,updated:P,activated:O,deactivated:B,beforeDestroy:g,beforeUnmount:w,destroyed:H,unmounted:E,render:D,renderTracked:q,renderTriggered:U,errorCaptured:m,serverPrefetch:F,expose:M,inheritAttrs:J,components:I,directives:W,filters:L}=t;if(u&&Cl(u,s,null),o)for(const ne in o){const Z=o[ne];K(Z)&&(s[ne]=Z.bind(n))}if(r){const ne=r.call(n,n);ee(ne)&&(e.data=yn(ne))}if(Xn=!0,i)for(const ne in i){const Z=i[ne],Je=K(Z)?Z.bind(n,n):K(Z.get)?Z.get.bind(n,n):Pe,kt=!K(Z)&&K(Z.set)?Z.set.bind(n):Pe,Xe=ce({get:Je,set:kt});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>Xe.value,set:Ie=>Xe.value=Ie})}if(l)for(const ne in l)ai(l[ne],s,n,ne);if(c){const ne=K(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Z=>{Ol(Z,ne[Z])})}d&&Vs(d,e,"c");function X(ne,Z){j(Z)?Z.forEach(Je=>ne(Je.bind(n))):Z&&ne(Z.bind(n))}if(X(dl,h),X(Et,b),X(hl,A),X(pl,P),X(al,O),X(ul,B),X(yl,m),X(_l,q),X(ml,U),X(ii,w),X(Sn,E),X(gl,F),j(M))if(M.length){const ne=e.exposed||(e.exposed={});M.forEach(Z=>{Object.defineProperty(ne,Z,{get:()=>n[Z],set:Je=>n[Z]=Je})})}else e.exposed||(e.exposed={});D&&e.render===Pe&&(e.render=D),J!=null&&(e.inheritAttrs=J),I&&(e.components=I),W&&(e.directives=W)}function Cl(e,t,n=Pe){j(e)&&(e=Qn(e));for(const s in e){const r=e[s];let i;ee(r)?"default"in r?i=_t(r.from||s,r.default,!0):i=_t(r.from||s):i=_t(r),le(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Vs(e,t,n){Ee(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function ai(e,t,n,s){const r=s.includes(".")?Gr(n,s):()=>n[s];if(se(e)){const i=t[e];K(i)&&qe(r,i)}else if(K(e))qe(r,e.bind(n));else if(ee(e))if(j(e))e.forEach(i=>ai(i,t,n,s));else{const i=K(e.handler)?e.handler.bind(n):t[e.handler];K(i)&&qe(r,i,e)}}function ws(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>an(c,u,o,!0)),an(c,t,o)),ee(t)&&i.set(t,c),c}function an(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&an(e,i,n,!0),r&&r.forEach(o=>an(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=xl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const xl={data:qs,props:zs,emits:zs,methods:Ot,computed:Ot,beforeCreate:de,created:de,beforeMount:de,mounted:de,beforeUpdate:de,updated:de,beforeDestroy:de,beforeUnmount:de,destroyed:de,unmounted:de,activated:de,deactivated:de,errorCaptured:de,serverPrefetch:de,components:Ot,directives:Ot,watch:Tl,provide:qs,inject:El};function qs(e,t){return t?e?function(){return ie(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function El(e,t){return Ot(Qn(e),Qn(t))}function Qn(e){if(j(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(s&&s.proxy):t}}function Pl(e,t,n,s=!1){const r={},i={};sn(i,On,1),e.propsDefaults=Object.create(null),fi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:$o(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Il(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=Y(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[b,A]=di(h,t,!0);ie(o,b),A&&l.push(...A)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return ee(e)&&s.set(e,dt),dt;if(j(i))for(let d=0;d-1,A[1]=O<0||P-1||z(A,"default"))&&l.push(h)}}}const u=[o,l];return ee(e)&&s.set(e,u),u}function Ys(e){return e[0]!=="$"}function Js(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Xs(e,t){return Js(e)===Js(t)}function Qs(e,t){return j(t)?t.findIndex(n=>Xs(n,e)):K(t)&&Xs(t,e)?0:-1}const hi=e=>e[0]==="_"||e==="$stable",Cs=e=>j(e)?e.map(Ae):[Ae(e)],Rl=(e,t,n)=>{if(t._n)return t;const s=Go((...r)=>Cs(t(...r)),n);return s._c=!1,s},pi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(hi(r))continue;const i=e[r];if(K(i))t[r]=Rl(r,i,s);else if(i!=null){const o=Cs(i);t[r]=()=>o}}},gi=(e,t)=>{const n=Cs(t);e.slots.default=()=>n},Fl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Y(t),sn(t,"_",n)):pi(t,e.slots={})}else e.slots={},t&&gi(e,t);sn(e.slots,On,1)},Ml=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(ie(r,t),!n&&l===1&&delete r._):(i=!t.$stable,pi(t,r)),o=t}else t&&(gi(e,t),o={default:1});if(i)for(const l in r)!hi(l)&&!(l in o)&&delete r[l]};function fn(e,t,n,s,r=!1){if(j(e)){e.forEach((b,A)=>fn(b,t&&(j(t)?t[A]:t),n,s,r));return}if(mt(s)&&!r)return;const i=s.shapeFlag&4?Ts(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,d=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(se(u)?(d[u]=null,z(h,u)&&(h[u]=null)):le(u)&&(u.value=null)),K(c))Ve(c,l,12,[o,d]);else{const b=se(c),A=le(c);if(b||A){const P=()=>{if(e.f){const O=b?z(h,c)?h[c]:d[c]:c.value;r?j(O)&&rs(O,i):j(O)?O.includes(i)||O.push(i):b?(d[c]=[i],z(h,c)&&(h[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else b?(d[c]=o,z(h,c)&&(h[c]=o)):A&&(c.value=o,e.k&&(d[e.k]=o))};o?(P.id=-1,he(P,n)):P()}}}let Be=!1;const Jt=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Xt=e=>e.nodeType===8;function Ll(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,d=(g,w)=>{if(!w.hasChildNodes()){n(null,g,w),ln(),w._vnode=g;return}Be=!1,h(w.firstChild,g,null,null,null),ln(),w._vnode=g,Be&&console.error("Hydration completed but contains mismatches.")},h=(g,w,H,E,D,q=!1)=>{const U=Xt(g)&&g.data==="[",m=()=>O(g,w,H,E,D,U),{type:F,ref:M,shapeFlag:J,patchFlag:I}=w;let W=g.nodeType;w.el=g,I===-2&&(q=!1,w.dynamicChildren=null);let L=null;switch(F){case bt:W!==3?w.children===""?(c(w.el=r(""),o(g),g),L=g):L=m():(g.data!==w.children&&(Be=!0,g.data=w.children),L=i(g));break;case ve:W!==8||U?L=m():L=i(g);break;case Ft:if(U&&(g=i(g),W=g.nodeType),W===1||W===3){L=g;const _e=!w.children.length;for(let X=0;X{q=q||!!w.dynamicChildren;const{type:U,props:m,patchFlag:F,shapeFlag:M,dirs:J}=w,I=U==="input"&&J||U==="option";if(I||F!==-1){if(J&&Fe(w,null,H,"created"),m)if(I||!q||F&48)for(const L in m)(I&&L.endsWith("value")||Bt(L)&&!Pt(L))&&s(g,L,null,m[L],!1,void 0,H);else m.onClick&&s(g,"onClick",null,m.onClick,!1,void 0,H);let W;if((W=m&&m.onVnodeBeforeMount)&&Ce(W,H,w),J&&Fe(w,null,H,"beforeMount"),((W=m&&m.onVnodeMounted)||J)&&Qr(()=>{W&&Ce(W,H,w),J&&Fe(w,null,H,"mounted")},E),M&16&&!(m&&(m.innerHTML||m.textContent))){let L=A(g.firstChild,w,g,H,E,D,q);for(;L;){Be=!0;const _e=L;L=L.nextSibling,l(_e)}}else M&8&&g.textContent!==w.children&&(Be=!0,g.textContent=w.children)}return g.nextSibling},A=(g,w,H,E,D,q,U)=>{U=U||!!w.dynamicChildren;const m=w.children,F=m.length;for(let M=0;M{const{slotScopeIds:U}=w;U&&(D=D?D.concat(U):U);const m=o(g),F=A(i(g),w,m,H,E,D,q);return F&&Xt(F)&&F.data==="]"?i(w.anchor=F):(Be=!0,c(w.anchor=u("]"),m,F),F)},O=(g,w,H,E,D,q)=>{if(Be=!0,w.el=null,q){const F=B(g);for(;;){const M=i(g);if(M&&M!==F)l(M);else break}}const U=i(g),m=o(g);return l(g),n(null,w,m,U,H,E,Jt(m),D),U},B=g=>{let w=0;for(;g;)if(g=i(g),g&&Xt(g)&&(g.data==="["&&w++,g.data==="]")){if(w===0)return i(g);w--}return g};return[d,h]}const he=Qr;function Nl(e){return $l(e,Ll)}function $l(e,t){const n=Un();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:d,parentNode:h,nextSibling:b,setScopeId:A=Pe,insertStaticContent:P}=e,O=(a,f,p,y=null,_=null,x=null,S=!1,C=null,T=!!f.dynamicChildren)=>{if(a===f)return;a&&!tt(a,f)&&(y=Ut(a),Ie(a,_,x,!0),a=null),f.patchFlag===-2&&(T=!1,f.dynamicChildren=null);const{type:v,ref:N,shapeFlag:R}=f;switch(v){case bt:B(a,f,p,y);break;case ve:g(a,f,p,y);break;case Ft:a==null&&w(f,p,y,S);break;case pe:I(a,f,p,y,_,x,S,C,T);break;default:R&1?D(a,f,p,y,_,x,S,C,T):R&6?W(a,f,p,y,_,x,S,C,T):(R&64||R&128)&&v.process(a,f,p,y,_,x,S,C,T,ct)}N!=null&&_&&fn(N,a&&a.ref,x,f||a,!f)},B=(a,f,p,y)=>{if(a==null)s(f.el=l(f.children),p,y);else{const _=f.el=a.el;f.children!==a.children&&u(_,f.children)}},g=(a,f,p,y)=>{a==null?s(f.el=c(f.children||""),p,y):f.el=a.el},w=(a,f,p,y)=>{[a.el,a.anchor]=P(a.children,f,p,y,a.el,a.anchor)},H=({el:a,anchor:f},p,y)=>{let _;for(;a&&a!==f;)_=b(a),s(a,p,y),a=_;s(f,p,y)},E=({el:a,anchor:f})=>{let p;for(;a&&a!==f;)p=b(a),r(a),a=p;r(f)},D=(a,f,p,y,_,x,S,C,T)=>{S=S||f.type==="svg",a==null?q(f,p,y,_,x,S,C,T):F(a,f,_,x,S,C,T)},q=(a,f,p,y,_,x,S,C)=>{let T,v;const{type:N,props:R,shapeFlag:$,transition:k,dirs:V}=a;if(T=a.el=o(a.type,x,R&&R.is,R),$&8?d(T,a.children):$&16&&m(a.children,T,null,y,_,x&&N!=="foreignObject",S,C),V&&Fe(a,null,y,"created"),U(T,a,a.scopeId,S,y),R){for(const Q in R)Q!=="value"&&!Pt(Q)&&i(T,Q,null,R[Q],x,a.children,y,_,Ne);"value"in R&&i(T,"value",null,R.value),(v=R.onVnodeBeforeMount)&&Ce(v,y,a)}V&&Fe(a,null,y,"beforeMount");const G=(!_||_&&!_.pendingBranch)&&k&&!k.persisted;G&&k.beforeEnter(T),s(T,f,p),((v=R&&R.onVnodeMounted)||G||V)&&he(()=>{v&&Ce(v,y,a),G&&k.enter(T),V&&Fe(a,null,y,"mounted")},_)},U=(a,f,p,y,_)=>{if(p&&A(a,p),y)for(let x=0;x{for(let v=T;v{const C=f.el=a.el;let{patchFlag:T,dynamicChildren:v,dirs:N}=f;T|=a.patchFlag&16;const R=a.props||te,$=f.props||te;let k;p&&Qe(p,!1),(k=$.onVnodeBeforeUpdate)&&Ce(k,p,f,a),N&&Fe(f,a,p,"beforeUpdate"),p&&Qe(p,!0);const V=_&&f.type!=="foreignObject";if(v?M(a.dynamicChildren,v,C,p,y,V,x):S||Z(a,f,C,null,p,y,V,x,!1),T>0){if(T&16)J(C,f,R,$,p,y,_);else if(T&2&&R.class!==$.class&&i(C,"class",null,$.class,_),T&4&&i(C,"style",R.style,$.style,_),T&8){const G=f.dynamicProps;for(let Q=0;Q{k&&Ce(k,p,f,a),N&&Fe(f,a,p,"updated")},y)},M=(a,f,p,y,_,x,S)=>{for(let C=0;C{if(p!==y){if(p!==te)for(const C in p)!Pt(C)&&!(C in y)&&i(a,C,p[C],null,S,f.children,_,x,Ne);for(const C in y){if(Pt(C))continue;const T=y[C],v=p[C];T!==v&&C!=="value"&&i(a,C,v,T,S,f.children,_,x,Ne)}"value"in y&&i(a,"value",p.value,y.value)}},I=(a,f,p,y,_,x,S,C,T)=>{const v=f.el=a?a.el:l(""),N=f.anchor=a?a.anchor:l("");let{patchFlag:R,dynamicChildren:$,slotScopeIds:k}=f;k&&(C=C?C.concat(k):k),a==null?(s(v,p,y),s(N,p,y),m(f.children,p,N,_,x,S,C,T)):R>0&&R&64&&$&&a.dynamicChildren?(M(a.dynamicChildren,$,p,_,x,S,C),(f.key!=null||_&&f===_.subTree)&&mi(a,f,!0)):Z(a,f,p,N,_,x,S,C,T)},W=(a,f,p,y,_,x,S,C,T)=>{f.slotScopeIds=C,a==null?f.shapeFlag&512?_.ctx.activate(f,p,y,S,T):L(f,p,y,_,x,S,T):_e(a,f,T)},L=(a,f,p,y,_,x,S)=>{const C=a.component=Vl(a,y,_);if(Tn(a)&&(C.ctx.renderer=ct),ql(C),C.asyncDep){if(_&&_.registerDep(C,X),!a.el){const T=C.subTree=ae(ve);g(null,T,f,p)}return}X(C,a,f,p,_,x,S)},_e=(a,f,p)=>{const y=f.component=a.component;if(nl(a,f,p))if(y.asyncDep&&!y.asyncResolved){ne(y,f,p);return}else y.next=f,Jo(y.update),y.update();else f.el=a.el,y.vnode=f},X=(a,f,p,y,_,x,S)=>{const C=()=>{if(a.isMounted){let{next:N,bu:R,u:$,parent:k,vnode:V}=a,G=N,Q;Qe(a,!1),N?(N.el=V.el,ne(a,N,S)):N=V,R&&Fn(R),(Q=N.props&&N.props.onVnodeBeforeUpdate)&&Ce(Q,k,N,V),Qe(a,!0);const re=Mn(a),Te=a.subTree;a.subTree=re,O(Te,re,h(Te.el),Ut(Te),a,_,x),N.el=re.el,G===null&&sl(a,re.el),$&&he($,_),(Q=N.props&&N.props.onVnodeUpdated)&&he(()=>Ce(Q,k,N,V),_)}else{let N;const{el:R,props:$}=f,{bm:k,m:V,parent:G}=a,Q=mt(f);if(Qe(a,!1),k&&Fn(k),!Q&&(N=$&&$.onVnodeBeforeMount)&&Ce(N,G,f),Qe(a,!0),R&&Rn){const re=()=>{a.subTree=Mn(a),Rn(R,a.subTree,a,_,null)};Q?f.type.__asyncLoader().then(()=>!a.isUnmounted&&re()):re()}else{const re=a.subTree=Mn(a);O(null,re,p,y,a,_,x),f.el=re.el}if(V&&he(V,_),!Q&&(N=$&&$.onVnodeMounted)){const re=f;he(()=>Ce(N,G,re),_)}(f.shapeFlag&256||G&&mt(G.vnode)&&G.vnode.shapeFlag&256)&&a.a&&he(a.a,_),a.isMounted=!0,f=p=y=null}},T=a.effect=new us(C,()=>bs(v),a.scope),v=a.update=()=>T.run();v.id=a.uid,Qe(a,!0),v()},ne=(a,f,p)=>{f.component=a;const y=a.vnode.props;a.vnode=f,a.next=null,Il(a,f.props,y,p),Ml(a,f.children,p),Ct(),Bs(),xt()},Z=(a,f,p,y,_,x,S,C,T=!1)=>{const v=a&&a.children,N=a?a.shapeFlag:0,R=f.children,{patchFlag:$,shapeFlag:k}=f;if($>0){if($&128){kt(v,R,p,y,_,x,S,C,T);return}else if($&256){Je(v,R,p,y,_,x,S,C,T);return}}k&8?(N&16&&Ne(v,_,x),R!==v&&d(p,R)):N&16?k&16?kt(v,R,p,y,_,x,S,C,T):Ne(v,_,x,!0):(N&8&&d(p,""),k&16&&m(R,p,y,_,x,S,C,T))},Je=(a,f,p,y,_,x,S,C,T)=>{a=a||dt,f=f||dt;const v=a.length,N=f.length,R=Math.min(v,N);let $;for($=0;$N?Ne(a,_,x,!0,!1,R):m(f,p,y,_,x,S,C,T,R)},kt=(a,f,p,y,_,x,S,C,T)=>{let v=0;const N=f.length;let R=a.length-1,$=N-1;for(;v<=R&&v<=$;){const k=a[v],V=f[v]=T?Ke(f[v]):Ae(f[v]);if(tt(k,V))O(k,V,p,null,_,x,S,C,T);else break;v++}for(;v<=R&&v<=$;){const k=a[R],V=f[$]=T?Ke(f[$]):Ae(f[$]);if(tt(k,V))O(k,V,p,null,_,x,S,C,T);else break;R--,$--}if(v>R){if(v<=$){const k=$+1,V=k$)for(;v<=R;)Ie(a[v],_,x,!0),v++;else{const k=v,V=v,G=new Map;for(v=V;v<=$;v++){const ye=f[v]=T?Ke(f[v]):Ae(f[v]);ye.key!=null&&G.set(ye.key,v)}let Q,re=0;const Te=$-V+1;let at=!1,Ps=0;const Tt=new Array(Te);for(v=0;v=Te){Ie(ye,_,x,!0);continue}let Re;if(ye.key!=null)Re=G.get(ye.key);else for(Q=V;Q<=$;Q++)if(Tt[Q-V]===0&&tt(ye,f[Q])){Re=Q;break}Re===void 0?Ie(ye,_,x,!0):(Tt[Re-V]=v+1,Re>=Ps?Ps=Re:at=!0,O(ye,f[Re],p,null,_,x,S,C,T),re++)}const Is=at?Hl(Tt):dt;for(Q=Is.length-1,v=Te-1;v>=0;v--){const ye=V+v,Re=f[ye],Rs=ye+1{const{el:x,type:S,transition:C,children:T,shapeFlag:v}=a;if(v&6){Xe(a.component.subTree,f,p,y);return}if(v&128){a.suspense.move(f,p,y);return}if(v&64){S.move(a,f,p,ct);return}if(S===pe){s(x,f,p);for(let R=0;RC.enter(x),_);else{const{leave:R,delayLeave:$,afterLeave:k}=C,V=()=>s(x,f,p),G=()=>{R(x,()=>{V(),k&&k()})};$?$(x,V,G):G()}else s(x,f,p)},Ie=(a,f,p,y=!1,_=!1)=>{const{type:x,props:S,ref:C,children:T,dynamicChildren:v,shapeFlag:N,patchFlag:R,dirs:$}=a;if(C!=null&&fn(C,null,p,a,!0),N&256){f.ctx.deactivate(a);return}const k=N&1&&$,V=!mt(a);let G;if(V&&(G=S&&S.onVnodeBeforeUnmount)&&Ce(G,f,a),N&6)Wi(a.component,p,y);else{if(N&128){a.suspense.unmount(p,y);return}k&&Fe(a,null,f,"beforeUnmount"),N&64?a.type.remove(a,f,p,_,ct,y):v&&(x!==pe||R>0&&R&64)?Ne(v,f,p,!1,!0):(x===pe&&R&384||!_&&N&16)&&Ne(T,f,p),y&&Ss(a)}(V&&(G=S&&S.onVnodeUnmounted)||k)&&he(()=>{G&&Ce(G,f,a),k&&Fe(a,null,f,"unmounted")},p)},Ss=a=>{const{type:f,el:p,anchor:y,transition:_}=a;if(f===pe){Ki(p,y);return}if(f===Ft){E(a);return}const x=()=>{r(p),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(a.shapeFlag&1&&_&&!_.persisted){const{leave:S,delayLeave:C}=_,T=()=>S(p,x);C?C(a.el,x,T):T()}else x()},Ki=(a,f)=>{let p;for(;a!==f;)p=b(a),r(a),a=p;r(f)},Wi=(a,f,p)=>{const{bum:y,scope:_,update:x,subTree:S,um:C}=a;y&&Fn(y),_.stop(),x&&(x.active=!1,Ie(S,a,f,p)),C&&he(C,f),he(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},Ne=(a,f,p,y=!1,_=!1,x=0)=>{for(let S=x;Sa.shapeFlag&6?Ut(a.component.subTree):a.shapeFlag&128?a.suspense.next():b(a.anchor||a.el),Os=(a,f,p)=>{a==null?f._vnode&&Ie(f._vnode,null,null,!0):O(f._vnode||null,a,f,null,null,null,p),Bs(),ln(),f._vnode=a},ct={p:O,um:Ie,m:Xe,r:Ss,mt:L,mc:m,pc:Z,pbc:M,n:Ut,o:e};let In,Rn;return t&&([In,Rn]=t(ct)),{render:Os,hydrate:In,createApp:Sl(Os,In)}}function Qe({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function mi(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const jl=e=>e.__isTeleport,pe=Symbol.for("v-fgt"),bt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),Ft=Symbol.for("v-stc"),Mt=[];let Oe=null;function _i(e=!1){Mt.push(Oe=e?null:[])}function Dl(){Mt.pop(),Oe=Mt[Mt.length-1]||null}let jt=1;function Zs(e){jt+=e}function yi(e){return e.dynamicChildren=jt>0?Oe||dt:null,Dl(),jt>0&&Oe&&Oe.push(e),e}function Pa(e,t,n,s,r,i){return yi(wi(e,t,n,s,r,i,!0))}function bi(e,t,n,s,r){return yi(ae(e,t,n,s,r,!0))}function dn(e){return e?e.__v_isVNode===!0:!1}function tt(e,t){return e.type===t.type&&e.key===t.key}const On="__vInternal",vi=({key:e})=>e??null,tn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||le(e)||K(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function wi(e,t=null,n=null,s=0,r=null,i=e===pe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&vi(t),ref:t&&tn(t),scopeId:xn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:fe};return l?(xs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),jt>0&&!o&&Oe&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Oe.push(c),c}const ae=Bl;function Bl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===oi)&&(e=ve),dn(e)){const l=Ye(e,t,!0);return n&&xs(l,n),jt>0&&!i&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(Xl(e)&&(e=e.__vccOpts),t){t=kl(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=cs(l)),ee(c)&&(Ur(c)&&!j(c)&&(c=ie({},c)),t.style=ls(c))}const o=se(e)?1:rl(e)?128:jl(e)?64:ee(e)?4:K(e)?2:0;return wi(e,t,n,s,r,o,i,!0)}function kl(e){return e?Ur(e)||On in e?ie({},e):e:null}function Ye(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?Ul(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&vi(l),ref:t&&t.ref?n&&r?j(r)?r.concat(tn(t)):[r,tn(t)]:tn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==pe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ye(e.ssContent),ssFallback:e.ssFallback&&Ye(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ci(e=" ",t=0){return ae(bt,null,e,t)}function Ia(e,t){const n=ae(Ft,null,e);return n.staticCount=t,n}function Ra(e="",t=!1){return t?(_i(),bi(ve,null,e)):ae(ve,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ae(ve):j(e)?ae(pe,null,e.slice()):typeof e=="object"?Ke(e):ae(bt,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ye(e)}function xs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),xs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(On in t)?t._ctx=fe:r===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),s&64?(n=16,t=[Ci(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ul(...e){const t={};for(let n=0;noe||fe;let Es,ut,Gs="__VUE_INSTANCE_SETTERS__";(ut=Un()[Gs])||(ut=Un()[Gs]=[]),ut.push(e=>oe=e),Es=e=>{ut.length>1?ut.forEach(t=>t(e)):ut[0](e)};const vt=e=>{Es(e),e.scope.on()},rt=()=>{oe&&oe.scope.off(),Es(null)};function xi(e){return e.vnode.shapeFlag&4}let Dt=!1;function ql(e,t=!1){Dt=t;const{props:n,children:s}=e.vnode,r=xi(e);Pl(e,n,r,t),Fl(e,s);const i=r?zl(e,t):void 0;return Dt=!1,i}function zl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=It(new Proxy(e.ctx,bl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Ti(e):null;vt(e),Ct();const i=Ve(s,e,0,[e.props,r]);if(xt(),rt(),Ar(i)){if(i.then(rt,rt),t)return i.then(o=>{er(e,o,t)}).catch(o=>{vn(o,e,0)});e.asyncDep=i}else er(e,i,t)}else Ei(e,t)}function er(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=qr(t)),Ei(e,n)}let tr;function Ei(e,t,n){const s=e.type;if(!e.render){if(!t&&tr&&!s.render){const r=s.template||ws(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=ie(ie({isCustomElement:i,delimiters:l},o),c);s.render=tr(r,u)}}e.render=s.render||Pe}vt(e),Ct(),wl(e),xt(),rt()}function Yl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return me(e,"get","$attrs"),t[n]}}))}function Ti(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Yl(e)},slots:e.slots,emit:e.emit,expose:t}}function Ts(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(qr(It(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Rt)return Rt[n](e)},has(t,n){return n in t||n in Rt}}))}function Jl(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Xl(e){return K(e)&&"__vccOpts"in e}const ce=(e,t)=>qo(e,t,Dt);function Gn(e,t,n){const s=arguments.length;return s===2?ee(t)&&!j(t)?dn(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&dn(n)&&(n=[n]),ae(e,t,n))}const Ql=Symbol.for("v-scx"),Zl=()=>_t(Ql),Gl="3.3.4",ec="http://www.w3.org/2000/svg",nt=typeof document<"u"?document:null,nr=nt&&nt.createElement("template"),tc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?nt.createElementNS(ec,e):nt.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>nt.createTextNode(e),createComment:e=>nt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>nt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{nr.innerHTML=s?`${e}`:e;const l=nr.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function nc(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function sc(e,t,n){const s=e.style,r=se(n);if(n&&!r){if(t&&!se(t))for(const i in t)n[i]==null&&es(s,i,"");for(const i in n)es(s,i,n[i])}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const sr=/\s*!important$/;function es(e,t,n){if(j(n))n.forEach(s=>es(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=rc(e,t);sr.test(n)?e.setProperty(lt(s),n.replace(sr,""),"important"):e[s]=n}}const rr=["Webkit","Moz","ms"],$n={};function rc(e,t){const n=$n[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return $n[t]=s;s=mn(s);for(let r=0;rHn||(fc.then(()=>Hn=0),Hn=Date.now());function hc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ee(pc(s,n.value),t,5,[s])};return n.value=e,n.attached=dc(),n}function pc(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const lr=/^on[a-z]/,gc=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?nc(e,s,r):t==="style"?sc(e,n,s):Bt(t)?ss(t)||ac(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):mc(e,t,s,r))?oc(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ic(e,t,s,r))};function mc(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&lr.test(t)&&K(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||lr.test(t)&&se(n)?!1:t in e}const ke="transition",At="animation",Ai=(e,{slots:t})=>Gn(cl,_c(e),t);Ai.displayName="Transition";const Si={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ai.props=ie({},ei,Si);const Ze=(e,t=[])=>{j(e)?e.forEach(n=>n(...t)):e&&e(...t)},cr=e=>e?j(e)?e.some(t=>t.length>1):e.length>1:!1;function _c(e){const t={};for(const I in e)I in Si||(t[I]=e[I]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:b=`${n}-leave-active`,leaveToClass:A=`${n}-leave-to`}=e,P=yc(r),O=P&&P[0],B=P&&P[1],{onBeforeEnter:g,onEnter:w,onEnterCancelled:H,onLeave:E,onLeaveCancelled:D,onBeforeAppear:q=g,onAppear:U=w,onAppearCancelled:m=H}=t,F=(I,W,L)=>{Ge(I,W?d:l),Ge(I,W?u:o),L&&L()},M=(I,W)=>{I._isLeaving=!1,Ge(I,h),Ge(I,A),Ge(I,b),W&&W()},J=I=>(W,L)=>{const _e=I?U:w,X=()=>F(W,I,L);Ze(_e,[W,X]),ar(()=>{Ge(W,I?c:i),Ue(W,I?d:l),cr(_e)||ur(W,s,O,X)})};return ie(t,{onBeforeEnter(I){Ze(g,[I]),Ue(I,i),Ue(I,o)},onBeforeAppear(I){Ze(q,[I]),Ue(I,c),Ue(I,u)},onEnter:J(!1),onAppear:J(!0),onLeave(I,W){I._isLeaving=!0;const L=()=>M(I,W);Ue(I,h),wc(),Ue(I,b),ar(()=>{I._isLeaving&&(Ge(I,h),Ue(I,A),cr(E)||ur(I,s,B,L))}),Ze(E,[I,L])},onEnterCancelled(I){F(I,!1),Ze(H,[I])},onAppearCancelled(I){F(I,!0),Ze(m,[I])},onLeaveCancelled(I){M(I),Ze(D,[I])}})}function yc(e){if(e==null)return null;if(ee(e))return[jn(e.enter),jn(e.leave)];{const t=jn(e);return[t,t]}}function jn(e){return Zi(e)}function Ue(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ge(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function ar(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let bc=0;function ur(e,t,n,s){const r=e._endId=++bc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=vc(e,t);if(!o)return s();const u=o+"end";let d=0;const h=()=>{e.removeEventListener(u,b),i()},b=A=>{A.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[P]||"").split(", "),r=s(`${ke}Delay`),i=s(`${ke}Duration`),o=fr(r,i),l=s(`${At}Delay`),c=s(`${At}Duration`),u=fr(l,c);let d=null,h=0,b=0;t===ke?o>0&&(d=ke,h=o,b=i.length):t===At?u>0&&(d=At,h=u,b=c.length):(h=Math.max(o,u),d=h>0?o>u?ke:At:null,b=d?d===ke?i.length:c.length:0);const A=d===ke&&/\b(transform|all)(,|$)/.test(s(`${ke}Property`).toString());return{type:d,timeout:h,propCount:b,hasTransform:A}}function fr(e,t){for(;e.lengthdr(n)+dr(e[s])))}function dr(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function wc(){return document.body.offsetHeight}const Cc=["ctrl","shift","alt","meta"],xc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Cc.some(n=>e[`${n}Key`]&&!t.includes(n))},Fa=(e,t)=>(n,...s)=>{for(let r=0;rn=>{if(!("key"in n))return;const s=lt(n.key);if(t.some(r=>r===s||Ec[r]===s))return e(n)},Tc=ie({patchProp:gc},tc);let Dn,hr=!1;function Ac(){return Dn=hr?Dn:Nl(Tc),hr=!0,Dn}const La=(...e)=>{const t=Ac().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Sc(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Sc(e){return se(e)?document.querySelector(e):e}const Na=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Oc="modulepreload",Pc=function(e){return"/"+e},pr={},$a=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=Pc(i),i in pr)return;pr[i]=!0;const o=i.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(!!s)for(let d=r.length-1;d>=0;d--){const h=r[d];if(h.href===i&&(!o||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${l}`))return;const u=document.createElement("link");if(u.rel=o?"stylesheet":Oc,o||(u.as="script",u.crossOrigin=""),u.href=i,document.head.appendChild(u),o)return new Promise((d,h)=>{u.addEventListener("load",d),u.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Ic=window.__VP_SITE_DATA__;function As(e){return Rr()?(lo(e),!0):!1}function it(e){return typeof e=="function"?e():Vr(e)}const Oi=typeof window<"u"&&typeof document<"u",Rc=Object.prototype.toString,Fc=e=>Rc.call(e)==="[object Object]",Pi=()=>{},gr=Mc();function Mc(){var e;return Oi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function Lc(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Ii=e=>e();function Nc(e=Ii){const t=ge(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:bn(t),pause:n,resume:s,eventFilter:r}}function Ri(...e){if(e.length!==1)return Ko(...e);const t=e[0];return typeof t=="function"?bn(Bo(()=>({get:t,set:Pi}))):ge(t)}function $c(e,t,n={}){const{eventFilter:s=Ii,...r}=n;return qe(e,Lc(s,t),r)}function Hc(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Nc(s);return{stop:$c(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function jc(e,t=!0){Pn()?Et(e):t?e():wn(e)}function Fi(e){var t;const n=it(e);return(t=n==null?void 0:n.$el)!=null?t:n}const wt=Oi?window:void 0;function hn(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=wt):[t,n,s,r]=e,!t)return Pi;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,b,A)=>(d.addEventListener(h,b,A),()=>d.removeEventListener(h,b,A)),c=qe(()=>[Fi(t),it(r)],([d,h])=>{if(o(),!d)return;const b=Fc(h)?{...h}:h;i.push(...n.flatMap(A=>s.map(P=>l(d,A,P,b))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return As(u),u}function Dc(){const e=ge(!1);return Pn()&&Et(()=>{e.value=!0}),e}function Bc(e){const t=Dc();return ce(()=>(t.value,!!e()))}function kc(e,t={}){const{window:n=wt}=t,s=Bc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=ge(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Zr(()=>{s.value&&(l(),r=n.matchMedia(it(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return As(()=>{c(),l(),r=void 0}),i}const Qt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zt="__vueuse_ssr_handlers__",Uc=Kc();function Kc(){return Zt in Qt||(Qt[Zt]=Qt[Zt]||{}),Qt[Zt]}function Mi(e,t){return Uc[e]||t}function Wc(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Vc={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},mr="vueuse-storage";function qc(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=wt,eventFilter:b,onError:A=m=>{console.error(m)}}=s,P=(d?Kr:ge)(t);if(!n)try{n=Mi("getDefaultStorage",()=>{var m;return(m=wt)==null?void 0:m.localStorage})()}catch(m){A(m)}if(!n)return P;const O=it(t),B=Wc(O),g=(r=s.serializer)!=null?r:Vc[B],{pause:w,resume:H}=Hc(P,()=>E(P.value),{flush:i,deep:o,eventFilter:b});return h&&l&&(hn(h,"storage",U),hn(h,mr,q)),U(),P;function E(m){try{if(m==null)n.removeItem(e);else{const F=g.write(m),M=n.getItem(e);M!==F&&(n.setItem(e,F),h&&h.dispatchEvent(new CustomEvent(mr,{detail:{key:e,oldValue:M,newValue:F,storageArea:n}})))}}catch(F){A(F)}}function D(m){const F=m?m.newValue:n.getItem(e);if(F==null)return c&&O!==null&&n.setItem(e,g.write(O)),O;if(!m&&u){const M=g.read(F);return typeof u=="function"?u(M,O):B==="object"&&!Array.isArray(M)?{...O,...M}:M}else return typeof F!="string"?F:g.read(F)}function q(m){U(m.detail)}function U(m){if(!(m&&m.storageArea!==n)){if(m&&m.key==null){P.value=O;return}if(!(m&&m.key!==e)){w();try{(m==null?void 0:m.newValue)!==g.write(P.value)&&(P.value=D(m))}catch(F){A(F)}finally{m?wn(H):H()}}}}}function zc(e){return kc("(prefers-color-scheme: dark)",e)}function Yc(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=wt,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},b=zc({window:r}),A=ce(()=>b.value?"dark":"light"),P=c||(o==null?Ri(s):qc(o,s,i,{window:r,listenToStorageChanges:l})),O=ce(()=>P.value==="auto"?A.value:P.value),B=Mi("updateHTMLAttrs",(E,D,q)=>{const U=typeof E=="string"?r==null?void 0:r.document.querySelector(E):Fi(E);if(!U)return;let m;if(d){m=r.document.createElement("style");const F="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";m.appendChild(document.createTextNode(F)),r.document.head.appendChild(m)}if(D==="class"){const F=q.split(/\s/g);Object.values(h).flatMap(M=>(M||"").split(/\s/g)).filter(Boolean).forEach(M=>{F.includes(M)?U.classList.add(M):U.classList.remove(M)})}else U.setAttribute(D,q);d&&(r.getComputedStyle(m).opacity,document.head.removeChild(m))});function g(E){var D;B(t,n,(D=h[E])!=null?D:E)}function w(E){e.onChanged?e.onChanged(E,g):g(E)}qe(O,w,{flush:"post",immediate:!0}),jc(()=>w(O.value));const H=ce({get(){return u?P.value:O.value},set(E){P.value=E}});try{return Object.assign(H,{store:P,system:A,state:O})}catch{return H}}function Jc(e={}){const{valueDark:t="dark",valueLight:n=""}=e,s=Yc({...e,onChanged:(i,o)=>{var l;e.onChanged?(l=e.onChanged)==null||l.call(e,i==="dark",o,i):o(i)},modes:{dark:t,light:n}});return ce({get(){return s.value==="dark"},set(i){const o=i?"dark":"light";s.system.value===o?s.value="auto":s.value=o}})}function Bn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Li(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}function Ha(e,t=!1){const n=ge(t);let s=null,r;qe(Ri(e),l=>{const c=Bn(it(l));if(c){const u=c;r=u.style.overflow,n.value&&(u.style.overflow="hidden")}},{immediate:!0});const i=()=>{const l=Bn(it(e));!l||n.value||(gr&&(s=hn(l,"touchmove",c=>{Xc(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=Bn(it(e));!l||!n.value||(gr&&(s==null||s()),l.style.overflow=r,n.value=!1)};return As(o),ce({get(){return n.value},set(l){l?i():o()}})}function ja(e={}){const{window:t=wt}=e;if(!t)return{x:ge(0),y:ge(0)};const n=ge(t.scrollX),s=ge(t.scrollY);return hn(t,"scroll",()=>{n.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:n,y:s}}const Ni=/^[a-z]+:/i,Qc="vitepress-theme-appearance",$i=/#.*$/,Zc=/(index)?\.(md|html)$/,xe=typeof document<"u",Hi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Gc(e,t,n=!1){if(t===void 0)return!1;if(e=_r(`/${e}`),n)return new RegExp(t).test(e);if(_r(t)!==e)return!1;const s=t.match($i);return s?(xe?location.hash:"")===s[0]:!0}function _r(e){return decodeURI(e).replace($i,"").replace(Zc,"")}function ea(e){return Ni.test(e)}function ta(e,t){var s,r,i,o,l,c,u;const n=Object.keys(e.locales).find(d=>d!=="root"&&!ea(d)&&Gc(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Di(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function ji(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=na(e.title,s);return`${n}${r}`}function na(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function sa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Di(e,t){return[...e.filter(n=>!sa(t,n)),...t]}const ra=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ia=/^[a-z]:/i;function yr(e){const t=ia.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(ra,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const oa=Symbol(),ot=Kr(Ic);function Da(e){const t=ce(()=>ta(ot.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?ge(!0):n?Jc({storageKey:Qc,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):ge(!1);return{site:t,theme:ce(()=>t.value.themeConfig),page:ce(()=>e.data),frontmatter:ce(()=>e.data.frontmatter),params:ce(()=>e.data.params),lang:ce(()=>t.value.lang),dir:ce(()=>t.value.dir),localeIndex:ce(()=>t.value.localeIndex||"root"),title:ce(()=>ji(t.value,e.data)),description:ce(()=>e.data.description||t.value.description),isDark:s}}function la(){const e=_t(oa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function ca(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function br(e){return Ni.test(e)||!e.startsWith("/")?e:ca(ot.value.base,e)}function aa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),xe){const n="/";t=yr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${yr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let nn=[];function Ba(e){nn.push(e),Sn(()=>{nn=nn.filter(t=>t!==e)})}const ua=Symbol(),Bi="http://a.com",fa=()=>({path:"/",component:null,data:Hi});function ka(e,t){const n=yn(fa()),s={route:n,go:r};async function r(l=xe?location.href:"/"){var c,u;l=ts(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(Cr(l),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var b;if(await((b=s.onBeforePageLoad)==null?void 0:b.call(s,l))===!1)return;const d=new URL(l,Bi),h=i=d.pathname;try{let A=await e(h);if(!A)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:P,__pageData:O}=A;if(!P)throw new Error(`Invalid route component: ${P}`);n.path=xe?h:br(h),n.component=It(P),n.data=It(O),xe&&wn(()=>{let B=ot.value.base+O.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ot.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==d.pathname&&(d.pathname=B,l=B+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let g=null;try{g=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(w){console.warn(w)}if(g){vr(g,d.hash);return}}window.scrollTo(0,c)})}}catch(A){if(!/fetch|Page not found/.test(A.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(A),!u)try{const P=await fetch(ot.value.base+"hashmap.json");window.__VP_HASH_MAP__=await P.json(),await o(l,c,!0);return}catch{}i===h&&(i=null,n.path=xe?h:br(h),n.component=t?It(t):null,n.data=Hi)}}return xe&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:d}=u,{href:h,origin:b,pathname:A,hash:P,search:O}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),B=window.location,g=A.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!d&&b===B.origin&&!(g&&g[0]!==".html")&&(l.preventDefault(),A===B.pathname&&O===B.search?(P!==B.hash&&(history.pushState(null,"",P),window.dispatchEvent(new Event("hashchange"))),P?vr(u,P,u.classList.contains("header-anchor")):(Cr(h),window.scrollTo(0,0))):r(h))}},{capture:!0}),window.addEventListener("popstate",l=>{o(ts(location.href),l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function da(){const e=_t(ua);if(!e)throw new Error("useRouter() is called without provider.");return e}function ki(){return da().route}function vr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let u=function(){!n||Math.abs(c-window.scrollY)>window.innerHeight?window.scrollTo(0,c):window.scrollTo({left:0,top:c,behavior:"smooth"})},r=ot.value.scrollOffset,i=0,o=24;if(typeof r=="object"&&"padding"in r&&(o=r.padding,r=r.selector),typeof r=="number")i=r;else if(typeof r=="string")i=wr(r,o);else if(Array.isArray(r))for(const d of r){const h=wr(d,o);if(h){i=h;break}}const l=parseInt(window.getComputedStyle(s).paddingTop,10),c=window.scrollY+s.getBoundingClientRect().top-i+l;requestAnimationFrame(u)}}function wr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}function Cr(e){xe&&e!==ts(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function ts(e){const t=new URL(e,Bi);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ot.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const xr=()=>nn.forEach(e=>e()),Ua=si({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ki(),{site:n}=la();return()=>Gn(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Gn(t.component,{onVnodeMounted:xr,onVnodeUpdated:xr}):"404 Page Not Found"])}}),Ka=si({setup(e,{slots:t}){const n=ge(!1);return Et(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Wa(){xe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Va(){if(xe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className);let l="";i.querySelectorAll("span.line:not(.diff.remove)").forEach(c=>l+=(c.textContent||"")+` +`),l=l.slice(0,-1),o&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),ha(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const c=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,c)})}})}}async function ha(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function qa(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}const o=i.map(Er);n.forEach((l,c)=>{const u=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete n[c])}),o.forEach(l=>l&&document.head.appendChild(l)),n=[...n,...o].filter(Boolean)};Zr(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=ji(o,i);u!==document.title&&(document.title=u);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):Er(["meta",{name:"description",content:d}]),r(Di(o.head,ga(c)))})}function Er([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function pa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function ga(e){return e.filter(t=>!pa(t))}const kn=new Set,Ui=()=>document.createElement("link"),ma=e=>{const t=Ui();t.rel="prefetch",t.href=e,document.head.appendChild(t)},_a=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let Gt;const ya=xe&&(Gt=Ui())&&Gt.relList&&Gt.relList.supports&&Gt.relList.supports("prefetch")?ma:_a;function za(){if(!xe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!kn.has(c)){kn.add(c);const u=aa(c);u&&ya(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):kn.add(l))})})};Et(s);const r=ki();qe(()=>r.path,s),Sn(()=>{n&&n.disconnect()})}export{ua as $,Ca as A,pl as B,xa as C,Ta as D,Kr as E,pe as F,Ba as G,ae as H,Ea as I,Ni as J,ki as K,Ul as L,_t as M,ls as N,wn as O,ja as P,Ia as Q,bn as R,Ha as S,Ai as T,Ol as U,Ma as V,Sa as W,Fa as X,Oa as Y,qa as Z,Na as _,Ci as a,Da as a0,oa as a1,Ua as a2,Ka as a3,ot as a4,La as a5,ka as a6,aa as a7,$a as a8,za as a9,Va as aa,Wa as ab,Gn as ac,bi as b,Pa as c,si as d,Ra as e,br as f,ce as g,ge as h,ea as i,Et as j,wi as k,Vr as l,wa as m,cs as n,_i as o,va as p,Gc as q,Aa as r,xe as s,ba as t,la as u,kc as v,Go as w,qe as x,Zr as y,Sn as z}; diff --git a/assets/chunks/theme.c36cb2db.js b/assets/chunks/theme.c36cb2db.js new file mode 100644 index 000000000..bb9a105c8 --- /dev/null +++ b/assets/chunks/theme.c36cb2db.js @@ -0,0 +1 @@ +import{d as g,o as a,c as i,r as u,n as N,a as x,t as L,_ as m,b as $,w as v,T as ce,e as f,u as He,i as ze,f as ue,g as k,h as S,j as G,k as c,l,p as H,m as z,q as O,s as R,v as re,x as U,y as te,z as de,A as Pe,B as De,C as j,F as M,D as A,E as _e,G as Y,H as h,I as E,J as Ve,K as se,L as X,M as ne,N as Fe,O as Ee,P as we,Q as Oe,R as Ge,S as Le,U as Se,V as Ue,W as je,X as qe,Y as Ke}from"./framework.1169fbc9.js";const Re=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:N(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const We=m(Re,[["__scopeId","data-v-9613cc9f"]]),Ye={key:0,class:"VPBackdrop"},Je=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(ce,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Ye)):f("",!0)]),_:1}))}});const Qe=m(Je,[["__scopeId","data-v-c79a1216"]]),P=He;function Xe(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function J(s){if(ze(s))return s;const{site:e}=P(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),r=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ue(r)}function Q({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:r}=P(),d=k(()=>{var _,b;return{label:(_=t.value.locales[n.value])==null?void 0:_.label,link:((b=t.value.locales[n.value])==null?void 0:b.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:k(()=>Object.entries(t.value.locales).flatMap(([_,b])=>s&&d.value.label===b.label?[]:{text:b.label,link:Ze(b.link||(_==="root"?"/":`/${_}/`),r.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function Ze(s,e,t,n){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const et=s=>(H("data-v-f87ff6e4"),s=s(),z(),s),tt={class:"NotFound"},st={class:"code"},nt={class:"title"},ot=et(()=>c("div",{class:"divider"},null,-1)),at={class:"quote"},rt={class:"action"},lt=["href","aria-label"],it=g({__name:"NotFound",setup(s){const{site:e,theme:t}=P(),{localeLinks:n}=Q({removeCurrent:!1}),o=S("/");return G(()=>{var d;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(r)))==null?void 0:d.link)||n.value[0].link)}),(r,d)=>{var p,_,b,y,w;return a(),i("div",tt,[c("p",st,L(((p=l(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",nt,L(((_=l(t).notFound)==null?void 0:_.title)??"PAGE NOT FOUND"),1),ot,c("blockquote",at,L(((b=l(t).notFound)==null?void 0:b.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",rt,[c("a",{class:"link",href:l(ue)(o.value),"aria-label":((y=l(t).notFound)==null?void 0:y.linkLabel)??"go to home"},L(((w=l(t).notFound)==null?void 0:w.linkText)??"Take me home"),9,lt)])])}}});const ct=m(it,[["__scopeId","data-v-f87ff6e4"]]);function Me(s,e){if(Array.isArray(s))return Z(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>e.startsWith(le(o))),n=t?s[t]:[];return Array.isArray(n)?Z(n):Z(n.items,n.base)}function ut(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function dt(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):O(s,e.link)?!0:e.items?ie(s,e.items):!1}function Z(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Z(n.items,o)),n})}function D(){const{frontmatter:s,page:e,theme:t}=P(),n=re("(min-width: 960px)"),o=S(!1),r=k(()=>{const T=t.value.sidebar,V=e.value.relativePath;return T?Me(T,V):[]}),d=S(r.value);U(r,(T,V)=>{JSON.stringify(T)!==JSON.stringify(V)&&(d.value=r.value)});const p=k(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),_=k(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=k(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),y=k(()=>p.value&&n.value),w=k(()=>p.value?ut(d.value):[]);function C(){o.value=!0}function I(){o.value=!1}function B(){o.value?I():C()}return{isOpen:o,sidebar:d,sidebarGroups:w,hasSidebar:p,hasAside:b,leftAside:_,isSidebarEnabled:y,open:C,close:I,toggle:B}}function _t(s,e){let t;te(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Ne=S(R?location.hash:"");R&&window.addEventListener("hashchange",()=>{Ne.value=location.hash});function vt(s){const{page:e}=P(),t=S(!1),n=k(()=>s.value.collapsed!=null),o=k(()=>!!s.value.link),r=S(!1),d=()=>{r.value=O(e.value.relativePath,s.value.link)};U([e,s,Ne],d),G(d);const p=k(()=>r.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),_=k(()=>!!(s.value.items&&s.value.items.length));te(()=>{t.value=!!(n.value&&s.value.collapsed)}),Pe(()=>{(r.value||p.value)&&(t.value=!1)});function b(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:p,hasChildren:_,toggle:b}}function pt(){const{hasSidebar:s}=D(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:k(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ht=71;function ve(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function pe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:ft(t),link:"#"+t.id,level:n}});return mt(e,s)}function ft(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function mt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const r=[];e:for(let d=0;d=0;_--){const b=s[_];if(b.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),De(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(I=>p.some(B=>B.hash===I.hash&&I.offsetParent!==null)),b=window.scrollY,y=window.innerHeight,w=document.body.offsetHeight,C=Math.abs(b+y-w)<1;if(_.length&&C){d(_[_.length-1].hash);return}for(let I=0;I<_.length;I++){const B=_[I],T=_[I+1],[V,q]=bt(I,B,T);if(V){d(q);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const _=o;_?(_.classList.add("active"),e.value.style.top=_.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function ke(s){return s.parentElement.offsetTop-ht}function bt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n{const o=j("VPDocOutlineItem",!0);return a(),i("ul",{class:N(t.root?"root":"nested")},[(a(!0),i(M,null,A(t.headers,({children:r,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,$t),r!=null&&r.length?(a(),$(o,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}});const he=m(kt,[["__scopeId","data-v-d0ee3533"]]),yt=s=>(H("data-v-d330b1bb"),s=s(),z(),s),Pt={class:"content"},Vt={class:"outline-title",role:"heading","aria-level":"2"},wt={"aria-labelledby":"doc-outline-aria-label"},Lt=yt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),St=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),n=_e([]);Y(()=>{n.value=pe(e.value.outline??t.value.outline)});const o=S(),r=S();return gt(o,r),(d,p)=>(a(),i("div",{class:N(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",Pt,[c("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),c("div",Vt,L(l(ve)(l(t))),1),c("nav",wt,[Lt,h(he,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Mt=m(St,[["__scopeId","data-v-d330b1bb"]]),Nt={class:"VPDocAsideCarbonAds"},It=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",Nt,[h(l(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct=s=>(H("data-v-3f215769"),s=s(),z(),s),Tt={class:"VPDocAside"},Bt=Ct(()=>c("div",{class:"spacer"},null,-1)),At=g({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,n)=>(a(),i("div",Tt,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Mt),u(t.$slots,"aside-outline-after",{},void 0,!0),Bt,u(t.$slots,"aside-ads-before",{},void 0,!0),l(e).carbonAds?(a(),$(It,{key:0,"carbon-ads":l(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const xt=m(At,[["__scopeId","data-v-3f215769"]]);function Ht(){const{theme:s,page:e}=P();return k(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function zt(){const{page:s,theme:e,frontmatter:t}=P();return k(()=>{var _,b,y,w,C,I,B,T;const n=Me(e.value.sidebar,s.value.relativePath),o=dt(n),r=o.findIndex(V=>O(s.value.relativePath,V.link)),d=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((b=e.value.docFooter)==null?void 0:b.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=o[r-1])==null?void 0:y.docFooterText)??((w=o[r-1])==null?void 0:w.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((C=o[r-1])==null?void 0:C.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((I=o[r+1])==null?void 0:I.docFooterText)??((B=o[r+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((T=o[r+1])==null?void 0:T.link)}}})}const Dt={},Ft={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Et=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Ot=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Gt=[Et,Ot];function Ut(s,e){return a(),i("svg",Ft,Gt)}const jt=m(Dt,[["render",Ut]]),F=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=k(()=>e.tag??(e.href?"a":"span")),n=k(()=>e.href&&Ve.test(e.href));return(o,r)=>(a(),$(E(t.value),{class:N(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?l(J)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),qt={class:"VPLastUpdated"},Kt=["datetime"],Rt=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=P(),r=k(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=k(()=>r.value.toISOString()),p=S("");return G(()=>{te(()=>{var _,b,y;p.value=new Intl.DateTimeFormat((b=(_=e.value.lastUpdated)==null?void 0:_.formatOptions)!=null&&b.forceLocale?o.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(_,b)=>{var y;return a(),i("p",qt,[x(L(((y=l(e).lastUpdated)==null?void 0:y.text)||l(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,Kt)])}}});const Wt=m(Rt,[["__scopeId","data-v-7e05ebdb"]]),Yt={key:0,class:"VPDocFooter"},Jt={key:0,class:"edit-info"},Qt={key:0,class:"edit-link"},Xt={key:1,class:"last-updated"},Zt={key:1,class:"prev-next"},es={class:"pager"},ts=["href"],ss=["innerHTML"],ns=["innerHTML"],os={class:"pager"},as=["href"],rs=["innerHTML"],ls=["innerHTML"],is=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=P(),o=Ht(),r=zt(),d=k(()=>e.value.editLink&&n.value.editLink!==!1),p=k(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),_=k(()=>d.value||p.value||r.value.prev||r.value.next);return(b,y)=>{var w,C,I,B,T,V;return _.value?(a(),i("footer",Yt,[u(b.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",Jt,[d.value?(a(),i("div",Qt,[h(F,{class:"edit-link-button",href:l(o).url,"no-icon":!0},{default:v(()=>[h(jt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(l(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",Xt,[h(Wt)])):f("",!0)])):f("",!0),(w=l(r).prev)!=null&&w.link||(C=l(r).next)!=null&&C.link?(a(),i("nav",Zt,[c("div",es,[(I=l(r).prev)!=null&&I.link?(a(),i("a",{key:0,class:"pager-link prev",href:l(J)(l(r).prev.link)},[c("span",{class:"desc",innerHTML:((B=l(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,ss),c("span",{class:"title",innerHTML:l(r).prev.text},null,8,ns)],8,ts)):f("",!0)]),c("div",os,[(T=l(r).next)!=null&&T.link?(a(),i("a",{key:0,class:"pager-link next",href:l(J)(l(r).next.link)},[c("span",{class:"desc",innerHTML:((V=l(e).docFooter)==null?void 0:V.next)||"Next page"},null,8,rs),c("span",{class:"title",innerHTML:l(r).next.text},null,8,ls)],8,as)):f("",!0)])])):f("",!0)])):f("",!0)}}});const cs=m(is,[["__scopeId","data-v-ef5dee53"]]),us={},ds={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},_s=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),vs=[_s];function ps(s,e){return a(),i("svg",ds,vs)}const fe=m(us,[["render",ps]]),hs={key:0,class:"VPDocOutlineDropdown"},fs={key:0,class:"items"},ms=g({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=P(),n=S(!1);Y(()=>{n.value=!1});const o=_e([]);return Y(()=>{o.value=pe(e.value.outline??t.value.outline)}),(r,d)=>o.value.length>0?(a(),i("div",hs,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:N({open:n.value})},[x(L(l(ve)(l(t)))+" ",1),h(fe,{class:"icon"})],2),n.value?(a(),i("div",fs,[h(he,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const gs=m(ms,[["__scopeId","data-v-eadfb36b"]]),bs=s=>(H("data-v-6b87e69f"),s=s(),z(),s),$s={class:"container"},ks=bs(()=>c("div",{class:"aside-curtain"},null,-1)),ys={class:"aside-container"},Ps={class:"aside-content"},Vs={class:"content"},ws={class:"content-container"},Ls={class:"main"},Ss=g({__name:"VPDoc",setup(s){const{theme:e}=P(),t=se(),{hasSidebar:n,hasAside:o,leftAside:r}=D(),d=k(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,_)=>{const b=j("Content");return a(),i("div",{class:N(["VPDoc",{"has-sidebar":l(n),"has-aside":l(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",$s,[l(o)?(a(),i("div",{key:0,class:N(["aside",{"left-aside":l(r)}])},[ks,c("div",ys,[c("div",Ps,[h(xt,null,{"aside-top":v(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Vs,[c("div",ws,[u(p.$slots,"doc-before",{},void 0,!0),h(gs),c("main",Ls,[h(b,{class:N(["vp-doc",[d.value,l(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(cs,null,{"doc-footer-before":v(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Ms=m(Ss,[["__scopeId","data-v-6b87e69f"]]),Ns=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=k(()=>e.href&&Ve.test(e.href)),n=k(()=>e.tag||e.href?"a":"button");return(o,r)=>(a(),$(E(n.value),{class:N(["VPButton",[o.size,o.theme]]),href:o.href?l(J)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:v(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const Is=m(Ns,[["__scopeId","data-v-c1c5efc1"]]),Cs=["src","alt"],Ts=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=j("VPImage",!0);return e.image?(a(),i(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",X({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:l(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Cs)):(a(),i(M,{key:1},[h(n,X({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,X({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const ee=m(Ts,[["__scopeId","data-v-8426fc1a"]]),Bs=s=>(H("data-v-da5d1713"),s=s(),z(),s),As={class:"container"},xs={class:"main"},Hs={key:0,class:"name"},zs=["innerHTML"],Ds=["innerHTML"],Fs=["innerHTML"],Es={key:0,class:"actions"},Os={key:0,class:"image"},Gs={class:"image-container"},Us=Bs(()=>c("div",{class:"image-bg"},null,-1)),js=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:N(["VPHero",{"has-image":t.image||l(e)}])},[c("div",As,[c("div",xs,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Hs,[c("span",{innerHTML:t.name,class:"clip"},null,8,zs)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Ds)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Fs)):f("",!0)],!0),t.actions?(a(),i("div",Es,[(a(!0),i(M,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(Is,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||l(e)?(a(),i("div",Os,[c("div",Gs,[Us,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(ee,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const qs=m(js,[["__scopeId","data-v-da5d1713"]]),Ks=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,n)=>l(e).hero?(a(),$(qs,{key:0,class:"VPHomeHero",name:l(e).hero.name,text:l(e).hero.text,tagline:l(e).hero.tagline,image:l(e).hero.image,actions:l(e).hero.actions},{"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Rs={},Ws={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ys=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),Js=[Ys];function Qs(s,e){return a(),i("svg",Ws,Js)}const Xs=m(Rs,[["render",Qs]]),Zs={class:"box"},en={key:0,class:"icon"},tn=["innerHTML"],sn=["innerHTML"],nn=["innerHTML"],on={key:4,class:"link-text"},an={class:"link-text-value"},rn=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",Zs,[typeof e.icon=="object"&&e.icon.wrap?(a(),i("div",en,[h(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:2,class:"icon",innerHTML:e.icon},null,8,tn)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,sn),e.details?(a(),i("p",{key:3,class:"details",innerHTML:e.details},null,8,nn)):f("",!0),e.linkText?(a(),i("div",on,[c("p",an,[x(L(e.linkText)+" ",1),h(Xs,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}});const ln=m(rn,[["__scopeId","data-v-33204567"]]),cn={key:0,class:"VPFeatures"},un={class:"container"},dn={class:"items"},_n=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=k(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",cn,[c("div",un,[c("div",dn,[(a(!0),i(M,null,A(n.features,r=>(a(),i("div",{key:r.title,class:N(["item",[t.value]])},[h(ln,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}});const vn=m(_n,[["__scopeId","data-v-a6181336"]]),pn=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,n)=>l(e).features?(a(),$(vn,{key:0,class:"VPHomeFeatures",features:l(e).features},null,8,["features"])):f("",!0)}}),hn={class:"VPHome"},fn=g({__name:"VPHome",setup(s){return(e,t)=>{const n=j("Content");return a(),i("div",hn,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Ks,null,{"home-hero-info":v(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(pn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const mn=m(fn,[["__scopeId","data-v-d82743a8"]]),gn={},bn={class:"VPPage"};function $n(s,e){const t=j("Content");return a(),i("div",bn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const kn=m(gn,[["render",$n]]),yn=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,r)=>(a(),i("div",{class:N(["VPContent",{"has-sidebar":l(n),"is-home":l(t).layout==="home"}]),id:"VPContent"},[l(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(ct)],!0):l(t).layout==="page"?(a(),$(kn,{key:1},{"page-top":v(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):l(t).layout==="home"?(a(),$(mn,{key:2},{"home-hero-before":v(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):l(t).layout&&l(t).layout!=="doc"?(a(),$(E(l(t).layout),{key:3})):(a(),$(Ms,{key:4},{"doc-top":v(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Pn=m(yn,[["__scopeId","data-v-669faec9"]]),Vn={class:"container"},wn=["innerHTML"],Ln=["innerHTML"],Sn=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,r)=>l(e).footer&&l(t).footer!==!1?(a(),i("footer",{key:0,class:N(["VPFooter",{"has-sidebar":l(n)}])},[c("div",Vn,[l(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:l(e).footer.message},null,8,wn)):f("",!0),l(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:l(e).footer.copyright},null,8,Ln)):f("",!0)])],2)):f("",!0)}});const Mn=m(Sn,[["__scopeId","data-v-e03eb2e1"]]),Nn={class:"header"},In={class:"outline"},Cn=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),n=S(!1),o=S(0),r=S();Y(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(b){b.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Ee(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,y)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Fe({"--vp-vh":o.value+"px"})},[b.headers.length>0?(a(),i("button",{key:0,onClick:d,class:N({open:n.value})},[x(L(l(ve)(l(t)))+" ",1),h(fe,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},L(l(t).returnToTopLabel||"Return to top"),1)),h(ce,{name:"flyout"},{default:v(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:p},[c("div",Nn,[c("a",{class:"top-link",href:"#",onClick:_},L(l(t).returnToTopLabel||"Return to top"),1)]),c("div",In,[h(he,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const Tn=m(Cn,[["__scopeId","data-v-1c15a60a"]]),Bn={},An={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},xn=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Hn=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),zn=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Dn=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Fn=[xn,Hn,zn,Dn];function En(s,e){return a(),i("svg",An,Fn)}const On=m(Bn,[["render",En]]),Gn=["aria-expanded"],Un={class:"menu-text"},jn=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D(),{y:o}=we(),r=_e([]),d=S(0);G(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{r.value=pe(t.value.outline??e.value.outline)});const p=k(()=>r.value.length===0&&!n.value),_=k(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return(b,y)=>l(t).layout!=="home"&&(!p.value||l(o)>=d.value)?(a(),i("div",{key:0,class:N(_.value)},[l(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":b.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=w=>b.$emit("open-menu"))},[h(On,{class:"menu-icon"}),c("span",Un,L(l(e).sidebarMenuLabel||"Menu"),1)],8,Gn)):f("",!0),h(Tn,{headers:r.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const qn=m(jn,[["__scopeId","data-v-79c8c1df"]]);function Kn(){const s=S(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const r=se();return U(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Rn={},Wn={class:"VPSwitch",type:"button",role:"switch"},Yn={class:"check"},Jn={key:0,class:"icon"};function Qn(s,e){return a(),i("button",Wn,[c("span",Yn,[s.$slots.default?(a(),i("span",Jn,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Xn=m(Rn,[["render",Qn],["__scopeId","data-v-b1685198"]]),Zn={},eo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},to=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),so=[to];function no(s,e){return a(),i("svg",eo,so)}const oo=m(Zn,[["render",no]]),ao={},ro={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},lo=Oe('',9),io=[lo];function co(s,e){return a(),i("svg",ro,io)}const uo=m(ao,[["render",co]]),_o=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=P(),t=ne("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),$(Xn,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":l(e),onClick:l(t)},{default:v(()=>[h(uo,{class:"sun"}),h(oo,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(_o,[["__scopeId","data-v-ce54a7d1"]]),vo={key:0,class:"VPNavBarAppearance"},po=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,n)=>l(e).appearance&&l(e).appearance!=="force-dark"?(a(),i("div",vo,[h(me)])):f("",!0)}});const ho=m(po,[["__scopeId","data-v-e6aabb21"]]),ge=S();let Ie=!1,ae=0;function fo(s){const e=S(!1);if(R){!Ie&&mo(),ae++;const t=U(ge,n=>{var o,r,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),ae--,ae||go()})}return Ge(e)}function mo(){document.addEventListener("focusin",Ce),Ie=!0,ge.value=document.activeElement}function go(){document.removeEventListener("focusin",Ce)}function Ce(){ge.value=document.activeElement}const bo={},$o={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ko=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),yo=[ko];function Po(s,e){return a(),i("svg",$o,yo)}const Te=m(bo,[["render",Po]]),Vo={},wo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Lo=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),So=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Mo=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),No=[Lo,So,Mo];function Io(s,e){return a(),i("svg",wo,No)}const Co=m(Vo,[["render",Io]]),To={class:"VPMenuLink"},Bo=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),i("div",To,[h(F,{class:N({active:l(O)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const oe=m(Bo,[["__scopeId","data-v-43f1e123"]]),Ao={class:"VPMenuGroup"},xo={key:0,class:"title"},Ho=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",Ao,[e.text?(a(),i("p",xo,L(e.text),1)):f("",!0),(a(!0),i(M,null,A(e.items,n=>(a(),i(M,null,["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const zo=m(Ho,[["__scopeId","data-v-69e747b5"]]),Do={class:"VPMenu"},Fo={key:0,class:"items"},Eo=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Do,[e.items?(a(),i("div",Fo,[(a(!0),i(M,null,A(e.items,n=>(a(),i(M,{key:n.text},["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):(a(),$(zo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const Oo=m(Eo,[["__scopeId","data-v-e7ea1737"]]),Go=["aria-expanded","aria-label"],Uo={key:0,class:"text"},jo=["innerHTML"],qo={class:"menu"},Ko=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=S(!1),t=S();fo({el:t,onBlur:n});function n(){e.value=!1}return(o,r)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=d=>e.value=!0),onMouseleave:r[2]||(r[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:r[0]||(r[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",Uo,[o.icon?(a(),$(E(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,jo)):f("",!0),h(Te,{class:"text-icon"})])):(a(),$(Co,{key:1,class:"icon"}))],8,Go),c("div",qo,[h(Oo,{items:o.items},{default:v(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const be=m(Ko,[["__scopeId","data-v-9c007e85"]]),Ro={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Wo=["href","aria-label","innerHTML"],Yo=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=k(()=>typeof e.icon=="object"?e.icon.svg:Ro[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Wo))}});const Jo=m(Yo,[["__scopeId","data-v-f80f8133"]]),Qo={class:"VPSocialLinks"},Xo=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",Qo,[(a(!0),i(M,null,A(e.links,({link:n,icon:o,ariaLabel:r})=>(a(),$(Jo,{key:n,icon:o,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}});const $e=m(Xo,[["__scopeId","data-v-7bc22406"]]),Zo={key:0,class:"group translations"},ea={class:"trans-title"},ta={key:1,class:"group"},sa={class:"item appearance"},na={class:"label"},oa={class:"appearance-action"},aa={key:2,class:"group"},ra={class:"item social-links"},la=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:o}=Q({correspondingLink:!0}),r=k(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>r.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[l(n).length&&l(o).label?(a(),i("div",Zo,[c("p",ea,L(l(o).label),1),(a(!0),i(M,null,A(l(n),_=>(a(),$(oe,{key:_.link,item:_},null,8,["item"]))),128))])):f("",!0),l(e).appearance?(a(),i("div",ta,[c("div",sa,[c("p",na,L(l(t).darkModeSwitchLabel||"Appearance"),1),c("div",oa,[h(me)])])])):f("",!0),l(t).socialLinks?(a(),i("div",aa,[c("div",ra,[h($e,{class:"social-links-list",links:l(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const ia=m(la,[["__scopeId","data-v-40855f84"]]),ca=s=>(H("data-v-e5dd9c1c"),s=s(),z(),s),ua=["aria-expanded"],da=ca(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),_a=[da],va=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},_a,10,ua))}});const pa=m(va,[["__scopeId","data-v-e5dd9c1c"]]),ha=["innerHTML"],fa=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:l(O)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,ha)]),_:1},8,["class","href","target","rel"]))}});const ma=m(fa,[["__scopeId","data-v-42ef59de"]]),ga=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),n=r=>"link"in r?O(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),o=k(()=>n(e.item));return(r,d)=>(a(),$(be,{class:N({VPNavBarMenuGroup:!0,active:l(O)(l(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||o.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ba=s=>(H("data-v-7f418b0f"),s=s(),z(),s),$a={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ka=ba(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),ya=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,n)=>l(e).nav?(a(),i("nav",$a,[ka,(a(!0),i(M,null,A(l(e).nav,o=>(a(),i(M,{key:o.text},["link"in o?(a(),$(ma,{key:0,item:o},null,8,["item"])):(a(),$(ga,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const Pa=m(ya,[["__scopeId","data-v-7f418b0f"]]);function Va(s,e){const{localeIndex:t}=P();function n(o){var I,B;const r=o.split("."),d=s&&typeof s=="object",p=d&&((B=(I=s.locales)==null?void 0:I[t.value])==null?void 0:B.translations)||null,_=d&&s.translations||null;let b=p,y=_,w=e;const C=r.pop();for(const T of r){let V=null;const q=w==null?void 0:w[T];q&&(V=w=q);const W=y==null?void 0:y[T];W&&(V=y=W);const K=b==null?void 0:b[T];K&&(V=b=K),q||(w=V),W||(y=V),K||(b=V)}return(b==null?void 0:b[C])??(y==null?void 0:y[C])??(w==null?void 0:w[C])??""}return n}const wa=["aria-label"],La={class:"DocSearch-Button-Container"},Sa=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ma={class:"DocSearch-Button-Placeholder"},Na=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ye=g({__name:"VPNavBarSearchButton",setup(s){var o;const{theme:e}=P(),t={button:{buttonText:"Search",buttonAriaLabel:"Search"}},n=Va((o=e.value.search)==null?void 0:o.options,t);return(r,d)=>(a(),i("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":l(n)("button.buttonAriaLabel")},[c("span",La,[Sa,c("span",Ma,L(l(n)("button.buttonText")),1)]),Na],8,wa))}});const Ia={class:"VPNavBarSearch"},Ca={id:"local-search"},Ta={key:1,id:"docsearch"},Ba=g({__name:"VPNavBarSearch",setup(s){const e=()=>null,t=()=>null,{theme:n}=P(),o=S(!1),r=S(!1);G(()=>{});function d(){o.value||(o.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}const _=S(!1),b="";return(y,w)=>{var C;return a(),i("div",Ia,[l(b)==="local"?(a(),i(M,{key:0},[_.value?(a(),$(l(e),{key:0,onClose:w[0]||(w[0]=I=>_.value=!1)})):f("",!0),c("div",Ca,[h(ye,{onClick:w[1]||(w[1]=I=>_.value=!0)})])],64)):l(b)==="algolia"?(a(),i(M,{key:1},[o.value?(a(),$(l(t),{key:0,algolia:((C=l(n).search)==null?void 0:C.options)??l(n).algolia,onVnodeBeforeMount:w[2]||(w[2]=I=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),i("div",Ta,[h(ye,{onClick:d})]))],64)):f("",!0)])}}});const Aa=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}});const xa=m(Aa,[["__scopeId","data-v-0394ad82"]]),Ha=["href"],za=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:n}=D(),{currentLang:o}=Q();return(r,d)=>(a(),i("div",{class:N(["VPNavBarTitle",{"has-sidebar":l(n)}])},[c("a",{class:"title",href:l(t).logoLink??l(J)(l(o).link)},[u(r.$slots,"nav-bar-title-before",{},void 0,!0),l(t).logo?(a(),$(ee,{key:0,class:"logo",image:l(t).logo},null,8,["image"])):f("",!0),l(t).siteTitle?(a(),i(M,{key:1},[x(L(l(t).siteTitle),1)],64)):l(t).siteTitle===void 0?(a(),i(M,{key:2},[x(L(l(e).title),1)],64)):f("",!0),u(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ha)],2))}});const Da=m(za,[["__scopeId","data-v-86d1bed8"]]),Fa={},Ea={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Oa=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ga=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Ua=[Oa,Ga];function ja(s,e){return a(),i("svg",Ea,Ua)}const Be=m(Fa,[["render",ja]]),qa={class:"items"},Ka={class:"title"},Ra=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:n}=Q({correspondingLink:!0});return(o,r)=>l(t).length&&l(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:Be,label:l(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",qa,[c("p",Ka,L(l(n).label),1),(a(!0),i(M,null,A(l(t),d=>(a(),$(oe,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Wa=m(Ra,[["__scopeId","data-v-74abcbb9"]]),Ya=s=>(H("data-v-a0fd61f4"),s=s(),z(),s),Ja={class:"container"},Qa={class:"title"},Xa={class:"content"},Za=Ya(()=>c("div",{class:"curtain"},null,-1)),er={class:"content-body"},tr=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=we(),{hasSidebar:t}=D(),{frontmatter:n}=P(),o=S({});return Pe(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(r,d)=>(a(),i("div",{class:N(["VPNavBar",o.value])},[c("div",Ja,[c("div",Qa,[h(Da,null,{"nav-bar-title-before":v(()=>[u(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",Xa,[Za,c("div",er,[u(r.$slots,"nav-bar-content-before",{},void 0,!0),h(Ba,{class:"search"}),h(Pa,{class:"menu"}),h(Wa,{class:"translations"}),h(ho,{class:"appearance"}),h(xa,{class:"social-links"}),h(ia,{class:"extra"}),u(r.$slots,"nav-bar-content-after",{},void 0,!0),h(pa,{class:"hamburger",active:r.isScreenOpen,onClick:d[0]||(d[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const sr=m(tr,[["__scopeId","data-v-a0fd61f4"]]),nr={key:0,class:"VPNavScreenAppearance"},or={class:"text"},ar=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(n,o)=>l(e).appearance?(a(),i("div",nr,[c("p",or,L(l(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const rr=m(ar,[["__scopeId","data-v-add8f686"]]),lr=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const ir=m(lr,[["__scopeId","data-v-05f27b2a"]]),cr={},ur={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},dr=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),_r=[dr];function vr(s,e){return a(),i("svg",ur,_r)}const pr=m(cr,[["render",vr]]),hr=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const Ae=m(hr,[["__scopeId","data-v-19976ae1"]]),fr={class:"VPNavScreenMenuGroupSection"},mr={key:0,class:"title"},gr=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",fr,[e.text?(a(),i("p",mr,L(e.text),1)):f("",!0),(a(!0),i(M,null,A(e.items,n=>(a(),$(Ae,{key:n.text,item:n},null,8,["item"]))),128))]))}});const br=m(gr,[["__scopeId","data-v-8133b170"]]),$r=["aria-controls","aria-expanded"],kr={class:"button-text"},yr=["id"],Pr={key:1,class:"group"},Vr=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=S(!1),n=k(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(r,d)=>(a(),i("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",kr,L(r.text),1),h(pr,{class:"button-icon"})],8,$r),c("div",{id:n.value,class:"items"},[(a(!0),i(M,null,A(r.items,p=>(a(),i(M,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(Ae,{item:p},null,8,["item"])])):(a(),i("div",Pr,[h(br,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,yr)],2))}});const wr=m(Vr,[["__scopeId","data-v-1ecb84e7"]]),Lr={key:0,class:"VPNavScreenMenu"},Sr=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,n)=>l(e).nav?(a(),i("nav",Lr,[(a(!0),i(M,null,A(l(e).nav,o=>(a(),i(M,{key:o.text},["link"in o?(a(),$(ir,{key:0,item:o},null,8,["item"])):(a(),$(wr,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Mr=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}}),Nr={class:"list"},Ir=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=Q({correspondingLink:!0}),n=S(!1);function o(){n.value=!n.value}return(r,d)=>l(e).length&&l(t).label?(a(),i("div",{key:0,class:N(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(Be,{class:"icon lang"}),x(" "+L(l(t).label)+" ",1),h(Te,{class:"icon chevron"})]),c("ul",Nr,[(a(!0),i(M,null,A(l(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(F,{class:"link",href:p.link},{default:v(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Cr=m(Ir,[["__scopeId","data-v-d72aa483"]]),Tr={class:"container"},Br=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=S(null),t=Le(R?document.body:null);return(n,o)=>(a(),$(ce,{name:"fade",onEnter:o[0]||(o[0]=r=>t.value=!0),onAfterLeave:o[1]||(o[1]=r=>t.value=!1)},{default:v(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",Tr,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Sr,{class:"menu"}),h(Cr,{class:"translations"}),h(rr,{class:"appearance"}),h(Mr,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const Ar=m(Br,[["__scopeId","data-v-cc5739dd"]]),xr={key:0,class:"VPNav"},Hr=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Kn(),{frontmatter:o}=P(),r=k(()=>o.value.navbar!==!1);return Se("close-screen",t),te(()=>{R&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(d,p)=>r.value?(a(),i("header",xr,[h(sr,{"is-screen-open":l(e),onToggleScreen:l(n)},{"nav-bar-title-before":v(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(Ar,{open:l(e)},{"nav-screen-content-before":v(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}});const zr=m(Hr,[["__scopeId","data-v-ae24b3ad"]]),Dr=s=>(H("data-v-e31bd47b"),s=s(),z(),s),Fr=["role","tabindex"],Er=Dr(()=>c("div",{class:"indicator"},null,-1)),Or=["onKeydown"],Gr={key:1,class:"items"},Ur=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:d,hasChildren:p,toggle:_}=vt(k(()=>e.item)),b=k(()=>p.value?"section":"div"),y=k(()=>o.value?"a":"div"),w=k(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),C=k(()=>o.value?void 0:"button"),I=k(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":r.value},{"has-active":d.value}]);function B(V){"key"in V&&V.key!=="Enter"||!e.item.link&&_()}function T(){e.item.link&&_()}return(V,q)=>{const W=j("VPSidebarItem",!0);return a(),$(E(b.value),{class:N(["VPSidebarItem",I.value])},{default:v(()=>[V.item.text?(a(),i("div",X({key:0,class:"item",role:C.value},je(V.item.items?{click:B,keydown:B}:{},!0),{tabindex:V.item.items&&0}),[Er,V.item.link?(a(),$(F,{key:0,tag:y.value,class:"link",href:V.item.link,rel:V.item.rel,target:V.item.target},{default:v(()=>[(a(),$(E(w.value),{class:"text",innerHTML:V.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(E(w.value),{key:1,class:"text",innerHTML:V.item.text},null,8,["innerHTML"])),V.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:T,onKeydown:Ue(T,["enter"]),tabindex:"0"},[h(fe,{class:"caret-icon"})],40,Or)):f("",!0)],16,Fr)):f("",!0),V.item.items&&V.item.items.length?(a(),i("div",Gr,[V.depth<5?(a(!0),i(M,{key:0},A(V.item.items,K=>(a(),$(W,{key:K.text,item:K,depth:V.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const jr=m(Ur,[["__scopeId","data-v-e31bd47b"]]),xe=s=>(H("data-v-b00e2fdd"),s=s(),z(),s),qr=xe(()=>c("div",{class:"curtain"},null,-1)),Kr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Rr=xe(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Wr=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=D(),o=S(null),r=Le(R?document.body:null);return U([e,o],()=>{var d;e.open?(r.value=!0,(d=o.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"}),(d,p)=>l(n)?(a(),i("aside",{key:0,class:N(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=qe(()=>{},["stop"]))},[qr,c("nav",Kr,[Rr,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(M,null,A(l(t),_=>(a(),i("div",{key:_.text,class:"group"},[h(jr,{item:_,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Yr=m(Wr,[["__scopeId","data-v-b00e2fdd"]]),Jr=g({__name:"VPSkipLink",setup(s){const e=se(),t=S();U(()=>e.path,()=>t.value.focus());function n({target:o}){const r=document.getElementById(decodeURIComponent(o.hash).slice(1));if(r){const d=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",d)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",d),r.focus(),window.scrollTo(0,0)}}return(o,r)=>(a(),i(M,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const Qr=m(Jr,[["__scopeId","data-v-0f60ec36"]]),Xr=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=D(),o=se();U(()=>o.path,n),_t(e,n);const{frontmatter:r}=P(),d=Ke(),p=k(()=>!!d["home-hero-image"]);return Se("hero-image-slot-exists",p),(_,b)=>{const y=j("Content");return l(r).layout!==!1?(a(),i("div",{key:0,class:N(["Layout",l(r).pageClass])},[u(_.$slots,"layout-top",{},void 0,!0),h(Qr),h(Qe,{class:"backdrop",show:l(e),onClick:l(n)},null,8,["show","onClick"]),h(zr,null,{"nav-bar-title-before":v(()=>[u(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(qn,{open:l(e),onOpenMenu:l(t)},null,8,["open","onOpenMenu"]),h(Yr,{open:l(e)},{"sidebar-nav-before":v(()=>[u(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Pn,null,{"page-top":v(()=>[u(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Mn),u(_.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(y,{key:1}))}}});const Zr=m(Xr,[["__scopeId","data-v-5a346dfe"]]);const tl={Layout:Zr,enhanceApp:({app:s})=>{s.component("Badge",We)}};export{tl as t}; diff --git a/assets/da1.ae7a2bb1.png b/assets/da1.ae7a2bb1.png new file mode 100644 index 000000000..3426171c4 Binary files /dev/null and b/assets/da1.ae7a2bb1.png differ diff --git a/assets/da2.57c7af0b.png b/assets/da2.57c7af0b.png new file mode 100644 index 000000000..d7854c51e Binary files /dev/null and b/assets/da2.57c7af0b.png differ diff --git a/assets/da3.e16fb4de.png b/assets/da3.e16fb4de.png new file mode 100644 index 000000000..52a12d997 Binary files /dev/null and b/assets/da3.e16fb4de.png differ diff --git a/assets/da6.5b5d63de.png b/assets/da6.5b5d63de.png new file mode 100644 index 000000000..db434d324 Binary files /dev/null and b/assets/da6.5b5d63de.png differ diff --git a/assets/da7.b7b33663.png b/assets/da7.b7b33663.png new file mode 100644 index 000000000..9877fbe03 Binary files /dev/null and b/assets/da7.b7b33663.png differ diff --git a/assets/da8.d623c64f.png b/assets/da8.d623c64f.png new file mode 100644 index 000000000..b76a9ad94 Binary files /dev/null and b/assets/da8.d623c64f.png differ diff --git a/assets/da9.35a2db61.png b/assets/da9.35a2db61.png new file mode 100644 index 000000000..c10f599fb Binary files /dev/null and b/assets/da9.35a2db61.png differ diff --git a/assets/debug.0a8c47b7.png b/assets/debug.0a8c47b7.png new file mode 100644 index 000000000..6f5a4fe89 Binary files /dev/null and b/assets/debug.0a8c47b7.png differ diff --git a/assets/documentation.4e9ae6e0.png b/assets/documentation.4e9ae6e0.png new file mode 100644 index 000000000..03a08965f Binary files /dev/null and b/assets/documentation.4e9ae6e0.png differ diff --git a/assets/editors.c2eaa93b.png b/assets/editors.c2eaa93b.png new file mode 100644 index 000000000..e569b29c6 Binary files /dev/null and b/assets/editors.c2eaa93b.png differ diff --git a/assets/guide-to-incrementals_design_criticism_index.md.c03c43ef.js b/assets/guide-to-incrementals_design_criticism_index.md.c03c43ef.js new file mode 100644 index 000000000..fb450752d --- /dev/null +++ b/assets/guide-to-incrementals_design_criticism_index.md.c03c43ef.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.1169fbc9.js";const p=JSON.parse('{"title":"Navigating Criticism","description":"","frontmatter":{"title":"Navigating Criticism"},"headers":[],"relativePath":"guide-to-incrementals/design/criticism/index.md","filePath":"guide-to-incrementals/design/criticism/index.md","lastUpdated":1697386254000}'),o={name:"guide-to-incrementals/design/criticism/index.md"},n=i('

Navigating Criticism

Developing games is fun and exciting and teaches a lot of wonderful skills - I enthusiastically encourage anyone with an interest in game development to try it out - and incremental games are a wonderful way to get started. However, there are many challenges young and inexperienced developers have to face, and I think the hardest one - harder than coding, debugging, balancing, etc. - is handling criticism. When you put your heart and soul into a game it is natural to feel very vulnerable. While I think there's a lot communities can do to ensure they're welcoming, positive and constructive with their criticisms, inevitably you will eventually read some, and potentially a lot, of comments that can deeply affect you. No one is immune to this, from young incremental game developers to the largest content creators you can think of. That's why it's important to be able to process and navigate criticism, because ultimately collecting feedback is essential to the journey to becoming a better developer. On this page, we'll explore how to embrace criticism, grow from it, and continue to post your games publicly with confidence.

Reading Feedback

Game development is a skill that takes time and practice to get truly great at. Criticism and other constructive feedback are vital to continually improving. It's useful to look at the criticism as solely a tool for improving this game and future games - that is to say, it should never be used against you as a person. Insults towards the developer(s) themselves are never okay and should not be allowed within whatever community you're sharing your works in. If you do come across a comment you interpret as an attack upon your person, you should report it. For other negative comments, try not to internalize them; instead, focus on improving the game. By distancing your own identity from your work emotionally, you can better analyze the game and use the feedback to your advantage.

Not all feedback is made equal, and you don't need to feel compelled to read and obey every piece of feedback you receive. Learn to distinguish between constructive feedback and unhelpful comments. Constructive feedback typically offers specific suggestions for improvement, while unhelpful comments are often vague or hurtful. Prioritize the former and disregard the latter. That said, most feedback you get will not be from game developers, so take specific suggestions with a grain of salt. Determine the actual problem they're experiencing, and design what you believe the best solution to that problem would be, regardless if that's the specific solution the player asked for. And keep in mind, due to different player preferences you'll never satisfy everyone, and you don't need to. Ultimately if even just you find the game fun, then that's a success.

Seeking Feedback

When deciding where to share your game, consider the type of players you anticipate getting, and the kind of feedback you can anticipate receiving. Different communities will have different levels of support for learning developers, and certain communities may prefer certain types of games or mechanics. It's important to get a diverse set of feedback focused on players you think will enjoy the specific game you're making.

Collecting feedback from other game developers is incredibly helpful. They've trained themselves to recognize good and bad game design and how to articulate the differences, and from my experience are much more likely to leave positive and constructive comments since they've been in your shoes before! They understand the struggles and can offer guidance and emotional support.

Responding to Feedback

Negative feedback can naturally feel like an attack, and it's okay to get angry. However, lashing back is never the appropriate response. It's best to cool off IRL, and keep in mind all the positive comments you've received. There's a concept in Psychology called negative bias that explains how negative feedback tends to stick with us much more prominently than positive feedback, so it's useful to regularly remind yourself of all the positive feedback you've received. Celebrate your successes, no matter how small they may seem - getting a game to a state you can publicly share it with people is an accomplishment in and of itself!

Remember your passion and your initial reasons for getting into game development. The journey will have its ups and downs, but staying true to your vision and passion will keep you motivated.

',11),s=[n];function r(c,l,d,u,m,h){return t(),a("div",null,s)}const f=e(o,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_design_criticism_index.md.c03c43ef.lean.js b/assets/guide-to-incrementals_design_criticism_index.md.c03c43ef.lean.js new file mode 100644 index 000000000..e5c0f9ca4 --- /dev/null +++ b/assets/guide-to-incrementals_design_criticism_index.md.c03c43ef.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.1169fbc9.js";const p=JSON.parse('{"title":"Navigating Criticism","description":"","frontmatter":{"title":"Navigating Criticism"},"headers":[],"relativePath":"guide-to-incrementals/design/criticism/index.md","filePath":"guide-to-incrementals/design/criticism/index.md","lastUpdated":1697386254000}'),o={name:"guide-to-incrementals/design/criticism/index.md"},n=i("",11),s=[n];function r(c,l,d,u,m,h){return t(),a("div",null,s)}const f=e(o,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_design_introduction_index.md.e42aeae1.js b/assets/guide-to-incrementals_design_introduction_index.md.e42aeae1.js new file mode 100644 index 000000000..3608fbf8c --- /dev/null +++ b/assets/guide-to-incrementals_design_introduction_index.md.e42aeae1.js @@ -0,0 +1 @@ +import{_ as n,o as t,c as a,k as e,a as i}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Introduction to Incremental Game Design","description":"","frontmatter":{"title":"Introduction to Incremental Game Design"},"headers":[],"relativePath":"guide-to-incrementals/design/introduction/index.md","filePath":"guide-to-incrementals/design/introduction/index.md","lastUpdated":1697386254000}'),o={name:"guide-to-incrementals/design/introduction/index.md"},r=e("h1",{id:"making-an-incremental-game",tabindex:"-1"},[i("Making an Incremental Game "),e("a",{class:"header-anchor",href:"#making-an-incremental-game","aria-label":'Permalink to "Making an Incremental Game"'},"​")],-1),c=[r];function d(s,m,l,g,_,u){return t(),a("div",null,c)}const f=n(o,[["render",d]]);export{h as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_design_introduction_index.md.e42aeae1.lean.js b/assets/guide-to-incrementals_design_introduction_index.md.e42aeae1.lean.js new file mode 100644 index 000000000..3608fbf8c --- /dev/null +++ b/assets/guide-to-incrementals_design_introduction_index.md.e42aeae1.lean.js @@ -0,0 +1 @@ +import{_ as n,o as t,c as a,k as e,a as i}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Introduction to Incremental Game Design","description":"","frontmatter":{"title":"Introduction to Incremental Game Design"},"headers":[],"relativePath":"guide-to-incrementals/design/introduction/index.md","filePath":"guide-to-incrementals/design/introduction/index.md","lastUpdated":1697386254000}'),o={name:"guide-to-incrementals/design/introduction/index.md"},r=e("h1",{id:"making-an-incremental-game",tabindex:"-1"},[i("Making an Incremental Game "),e("a",{class:"header-anchor",href:"#making-an-incremental-game","aria-label":'Permalink to "Making an Incremental Game"'},"​")],-1),c=[r];function d(s,m,l,g,_,u){return t(),a("div",null,c)}const f=n(o,[["render",d]]);export{h as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_index.md.15e8a709.js b/assets/guide-to-incrementals_index.md.15e8a709.js new file mode 100644 index 000000000..b78c5bd75 --- /dev/null +++ b/assets/guide-to-incrementals_index.md.15e8a709.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"title":"Introduction"},"headers":[],"relativePath":"guide-to-incrementals/index.md","filePath":"guide-to-incrementals/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/index.md"},i=o('

Introduction

This is a comprehensive guide to Incremental Games, a genre of video games. It will explore defining the genre, why it's appealing, and how to design and build your own incremental game. Along the way will be interactive examples, snippets from other creators, and relevant material to contextualize everything.

Note: This is an incomplete document. I want to keep adding opinions and opposing views from other incremental games developers, and add interactive examples to illustrate various points regarding game design and balancing. Consider this a living document - and see the changelog at the end.

Who am I?

That's a good question! What authority do I have to be making this site? I haven't made the best incremental games, nor the most incremental games, certainly not the most popular ones either. I do have some formal education in game development, know a lot of incremental game devs, as well as other game devs, and an interest in ludology, classifying genres, etc. I've also made a couple of incremental games myself.

If you have any additional questions about my credentials or anything on this site, feel free to contact me: I'm "The Paper Pilot" on most social media. You'll probably get a response fastest via my discord server, or if you just want to suggest changes to the website you can click the "Edit this page" link present on every single page.

',6),r=[i];function s(l,d,c,m,h,p){return t(),a("div",null,r)}const _=e(n,[["render",s]]);export{u as __pageData,_ as default}; diff --git a/assets/guide-to-incrementals_index.md.15e8a709.lean.js b/assets/guide-to-incrementals_index.md.15e8a709.lean.js new file mode 100644 index 000000000..0999e61ae --- /dev/null +++ b/assets/guide-to-incrementals_index.md.15e8a709.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"title":"Introduction"},"headers":[],"relativePath":"guide-to-incrementals/index.md","filePath":"guide-to-incrementals/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/index.md"},i=o("",6),r=[i];function s(l,d,c,m,h,p){return t(),a("div",null,r)}const _=e(n,[["render",s]]);export{u as __pageData,_ as default}; diff --git a/assets/guide-to-incrementals_ludology_appeal-developers_index.md.d54da3c8.js b/assets/guide-to-incrementals_ludology_appeal-developers_index.md.d54da3c8.js new file mode 100644 index 000000000..b5c2c5fe3 --- /dev/null +++ b/assets/guide-to-incrementals_ludology_appeal-developers_index.md.d54da3c8.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Appeal to Developers","description":"","frontmatter":{"title":"Appeal to Developers"},"headers":[],"relativePath":"guide-to-incrementals/ludology/appeal-developers/index.md","filePath":"guide-to-incrementals/ludology/appeal-developers/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/ludology/appeal-developers/index.md"},i=o('

Appeal to Developers

There are a lot of developers in the incremental games community - the genre seems to draw them in, and convert a lot of players into developers. Let's explore the reasons why this genre appeals to developers.

Incrementals are Easy to Make

Compared to other genres, incrementals have quite low expectations. You don't need to make fancy art, or music, or lay things out nicely. If you can make a button and learn the few lines of code necessary to make a number go up, you can make an incremental. This low threshold makes the genre perfect for those who are actively learning to code and haven't developed any gamedev-related skills yet.

Additionally, unlike other genres incrementals are uniquely easy to implement in a normal web page - no need to worry about rendering sprites, moving them around, implementing physics, etc. New developers can just use HTML to add a button, and the game is now available in your browser. You don't need to choose an engine, have admin privileges, or hell for the dedicated you don't even need a computer - there are tools for web development that run in the browser itself, so you can technically use your phone if that's all you have.

Javascript is a perfectly viable language for making web games, whereas other genres are typically going to require using other more difficult languages to learn. There are countless javascript tutorials that start from 0 knowledge of programming, making it incredibly accessible to beginners.

Players are Easy to Find

Once you've finished your game and uploaded it on github pages or itch or just copied the link if you're using glitch or replit (all of which are easy to do), anyone can now play the game in their browser. This low barrier to entry has shown tremendous success in getting completely unknown developers to have thousands of plays.

The incremental games community, which mostly centers around r/incremental_games, is always looking for new games and tends to flood any new ones posted with initial players.

Having your games be played can be incredibly motivating, and the community makes it quite clear that you can expect players to play your game. These communities - both for incremental games in general as well as game-specific communities - tend to be very developer friendly as well. A lot of the developers know each other, and welcome new developers with open arms, often with dedicated channels for programming help and discussions.

Monetization

I'd like to clarify that everything I've said above mainly applies to web-based incrementals. Incremental games are also incredibly popular on mobile, but with a much different culture and community. Many mobile gamers will still participate in the web-focused community for the culture. This web-focused community has a culture that has been criticized for being "anti-monetization". Ads, IAPs, and similar forms of monetization are often criticized, mainly due to the abundance of completely non-monetized games available from hobbyist developers. There are exceptions, like paid games often being considered fine, like Increlution or Stuck in Time, or donation ware games like kittens game, but even popular games that have IAP see some level of regular criticism, like NGU Idle, Idle Skilling, or Idle Pins. A large part of this can be explained by the community being hyper-aware of the addictive nature of this genre and its susceptibility to exploiting players.

On mobile, however, monetization is the norm and expected. If an incremental game is available on mobile, it almost certainly will be monetized, and mobile players are aware and accepting of that. Mobile incremental games, due to their addictive nature, tend to make a lot of money. It's very lucrative, and therefore these games are quite abundant on mobile storefronts.

',13),r=[i];function l(s,d,m,c,p,h){return a(),t("div",null,r)}const g=e(n,[["render",l]]);export{y as __pageData,g as default}; diff --git a/assets/guide-to-incrementals_ludology_appeal-developers_index.md.d54da3c8.lean.js b/assets/guide-to-incrementals_ludology_appeal-developers_index.md.d54da3c8.lean.js new file mode 100644 index 000000000..e2113e7e2 --- /dev/null +++ b/assets/guide-to-incrementals_ludology_appeal-developers_index.md.d54da3c8.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Appeal to Developers","description":"","frontmatter":{"title":"Appeal to Developers"},"headers":[],"relativePath":"guide-to-incrementals/ludology/appeal-developers/index.md","filePath":"guide-to-incrementals/ludology/appeal-developers/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/ludology/appeal-developers/index.md"},i=o("",13),r=[i];function l(s,d,m,c,p,h){return a(),t("div",null,r)}const g=e(n,[["render",l]]);export{y as __pageData,g as default}; diff --git a/assets/guide-to-incrementals_ludology_appeal-gamers_index.md.cc18f4cc.js b/assets/guide-to-incrementals_ludology_appeal-gamers_index.md.cc18f4cc.js new file mode 100644 index 000000000..19e443a8f --- /dev/null +++ b/assets/guide-to-incrementals_ludology_appeal-gamers_index.md.cc18f4cc.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Appeal to Players","description":"","frontmatter":{"title":"Appeal to Players"},"headers":[],"relativePath":"guide-to-incrementals/ludology/appeal-gamers/index.md","filePath":"guide-to-incrementals/ludology/appeal-gamers/index.md","lastUpdated":1697386254000}'),o={name:"guide-to-incrementals/ludology/appeal-gamers/index.md"},n=i('

Appeal to Players

This is something that has been discussed and analyzed by many people, and to some extent, I feel like everything that can be said on the topic already has. However, a lot of these analyses are from the perspective of those with not as much experience and involvement within the genre as I'd argue would be necessary for a fully contextualized answer. I recently watched a video about Vampire Survivors, which has since been taken down due to drawing negative attention, which made me think about some interesting arguments about what games are, and what makes them good. The video's argument that "Vampire Survivors is not a video game" mirrors a claim by the developer of Cookie Clicker that his games are "non-games". Using Vampire Survivors and the video made on it as a framework, I'll be answering why incremental games appeal to players. Since the video has been taken down, I'll do my best to contextualize and generalize the arguments of the video without requiring the reader to watch it. For what it's worth, while I disagreed with the video I actually liked a lot of the way it went about thinking about games, and I consider this a continuation of that discussion.

Numbers Going Up

This is a very common response to why people enjoy incremental games, although it's not one I find compels me personally, and I suspect it might be a stand-in for progression or content. But reportedly, some people do just like seeing big numbers. I must reiterate I suspect the actual cause is seeing big numbers in context though - if you start at 1e1000 of a currency and get to 1e1001, that isn't going to feel as satisfying as going from 1e10 to 1e100, and in any case, I don't think a button that just adds a zero to your number will feel quite satisfying - I believe its the sense of having made progress, and comparing where you are to where you started and feeling like you've earned your way here that is enjoyable.

Progression

Vampire Survivors can be argued to have a comparatively low depth to its combat compared to many other games. I'd argue it has sufficient depth and more than someone might expect who has only played the game for a short while, but it still definitely gets beat out by many other combat-focused games. Instead, a lot of the progression in Vampire Survivors comes from a meta-progression system by which base stats are increased by spending a currency that persists between runs. While it is technically possible to win without this meta-progression system, and indeed in many roguelikes players like to challenge themselves by beating the game without any meta-progression, the criticism can be made that meta-progression de-emphasizes player skill by making it less important to have to beat the game. Certainly, in incremental games, it is often literally impossible to complete a game without taking advantage of the meta-progression systems. I'd argue this does not detract from the game, however, and is actually a part of what makes incremental games, and roguelikes, enjoyable to many players: meta-progression augments the increases in skill the player is naturally gaining as they play. In effect, it's not replacing the skill increase, but exaggerating it to make it feel more real to the player.

Note: There is also a lot of progression from exploring the mechanics and discovering synergies, unlocking new weapons or playable characters, etc. That just isn't as relevant to this discussion, but it does make up a lot of the appeal of the game.

Effortlessness

Incremental games are so easy, a lot of them even have you progress while you're not playing! Part of the appeal is being able to feel like you're making progress while doing something actually productive - multitasking, in a way. In this sense, the game is more of a fidget toy - not something to think hard about and play actively, but something to click a few buttons every so often while you're paying attention to a lecture or studying or working. Of course, not all incremental games lend themselves to being played this way - it's specifically "idle" games that work like this. These are games that take an incredibly long amount of time to see all the content, stretching it as thin as possible, but they aren't expecting you to be sitting at your device playing it the entire time. They expect you to leave and come back later to make a bit of progress and repeat the cycle.

If you look at the higher-level play of most games, you'll see them perform difficult feats with ease and speed. They'll achieve a "flow state" that takes all their knowledge and experience of the game and uses it to play the game as instinctively as possible. It's incredible to watch things like Slay the Spire speed runs or competitive DDR-likes. I'd argue the goal of a lot of games with a competitive scene is to get so good that the game becomes effortless. In that sense, a game that allows you to reach that point earlier isn't any less legitimate, but rather lowers the barrier to entry by allowing more people to get "really good" at the game. And to be clear, Vampire Survivors and (most) incremental games aren't trivially easy - they, and to an extent, every game will have some level of learning and improvement over time.

Addiction

A lot of these reasons for why incremental games appeal may have reminded you of why gambling appeals to people, particularly those prone to addiction. Indeed, incremental games are quite often criticized for their similarity to a skinner box. Some have gone as far as to say incremental games as a genre are commenting that all games are skinner boxes. The argument goes that some games are not fun, but rather condition players into continuing to play without actually getting anything from the experience. When tied to real-world money this is seen as predatory, and to a lesser extent, even free games may be feeding the addictive sides of people and making them more prone to seek out gambling or micro-transaction heavy games.

While incremental games can be fun and even healthy in certain contexts, they can exacerbate video game addiction more than other genres. If you feel like playing incremental games is taking priority over other things in your life, or manipulating your sleep schedule, it may be prudent to seek help. See r/StopGaming for resources.

Since incremental games are often built on extrinsic motivations in the form of progression systems, it's hard to argue whether players continue to play because they are enjoying the gameplay, or if they are just conditioned to keep doing it because the game keeps rewarding them. Unfortunately, it can often feel like it's the latter, as there isn't typically anything compelling about the "gameplay" of clicking a button and waiting. There may be a significant overlap between those who enjoy incremental games and those who are most prone to addiction, and there are often posts on r/incremental_games about someone either struggling with or overcoming video game addiction.

Strategy

Incremental games could be considered a subset of strategy games, and inherit the appeals of strategy games. This includes the appeal of feeling like you've found a good solution to a puzzle, or that you're learning more about the game and are improving at making decisions within it. This applies to Vampire Survivors specifically, where you're learning about evolutions and synergies and what kinds of enemies can spawn under what conditions, and how best to handle them.

Note that strategy games are not all the same difficulty, as well. Vampire Survivors is still easier to play than Starcraft 2, and Cookie Clicker is probably somewhere in between (once you progress sufficiently). Vampire Survivors being so successful may indicate that "easier" strategies may have their separate appeal to harder strategy games - players like to feel smart and that they figured the game out and have optimized or mastered it, and the game being easier doesn't detract from that sense of accomplishment as much as it allows more and more users to be able to reach the point where they gain that sense.

Avoiding Staleness

Incremental games tend to have "paradigm shifts", where the gameplay changes in a meaningful way at various times throughout the progression of the game. These upset and change the gameplay loop, which helps keep them from stagnating. This constant "freshness" to the gameplay can keep players engaged for longer, compared to a game with a repetitive and static gameplay loop.

Good Game Design

Incremental games tend to show their game design "plainly", so it's more readily apparent if a game has good game design while playing, even if you're not looking for it. While different players have different preferences and might enjoy different types of games more than others, there are underlying good and bad game design principles that players will notice the effects of. To be clear, this isn't talking about stuff like big numbers being enjoyable, where I can comfortably agree to disagree with other players. They don't intrinsically make my experience better, but I'm aware of those for whom it does and I won't argue against their feelings. However, the game designer in me does feel like there are some extremely clear-cut examples of good and bad game design philosophies.

Let's start by giving an example of a mechanic I think can be easily and strongly argued is good game design. There are of course many examples, but a personal favorite of mine is how DOOM encourages aggressive gameplay by linking health drops to melee attacks. It has an intended experience it's trying to give the player - immersing themselves as DOOM guy, who would not hide behind cover when low on health - and this mechanic does a great job at encouraging and effectively teaching players to behave properly. This is in sharp contrast to shooters like Call of Duty, which have you regen health passively, encouraging players to hide behind cover and wait after getting hit. Note that I'm not arguing CoD is poorly designed, as the games have different intended experiences. I'm specifically praising DOOM for having a mechanic that does a good job at ensuring the player has that intended experience.

To contrast with an example I think is bad game design, let's talk about shields in souls-likes. This is a bit of a famous example, and I highly recommend this video essay which spends quite a good bit of time on this topic. Essentially, the argument boils down to players of earlier games in the souls games using shields too much - playing slowly, conservatively, and ultimately having less fun. Players wanted to feel safe, so they ended up playing in a way that ruined the experience for them. The developers solved this by removing shields, apart from an intentionally bad one effectively mocking the playstyle, and it did its job at getting players to play more aggressively, and often have more fun.

To bring the conversation back to incrementals, I'm incredibly opinionated on what makes a good incremental game, which I'll discuss in the game design section. Suffice it to say, incremental games rely more on good game design than other genres, due to not having much to distract from bad game design. This helps (although imperfectly - gamers are a bit too tolerant of bad game design!) well-designed games rise to the top within the genre.

Artistic Merit

The Vampire Survivors video made me think back to the old arguments about whether games are art, and whether they ought to be. The video seems preoccupied with attaching value to games solely based on their mechanics and the depth thereof, to the point of arguing Vampire Survivors is a waste of time due to its lack of depth. However, even setting aside the fact that if players are having fun then it's not time wasted, I think games can have artistic merit that supersedes the necessity of having (any / engaging / "deep") gameplay. I think the consensus online is that games are definitively art, although I could see the argument that some genres, like incremental games, might be a bit in a grey area. Let's talk about Vampire Survivors first though - It has a story to tell, with lore and many characters, that drive the player and encourage them to continue exploring the game and discovering things within it. Like any walking simulator, it is no less legitimate of a game or the "art" label because of any lack perceived lack of depth. For what it's worth, most art can be consumed with more ease than VS - any painting, movie, sculpture, etc.

A lot of incrementals have a narrative context that can similarly qualify them as art. Cookie Clicker is, as has been pointed out numerous times before, commenting on excess and increasing production beyond any reasonable limits - devolving into increasing production for its own sake. Indeed, a lot of incremental games are written to comment upon various concepts like capitalism or tropes in games, as discussed when defining Incrementals. However, I'd like to argue most incremental games are still art, even without any narrative context. "Art" as a concept is pretty nebulous already, but I personally like those who define it as an act of expression more than any physical result. The creator and the context within which they created the art, and any meaning they put into it, are all relevant and a part of the art itself. Most incremental games have artistic merit from things like why the creator made it, why they chose to make it an incremental game, and why they made any particular design decision. Hell, even if you play through an entire incremental game without a single thought or feeling, that very fact it elicited nothing can itself be artistic merit!

I'm not an art major, and I may be taking a somewhat extreme take on what is art and what has artistic merit, but I'd argue the overall point stands that games, and incremental games specifically, can have artistic merit, which appeals to many gamers.

',28),s=[n];function r(l,h,m,g,d,c){return t(),a("div",null,s)}const y=e(o,[["render",r]]);export{u as __pageData,y as default}; diff --git a/assets/guide-to-incrementals_ludology_appeal-gamers_index.md.cc18f4cc.lean.js b/assets/guide-to-incrementals_ludology_appeal-gamers_index.md.cc18f4cc.lean.js new file mode 100644 index 000000000..ac41a13ae --- /dev/null +++ b/assets/guide-to-incrementals_ludology_appeal-gamers_index.md.cc18f4cc.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Appeal to Players","description":"","frontmatter":{"title":"Appeal to Players"},"headers":[],"relativePath":"guide-to-incrementals/ludology/appeal-gamers/index.md","filePath":"guide-to-incrementals/ludology/appeal-gamers/index.md","lastUpdated":1697386254000}'),o={name:"guide-to-incrementals/ludology/appeal-gamers/index.md"},n=i("",28),s=[n];function r(l,h,m,g,d,c){return t(),a("div",null,s)}const y=e(o,[["render",r]]);export{u as __pageData,y as default}; diff --git a/assets/guide-to-incrementals_ludology_content_index.md.0335dc81.js b/assets/guide-to-incrementals_ludology_content_index.md.0335dc81.js new file mode 100644 index 000000000..58c652ac9 --- /dev/null +++ b/assets/guide-to-incrementals_ludology_content_index.md.0335dc81.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const p=JSON.parse('{"title":"What is Content?","description":"","frontmatter":{"title":"What is Content?"},"headers":[],"relativePath":"guide-to-incrementals/ludology/content/index.md","filePath":"guide-to-incrementals/ludology/content/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/ludology/content/index.md"},i=o('

What is Content?

If you've been in the incremental games community for any amount of time, you'll quickly find the number one thing players want is content. They want as much of it as possible! The most popular incremental games have tons of content, so they just keep stretching on and on and on, introducing mechanic after mechanic, and players love it. In fact, players seem to value the amount of content over the quality of any specific content. However, there's a bit of a lack of understanding concerning what content is, and I'd like to explore what counts as content, and how we measure it. As a baseline definition, I think "content" can just be described as the parts of the game that engage the player, but to truly understand it we need to contextualize what that means and how it affects the gameplay experience.

To clarify the purpose of this page, my goal is not to get (too) nitpicky or to attack games with "low content". There's nothing wrong with short / low-content games - I'm quite a big fan of those games myself! This is mostly targeted toward those who ask for content and settle for "long" games, and those who want to provide content but want to make sure they're not just artificially inflating the game. Ultimately, I suppose the goal is to just reduce the amount of artificially inflated content for the sake of having a "longer" game.

Interaction

I think it should be a fairly non-controversial opinion that time spent solely waiting should not count towards content. That is not including the time reading various effects or making decisions in your head, but rather time spent waiting for a condition to be met so you can re-engage with the game.

That is not to say games should necessarily try to minimize this time. Plenty of games lead towards more infrequent interaction and still get popular. In fact, these games appeal to many gamers who want to have something to check up on in between bursts of working on some other activity. These games seem to have fallen slightly out of fashion amongst modern incremental games, but they're still fully valid. The point I'm trying to make here is just that this time is not content. As an extreme example, a game with no interactions and just a counter that goes up every second could safely be said to have 0 content beyond the time it takes to understand what's going on. If it has a list of "goals" to hit, then the time understanding those goals and a short time after achieving each one could be considered content, but not the idle times in between.

Let's take a look at the opposite end of the spectrum - interaction that is so frequent as to become mindless. This is any mechanic where you need to spam-click something to progress. This may be a more controversial take, but I do not believe this constitutes content either. It does not engage the player, because each consecutive click blends together and they do not individually change the gameplay experience. That is to say, a single click and 100 clicks are not meaningfully different in terms of engaging the player. I'd go as far as to say clicking 100 times would be actively worse, as it's artificially delaying the next piece of actual content, alongside the issues of accessibility and potentially causing RSI.

Repeatable Purchases

Imagine an entity in a game that you can purchase multiple times, each time it performs the same thing but for a higher cost. These are incredibly common, from the buildings in cookie clicker to the units in swarm sim to the IP and EP multipliers in antimatter dimensions. However, how much content is each specific purchase? Is it content beyond the first purchase? Does it have diminishing returns? What if you are oscillating between two different repeatable purchases? How much content is lost when you automate away a repeatable purchase?

I don't want to take too harsh a stance against repeatable purchases. They're useful tools and can be used in a myriad of interesting ways. I feel they do become "stale" or less meaningful content over time, and this happens exponentially quickly the more frequently it can be purchased. A classic example that I believe goes too far is the IP/EP multipliers in Antimatter Dimensions. I would go as far as to say they are a chore and do not provide any meaningful content after you've bought them a couple of times. It's a method for inflating numbers (effectively making every OOM a 5x step instead of 10x), that punishes the player progression-wise whenever they forget to max it again, and eventually gets automated away as a reward to the player for making enough progress.

Just to voice the other side of this argument, Acamaeda defended the IP multiplier as giving the player a "good" upgrade every OOM. I can understand that to a point and need to clarify I'm mainly criticizing IP/EP multipliers after they've been introduced for a while. In fact, I would defend the multipliers for a short while after they're introduced using the same logic I would use to defend normal dimensions as repeatable purchases, at least pre-infinity. There's "content" to be had in looking at what dimensions will become affordable next, and then choosing which to buy amongst those. The IP/EP multipliers, early into infinity or eternity respectively, provide another option that gets put into that mental queue of things to buy with each OOM reached - although the optimal order is often quite trivial and not particularly engaging.

The IP/EP multipliers are not the only repeatable purchase in antimatter dimensions I take offense to. The time dimensions are also a series of repeatable purchases, that are all so similar and static that it doesn't take long before you never need to put any thought into buying them, how much you're buying at once, or the order you buy them in - you just press max all and move on. The entire tab could've been just the max all button and it would not have made a difference beyond the start of the eternity layer. The normal dimensions technically have this problem as well, but since you're constantly getting antimatter the order feels like it has a larger impact and it's more meaningful content, right up until they're automated away. Infinity dimensions are a compromise between the two, so I'm highlighting time dimensions here as the most egregious.

Following Instructions

We're getting more and more controversial as we go along! Let's talk about how linear content is not content now (in some circumstances). A trend in incremental games is adding difficulty by adding a web of effects that abstract the true change you can expect from any specific purchase or decision you make. If a game is both linear and sufficiently abstracts the effect of player decisions, then the player will no longer be engaging with the content - they'll simply be clicking on things as they become available. This isn't necessarily a bad thing, as plenty of players don't mind this style of gameplay, but I'd argue once you reach a point where players don't bother reading the effects, those interactions are no longer truly content. Note that unlike the previous qualifiers mentioned, this qualifier is based on the player, and therefore subjective. In effect, it's a spectrum where the more complicated the web of effects becomes, the more likely it is to disengage the player.

This over-complicatedness leading to disengaging the player can also happen from non-linear gameplay. If the web of effects becomes sufficiently complicated and finding the optimal progression route too time-consuming to discover, players will seek out guides from other players who've completed the game. The second they do this, the game effectively becomes linearly following the instructions of the guide and all the above criticisms apply. Similarly to as before, though, this is a spectrum and not everyone will seek out a guide at the same level of difficulty.

Automation

Automation is a staple of the genre, but it has certain implications for the design of the game. Why, when new content is introduced, must the older content be automated away - why is it a chore and it feels rewarding to not have to do it again? Why does the new mechanic have such appeal if we know it too will just be automated away later on, and we'll be happy when that happens? It honestly begs the question of why this framework of introducing content and automating the old content is even enjoyable - and nearly nonexistent in other genres. You're not going to reach a point in a platformer game where they just automate the jumping part - that's the core mechanic! Instead, platformers either add new mechanics that build on the core mechanic or at least re-contextualize the core mechanic. However, in incremental games new content very frequently means replacing older content, as opposed to augmenting it.

Admittedly, the above paragraph ignores the obvious answer that separates incremental games in this regard. These mechanics become chores as their frequency increases. The frequency increases to give a sense of progression, and automation is seen as a reward because it now manages what was becoming unmanageable. The new content then comes in and continues the loop to give a stronger sense of progression. That's all good and a fine justification for automating content instead of building upon the base mechanic. It's also much easier to design, as each layer essentially lets you start over instead of needing to think of ideas that conform to the original core mechanic.

So, what's the problem? Even if this trend is justified and easy to implement, there are some other effects it has on the game design. First off, and this is probably a neutral point, incremental games with this cycle of replacing old mechanics with new ones trend towards more and more abstract and further away from any narrative throughline as they add layers. There are only so many justifications for resetting progress, so if a game wants to have several of these layers they're inevitably going to become generic or increasingly loosely associated with the original content. It's most unfortunate, in my opinion when an interesting or innovative core mechanic gets fully automated once a generic "prestige" layer is unlocked.

A recent example is Really Grass Cutting Incremental, an incremental game about cutting grass. Except, it doesn't continue to be about cutting grass. After you buy enough upgrades to increase your grass cutting and level up sufficiently you "prestige", an abstract term that in this case means you reset all your progress to get some currency to buy upgrades that do the same things as the original upgrades, but these won't reset on future prestiges. You'll eventually be able to "crystallize", which means you reset all your progress to get some currency to buy upgrades that do the same things as the original upgrades (and a couple of new ones) and won't reset on future crystallizes. Fine. You'll progress a bit, complete some challenges, and finally get to... grasshop? Grasshopping is this mechanic where you reset all your progress to get some resource that isn't for buying upgrades - this time you just unlock different modifiers on everything based on their amount. You may have gotten the point by now, but there are also "steelie" resets which give you steel for some reason, before unlocking a factory with various machines - none of which are directly tied to cutting grass, and start gathering things like oil and reset for rocket parts and reset to go to space and so on and so on. Throughout all of this there is absolutely no narrative justification or throughline for the direction the game is going, or why cutting grass is still relevant when we're collecting things like rocket parts. I may be going a little hard on GCI, but it is far from alone.

Tips for Developers

If you're a developer, by this point you should have a pretty decent idea of how to create "true" content in your game. Here are some other specific tips I'd suggest:

  • An upgrade that simply unlocks another upgrade trivially isn't content. However, many games have an upgrade that just unlocks a feature, which then has a wait or other requirements before it can be used. Try to make sure when you unlock a feature, there is immediately something to do with the feature - for example, perhaps give them a small amount of the new currency it unlocks, if applicable.
  • If you don't have a large web of effects, and can definitively say the impact of a purchase is to multiply the gain of the cost currency by N, and the next purchase costs N times the amount of that same currency, then this purchase effectively made no difference and it may have made more sense to just go directly to the next upgrade. That said, having effects based on things like the number of purchases made will quickly invalidate this tip.
',23),s=[i];function r(h,l,c,u,m,d){return t(),a("div",null,s)}const f=e(n,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_ludology_content_index.md.0335dc81.lean.js b/assets/guide-to-incrementals_ludology_content_index.md.0335dc81.lean.js new file mode 100644 index 000000000..649194b74 --- /dev/null +++ b/assets/guide-to-incrementals_ludology_content_index.md.0335dc81.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const p=JSON.parse('{"title":"What is Content?","description":"","frontmatter":{"title":"What is Content?"},"headers":[],"relativePath":"guide-to-incrementals/ludology/content/index.md","filePath":"guide-to-incrementals/ludology/content/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/ludology/content/index.md"},i=o("",23),s=[i];function r(h,l,c,u,m,d){return t(),a("div",null,s)}const f=e(n,[["render",r]]);export{p as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_ludology_definition_index.md.2d700f3c.js b/assets/guide-to-incrementals_ludology_definition_index.md.2d700f3c.js new file mode 100644 index 000000000..0d821f1e7 --- /dev/null +++ b/assets/guide-to-incrementals_ludology_definition_index.md.2d700f3c.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as r}from"./chunks/framework.1169fbc9.js";const p=JSON.parse('{"title":"Defining the Genre","description":"","frontmatter":{"title":"Defining the Genre"},"headers":[],"relativePath":"guide-to-incrementals/ludology/definition/index.md","filePath":"guide-to-incrementals/ludology/definition/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/ludology/definition/index.md"},o=r('

Defining the Genre

Video games are placed into genres for a variety of reasons. They can give a mental shorthand to set the player's expectations up, they can help a game market itself by its similarities to other, already popular games, and honestly, people just love categorization for its own sake. For this guide, it's important to define the genre so it is clear what games it's even talking about.

This poses a problem. "Incremental" is a horribly vague way to define games. Most games have numbers going up in some form or another. We need a more specific definition - similar to how "strategy" can't just mean any game with any amount of strategy because that would be most games. What specifically differentiates incremental games from the rest?

"Incremental" implies it's a genre defined by a game mechanic, but all those game mechanics it could imply exist in many other games. Having a skill tree or upgrades doesn't make you incremental, and if a reset mechanic is all it takes then every roguelite would be an incremental as well. So clearly there's more to it than that - what makes an incremental an incremental?

I'd like to go over a couple of popular suggestions I've seen on defining the genre here. I have my personal preferences and will state them here, but I don't think there's a truly perfect answer here.

Disclaimer: I mostly play incremental games on my computer, and my definitions will be heavily biased towards the games I'm familiar with.

Incrementals vs Idlers vs Clickers

Oftentimes people refer to this genre as idle games and/or clicker games. You'll even find a trend of oxymoronic game titles that contain both terms. "Incremental games" is the umbrella term both those terms fall under. However, I'd like to argue that not only is it better to just use the term "incremental games", but calling them "idle games" or "clicker games" is wrong. Almost universally, these terms are used interchangeably to refer to the same kind of game, where you start the game click spamming and eventually automate the process. Frankly, that kind of game deserves neither title, and the genre of incremental games has trended away from ever requiring click spamming, as it's a bad mechanic, anyways.

While these games do span a spectrum of how active it requires you to be, and sorting games by that metric can be useful for those looking for a particular experience, the borders of when an incremental game counts as an "idler" is too blurry for the term to be useful. "Incremental games" may not be a great descriptive term for the genre (hence this many thousands of words long page on defining what the genre even is), but it's strictly better than calling them "idler" or "clicker" games. This guide will always use the term "incremental games" unless quoting someone else, as it is the term you typically see on all modern games in the genre.

Incrementals as Parodies

Let's start with one of the most interesting definitions of incremental games. Incremental games appear to be distilled versions of games or genres, "revealing" the naked game design at the core of these games or genres not unlike how parodies comment upon their source material.

To understand what that means, think of how a casino uses skinner boxes to emotionally manipulate its customers to keep playing, but "dressing" up the skinner box with tons of stimuli to hide that ultimately the goal is to condition you into coming back compulsively. The idea that incremental games are parodies means taking the stance that at some level all games are similarly manipulating you, giving dopamine rewards in a way that manipulates you to keep playing while not necessarily giving you any value or fulfillment. Incremental games, then, are any games that plainly display the skinner box, and the manipulative core of the game, at the forefront of the experience.

While incremental games can be fun and even healthy in certain contexts, they can exacerbate video game addiction more than other genres. If you feel like playing incremental games is taking priority over other things in your life, or manipulating your sleep schedule, it may be prudent to seek help. See r/StopGaming for resources.

This "undressing" tends to go hand in hand with a reduced focus on aesthetics, often just printing the game state directly to the screen as text. This makes incremental games much easier to develop, particularly for those with programming skills but not art skills, but that's a tangent for why Incremental Games appeal to Developers.

Before I continue, I'd like to make my stance clear that I love games and incremental games, and do not think they should be considered inherently bad or manipulative with the above logic. Skinner boxes are just a way of manipulating behavior via rewards. The games are still fun - that's the reward! I'd believe the real criticism here is that it is "empty fun", or "empty dopamine", that doesn't offer any additional value or sense of fulfillment. I don't think that's inherently bad in moderation, although it can become a problem if the game is manipulating you for profit-seeking, or if you play the game to the detriment of the other parts of your life.

Another interpretation of incremental games as parodies comes from several mainstream incremental games that are also parodies of capitalism, such as cookie clicker and adventure capitalist. It's a very common framework for incremental games to portray the ever-increasing numbers as an insatiable hunger for resources, like the ones observed within capitalism. Therefore, these games are used as evidence that the genre as a whole is about parody and commentary.

Popular videos on incremental games that portray the genre as parodies are Why Idle games make good satire, and how it was ruined. and Bad Game Design - Clicker Games. You may also be interested in this response to the latter video from a fan of incremental games: BadGood Game Design - Clicker Games.

I think that this definition ultimately ascribes a motive to the genre as a whole that only happens to apply to some of the more mainstream titles. There certainly are incremental games commenting on different things, including the genre itself as in the case of The Prestige Tree Classic, The Ascension Tree, or Omega Layers, but certainly not all. And of course, not all games that comment on something or parody something are incremental games! Additionally, a very large majority of incremental games are mobile games using these manipulative strategies to get players to spend as much money as possible - hell, Adventure Capitalist is ostensibly a critique on capitalism but features microtransactions and gameplay that manipulates you into buying them! These profit-seeking incremental games certainly belong within the genre but are hardly parodies when they too use manipulation to serve their interests. Also, from my own anecdotal experience, those who use this definition seem to do so from a fairly surface-level familiarity with the genre, and often in the context of criticizing the genre or the fans thereof.

Incrementals as NGU

Another broad definition often used is that incremental games are games where the focus of the game is "numbers going up". This definition proposes that other genres simply use increasing numbers as a means to an end, but incremental games uniquely only care about the numbers themselves going up. Put another way, it implies there should be no narrative justification for the numbers going up other than "why shouldn't they be going up?"

While this definition is common because it feels easy to understand, it is difficult to formally define. Often phrases are used to describe games using this framework, such as having an "exaggerated sense of progression" or "big" numbers. These terms are vague and don't demonstrate an actual threshold between non-incrementals and incrementals. Most games have a sense of progression, so when is it "exaggerated"? How big are "big" numbers? Most notably, RPGs that are typically not considered incrementals will often pass this definition.

Additionally, a lot of incrementals tend to have some theme guiding the gameplay, or at least the names of mechanics. This makes the line blurred between when numbers are going up for their own sake versus for a contextual reason. I believe this point is best illustrated that, while most RPGs are not considered incremental games, there is a sub-genre of "incremental RPGs" that typically relates to RPGs that perform combat automatically. This definition of incremental games does not support RPGs and "incremental RPGs" being on distinct sides of the line if the only difference between them is manual vs automatic combat.

Incrementals as Strategies

This is a rarer interpretation, but there are similarities between incremental games and strategy games, implying incrementals might just be a sub-genre of strategy games. By this approach, incremental games would be defined by their relation to strategy games, and how they involve player strategy. Incremental games are often large optimization problems - above all else, the actual gameplay the player is performing is deciding what to do next. The consequences of wrong decisions are typically more lenient in incremental games - such as just not making optimal progress - but they certainly get complex.

So if we accept the premise that incrementals could fall under strategy, we still need to define what makes a strategy game an incremental versus some other strategy sub-genre. This is a bit tricky due to one particular sub-genre of strategy games: Factory Builders.

Factory builders, such as Factorio or Satisfactory, are games about gaining ever increasing resources, optimizing production, and expanding more and more. That... sounds pretty similar, doesn't it? In fact, there's been some debate on whether factory builders would fall under the "incremental" umbrella. I think it's safe to say the two are certainly related, and probably have quite a bit of overlap in playerbase.

Roguelites as Incrementals?

Earlier on, I mentioned reset mechanics shouldn't be used in the definition because that could make all roguelites incrementals... But what if it does? A lot of incrementals can be described as games with a strong sense of progression, often with layers of meta-progression. Roguelites fit that bill to a T. What would make roguelites not incremental? I honestly don't think there's a good explanation here, but many fans of incremental games will state they do believe the two genres to be unrelated, even if there's a significant overlap between their player bases due to having similar appealing traits.

At this point, it'd be appropriate to consider what part of the definition of roguelites precludes them from also being incrementals, but that reveals a new problem: What are roguelites? They're usually defined as rogue_likes with meta-progression, but that just pushes the problem back a step: Incrementals aren't the only genre to have difficulties defining themselves, it seems! Roguelikes are another genre where the community argues over the formal definition of their genre, although that means we can borrow from their process of coming to a consensus, and maybe come across a viable definition for incremental games.

The Berlin Interpretation

By far the most popular way of defining roguelikes is the "Berlin Interpretation", which acknowledged the diversity of games within the genre and argued the definition should not be based on any ideals about what the genre ought to be, but rather defined by "its canon". They argued there are a handful of games that can be used to define the canon for roguelikes, and from those games, a list of factors can be derived to determine a game's "roguelikeness". The more factors a game has, the more of a roguelike it is. This strategy is very lenient, allowing a game to not present any specific factor so long as it shows enough, and accounts for the blurriness of any genre definition by not explicitly stating how many factors a game must have to qualify as a definite roguelike.

I believe this strategy for defining genres can be applied to other genres as well. A handful of games can be argued to be the incremental games canon, and a list of factors derived from them can be used to judge any game based on its "incrementalness". I'll propose such a canon and list of factors here, but by no means should it be considered the end-all-be-all.

Note: The "Temple of the roguelike", an authority within the genre, has since replaced the Berlin Interpretation with a new set of factors here: https://blog.roguetemple.com/what-is-a-traditional-roguelike/

The Incremental Games Canon

Alright, time to get controversial. Up til now, I've been trying my best to stay objective and analytical, but now it's time to start making some opinionated decisions. Here is a list of games I think could justifiably make up an Incremental Games Canon:

I chose a variety of games here, biasing towards newer games, purposefully to avoid making a narrow or "traditional" definition. The genre is growing and shouldn't be constrained by the traits of the early popular titles. A lot of these could easily be replaced with other games that are mechanically congruent, so ultimately I'm sure if you asked 10 people for their canon list you'd just get 10 different answers, but I think this should sufficiently allow us to determine what factors make a game have higher "incrementalness".

The Paradigm Shift

The Paradigm Shift is probably the highest possible value factor for an incremental. It's so common that for a while people referred to incrementals that exhibit this trait as "unfolding" games, to the point of trying to replace the term incremental due to their popularity. Paradigm shifts refer to when the gameplay significantly changes. There are too many examples to list here, but notably, every single reset mechanic is typically going to be a paradigm shift. Examples of games with paradigm shifts that aren't tied to reset mechanics include Universal Paperclips and A Dark Room.

There are many reasons for the appeal of paradigm shifts. Oftentimes each mechanic builds on top of the existing mechanics, increasing the complexity of the game in steps so the player can follow along. They provide a sense of mystery, with the player anticipating what will happen next. They shake up the gameplay before it gets too stale - allowing the game to entertain for longer before the illusion of content dissipates. Of the canon games selected above, I would argue every single one contains a paradigm shift (although I could see someone disagreeing with that statement wrt Increlution).

I should take a moment to say that while I'm hyping up this specific factor, we cannot just reduce the genre definition to "does it have paradigm shifts". Many games have paradigm shifts that are not incremental, so it's just an indicator of incrementalness. Additionally, it can become quite hard to determine how large of a shift is a "paradigm" shift. Take, for example, any game with a skill tree. In some games, each skill node might have a large impact on how you play with the game, and qualify as a paradigm shift for some players. In other games, each skill node might just be a small percentage modifier on some stat that doesn't really impact much more than a slight bias towards an already established mechanic that's newly buffed. Every single canon game may show that it's common amongst incremental games, but could just as easily indicate that they're common in games in general.

High-Value Factors

I won't take as long to discuss the high and low-value factors, as you've already seen most of them brought up earlier on this page. As a reminder, a game does NOT need all of these to be an incremental game, but these are factors that each indicate a strong possibility the game is an incremental, so having several of these means they probably are. These factors apply to most of the canon incremental games.

"Pure UI" Display. Incrementals typically have a textual presentation of the game state - there isn't a visual representation of the entities within the game. The interface is closer to what would be just the UI of a game in another genre or the control panel of a plane. If there is a visual representation, the player is often still interacting with non-diegetic game elements.

Reduced Consequences. Incrementals tend to have reduced repurcussions for misplaying. They very rarely have fail states, where often the largest consequence is simply not progressing - never losing progress.

Optimization Problems. The predominant gameplay of incrementals is typically solving optimization problems, from deciding which purchase to save up for to reasoning and deciding between different mutually exclusive options the game presents.

Resource Management. Incrementals tend to have a lot of resources within the game to keep track of.

Low-Value Factors

These are low-value factors, meaning they aren't as strongly correlated with incremental games. Incremental games may have none of these, and non-incrementals may have several of these - if a game only has low-value factors, they're probably not an incremental.

Fast Numeric Growth. Numbers in incremental games tend to grow faster than in other genres. There are more instances of superlinear growth. The larger the numbers get, the stronger of a signal this factor is.

Automation. As an incremental game progresses, the player often no longer has to deal with earlier mechanics, by having them either happen automatically or otherwise be replaced with an alternative that requires less player interaction.

Goal-Oriented. Incrementals are often heavily reliant on extrinsic motivation to guide the player. Typically this is through some sort of in-game goal to work towards, such as a certain amount of a resource being required to unlock or purchase something new.

Waiting is a Mechanic. In incremental games, the player may come across times where there is no action they can take, and the game will progress automatically instead. The player must wait for some amount of this automatic progress to occur before they can resume interaction with the game.

Are Roguelites Incrementals?

Having made our variation of the Berlin Interpretation for incremental games, we can compare it to the Berlin Interpretation to determine if there's enough overlap that any game that "passes" the Berlin Interpretation would also pass the incremental variant. That is to say, whether any roguelite would also be considered an incremental game.

The meta-progression of an incremental game could arguably be considered a paradigm shift, and certainly adds some resource management. Goal-oriented would probably also apply. I think anything other than those would be a stretch, and in my opinion that just isn't enough to qualify. To be totally honest, I was never expecting to conclude otherwise though 😉

Sub-Genres

There are some trends in incremental games that go beyond just being a commonly used mechanic, such that they deeply affect the rest of the game design. These trends can be used to determine sub-genres within the incremental games umbrella:

  • Loops games are a sub-genre defined by having a core mechanic related to a loop, where the player is deciding the actions taken per loop. Notable examples include Idle Loops, Stuck in Time, Cavernous II, and Increlution. You may also argue Groundhog Life and Progress Knight fall into this sub-genre.
  • ITRTG-like games are a sub-genre defined by having a core mechanic based on clearing increasingly difficult battles and often tend to have a lot of different mechanics to become progressively stronger. Notable examples include Idling to Rule the Gods, NGU Idle, and Wizard and Minion Idle.
  • Polynomial Growth games are a sub-genre defined by having a core mechanic related to a higher degree polynomial. Notable examples include the base layer of Antimatter Dimensions and Swarm Simulator.
  • Upgrades Games is a category popular on flash games websites that featured games focused on buying upgrades that would allow you to attain more currency in some sort of minigame that would earn you more money to buy more upgrades, which I'd argue now belong under the fold of incremental games. Notable examples include the Learn to Fly series and Upgrade Complete.
  • Cultivation RPGs are a genre of games, books, and anime popular in China that center around being in a fantasy world with characters getting stronger over time. While few of them get translated into English, a fan of incremental games may find the available games interesting.
',61),i=[o];function s(l,h,m,g,c,u){return t(),a("div",null,i)}const f=e(n,[["render",s]]);export{p as __pageData,f as default}; diff --git a/assets/guide-to-incrementals_ludology_definition_index.md.2d700f3c.lean.js b/assets/guide-to-incrementals_ludology_definition_index.md.2d700f3c.lean.js new file mode 100644 index 000000000..503421b6c --- /dev/null +++ b/assets/guide-to-incrementals_ludology_definition_index.md.2d700f3c.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as r}from"./chunks/framework.1169fbc9.js";const p=JSON.parse('{"title":"Defining the Genre","description":"","frontmatter":{"title":"Defining the Genre"},"headers":[],"relativePath":"guide-to-incrementals/ludology/definition/index.md","filePath":"guide-to-incrementals/ludology/definition/index.md","lastUpdated":1697386254000}'),n={name:"guide-to-incrementals/ludology/definition/index.md"},o=r("",61),i=[o];function s(l,h,m,g,c,u){return t(),a("div",null,i)}const f=e(n,[["render",s]]);export{p as __pageData,f as default}; diff --git a/assets/index.md.8bac09fe.js b/assets/index.md.8bac09fe.js new file mode 100644 index 000000000..dbc46cd49 --- /dev/null +++ b/assets/index.md.8bac09fe.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse(`{"title":"The Paper Pilot","description":"","frontmatter":{"title":"The Paper Pilot","layout":"home","hero":{"name":"The Paper Pilot","tagline":"I'm Anthony, or The Paper Pilot, and I make fun games and tools!","actions":[{"theme":"brand","text":"My Projects","link":"/projects/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1699317931000}`),o={name:"index.md"};function n(r,i,s,d,c,l){return t(),a("div")}const h=e(o,[["render",n]]);export{m as __pageData,h as default}; diff --git a/assets/index.md.8bac09fe.lean.js b/assets/index.md.8bac09fe.lean.js new file mode 100644 index 000000000..dbc46cd49 --- /dev/null +++ b/assets/index.md.8bac09fe.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse(`{"title":"The Paper Pilot","description":"","frontmatter":{"title":"The Paper Pilot","layout":"home","hero":{"name":"The Paper Pilot","tagline":"I'm Anthony, or The Paper Pilot, and I make fun games and tools!","actions":[{"theme":"brand","text":"My Projects","link":"/projects/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1699317931000}`),o={name:"index.md"};function n(r,i,s,d,c,l){return t(),a("div")}const h=e(o,[["render",n]]);export{m as __pageData,h as default}; diff --git a/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 b/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 new file mode 100644 index 000000000..2a6872967 Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 differ diff --git a/assets/inter-italic-cyrillic.ea42a392.woff2 b/assets/inter-italic-cyrillic.ea42a392.woff2 new file mode 100644 index 000000000..f64035158 Binary files /dev/null and b/assets/inter-italic-cyrillic.ea42a392.woff2 differ diff --git a/assets/inter-italic-greek-ext.4fbe9427.woff2 b/assets/inter-italic-greek-ext.4fbe9427.woff2 new file mode 100644 index 000000000..002189603 Binary files /dev/null and b/assets/inter-italic-greek-ext.4fbe9427.woff2 differ diff --git a/assets/inter-italic-greek.8f4463c4.woff2 b/assets/inter-italic-greek.8f4463c4.woff2 new file mode 100644 index 000000000..71c265f85 Binary files /dev/null and b/assets/inter-italic-greek.8f4463c4.woff2 differ diff --git a/assets/inter-italic-latin-ext.bd8920cc.woff2 b/assets/inter-italic-latin-ext.bd8920cc.woff2 new file mode 100644 index 000000000..9c1b9440e Binary files /dev/null and b/assets/inter-italic-latin-ext.bd8920cc.woff2 differ diff --git a/assets/inter-italic-latin.bd3b6f56.woff2 b/assets/inter-italic-latin.bd3b6f56.woff2 new file mode 100644 index 000000000..01fcf2072 Binary files /dev/null and b/assets/inter-italic-latin.bd3b6f56.woff2 differ diff --git a/assets/inter-italic-vietnamese.6ce511fb.woff2 b/assets/inter-italic-vietnamese.6ce511fb.woff2 new file mode 100644 index 000000000..e4f788ee0 Binary files /dev/null and b/assets/inter-italic-vietnamese.6ce511fb.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext.e75737ce.woff2 b/assets/inter-roman-cyrillic-ext.e75737ce.woff2 new file mode 100644 index 000000000..28593ccb8 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.e75737ce.woff2 differ diff --git a/assets/inter-roman-cyrillic.5f2c6c8c.woff2 b/assets/inter-roman-cyrillic.5f2c6c8c.woff2 new file mode 100644 index 000000000..a20adc161 Binary files /dev/null and b/assets/inter-roman-cyrillic.5f2c6c8c.woff2 differ diff --git a/assets/inter-roman-greek-ext.ab0619bc.woff2 b/assets/inter-roman-greek-ext.ab0619bc.woff2 new file mode 100644 index 000000000..e3b0be76d Binary files /dev/null and b/assets/inter-roman-greek-ext.ab0619bc.woff2 differ diff --git a/assets/inter-roman-greek.d5a6d92a.woff2 b/assets/inter-roman-greek.d5a6d92a.woff2 new file mode 100644 index 000000000..f790e047d Binary files /dev/null and b/assets/inter-roman-greek.d5a6d92a.woff2 differ diff --git a/assets/inter-roman-latin-ext.0030eebd.woff2 b/assets/inter-roman-latin-ext.0030eebd.woff2 new file mode 100644 index 000000000..715bd903b Binary files /dev/null and b/assets/inter-roman-latin-ext.0030eebd.woff2 differ diff --git a/assets/inter-roman-latin.2ed14f66.woff2 b/assets/inter-roman-latin.2ed14f66.woff2 new file mode 100644 index 000000000..a540b7afe Binary files /dev/null and b/assets/inter-roman-latin.2ed14f66.woff2 differ diff --git a/assets/inter-roman-vietnamese.14ce25a6.woff2 b/assets/inter-roman-vietnamese.14ce25a6.woff2 new file mode 100644 index 000000000..5a9f9cb9c Binary files /dev/null and b/assets/inter-roman-vietnamese.14ce25a6.woff2 differ diff --git a/assets/new-interface.99f03ba7.png b/assets/new-interface.99f03ba7.png new file mode 100644 index 000000000..62d38a857 Binary files /dev/null and b/assets/new-interface.99f03ba7.png differ diff --git a/assets/projects_babble_index.md.59e7069b.js b/assets/projects_babble_index.md.59e7069b.js new file mode 100644 index 000000000..14019c067 --- /dev/null +++ b/assets/projects_babble_index.md.59e7069b.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as r}from"./chunks/framework.1169fbc9.js";const s="/assets/screenshot.3bf794a2.png",o="/assets/babblemmscreenshot.7646b6c2.png",g=JSON.parse('{"title":"Babble Buds","description":"","frontmatter":{"title":"Babble Buds"},"headers":[],"relativePath":"projects/babble/index.md","filePath":"projects/babble/index.md","lastUpdated":1699317931000}'),n={name:"projects/babble/index.md"},i=r('

Babble Buds

Babble Buds Homepage

Source Code:

Babble buds is a free, open-source virtual puppet show software. It is heavily based on the non-public software called "Puppet Pals", used in URealms Live. The software is written in javascript using React, a rendering library called PIXI.js, and electron.

Users can create puppets with different faces for different emotions, and then use the puppet on a stage where you and other users can each make your respective puppets move, change emotions, and "babble" at each other. The stage has a green screen feature and can be popped out, which gives the users tons of possibilities in terms of using the program for a role-playing live stream, faux video chatting with friends, game development, or whatever else you want!

Users can connect to the public server and create private rooms so that they and their friends can see each other's puppets and use the software however they please. For the security conscious, you can also use the server's source code to self-host your private server.

Babble Buds Screenshot

Engine

The engine originally made to make the Babble Buds program was separated into a separate engine called babble.js, so that projects created in Babble Buds can be used in other projects. For example, a game can create puppets in Babble Buds and then use them for cutscenes or player agency inside of the game. Additionally, it has been ported to C# (called babble.cs) for use with Unity, for the same kinds of purposes. You can check out Tower Offense for a pixi.js game using Babble Buds puppets for the cutscenes, or Dice Armor for a unity game using Babble Buds puppets for the cutscenes.

Babble Movie Maker

Babble Movie Maker is a cutscene editor for Babble Buds puppets. You open a babble buds project in it, and you can add actors to a stage and have them move and change expressions, etc., on a timeline. You can then use the cutscene in a game using babble.js or babble.cs, or export the cutscene into a video file. There is even support for defining custom commands with custom fields, so that if you've expanded upon the default actions provided in babble.js or babble.cs, you can still use Movie Maker to create your cutscenes.

Babble MM Screenshot

',13),b=[i];function c(l,p,d,h,u,f){return a(),t("div",null,b)}const B=e(n,[["render",c]]);export{g as __pageData,B as default}; diff --git a/assets/projects_babble_index.md.59e7069b.lean.js b/assets/projects_babble_index.md.59e7069b.lean.js new file mode 100644 index 000000000..3d046a1c3 --- /dev/null +++ b/assets/projects_babble_index.md.59e7069b.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as r}from"./chunks/framework.1169fbc9.js";const s="/assets/screenshot.3bf794a2.png",o="/assets/babblemmscreenshot.7646b6c2.png",g=JSON.parse('{"title":"Babble Buds","description":"","frontmatter":{"title":"Babble Buds"},"headers":[],"relativePath":"projects/babble/index.md","filePath":"projects/babble/index.md","lastUpdated":1699317931000}'),n={name:"projects/babble/index.md"},i=r("",13),b=[i];function c(l,p,d,h,u,f){return a(),t("div",null,b)}const B=e(n,[["render",c]]);export{g as __pageData,B as default}; diff --git a/assets/projects_citadel_index.md.ffa914c3.js b/assets/projects_citadel_index.md.ffa914c3.js new file mode 100644 index 000000000..b99cc8bc3 --- /dev/null +++ b/assets/projects_citadel_index.md.ffa914c3.js @@ -0,0 +1 @@ +import{_ as a,o as r,c as s,k as e,a as t}from"./chunks/framework.1169fbc9.js";const n="/assets/screenshot.f2631300.png",C=JSON.parse('{"title":"Capture the Citadel","description":"","frontmatter":{"title":"Capture the Citadel"},"headers":[],"relativePath":"projects/citadel/index.md","filePath":"projects/citadel/index.md","lastUpdated":1699317931000}'),o={name:"projects/citadel/index.md"},i=e("h1",{id:"capture-the-citadel",tabindex:"-1"},[t("Capture the Citadel "),e("a",{class:"header-anchor",href:"#capture-the-citadel","aria-label":'Permalink to "Capture the Citadel"'},"​")],-1),c=e("p",null,"A 3D VR re-envisioning of a Slay the Spire-style game by Anthony Lawn and Grant Barbee for their VR class in college's final project.",-1),l=e("p",null,[t("For more details, visit "),e("a",{href:"https://grantcbarbee.github.io/conquer-the-citadel.html",target:"_blank",rel:"noreferrer"},"Grant's page on the game"),t(".")],-1),d=e("p",null,[e("img",{src:n,alt:"Screenshot"})],-1),h=[i,c,l,d];function p(_,m,u,f,g,x){return r(),s("div",null,h)}const k=a(o,[["render",p]]);export{C as __pageData,k as default}; diff --git a/assets/projects_citadel_index.md.ffa914c3.lean.js b/assets/projects_citadel_index.md.ffa914c3.lean.js new file mode 100644 index 000000000..b99cc8bc3 --- /dev/null +++ b/assets/projects_citadel_index.md.ffa914c3.lean.js @@ -0,0 +1 @@ +import{_ as a,o as r,c as s,k as e,a as t}from"./chunks/framework.1169fbc9.js";const n="/assets/screenshot.f2631300.png",C=JSON.parse('{"title":"Capture the Citadel","description":"","frontmatter":{"title":"Capture the Citadel"},"headers":[],"relativePath":"projects/citadel/index.md","filePath":"projects/citadel/index.md","lastUpdated":1699317931000}'),o={name:"projects/citadel/index.md"},i=e("h1",{id:"capture-the-citadel",tabindex:"-1"},[t("Capture the Citadel "),e("a",{class:"header-anchor",href:"#capture-the-citadel","aria-label":'Permalink to "Capture the Citadel"'},"​")],-1),c=e("p",null,"A 3D VR re-envisioning of a Slay the Spire-style game by Anthony Lawn and Grant Barbee for their VR class in college's final project.",-1),l=e("p",null,[t("For more details, visit "),e("a",{href:"https://grantcbarbee.github.io/conquer-the-citadel.html",target:"_blank",rel:"noreferrer"},"Grant's page on the game"),t(".")],-1),d=e("p",null,[e("img",{src:n,alt:"Screenshot"})],-1),h=[i,c,l,d];function p(_,m,u,f,g,x){return r(),s("div",null,h)}const k=a(o,[["render",p]]);export{C as __pageData,k as default}; diff --git a/assets/projects_dice_index.md.22ad0d23.js b/assets/projects_dice_index.md.22ad0d23.js new file mode 100644 index 000000000..da83dd30a --- /dev/null +++ b/assets/projects_dice_index.md.22ad0d23.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.1169fbc9.js";const o="/assets/da2.57c7af0b.png",s="/assets/editors.c2eaa93b.png",n="/assets/simulator.7ede7b83.jpg",r="/assets/da1.ae7a2bb1.png",h="/assets/da6.5b5d63de.png",d="/assets/da7.b7b33663.png",l="/assets/da8.d623c64f.png",c="/assets/da3.e16fb4de.png",p="/assets/da9.35a2db61.png",I=JSON.parse('{"title":"Dice Armor","description":"","frontmatter":{"title":"Dice Armor"},"headers":[],"relativePath":"projects/dice/index.md","filePath":"projects/dice/index.md","lastUpdated":1699317931000}'),m={name:"projects/dice/index.md"},u=i('

Dice Armor

Download Here

Dice Armor is a game that started development as a semester-long project by a team of nine: a producer, a creative director, a narrative writer, an artist, two programmers, and 3 game designers. The information here is about my contributions as the lead programmer over the semester because I can show off stuff like the editor scripts I wrote. I was doing everything from interface coding, editor scripts, integrating Babble Buds, and of course, everything related to the gameplay itself. To date I'm still the lead programmer for the game; for more up-to-date information on the current state of the game please visit the official site.

The build available here was created for showing off at the end of the semester, and as such has some buttons present to make the game easier to skip parts of the game to see all the content: You start with all the dice in the game already in the shop, there's a button to give yourself free money to buy these dice with, and in the duel, there are buttons to force a win or a loss, which can be used to skip the tutorial (not recommended for first-time players).

Tutorial

Dice Armor is a dice dueling game. Players can use abilities, flip dice, and attack each other to win in a dice game that puts chance into the hands of the players. This is what the dueling scene looks like, with a tutorial cutscene happening on top to guide the player through the basics. Also, all the dice are constructed dynamically, using quaternion math to figure out the placement of each component relative to the face it is going on. The die in the middle has one of the player' and opponents' portraits on each of its sides.

Editors

For many of the objects I've created, I've made scriptable objects so that game designers can add and modify them easily. Additionally, I would create custom inspectors for the objects to help make them as easy to understand and edit as possible. The opponent's artificial intelligence is made up of many strategies, in a prioritized list. When it is the opponents' turn they go through each strategy and check if they can be run, and if so then the opponent performs the strategy and starts back over at the top of the list of strategies. The + sign under the list of strategies opens an organized dropdown of all the various strategies.

Simulator

In addition to custom inspector code, I've created new tools for the editor for our game designers to use. This is a duel simulator that will take two opponents and simulate an arbitrary number of duels between them, and output the results and summarize them for you, much much quicker than manually going through the duels, even with an absurdly high timeScale. This will become incredibly useful in making balance changes and testing new dice against existing sets. This is a screenshot of it in edit mode, but in play mode it removes the "Dueling Managers" field and will use whatever the current duel balance settings are, allowing for the GDs to test freely in play mode without worrying about undoing all their changes afterward.

Cutscene

I created the Babble Buds puppet editor and ported the rendering library I wrote for it to C# so it could be used in Unity. Dice Armor has a full campaign using cutscenes made using the Babble Buds cutscene editor, taking advantage of its support for custom commands and fields to control things like talking, giving the player dice and money, starting duels, and controlling player progression through the story.

Action Wheel

When a cutscene ends, its final command is to either start a duel or set the next cutscene in the story. In the latter case, there is an additional field for what to call the next cutscene, and what location it takes place. The cutscene is then added to the player's save file, and when they visit the city locations are greyed out until they have at least one action to do there. Each location has a dynamically populated action wheel with a custom range of acceptable angles.

Shop

The dice shop is dynamically populated by a list of dice available to the player, which can be changed during cutscenes, and is checked against the dice owned by the player to generate sold-out indicators. On the left, the player can choose to filter the options down to a single dice effect, which also updates the "Buy All" button to buy only all the dice in the current filter.

Inventory

The inventory works most the same as the shop, but for equipping dice. It also allows you to drag individual dice or entire sets to the equipped dice glyph. While dragging it will highlight all the slots the new dice will be equipped into.

Dice Rolling

The dice rolling uses the physics engine and detects once the dice have stopped moving, then determines which side is face up based on which of the normals is closest to straight up. It flags the die as cocked if that smallest angle is above a threshold. The dice sink into the table when not rolling to not interfere with any dice that are rolling.

Missile Storm

During certain events like winning the game or having the face of a die broken, the players' portraits will flash an emotion for a second. After winning, a random living die from the winning player is chosen to play their "finisher move", a flashy and dramatic effect to end the game. Shown is the arcane mechana's finisher, "Missile Storm".

',22),g=[u];function f(y,b,w,_,v,k){return t(),a("div",null,g)}const q=e(m,[["render",f]]);export{I as __pageData,q as default}; diff --git a/assets/projects_dice_index.md.22ad0d23.lean.js b/assets/projects_dice_index.md.22ad0d23.lean.js new file mode 100644 index 000000000..46c1637f5 --- /dev/null +++ b/assets/projects_dice_index.md.22ad0d23.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as i}from"./chunks/framework.1169fbc9.js";const o="/assets/da2.57c7af0b.png",s="/assets/editors.c2eaa93b.png",n="/assets/simulator.7ede7b83.jpg",r="/assets/da1.ae7a2bb1.png",h="/assets/da6.5b5d63de.png",d="/assets/da7.b7b33663.png",l="/assets/da8.d623c64f.png",c="/assets/da3.e16fb4de.png",p="/assets/da9.35a2db61.png",I=JSON.parse('{"title":"Dice Armor","description":"","frontmatter":{"title":"Dice Armor"},"headers":[],"relativePath":"projects/dice/index.md","filePath":"projects/dice/index.md","lastUpdated":1699317931000}'),m={name:"projects/dice/index.md"},u=i("",22),g=[u];function f(y,b,w,_,v,k){return t(),a("div",null,g)}const q=e(m,[["render",f]]);export{I as __pageData,q as default}; diff --git a/assets/projects_index.md.3e0cc6a3.js b/assets/projects_index.md.3e0cc6a3.js new file mode 100644 index 000000000..5f26b39bd --- /dev/null +++ b/assets/projects_index.md.3e0cc6a3.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as r}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Projects","description":"","frontmatter":{"title":"Projects","lastUpdated":false},"headers":[],"relativePath":"projects/index.md","filePath":"projects/index.md","lastUpdated":1699317931000}'),o={name:"projects/index.md"},s=r('

Games!

I make games regularly! Check them out in the sidebar or on my itch.io page.

Profectus!

I contributed to a modding framework called The Modding Tree and then made Profectus as an alternative that gives developers more control. Profectus is a game engine for the web that uses TS and Vue.

V-ecs!

V-ecs (pronounced "Vex") is a Vulkan-based engine I made for making highly moddable games and tools in Lua centered around the ECS design pattern and a work-stealing job system.

OptiSpeech!

I led a team updating a legacy Unity project for research on speech therapy to use a modern version with a focus on extensibility to facilitate future maintenance and features.

Babble Buds!

Babble Buds is a free, open-source virtual puppet show engine I made for various platforms including HTLM5 and Unity, as well as an accompanying electron-based puppet editor and multiplayer stage.

Dice Armor

I was the lead programmer on a team of nine creating this game in a semester-long college course. I programmed all the gameplay systems as well as incorporated Babble Buds for the cutscenes and tutorial.

Capture the Citadel

A 3D VR re-envisioning of a Slay the Spire-style game by Anthony Lawn and Grant Barbee.

',14),i=[s];function n(c,d,l,h,p,u){return a(),t("div",null,i)}const f=e(o,[["render",n]]);export{b as __pageData,f as default}; diff --git a/assets/projects_index.md.3e0cc6a3.lean.js b/assets/projects_index.md.3e0cc6a3.lean.js new file mode 100644 index 000000000..972bf3c89 --- /dev/null +++ b/assets/projects_index.md.3e0cc6a3.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as r}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Projects","description":"","frontmatter":{"title":"Projects","lastUpdated":false},"headers":[],"relativePath":"projects/index.md","filePath":"projects/index.md","lastUpdated":1699317931000}'),o={name:"projects/index.md"},s=r("",14),i=[s];function n(c,d,l,h,p,u){return a(),t("div",null,i)}const f=e(o,[["render",n]]);export{b as __pageData,f as default}; diff --git a/assets/projects_optispeech_index.md.75c773d8.js b/assets/projects_optispeech_index.md.75c773d8.js new file mode 100644 index 000000000..eae021827 --- /dev/null +++ b/assets/projects_optispeech_index.md.75c773d8.js @@ -0,0 +1 @@ +import{_ as t,o as s,c as a,k as e,a as o}from"./chunks/framework.1169fbc9.js";const n="/assets/system-architecture-600.254c8a7e.jpg",i="/assets/new-interface.99f03ba7.png",r="/assets/documentation.4e9ae6e0.png",c="/assets/unittests.e8833eb5.png",U=JSON.parse('{"title":"OptiSpeech","description":"","frontmatter":{"title":"OptiSpeech"},"headers":[],"relativePath":"projects/optispeech/index.md","filePath":"projects/optispeech/index.md","lastUpdated":1699317931000}'),l={name:"projects/optispeech/index.md"},p=e("h1",{id:"optispeech",tabindex:"-1"},[o("OptiSpeech "),e("a",{class:"header-anchor",href:"#optispeech","aria-label":'Permalink to "OptiSpeech"'},"​")],-1),d=e("p",null,"The Optispeech project involves designing and testing a real-time tongue model that can be viewed in a transparent head while a subject talks — for the purposes of treating speech errors and teaching foreign language sounds. This work has been conducted in partnership with Vulintus and with support from the National Institutes of Health (NIH). The UT Dallas Speech Production Lab is currently updating the program to use updated versions of Unity and adding support for more features and hardware.",-1),h=e("p",null,[e("img",{src:n,alt:"System Architecture"})],-1),u=e("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/9uHqIRs7ZjM",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:"",style:{display:"block",margin:"auto"}},null,-1),m=e("p",null,"This video shows a talker with WAVE sensors placed on the tongue hitting a virtual target sphere located at the alveolar ridge. When an alveolar consonant is hit (e.g., /s/, /n/, /d/) the sphere changes color from red to green.",-1),g=e("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/Oz42mKvlzqI",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:"",style:{display:"block",margin:"auto"}},null,-1),_=e("p",null,"This video shows an American talker learning a novel sound not found in English. When the post-alveolar consonant is hit, the target sphere changes color from red to green. Here, the NDI WAVE system serves as input.",-1),f=e("p",null,"The program is being updated by a team in the UT Dallas Speech Production Lab led by Anthony Lawn, so the program uses a more modern version of Unity, has an easier-to-use interface, can more easily support new features, and can connect to additional EMA systems, namely the Carstens AG501.",-1),w=e("p",null,[e("img",{src:i,alt:"New Interface"})],-1),y=e("p",null,"In addition, the program now includes documentation and unit tests to improve program stability and maintainability going forward.",-1),b=e("p",null,[e("img",{src:r,alt:"Documentation"})],-1),v=e("p",null,[e("img",{src:c,alt:"Unit Tests"})],-1),k=[p,d,h,u,m,g,_,f,w,y,b,v];function T(x,S,j,A,I,N){return s(),a("div",null,k)}const D=t(l,[["render",T]]);export{U as __pageData,D as default}; diff --git a/assets/projects_optispeech_index.md.75c773d8.lean.js b/assets/projects_optispeech_index.md.75c773d8.lean.js new file mode 100644 index 000000000..eae021827 --- /dev/null +++ b/assets/projects_optispeech_index.md.75c773d8.lean.js @@ -0,0 +1 @@ +import{_ as t,o as s,c as a,k as e,a as o}from"./chunks/framework.1169fbc9.js";const n="/assets/system-architecture-600.254c8a7e.jpg",i="/assets/new-interface.99f03ba7.png",r="/assets/documentation.4e9ae6e0.png",c="/assets/unittests.e8833eb5.png",U=JSON.parse('{"title":"OptiSpeech","description":"","frontmatter":{"title":"OptiSpeech"},"headers":[],"relativePath":"projects/optispeech/index.md","filePath":"projects/optispeech/index.md","lastUpdated":1699317931000}'),l={name:"projects/optispeech/index.md"},p=e("h1",{id:"optispeech",tabindex:"-1"},[o("OptiSpeech "),e("a",{class:"header-anchor",href:"#optispeech","aria-label":'Permalink to "OptiSpeech"'},"​")],-1),d=e("p",null,"The Optispeech project involves designing and testing a real-time tongue model that can be viewed in a transparent head while a subject talks — for the purposes of treating speech errors and teaching foreign language sounds. This work has been conducted in partnership with Vulintus and with support from the National Institutes of Health (NIH). The UT Dallas Speech Production Lab is currently updating the program to use updated versions of Unity and adding support for more features and hardware.",-1),h=e("p",null,[e("img",{src:n,alt:"System Architecture"})],-1),u=e("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/9uHqIRs7ZjM",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:"",style:{display:"block",margin:"auto"}},null,-1),m=e("p",null,"This video shows a talker with WAVE sensors placed on the tongue hitting a virtual target sphere located at the alveolar ridge. When an alveolar consonant is hit (e.g., /s/, /n/, /d/) the sphere changes color from red to green.",-1),g=e("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/Oz42mKvlzqI",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:"",style:{display:"block",margin:"auto"}},null,-1),_=e("p",null,"This video shows an American talker learning a novel sound not found in English. When the post-alveolar consonant is hit, the target sphere changes color from red to green. Here, the NDI WAVE system serves as input.",-1),f=e("p",null,"The program is being updated by a team in the UT Dallas Speech Production Lab led by Anthony Lawn, so the program uses a more modern version of Unity, has an easier-to-use interface, can more easily support new features, and can connect to additional EMA systems, namely the Carstens AG501.",-1),w=e("p",null,[e("img",{src:i,alt:"New Interface"})],-1),y=e("p",null,"In addition, the program now includes documentation and unit tests to improve program stability and maintainability going forward.",-1),b=e("p",null,[e("img",{src:r,alt:"Documentation"})],-1),v=e("p",null,[e("img",{src:c,alt:"Unit Tests"})],-1),k=[p,d,h,u,m,g,_,f,w,y,b,v];function T(x,S,j,A,I,N){return s(),a("div",null,k)}const D=t(l,[["render",T]]);export{U as __pageData,D as default}; diff --git a/assets/projects_vecs_index.md.51c53188.js b/assets/projects_vecs_index.md.51c53188.js new file mode 100644 index 000000000..7f270340d --- /dev/null +++ b/assets/projects_vecs_index.md.51c53188.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as s,Q as a}from"./chunks/framework.1169fbc9.js";const o="/assets/screenshot.78830a30.png",n="/assets/debug.0a8c47b7.png",r="/assets/sandsoftime.ba63f865.png",w=JSON.parse('{"title":"V-ecs","description":"","frontmatter":{"title":"V-ecs"},"headers":[],"relativePath":"projects/vecs/index.md","filePath":"projects/vecs/index.md","lastUpdated":1699317931000}'),i={name:"projects/vecs/index.md"},l=a('

V-ecs

V-ecs Screenshot

V-ecs (pronounced "Vex") is a Vulkan-based engine I made for making highly moddable games and tools in Lua centered around the ECS design pattern and a work-stealing job system.

The engine works with "worlds", which are collections of systems and renderers. The engine comes with several worlds using systems and renderers I made, including a voxel world, an incremental game, and some test scenes. All of these include systems to render the fps as well as show a debug console by typing the grave key (`). The default world is a title screen that detects any worlds in the "worlds" folder and displays a button for each of them.

Debug Menu

The original plans were to eventually put it on the steam workshop so people could more easily share their creations amongst each other, but I never became happy enough with the performance of the engine - the parallelization of the lua code involved a lot of overhead that severely limited performance.

Instead, I made a couple of worlds by myself - an infinite procedurally generated voxel world, a simple incremental game, and a more complex incremental game I call "Sands of Time".

Sands of Time

',8),c=[l];function d(p,m,h,u,_,g){return t(),s("div",null,c)}const v=e(i,[["render",d]]);export{w as __pageData,v as default}; diff --git a/assets/projects_vecs_index.md.51c53188.lean.js b/assets/projects_vecs_index.md.51c53188.lean.js new file mode 100644 index 000000000..6a45b5bbd --- /dev/null +++ b/assets/projects_vecs_index.md.51c53188.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as s,Q as a}from"./chunks/framework.1169fbc9.js";const o="/assets/screenshot.78830a30.png",n="/assets/debug.0a8c47b7.png",r="/assets/sandsoftime.ba63f865.png",w=JSON.parse('{"title":"V-ecs","description":"","frontmatter":{"title":"V-ecs"},"headers":[],"relativePath":"projects/vecs/index.md","filePath":"projects/vecs/index.md","lastUpdated":1699317931000}'),i={name:"projects/vecs/index.md"},l=a("",8),c=[l];function d(p,m,h,u,_,g){return t(),s("div",null,c)}const v=e(i,[["render",d]]);export{w as __pageData,v as default}; diff --git a/assets/public_gamedevtree_2.0-format-changes.md.b269d5ac.js b/assets/public_gamedevtree_2.0-format-changes.md.b269d5ac.js new file mode 100644 index 000000000..9398730e8 --- /dev/null +++ b/assets/public_gamedevtree_2.0-format-changes.md.b269d5ac.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"2.0 format changes","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/2.0-format-changes.md","filePath":"public/gamedevtree/2.0-format-changes.md","lastUpdated":1621388509000}'),i={name:"public/gamedevtree/2.0-format-changes.md"},l=o('

2.0 format changes

  • Temp format is changed from temp.something[layer] to temp[layer].something, for consistency
  • Challenges are now saved as an object with the amount of completions in each spot. (This will break saves.)
  • effectDisplay in Challenges and Upgrades no longer takes an argument, and neither does effect for Buyables
  • Buyable cost can take an argument for amount of buyables, but it needs to function if no argument is supplied (it should do the cost for the next purchase).
  • Generation of Points now happens in the main game loop (not in a layer update function), enabled by canGenPoints in game.js.
  • Changed fullLayerReset to layerDataReset, which takes an array of names of values to keep

In addition, many names were changed, mostly expanding abbreviations:

All instances of:

  • chall -> challenge
  • unl -> unlocked
  • upg -> upgrade (besides CSS)
  • amt -> amount
  • desc -> description
  • resCeil -> roundUpCost
  • order -> unlockOrder
  • incr_order -> increaseUnlockOrder

Challenges:

  • desc -> challengeDescription
  • reward -> rewardDescription
  • effect -> rewardEffect
  • effectDisplay -> rewardDisplay
  • active -> challengeActive
',7),n=[l];function s(r,c,d,g,h,m){return a(),t("div",null,n)}const u=e(i,[["render",s]]);export{f as __pageData,u as default}; diff --git a/assets/public_gamedevtree_2.0-format-changes.md.b269d5ac.lean.js b/assets/public_gamedevtree_2.0-format-changes.md.b269d5ac.lean.js new file mode 100644 index 000000000..1357471d2 --- /dev/null +++ b/assets/public_gamedevtree_2.0-format-changes.md.b269d5ac.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"2.0 format changes","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/2.0-format-changes.md","filePath":"public/gamedevtree/2.0-format-changes.md","lastUpdated":1621388509000}'),i={name:"public/gamedevtree/2.0-format-changes.md"},l=o("",7),n=[l];function s(r,c,d,g,h,m){return a(),t("div",null,n)}const u=e(i,[["render",s]]);export{f as __pageData,u as default}; diff --git a/assets/public_gamedevtree_README.md.c8727831.js b/assets/public_gamedevtree_README.md.c8727831.js new file mode 100644 index 000000000..bb82d279c --- /dev/null +++ b/assets/public_gamedevtree_README.md.c8727831.js @@ -0,0 +1 @@ +import{_ as o,o as a,c as r,k as e,a as t}from"./chunks/framework.1169fbc9.js";const T=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/README.md","filePath":"public/gamedevtree/README.md","lastUpdated":1621388509000}'),i={name:"public/gamedevtree/README.md"},n=e("h1",{id:"the-modding-tree",tabindex:"-1"},[t("The-Modding-Tree "),e("a",{class:"header-anchor",href:"#the-modding-tree","aria-label":'Permalink to "The-Modding-Tree"'},"​")],-1),s=e("p",null,"A modified version of The Prestige Tree that is much easier to mod. It still requires programming knowledge, but it's mostly pretty easy things and copy/pasting.",-1),d=e("p",null,[e("a",{href:"./docs/getting-started"},"Look here for a tutorial on getting started with modding with TMT")],-1),l=e("p",null,[t("You can look in the "),e("a",{href:"./docs/!general-info"},"documentation"),t(" for more information on how it all works, or look at the code in layers.js to see what it all looks like.")],-1),c=[n,s,d,l];function h(m,p,g,_,f,u){return a(),r("div",null,c)}const E=o(i,[["render",h]]);export{T as __pageData,E as default}; diff --git a/assets/public_gamedevtree_README.md.c8727831.lean.js b/assets/public_gamedevtree_README.md.c8727831.lean.js new file mode 100644 index 000000000..bb82d279c --- /dev/null +++ b/assets/public_gamedevtree_README.md.c8727831.lean.js @@ -0,0 +1 @@ +import{_ as o,o as a,c as r,k as e,a as t}from"./chunks/framework.1169fbc9.js";const T=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/README.md","filePath":"public/gamedevtree/README.md","lastUpdated":1621388509000}'),i={name:"public/gamedevtree/README.md"},n=e("h1",{id:"the-modding-tree",tabindex:"-1"},[t("The-Modding-Tree "),e("a",{class:"header-anchor",href:"#the-modding-tree","aria-label":'Permalink to "The-Modding-Tree"'},"​")],-1),s=e("p",null,"A modified version of The Prestige Tree that is much easier to mod. It still requires programming knowledge, but it's mostly pretty easy things and copy/pasting.",-1),d=e("p",null,[e("a",{href:"./docs/getting-started"},"Look here for a tutorial on getting started with modding with TMT")],-1),l=e("p",null,[t("You can look in the "),e("a",{href:"./docs/!general-info"},"documentation"),t(" for more information on how it all works, or look at the code in layers.js to see what it all looks like.")],-1),c=[n,s,d,l];function h(m,p,g,_,f,u){return a(),r("div",null,c)}const E=o(i,[["render",h]]);export{T as __pageData,E as default}; diff --git a/assets/public_gamedevtree_changelog.md.359863a4.js b/assets/public_gamedevtree_changelog.md.359863a4.js new file mode 100644 index 000000000..aaac89f01 --- /dev/null +++ b/assets/public_gamedevtree_changelog.md.359863a4.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as l,Q as i}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"The Game Dev Tree changelog:","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/changelog.md","filePath":"public/gamedevtree/changelog.md","lastUpdated":1621388509000}'),r={name:"public/gamedevtree/changelog.md"},o=i('

The Game Dev Tree changelog:

v1.0.4 Version Bump [rebalanced,debuggedx3] - 2020-11-09

  • Fixed refactorings 2, 3, and 4 not actually affecting productivity

v1.0.3 Version Bump [rebalanced,debuggedx2] - 2020-11-08

  • Fixed API milestone 4 not working

v1.0.2 Version Bump [rebalanced,debugged] - 2020-11-08

  • Fixed tree lines being hidden after hitting "keepGoing" in the victory screen

v1.0.1 Version Bump [rebalanced] - 2020-11-08

  • Buffed several TAs

v1.0 Version Bump - 2020-11-08

  • Finished row 4
  • Added colored text to lore
  • Fixed some visual bugs with milestones
  • Probably other stuff lol its been a week

v0.2.3 Stylish - 2020-10-30

  • Re-styled basically everything
  • Added favicon
  • Added header bar
  • Added changelog

v0.2.2 Row 3 - 2020-10-22

  • Removed debug statement
  • Moved milestones in F layer beneath the buyables

v0.2.1 Row 3 - 2020-10-21

  • Fixed layers hiding
  • Fixed typos/minor issues
  • Fixed S layer being highlighted before you can unlock the layer

v0.2 Row 3 - 2020-10-21

  • Implemented row 3

v0.1.1 Cash Influx [rebalanced] - 2020-10-19

  • Fixed notification issue
  • Rebalanced to make early game faster and late game slower
  • Fixed other minor issues

v0.1 Cash Influx - 2020-10-19

  • Implemented row 2

v0.0 Initial Commit - 2020-10-18

  • Implemented row 1
',25),n=[o];function t(d,h,s,u,c,b){return a(),l("div",null,n)}const g=e(r,[["render",t]]);export{m as __pageData,g as default}; diff --git a/assets/public_gamedevtree_changelog.md.359863a4.lean.js b/assets/public_gamedevtree_changelog.md.359863a4.lean.js new file mode 100644 index 000000000..73ce74701 --- /dev/null +++ b/assets/public_gamedevtree_changelog.md.359863a4.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as l,Q as i}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"The Game Dev Tree changelog:","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/changelog.md","filePath":"public/gamedevtree/changelog.md","lastUpdated":1621388509000}'),r={name:"public/gamedevtree/changelog.md"},o=i("",25),n=[o];function t(d,h,s,u,c,b){return a(),l("div",null,n)}const g=e(r,[["render",t]]);export{m as __pageData,g as default}; diff --git a/assets/public_gamedevtree_docs_!general-info.md.edf0e4f0.js b/assets/public_gamedevtree_docs_!general-info.md.edf0e4f0.js new file mode 100644 index 000000000..ff0aee63d --- /dev/null +++ b/assets/public_gamedevtree_docs_!general-info.md.edf0e4f0.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/!general-info.md","filePath":"public/gamedevtree/docs/!general-info.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/!general-info.md"},r=o('

The-Modding-Tree

The main way to add content is through creating layers. You can either add a layer directly in the layers object in layersSupportjs, or declare it in another file and then do "addLayer(layername, layerdata)" (good for breaking things up into smaller files). The existing layers are just examples and can be freely deleted. You can also use them as references and a base for your own layers.

The first thing you need to do is to edit the modInfo at the top of game.js to set your modID (a string). A unique modId will prevent your mod's saves from conflicting with other mods.

Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to.

The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects, and must be treated differently. For example, you have to use new Decimal(x) to create a Decimal value instead of a plain number, and perform operations on them by calling functions. e.g, instead of x = x + y, use x = x.add(y).

Almost all values can be either a constant value, or a dynamic value. Dynamic values are defined by putting a function that returns what the value should be at any given time.

All display text can be basic HTML instead (But you can't use most Vue features there).

Table of Contents:

General:

  • Getting Started: Getting your own copy of the code set up with Github Desktop.
  • Main mod info: How to set up general things for your mod in mod.js.
  • Basic layer breakdown: Breaking down the components of a layer with minimal features.
  • Layer features: Explanations of all of the different properties that you can give a layer.
  • Custom Tab Layouts: An optional way to give your tabs a different layout. You can even create entirely new components to use.
  • Updating TMT: Using Github Desktop to update your mod's version of TMT.

Common components

  • Upgrades: How to create upgrades for a layer.
  • Milestones: How to create milestones for a layer.
  • Buyables: Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings.
  • Clickables: A more generalized variant of buyables, for any kind of thing that is sometimes clickable. Between these and Buyables, you can do just about anything.

Other components

  • Challenges: How to create challenges for a layer.
  • Bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be horizontal and vertical as well.
  • Subtabs and Microtabs: Create subtabs for your tabs, as well as "microtab" components that you can put inside the tabs.
  • Achievements: How to create achievements for a layer (or for the whole game).
  • Infoboxes: Boxes containing text that can be shown or hidden.
',14),i=[r];function s(l,d,c,h,u,m){return a(),t("div",null,i)}const p=e(n,[["render",s]]);export{b as __pageData,p as default}; diff --git a/assets/public_gamedevtree_docs_!general-info.md.edf0e4f0.lean.js b/assets/public_gamedevtree_docs_!general-info.md.edf0e4f0.lean.js new file mode 100644 index 000000000..f79fdeee5 --- /dev/null +++ b/assets/public_gamedevtree_docs_!general-info.md.edf0e4f0.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/!general-info.md","filePath":"public/gamedevtree/docs/!general-info.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/!general-info.md"},r=o("",14),i=[r];function s(l,d,c,h,u,m){return a(),t("div",null,i)}const p=e(n,[["render",s]]);export{b as __pageData,p as default}; diff --git a/assets/public_gamedevtree_docs_achievements.md.b946ed90.js b/assets/public_gamedevtree_docs_achievements.md.b946ed90.js new file mode 100644 index 000000000..8ab59bf00 --- /dev/null +++ b/assets/public_gamedevtree_docs_achievements.md.b946ed90.js @@ -0,0 +1,17 @@ +import{_ as e,o as s,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Achievements","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/achievements.md","filePath":"public/gamedevtree/docs/achievements.md","lastUpdated":1621388509000}'),t={name:"public/gamedevtree/docs/achievements.md"},o=n(`

Achievements

Achievements are awarded to the player when they meet a certain goal, and give some benefit. Currently, they are pretty basic, but additional features will be added later to help.

You can make global achievements by putting them in a side layer (make its row "side" instead of a number)

Useful functions for dealing with achievements and implementing their effects:

  • hasAchievement(layer, id): determine if the player has the Achievement
  • achievementEffect(layer, id): Returns the current effects of the achievement, if any

Achievements should be formatted like this:

js
    achievements: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Blah",
+            more features
+        }
+        etc
+    }
    achievements: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Blah",
+            more features
+        }
+        etc
+    }

Each achievement should have an id where the first digit is the row and the second digit is the column. Individual achievement can have these features:

  • name: optional, displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the achievement should be awarded.

  • tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional, A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.

  • unlocked(): optional, A function returning a bool to determine if the achievement is visible or not. Default is unlocked.

  • onComplete() - optional, this function will be called when the achievement is completed.

  • style: Optional, Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.

  • goalTooltip: optional, depracated Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.

  • doneTooltip: optional, depracated Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.

`,9),l=[o];function p(i,c,r,h,d,u){return s(),a("div",null,l)}const E=e(t,[["render",p]]);export{y as __pageData,E as default}; diff --git a/assets/public_gamedevtree_docs_achievements.md.b946ed90.lean.js b/assets/public_gamedevtree_docs_achievements.md.b946ed90.lean.js new file mode 100644 index 000000000..3331545df --- /dev/null +++ b/assets/public_gamedevtree_docs_achievements.md.b946ed90.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Achievements","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/achievements.md","filePath":"public/gamedevtree/docs/achievements.md","lastUpdated":1621388509000}'),t={name:"public/gamedevtree/docs/achievements.md"},o=n("",9),l=[o];function p(i,c,r,h,d,u){return s(),a("div",null,l)}const E=e(t,[["render",p]]);export{y as __pageData,E as default}; diff --git a/assets/public_gamedevtree_docs_bars.md.8820f30f.js b/assets/public_gamedevtree_docs_bars.md.8820f30f.js new file mode 100644 index 000000000..0b6c484eb --- /dev/null +++ b/assets/public_gamedevtree_docs_bars.md.8820f30f.js @@ -0,0 +1,13 @@ +import{_ as s,o as a,c as e,Q as t}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Bars","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/bars.md","filePath":"public/gamedevtree/docs/bars.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/bars.md"},o=t(`

Bars

Bars let you display information in a more direct way. It can be a progress bar, health bar, capacity gague, or anything else.

Bars are defined like other Big Features:

js
    bars: {
+        bigBar: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    bars: {
+        bigBar: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • direction: UP, DOWN, LEFT, or RIGHT (not Strings). Determines the direction that the bar is filled as it progresses. RIGHT means from left to right.

  • width, height: The size in pixels of the bar, but as Numbers (no "px" at the end)

  • progress(): A function that returns the portion of the bar that is filled, from "empty" at 0 to "full" at 1. (Nothing bad happens if the value goes out of these bounds, and it can be a number or Decimal).

  • display(): optional, A function that returns text to be displayed on top of the bar, can use HTML.

  • unlocked(): optional, A function returning a bool to determine if the bar is visible or not. Default is unlocked.

  • baseStyle, fillStyle, borderStyle, textStyle: Optional, Apply CSS to the unfilled portion, filled portion, border, and display text on the bar, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

`,6),l=[o];function p(r,i,c,d,h,u){return a(),e("div",null,l)}const b=s(n,[["render",p]]);export{E as __pageData,b as default}; diff --git a/assets/public_gamedevtree_docs_bars.md.8820f30f.lean.js b/assets/public_gamedevtree_docs_bars.md.8820f30f.lean.js new file mode 100644 index 000000000..0208c6498 --- /dev/null +++ b/assets/public_gamedevtree_docs_bars.md.8820f30f.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as e,Q as t}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Bars","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/bars.md","filePath":"public/gamedevtree/docs/bars.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/bars.md"},o=t("",6),l=[o];function p(r,i,c,d,h,u){return a(),e("div",null,l)}const b=s(n,[["render",p]]);export{E as __pageData,b as default}; diff --git a/assets/public_gamedevtree_docs_basic-layer-breakdown.md.a0080021.js b/assets/public_gamedevtree_docs_basic-layer-breakdown.md.a0080021.js new file mode 100644 index 000000000..5cea23bc6 --- /dev/null +++ b/assets/public_gamedevtree_docs_basic-layer-breakdown.md.a0080021.js @@ -0,0 +1,55 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Basic layer breakdown","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/basic-layer-breakdown.md","filePath":"public/gamedevtree/docs/basic-layer-breakdown.md","lastUpdated":1621388509000}'),o={name:"public/gamedevtree/docs/basic-layer-breakdown.md"},p=l(`

Basic layer breakdown

This is a very minimal layer with minimal features. Most things will require additional features.

js
    p: {
+        startData() { return {                  // startData is a function that returns default data for a layer. 
+            unlocked: false,                    // You can add more variables here to add them to your layer.
+            points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+        }},
+
+        color: "#FE0102",                       // The color for this layer, which affects many elements
+        resource: "prestige points",            // The name of this layer's main prestige resource
+        row: 0,                                 // The row this layer is on (0 is the first row)
+
+        baseResource: "points",                 // The name of the resource your prestige gain is based on
+        baseAmount() {return player.points},    // A function to return the current value of that resource
+
+        requires: new Decimal(200),            // The amount of the base needed to  gain 1 of the prestige currency.
+                                                // Also the amount required to unlock the layer.
+        
+        type: "normal",                         // Determines the formula used for calculating prestige currency.
+        exponent: 0.5,                          // "normal" prestige gain is (currency^exponent)
+
+        gainMult() {                            // Returns your multiplier to your gain of the prestige resource
+            return new Decimal(1)               // Factor in any bonuses multiplying gain here
+        },
+        gainExp() {                             // Returns your exponent to your gain of the prestige resource
+            return new Decimal(1)
+        },
+
+        layerShown() {return true},             // Returns a bool for if this layer's node should be visible in the tree.
+    },
    p: {
+        startData() { return {                  // startData is a function that returns default data for a layer. 
+            unlocked: false,                    // You can add more variables here to add them to your layer.
+            points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+        }},
+
+        color: "#FE0102",                       // The color for this layer, which affects many elements
+        resource: "prestige points",            // The name of this layer's main prestige resource
+        row: 0,                                 // The row this layer is on (0 is the first row)
+
+        baseResource: "points",                 // The name of the resource your prestige gain is based on
+        baseAmount() {return player.points},    // A function to return the current value of that resource
+
+        requires: new Decimal(200),            // The amount of the base needed to  gain 1 of the prestige currency.
+                                                // Also the amount required to unlock the layer.
+        
+        type: "normal",                         // Determines the formula used for calculating prestige currency.
+        exponent: 0.5,                          // "normal" prestige gain is (currency^exponent)
+
+        gainMult() {                            // Returns your multiplier to your gain of the prestige resource
+            return new Decimal(1)               // Factor in any bonuses multiplying gain here
+        },
+        gainExp() {                             // Returns your exponent to your gain of the prestige resource
+            return new Decimal(1)
+        },
+
+        layerShown() {return true},             // Returns a bool for if this layer's node should be visible in the tree.
+    },
`,3),e=[p];function t(r,c,y,E,i,u){return n(),a("div",null,e)}const F=s(o,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/public_gamedevtree_docs_basic-layer-breakdown.md.a0080021.lean.js b/assets/public_gamedevtree_docs_basic-layer-breakdown.md.a0080021.lean.js new file mode 100644 index 000000000..58f38f620 --- /dev/null +++ b/assets/public_gamedevtree_docs_basic-layer-breakdown.md.a0080021.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Basic layer breakdown","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/basic-layer-breakdown.md","filePath":"public/gamedevtree/docs/basic-layer-breakdown.md","lastUpdated":1621388509000}'),o={name:"public/gamedevtree/docs/basic-layer-breakdown.md"},p=l("",3),e=[p];function t(r,c,y,E,i,u){return n(),a("div",null,e)}const F=s(o,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/public_gamedevtree_docs_buyables.md.aaf2dbf0.js b/assets/public_gamedevtree_docs_buyables.md.aaf2dbf0.js new file mode 100644 index 000000000..6fdecabcd --- /dev/null +++ b/assets/public_gamedevtree_docs_buyables.md.aaf2dbf0.js @@ -0,0 +1,27 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/buyables.md","filePath":"public/gamedevtree/docs/buyables.md","lastUpdated":1621388509000}'),l={name:"public/gamedevtree/docs/buyables.md"},t=e(`

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. If you set a respec function, the player can reset the purchases to get their currency back.

The amount of a buyable owned is a Decimal. You can get or set the amount of a buyable with getBuyableAmt(layer, id) and setBuyableAmt(layer, id, amt). You can use buyableEffect(layer, id) to get the current effects of a buyable.

Buyables should be formatted like this:

js
    buyables: {
+        rows: # of rows
+        cols: # of columns
+        respec() {}, //**optional**, implement it to reset things and give back your currency.
+                     // Having this function makes a respec button appear
+        respecText:// **optional**, text that appears on the respec button
+        showRespecButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        sellOneText, sellAllText:// **optional**, text that appears on the "sell one" and "sell all" buttons respectively (if you are using them)
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    buyables: {
+        rows: # of rows
+        cols: # of columns
+        respec() {}, //**optional**, implement it to reset things and give back your currency.
+                     // Having this function makes a respec button appear
+        respecText:// **optional**, text that appears on the respec button
+        showRespecButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        sellOneText, sellAllText:// **optional**, text that appears on the "sell one" and "sell all" buttons respectively (if you are using them)
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • title: optional, displayed at the top in a larger font It can also be a function that returns updating text.

  • cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th object, but needs to use "current amount" as a default value for x. (x is a Decimal). Can return an object if there are multiple currencies.

  • effect(): optional, A function that calculates and returns the current values of bonuses of this buyable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.

  • unlocked(): optional, A function returning a bool to determine if the buyable is visible or not. Default is unlocked.

  • canAfford(): A function returning a bool to determine if you can buy one of the buyables.

  • buy(): A function that implements buying one of the buyable, including spending the currency.

  • buyMax(): optional, A function that implements buying as many of the buyable as possible.

  • style: Optional, Applies CSS to this buyable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the buyable was stored under, for convenient access. The buyable in the example's id is 11.

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

sellOne/sellAll(): optional, Called when the button is pressed. The standard use would be to decrease/reset the amount of the buyable, And possibly return some currency to the player.

canSellOne/canSellAll(): optional, booleans determining whether or not to show the buttons. If "canSellOne/All" is absent but "sellOne/All" is present, the appropriate button will always show.

`,11),o=[t];function p(r,c,i,u,y,h){return a(),n("div",null,o)}const d=s(l,[["render",p]]);export{E as __pageData,d as default}; diff --git a/assets/public_gamedevtree_docs_buyables.md.aaf2dbf0.lean.js b/assets/public_gamedevtree_docs_buyables.md.aaf2dbf0.lean.js new file mode 100644 index 000000000..5d431e41c --- /dev/null +++ b/assets/public_gamedevtree_docs_buyables.md.aaf2dbf0.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/buyables.md","filePath":"public/gamedevtree/docs/buyables.md","lastUpdated":1621388509000}'),l={name:"public/gamedevtree/docs/buyables.md"},t=e("",11),o=[t];function p(r,c,i,u,y,h){return a(),n("div",null,o)}const d=s(l,[["render",p]]);export{E as __pageData,d as default}; diff --git a/assets/public_gamedevtree_docs_challenges.md.2aededa1.js b/assets/public_gamedevtree_docs_challenges.md.2aededa1.js new file mode 100644 index 000000000..dd840730f --- /dev/null +++ b/assets/public_gamedevtree_docs_challenges.md.2aededa1.js @@ -0,0 +1,17 @@ +import{_ as e,o as s,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Challenges","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/challenges.md","filePath":"public/gamedevtree/docs/challenges.md","lastUpdated":1621388509000}'),l={name:"public/gamedevtree/docs/challenges.md"},t=n(`

Challenges

Useful functions for dealing with Challenges and implementing their effects:

  • inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one)
  • hasChallenge(layer, id): determine if the player has completed the challenge
  • challengeCompletions(layer, id): determine how many times the player completed the challenge
  • challEffect(layer, id): Returns the current effects of the challenge, if any

Challenges are stored in the following format:

js
    challenges: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Ouch",
+            etc
+        }
+        etc
+    }
    challenges: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Ouch",
+            etc
+        }
+        etc
+    }

Each challenge should have an id where the first digit is the row and the second digit is the column. Individual Challenges can have these features:

  • name: Name of the challenge, can be a string or a function. Can use basic HTML.

  • challengeDescription: A description of what makes the challenge a challenge. You will need to implement these elsewhere It can also be a function that returns updating text. Can use basic HTML.

  • rewardDescription: A description of the reward's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • rewardEffect(): optional, A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.

  • rewardDisplay(): optional, A function that returns a display of the current effects of the reward with formatting. Default behavior is to just display the a number appropriately formatted.

  • goal: A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.

  • unlocked(): optional, A function returning a bool to determine if the challenge is visible or not. Default is unlocked.

  • onComplete() - optional, this function will be called when the challenge is completed when previously incomplete.

  • countsAs: optional, If a challenge combines the effects of other challenges in this layer, you can use this. An array of challenge ids. The player is effectively in all of those challenges when in the current one.

By default, challenges use basic Points for the goal. You can change that using these features.

  • currencyDisplayName: optional, the name to display for the currency for the goal

  • currencyInternalName: optional, the internal name for that currency

  • currencyLayer: optional, the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional, if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

  • completionLimit: optional, the amount of times you can complete this challenge. Default is 1 completion.

  • style: Optional, Applies CSS to this challenge, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.

`,9),o=[t];function i(r,p,c,h,u,y){return s(),a("div",null,o)}const f=e(l,[["render",i]]);export{d as __pageData,f as default}; diff --git a/assets/public_gamedevtree_docs_challenges.md.2aededa1.lean.js b/assets/public_gamedevtree_docs_challenges.md.2aededa1.lean.js new file mode 100644 index 000000000..8a6cc6e19 --- /dev/null +++ b/assets/public_gamedevtree_docs_challenges.md.2aededa1.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Challenges","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/challenges.md","filePath":"public/gamedevtree/docs/challenges.md","lastUpdated":1621388509000}'),l={name:"public/gamedevtree/docs/challenges.md"},t=n("",9),o=[t];function i(r,p,c,h,u,y){return s(),a("div",null,o)}const f=e(l,[["render",i]]);export{d as __pageData,f as default}; diff --git a/assets/public_gamedevtree_docs_clickables.md.071614e7.js b/assets/public_gamedevtree_docs_clickables.md.071614e7.js new file mode 100644 index 000000000..c4deddad3 --- /dev/null +++ b/assets/public_gamedevtree_docs_clickables.md.071614e7.js @@ -0,0 +1,25 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Clickables","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/clickables.md","filePath":"public/gamedevtree/docs/clickables.md","lastUpdated":1621388509000}'),e={name:"public/gamedevtree/docs/clickables.md"},t=l(`

Clickables

Clickables are any kind of thing that you can click for an effect. They're a more generalized version of Buyables.

DO NOT USE THESE TO MAKE THINGS THAT YOU CLICK REPEATEDLY FOR A BONUS BECAUSE THOSE ARE AWFUL.

There are several differences between the two. One is that a buyable's saved data is its amount as a Decimal, while Clickables store a "state" which can be a number or string, but not Decimal, array, or object). Buyables have a number of extra features which you can see on their page. Clickables also have a smaller default size.

You can get and set a clickable's state with getClickableState(layer, id) and setClickableState(layer, id, state). You can use clickableEffect(layer, id) to get the current effects of a clickable.

Clickables should be formatted like this:

js
    clickables: {
+        rows: # of rows
+        cols: # of columns
+        masterButtonPress() // **optional** If this is present, an additional button will appear above the clickables.
+                            // pressing it will call the function.
+        masterButtonText: "Press me!" // **optional** text to display on the Master Button
+        showMasterButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    clickables: {
+        rows: # of rows
+        cols: # of columns
+        masterButtonPress() // **optional** If this is present, an additional button will appear above the clickables.
+                            // pressing it will call the function.
+        masterButtonText: "Press me!" // **optional** text to display on the Master Button
+        showMasterButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • title: optional, displayed at the top in a larger font It can also be a function that returns updating text.

  • effect(): optional, A function that calculates and returns the current values of bonuses of this clickable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the clickable after the title, likely changing based on its state. Can use basic HTML.

  • unlocked(): optional, A function returning a bool to determine if the clickable is visible or not. Default is unlocked.

  • canClick(): A function returning a bool to determine if you can click the clickable.

  • onClick(): A function that implements clicking one of the clickable.

  • style: Optional, Applies CSS to this clickable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: Assigned automagically. It's the "key" which the clickable was stored under, for convenient access. The clickable in the example's id is 11.

`,9),o=[t];function p(c,r,i,E,y,u){return a(),n("div",null,o)}const b=s(e,[["render",p]]);export{d as __pageData,b as default}; diff --git a/assets/public_gamedevtree_docs_clickables.md.071614e7.lean.js b/assets/public_gamedevtree_docs_clickables.md.071614e7.lean.js new file mode 100644 index 000000000..9e565717e --- /dev/null +++ b/assets/public_gamedevtree_docs_clickables.md.071614e7.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Clickables","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/clickables.md","filePath":"public/gamedevtree/docs/clickables.md","lastUpdated":1621388509000}'),e={name:"public/gamedevtree/docs/clickables.md"},t=l("",9),o=[t];function p(c,r,i,E,y,u){return a(),n("div",null,o)}const b=s(e,[["render",p]]);export{d as __pageData,b as default}; diff --git a/assets/public_gamedevtree_docs_custom-tab-layouts.md.88f2716c.js b/assets/public_gamedevtree_docs_custom-tab-layouts.md.88f2716c.js new file mode 100644 index 000000000..46e646ace --- /dev/null +++ b/assets/public_gamedevtree_docs_custom-tab-layouts.md.88f2716c.js @@ -0,0 +1,17 @@ +import{_ as s,o as a,c as o,Q as t}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Custom tab layouts","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/custom-tab-layouts.md","filePath":"public/gamedevtree/docs/custom-tab-layouts.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/custom-tab-layouts.md"},e=t(`

Custom tab layouts

Note: If you are using subtabs, tabFormat is used differently, but you still use the same format within each subtabs. See here for more on subtabs

Custom tab layouts can be used to do basically anything in a tab window, especially combined with the "style" layer feature. The tabFormat feature is an array of things, like this:

js
    tabFormat: ["main-display",
+            ["prestige-button", function(){return "Melt your points into "}],
+            "blank",
+            ["display-text",
+                function() {return 'I have ' + format(player.points) + ' pointy points!'},
+                {"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}],
+            "blank",
+            ["toggle", ["c", "beep"]],
+            "milestones", "blank", "blank", "upgrades"]
    tabFormat: ["main-display",
+            ["prestige-button", function(){return "Melt your points into "}],
+            "blank",
+            ["display-text",
+                function() {return 'I have ' + format(player.points) + ' pointy points!'},
+                {"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}],
+            "blank",
+            ["toggle", ["c", "beep"]],
+            "milestones", "blank", "blank", "upgrades"]

It is a list of components, which can be either just a name, or an array with arguments. If it's an array, the first item is the name of the component, the second is the data passed into it, and the third (optional) applies a CSS style to it with a "CSS object", where the keys are CSS attributes.

These are the existing components, but you can create more in v.js:

  • display-text: Displays some text (can use basic HTML). The argument is the text to display. It can also be a function that returns updating text.

  • raw-html: Displays some basic HTML, can also be a function.

  • blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions. If it's a single value (e.g. "20px"), that determines the height. If you have a pair of arguments, the first is width and the second is height.

  • row: Display a list of components horizontally. The argument is an array of components in the tab layout format.

  • column: Display a list of components vertically. The argument is an array of components in the tab layout format. This is useful to display columns within a row.

  • main-display: The text that displays the main currency for the layer and its effects.

  • resource-display: The text that displays the currency that this layer is based on, as well as the best and/or total values for this layer's prestige currency (if they are put in startData for this layer)

  • prestige-button: The argument is a string that the prestige button should say before the amount of currency you will gain. It can also be a function that returns updating text.

  • upgrades, milestones, challs, achievements: Display the upgrades, milestones, and challenges for a layer, as appropriate.

  • buyables, clickables: Display all of the buyables/clickables for this layer, as appropriate. The argument optional, and is the size of the boxes in pixels.

  • microtabs: Display a set of subtabs for an area. The argument is the name of the set of microtabs in the "microtabs" feature.

  • bar: Display a bar. The argument is the id of the bar to display.

  • infobox: Display an infobox. The argument is the id of the infobox to display.

  • toggle: A toggle button that toggles a bool value. The data is a pair that identifies what bool to toggle, [layer, id]

The rest of the components are sub-components. They can be used just like other components, but are typically part of another component.

  • upgrade, milestone, chall, buyable, clickable, achievement: An individual upgrade, challenge, etc. The argument is the id. This can be used if you want to have upgrades split up across multiple subtabs, for example.

  • respec-button, master-button: The respec and master buttons for buyables and clickables, respectively.

  • sell-one, sell-all: The "sell one" and "sell all" for buyables, respectively. The argument is the id of the buyable.

`,9),l=[e];function p(r,c,i,u,y,E){return a(),o("div",null,l)}const d=s(n,[["render",p]]);export{b as __pageData,d as default}; diff --git a/assets/public_gamedevtree_docs_custom-tab-layouts.md.88f2716c.lean.js b/assets/public_gamedevtree_docs_custom-tab-layouts.md.88f2716c.lean.js new file mode 100644 index 000000000..87e7b3cb7 --- /dev/null +++ b/assets/public_gamedevtree_docs_custom-tab-layouts.md.88f2716c.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as o,Q as t}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Custom tab layouts","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/custom-tab-layouts.md","filePath":"public/gamedevtree/docs/custom-tab-layouts.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/custom-tab-layouts.md"},e=t("",9),l=[e];function p(r,c,i,u,y,E){return a(),o("div",null,l)}const d=s(n,[["render",p]]);export{b as __pageData,d as default}; diff --git a/assets/public_gamedevtree_docs_getting-started.md.728b1c5a.js b/assets/public_gamedevtree_docs_getting-started.md.728b1c5a.js new file mode 100644 index 000000000..a7b1f4196 --- /dev/null +++ b/assets/public_gamedevtree_docs_getting-started.md.728b1c5a.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/getting-started.md","filePath":"public/gamedevtree/docs/getting-started.md","lastUpdated":1621388509000}'),a={name:"public/gamedevtree/docs/getting-started.md"},n=i('

Getting started

Welcome to The Modding Tree!

Using the Modding Tree, at its simplest level, just requires getting a copy of it onto your computer. However, if you do it the right way, it will help in many ways.

Don't let the word "Github" scare you away. It's actually much easier to use than most people think, especially because most people use it the hard way. The key is Github Desktop, which lets you do everything you need to, without even touching the command line.

The benefits of using Github:

  • It makes it much, much easier to update The Modding Tree.
  • You can share your work without any extra effort using githack, or with a bit more effort, set up a github.io site.
  • It lets you undo changes to your code, and to have multiple versions of it.
  • It lets you collaborate with other people, if you want to.

Getting set up with Github and The Modding Tree:

  1. Install Github Desktop and Visual Studio Code.

  2. Make a Github account. You can handle this on your own.

  3. Log in on your browser, and go back to The Modding Tree page. At the top right, there should be a button that says "fork". Click on it, and then on your username. You now have your own fork, or copy, of The Modding Tree.

  4. Open Github Desktop and log in. Ignore everything else and choose "clone a repository". A "repository" is basically a "Github project", like The Modding Tree. "Cloning" is downloading a copy of the repository to your computer.

  5. Look for The Modding Tree in the list of repositiories (it should be the only one) and click "clone".

  6. Select that you're using it for your own purposes, and click continue. It will download the files and handle everything.

Using your repository

  1. Click on "show in finder" to the right, and then open index.html. This will let you view and test your project!

  2. To edit your project, click "open in VSCode" in Github Desktop.

  3. Open mod.js in VSCode, and look at the top part where it says "modInfo". On the lines below that, change the mod's name to whatever you want, and change the id as well. (It can be any string value, and it's used to determine where the savefile is. Make it something that's probably unique, and don't change it again later.)

  4. Save game.js, and then reload index.html. The title on the tab, as well as on the info page, will now be the new ones!

  5. Go back to Github Desktop. It's time to save your changes into the git system by making a "commit".

  6. At the bottom right corner, add a summary of your changes, and then click "commit to master".

  7. Finally, at the top middle, click "push origin" to push your changes out onto the online repository.

  8. You can view your project on line, or share it with others, by going to https://raw.githack.com/[YOUR-GITHUB-USERNAME]/The-Modding-Tree/master/index.html

And now, you have successfully used Github! You can look at the documentation to see how The Modding Tree's system works and to make your mod a reality.

',11),r=[n];function s(l,h,u,d,p,c){return t(),o("div",null,r)}const y=e(a,[["render",s]]);export{m as __pageData,y as default}; diff --git a/assets/public_gamedevtree_docs_getting-started.md.728b1c5a.lean.js b/assets/public_gamedevtree_docs_getting-started.md.728b1c5a.lean.js new file mode 100644 index 000000000..d5a7a8c2b --- /dev/null +++ b/assets/public_gamedevtree_docs_getting-started.md.728b1c5a.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/getting-started.md","filePath":"public/gamedevtree/docs/getting-started.md","lastUpdated":1621388509000}'),a={name:"public/gamedevtree/docs/getting-started.md"},n=i("",11),r=[n];function s(l,h,u,d,p,c){return t(),o("div",null,r)}const y=e(a,[["render",s]]);export{m as __pageData,y as default}; diff --git a/assets/public_gamedevtree_docs_infoboxes.md.20dc07f1.js b/assets/public_gamedevtree_docs_infoboxes.md.20dc07f1.js new file mode 100644 index 000000000..d58988e44 --- /dev/null +++ b/assets/public_gamedevtree_docs_infoboxes.md.20dc07f1.js @@ -0,0 +1,13 @@ +import{_ as s,o as a,c as e,Q as n}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Infoboxes","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/infoboxes.md","filePath":"public/gamedevtree/docs/infoboxes.md","lastUpdated":1621388509000}'),o={name:"public/gamedevtree/docs/infoboxes.md"},t=n(`

Infoboxes

Infoboxes are good for displaying "lore", or story elements, as well as for explaining complicated things.

In the default tab layout, the first infobox will be displayed at the very top of the tab.

Infoboxes are defined like other Big Features:

js
    infoboxes: {
+        infobox: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    infoboxes: {
+        infobox: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • title: The text displayed above the main box. Can be a function to be dynamic, and can use basic HTML.

  • body: The text displayed inside the box. Can be a function to be dynamic, and can use basic HTML.

  • style, titleStyle, bodyStyle: Optional, Apply CSS to the infobox, or to the title button or body of the infobox, in the form of an object where the keys are CSS attributes, and the values are the Values for those attributes (both as strings).

  • unlocked(): optional, A function returning a bool to determine if the infobox is visible or not. Default is unlocked.

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

`,7),l=[t];function p(i,r,c,d,y,b){return a(),e("div",null,l)}const E=s(o,[["render",p]]);export{h as __pageData,E as default}; diff --git a/assets/public_gamedevtree_docs_infoboxes.md.20dc07f1.lean.js b/assets/public_gamedevtree_docs_infoboxes.md.20dc07f1.lean.js new file mode 100644 index 000000000..1b32e14b8 --- /dev/null +++ b/assets/public_gamedevtree_docs_infoboxes.md.20dc07f1.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as e,Q as n}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Infoboxes","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/infoboxes.md","filePath":"public/gamedevtree/docs/infoboxes.md","lastUpdated":1621388509000}'),o={name:"public/gamedevtree/docs/infoboxes.md"},t=n("",7),l=[t];function p(i,r,c,d,y,b){return a(),e("div",null,l)}const E=s(o,[["render",p]]);export{h as __pageData,E as default}; diff --git a/assets/public_gamedevtree_docs_layer-features.md.358536c6.js b/assets/public_gamedevtree_docs_layer-features.md.358536c6.js new file mode 100644 index 000000000..c094939b9 --- /dev/null +++ b/assets/public_gamedevtree_docs_layer-features.md.358536c6.js @@ -0,0 +1,23 @@ +import{_ as e,o as t,c as a,Q as s}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"Layer Features","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/layer-features.md","filePath":"public/gamedevtree/docs/layer-features.md","lastUpdated":1621388509000}'),o={name:"public/gamedevtree/docs/layer-features.md"},n=s(`

Layer Features

This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.

You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.

Key:

  • No label: This is required and the game will crash if it isn't included.
  • sometimes required: This is may be required, depending on other things in the layer.
  • optional: You can leave this out if you don't intend to use that feature for the layer.

Layer Definition features

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar to access the save value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.

  • name: Optional, used in reset confirmations (and maybe other places). If absent, it just uses the layer's id.

  • startData(): A function to return the default save data for this layer. Add any variables you have to it. Any nonstandard Decimal variables need to be added to convertToDecimal as well. Standard values: Required: unlocked: a bool determining if this layer is unlocked or not points: a Decimal, the main currency for the layer Optional: total: A Decimal, tracks total amount of main prestige currency best: A Decimal, tracks highest amount of main prestige currency unlockOrder: used to keep track of relevant layers unlocked before this one.

  • color: A color associated with this layer, used in many places. (A string in hex format with a #)

  • row: The row of the layer, starting at 0. This affects where the node appears on the tree, and which resets affect the layer.

     Using "side" instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements
    + and statistics). Side layers are not affected by resets unless you add a doReset to them.
    +
  • resource: Name of the main currency you gain by resetting on this layer.

  • effect(): optional, A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. You will also have to implement the effect where it is applied.

  • effectDescription: optional, A function that returns a description of this effect. If the text stays constant, it can just be a string.

  • layerShown(): A function returning a bool which determines if this layer's node should be visible on the tree. It can also return "ghost", which will hide the layer, but its node will still take up space in the tree.

  • hotkeys: optional, An array containing information on any hotkeys associated with this layer:

    js
    hotkeys: [
    +    {key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" if ctrl is.
    +    desc: "p: reset your points for prestige points", // The description of the hotkey used in the How To Play
    +    onPress(){if (player.p.unlocked) doReset("p")}}, // This function is called when the hotkey is pressed.
    +],
    hotkeys: [
    +    {key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" if ctrl is.
    +    desc: "p: reset your points for prestige points", // The description of the hotkey used in the How To Play
    +    onPress(){if (player.p.unlocked) doReset("p")}}, // This function is called when the hotkey is pressed.
    +],
  • style: optional, a "CSS object" where the keys are CSS attributes ,containing any CSS that should affect this layer's entire tab.

  • tabFormat: optional, use this if you want to add extra things to your tab or change the layout. See here for more info.

  • midsection: optional, an alternative to tabFormat, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)

Big features (all optional)

Prestige formula features

  • type: optional, Determines which prestige formula you use. Defaults to "none". "normal": The amount of currency you gain is independent of its current amount (like Prestige). formula before bonuses is based on baseResource^exponent "static": The cost is dependent on your total after reset. formula before bonuses is based on base^(x^exponent) "custom": You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom) "none": This layer does not prestige, and therefore does not need any of the other features in this section.

  • baseResource: The name of the resource that determines how much of the main currency you gain on reset.

  • baseAmount(): A function that gets the current value of the base resource.

  • requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).

  • exponent: Used as described above.

  • base: sometimes required, required for "static" layers, used as described above. If absent, defaults to 2. Must be greater than 1.

  • roundUpCost: optional, a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a "static" currency.)

  • canBuyMax(): sometimes required, required for static layers, function used to determine if buying max is permitted.

  • gainMult(), gainExp(): optional, Functions that calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in any bonuses here.

  • onPrestige(gain): optional, A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.

  • resetDesc: optional, use this to replace "Reset for " on the Prestige button with something else.

  • prestigeButtonText(): Sometimes required, Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.

Tree/node features

  • symbol: optional, the text that appears on this layer's node. Default is the layer id with the first letter capitalized

  • position: optional, Determines the horizontal position of the layer in its row. By default, it uses the layer id, and layers are sorted in alphabetical order.

  • branches: optional, an array of layer ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors)

  • nodeStyle: optional, a CSS object, where the keys are CSS attributes, which styles this layer's node on the tree

  • tooltip() / tooltipLocked(): optional Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree.

Other features

  • doReset(resettingLayer): optional, is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. (doReset is always called for side layers, but for these the default behavior is to reset nothing.)

              If you want to keep things, determine what to keep based on the resettingLayer, milestones, and such, then call
    +          resetLayerData(layer, keep), where layer is this layer, and keep is an array of the names of things to keep.
    +          It can include things like "points", "best", "total" (for this layer's prestige currency), "upgrades", 
    +          any unique variables like "generatorPower", etc.
    +          If you want to only keep specific upgrades or something like that, save them in a separate variable, then
    +          call layerDataReset, and then set player[layer].upgrades to the saved upgrades.
    +
  • update(diff): optional, this function is called every game tick. Use it for any passive resource production or time-based things. diff is the time since the last tick. Suggestion: use addPoints(layer, gain) when generating points to automatically update the best and total amounts.

  • automate(): optional, this function is called every game tick, after production. Use it to activate any autobuyers or auto-resets or similar on this layer, if appropriate.

  • resetsNothing: optional, returns true if this layer shouldn't trigger any resets when you prestige.

  • increaseUnlockOrder: optional, an array of layer ids. When this layer is unlocked for the first time, the unlockOrder value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.

  • shouldNotify: optional, a function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.

  • componentStyles: optional, An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:

js
        componentStyles: {
+            "challenge"() {return {'height': '200px'}},
+            "prestige-button"() {return {'color': '#AA66AA'}},
+        },
        componentStyles: {
+            "challenge"() {return {'height': '200px'}},
+            "prestige-button"() {return {'color': '#AA66AA'}},
+        },

Custom Prestige type

  • getResetGain(): For custom prestige type, Returns how many points you should get if you reset now. You can call getResetGain(this.layer, useType = "static") or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer.)

  • getNextAt(canMax=false): For custom prestige type, Returns how many of the base currency you need to get to the next point. canMax is an optional variable used with Static-ish layers to differentiate between if it's looking for the first point you can reset at, or the requirement for any gain at all. (Supporting both is good). You can also call getNextAt(this.layer, canMax=false, useType = "static") or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer.)

  • canReset(): For custom prestige type, return true only if you have the resources required to do a prestige here.

`,18),r=[n];function i(l,p,c,u,h,y){return t(),a("div",null,r)}const g=e(o,[["render",i]]);export{f as __pageData,g as default}; diff --git a/assets/public_gamedevtree_docs_layer-features.md.358536c6.lean.js b/assets/public_gamedevtree_docs_layer-features.md.358536c6.lean.js new file mode 100644 index 000000000..604c9bab0 --- /dev/null +++ b/assets/public_gamedevtree_docs_layer-features.md.358536c6.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as s}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"Layer Features","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/layer-features.md","filePath":"public/gamedevtree/docs/layer-features.md","lastUpdated":1621388509000}'),o={name:"public/gamedevtree/docs/layer-features.md"},n=s("",18),r=[n];function i(l,p,c,u,h,y){return t(),a("div",null,r)}const g=e(o,[["render",i]]);export{f as __pageData,g as default}; diff --git a/assets/public_gamedevtree_docs_main-mod-info.md.e47f311e.js b/assets/public_gamedevtree_docs_main-mod-info.md.e47f311e.js new file mode 100644 index 000000000..833678835 --- /dev/null +++ b/assets/public_gamedevtree_docs_main-mod-info.md.e47f311e.js @@ -0,0 +1,9 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"mod.js","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/main-mod-info.md","filePath":"public/gamedevtree/docs/main-mod-info.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/main-mod-info.md"},o=t(`

mod.js

All of the code and data that you're likely to edit is here in mod.js! Everything in mod.js will not be altered by updates, besides the addition of new things.

Here's a breakdown of what's in it:

  • modInfo is where most of the basic configuration for the mod is. It contains:

    • name: The name of your mod. (a string)
    • id: The id for your mod, a unique string that is used to determine savefile location. Setting it is important!
    • author: The name of the author, displayed in the info tab.
    • pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)
    • discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it. "discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.
    • changelogLink: You can use this to set a link to a page where your changelog for the game is displayed.
    • offlineLimit: The maximum amount of offline time that the player can accumulate, in hours. Any extra time is lost. (a number) This is useful because most of these mods are fast-paced enough that too much offline time ruins the balance, such as the time in between updates. That is why I suggest developers disable offline time on their own savefile.
    • initialStartPoints: A Decimal for the amount of points a new player should start with.
  • VERSION is used to describe the current version of your mod. It contains: num: The mod's version number, displayed at the top right of the tree tab. name: The version's name, displayed alongside the number in the info tab.

  • doNotCallTheseFunctionsEveryTick is very important. TMT calls every function anywhere in "layers" every tick to store the result, unless specifically told not to. Functions that have are used to do an action need to be identified. "Official" functions (those in the documentation) are all fine, but if you make any new ones, add their names to this array.

js
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
  • getStartPoints(): A function to determine the amount of points the player starts with after a reset. (returns a Decimal value)

  • canGenPoints(): A function returning a boolean for if points should be generated. Use this if you want an upgrade to unlock generating points.

  • getPointGen(): A function that calculates your points per second. Anything that affects your point gain should go into the calculation here.

  • addedPlayerData(): A function that returns any non-layer-related data that you want to be added to the save data and "player" object.

js
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
  • displayThings: An array of functions used to display extra things at the top of the tree tab. Each function returns a string, which is a line to display (with basic HTML support). If a function returns nothing, nothing is displayed (and it doesn't take up a line).

  • isEndgame(): A function to determine if the player has reached the end of the game, at which point the "you win!" screen appears.

Less important things beyond this point!

  • maxTickLength(): Returns the maximum tick length, in milliseconds. Only really useful if you have something that reduces over time, which long ticks mess up (usually a challenge).
`,10),l=[o];function i(p,r,c,d,u,h){return s(),a("div",null,l)}const f=e(n,[["render",i]]);export{m as __pageData,f as default}; diff --git a/assets/public_gamedevtree_docs_main-mod-info.md.e47f311e.lean.js b/assets/public_gamedevtree_docs_main-mod-info.md.e47f311e.lean.js new file mode 100644 index 000000000..1620b4f52 --- /dev/null +++ b/assets/public_gamedevtree_docs_main-mod-info.md.e47f311e.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"mod.js","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/main-mod-info.md","filePath":"public/gamedevtree/docs/main-mod-info.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/main-mod-info.md"},o=t("",10),l=[o];function i(p,r,c,d,u,h){return s(),a("div",null,l)}const f=e(n,[["render",i]]);export{m as __pageData,f as default}; diff --git a/assets/public_gamedevtree_docs_milestones.md.d3d14cdf.js b/assets/public_gamedevtree_docs_milestones.md.d3d14cdf.js new file mode 100644 index 000000000..be543ae75 --- /dev/null +++ b/assets/public_gamedevtree_docs_milestones.md.d3d14cdf.js @@ -0,0 +1,12 @@ +import{_ as e,o as s,c as t,Q as a}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Milestones","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/milestones.md","filePath":"public/gamedevtree/docs/milestones.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/milestones.md"},o=a(`

Milestones

Milestones are awarded to the player when they meet a certain goal, and give some benefit. Milestones should be formatted like this:

js
    milestones: {
+        0: {
+            requirementDesc: "123 waffles",
+        }
+        etc
+    }
    milestones: {
+        0: {
+            requirementDesc: "123 waffles",
+        }
+        etc
+    }

You can use hasMilestone(layer, id) to determine if the player has a given milestone

Milestone features:

  • requirementDesc: A string describing the requirement for unlocking this milestone. Suggestion: Use a "total". It can also be a function that returns updating text. Can use basic HTML.

  • effectDesc: A string describing the reward for having the milestone. You will have to implement the reward elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the milestone should be awarded.

  • toggles: optional, Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

         **Tip:** Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.
    +
  • style: Optional, Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • unlocked(): Optional A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the milestone was stored under, for convenient access. The milestone in the example's id is 0.

`,6),l=[o];function i(p,r,c,d,h,u){return s(),t("div",null,l)}const y=e(n,[["render",i]]);export{g as __pageData,y as default}; diff --git a/assets/public_gamedevtree_docs_milestones.md.d3d14cdf.lean.js b/assets/public_gamedevtree_docs_milestones.md.d3d14cdf.lean.js new file mode 100644 index 000000000..111ed5a5e --- /dev/null +++ b/assets/public_gamedevtree_docs_milestones.md.d3d14cdf.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as t,Q as a}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Milestones","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/milestones.md","filePath":"public/gamedevtree/docs/milestones.md","lastUpdated":1621388509000}'),n={name:"public/gamedevtree/docs/milestones.md"},o=a("",6),l=[o];function i(p,r,c,d,h,u){return s(),t("div",null,l)}const y=e(n,[["render",i]]);export{g as __pageData,y as default}; diff --git a/assets/public_gamedevtree_docs_subtabs-and-microtabs.md.7e17729a.js b/assets/public_gamedevtree_docs_subtabs-and-microtabs.md.7e17729a.js new file mode 100644 index 000000000..fff2093f5 --- /dev/null +++ b/assets/public_gamedevtree_docs_subtabs-and-microtabs.md.7e17729a.js @@ -0,0 +1,45 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Subtabs and Microtabs","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/subtabs-and-microtabs.md","filePath":"public/gamedevtree/docs/subtabs-and-microtabs.md","lastUpdated":1621388509000}'),t={name:"public/gamedevtree/docs/subtabs-and-microtabs.md"},l=e(`

Subtabs and Microtabs

Subtabs are separate sections of a tab that you can view by selecting one at the top of the tab. Microtabs are smaller areas that function in much the same way.

Subtabs are defined by using the tab format like this, where each element of tabFormat is given the name of that subtab:

js
    tabFormat: {
+        "Main tab": {
+            *subtab features*
+        },
+        "Other tab": {
+            *subtab features*
+        },
+
+        etc
+    },
    tabFormat: {
+        "Main tab": {
+            *subtab features*
+        },
+        "Other tab": {
+            *subtab features*
+        },
+
+        etc
+    },

Microtabs are defined similarly, and use the same features, but are defined in the "microtabs" feature. Each entry is a group of tabs which will appear in a microtabs component. The first set, "stuff", has 2 tabs, and the second, "otherStuff", has none.

js
    microtabs: {
+        stuff: {
+            first: {
+            *subtab features*
+            },
+            second: {
+            *subtab features*
+            },
+        },
+
+        otherStuff: {
+            // There could be another set of microtabs here
+        }
+    },
    microtabs: {
+        stuff: {
+            first: {
+            *subtab features*
+            },
+            second: {
+            *subtab features*
+            },
+        },
+
+        otherStuff: {
+            // There could be another set of microtabs here
+        }
+    },

Normal subtabs and microtab subtabs both use the same features:

Features:

  • content: The tab layout code for the subtab, in the tab layout format

  • style: Optional, Applies CSS to the whole subtab when switched to, in the form of an "CSS Object", where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • buttonStyle: Optional, A CSS object, which affects the appearance of the button for that subtab.

  • unlocked(): Optional, a function to determine if the button for this subtab should be visible. By default, a subtab is always unlocked. (You can't use the "this" keyword in this function.)

`,9),p=[l];function o(c,r,i,E,u,b){return a(),n("div",null,p)}const d=s(t,[["render",o]]);export{h as __pageData,d as default}; diff --git a/assets/public_gamedevtree_docs_subtabs-and-microtabs.md.7e17729a.lean.js b/assets/public_gamedevtree_docs_subtabs-and-microtabs.md.7e17729a.lean.js new file mode 100644 index 000000000..257e42c6d --- /dev/null +++ b/assets/public_gamedevtree_docs_subtabs-and-microtabs.md.7e17729a.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Subtabs and Microtabs","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/subtabs-and-microtabs.md","filePath":"public/gamedevtree/docs/subtabs-and-microtabs.md","lastUpdated":1621388509000}'),t={name:"public/gamedevtree/docs/subtabs-and-microtabs.md"},l=e("",9),p=[l];function o(c,r,i,E,u,b){return a(),n("div",null,p)}const d=s(t,[["render",o]]);export{h as __pageData,d as default}; diff --git a/assets/public_gamedevtree_docs_updating-tmt.md.3abb786e.js b/assets/public_gamedevtree_docs_updating-tmt.md.3abb786e.js new file mode 100644 index 000000000..9b98ecdb9 --- /dev/null +++ b/assets/public_gamedevtree_docs_updating-tmt.md.3abb786e.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Updating The Modding Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/updating-tmt.md","filePath":"public/gamedevtree/docs/updating-tmt.md","lastUpdated":1621388509000}'),i={name:"public/gamedevtree/docs/updating-tmt.md"},n=o('

Updating The Modding Tree

This tutorial assumes that you have used the Getting Started Tutorial, and are using Github Desktop and VSCode for your mod.

Here's what you have to do when there's a TMT update:

  1. Look at the changelog. It will warn you if the update will break anything or require any changes. Decide if you want to try to update.

  2. Open Github Desktop, and at the top middle, click "fetch origin". This will make Github Desktop get information about the update.

  3. Click where it says "current branch: master" at the top middle, and at the bottom of the thing that appears, click "choose a branch to merge into master.

  4. Select upstream/master. It will likely say there are conflicts, but you have tools to resolve them. Click "Merge upstream/master into master".

  5. A conflict happens when the things you're trying to merge have both made changes in the same place. Click "open in Visual Studio Code" next to the first file.

  6. Scroll down through the file, and look for the parts highlighted in red and green. One of these is your code, and the other is some code that will be modified by the update. Do your best to try to edit things to keep the updated changes, but keep your content.

  7. Continue to do this for all remaining challenges.

  8. Do any other changes required by the update, run the game, fix issues, etc.

',4),r=[n];function d(h,s,l,p,u,c){return t(),a("div",null,r)}const _=e(i,[["render",d]]);export{m as __pageData,_ as default}; diff --git a/assets/public_gamedevtree_docs_updating-tmt.md.3abb786e.lean.js b/assets/public_gamedevtree_docs_updating-tmt.md.3abb786e.lean.js new file mode 100644 index 000000000..dfe80e68d --- /dev/null +++ b/assets/public_gamedevtree_docs_updating-tmt.md.3abb786e.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Updating The Modding Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/updating-tmt.md","filePath":"public/gamedevtree/docs/updating-tmt.md","lastUpdated":1621388509000}'),i={name:"public/gamedevtree/docs/updating-tmt.md"},n=o("",4),r=[n];function d(h,s,l,p,u,c){return t(),a("div",null,r)}const _=e(i,[["render",d]]);export{m as __pageData,_ as default}; diff --git a/assets/public_gamedevtree_docs_upgrades.md.f2da5968.js b/assets/public_gamedevtree_docs_upgrades.md.f2da5968.js new file mode 100644 index 000000000..b28eba71c --- /dev/null +++ b/assets/public_gamedevtree_docs_upgrades.md.f2da5968.js @@ -0,0 +1,17 @@ +import{_ as s,o as e,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Upgrades","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/upgrades.md","filePath":"public/gamedevtree/docs/upgrades.md","lastUpdated":1621388509000}'),t={name:"public/gamedevtree/docs/upgrades.md"},o=n(`

Upgrades

Useful functions for dealing with Upgrades and implementing their effects:

  • hasUpgrade(layer, id): determine if the player has the upgrade
  • upgradeEffect(layer, id): Returns the current effects of the upgrade, if any
  • buyUpgrade(layer, id): Buys an upgrade directly (if affordable)

Hint: Basic point gain is calculated in mod.js's "getPointGen".

Upgrades are stored in the following format:

js
    upgrades: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            description: "Blah",
+            more features
+        }
+        etc
+    }
    upgrades: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            description: "Blah",
+            more features
+        }
+        etc
+    }

Each upgrade should have an id where the first digit is the row and the second digit is the column. Individual upgrades can have these features:

  • title: optional, displayed at the top in a larger font It can also be a function that returns updating text. Can use basic HTML.

  • description: A description of the upgrade's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional, A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.

  • effectDisplay(): optional, A function that returns a display of the current effects of the upgrade with formatting. Default behavior is to just display the a number appropriately formatted. Can use basic HTML.

  • cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.

  • unlocked(): optional, A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.

  • onPurchase() - optional, this function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".

By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):

  • currencyDisplayName: optional, the name to display for the currency for the upgrade

  • currencyInternalName: optional, the internal name for that currency

  • currencyLayer: optional, the internal name of the layer that currency is stored in. If it's not in a layer (like Points), omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional, if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

  • style: Optional, Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the upgrade was stored under, for convenient access. The upgrade in the example's id is 11.

`,10),l=[o];function p(r,i,c,u,d,h){return e(),a("div",null,l)}const f=s(t,[["render",p]]);export{g as __pageData,f as default}; diff --git a/assets/public_gamedevtree_docs_upgrades.md.f2da5968.lean.js b/assets/public_gamedevtree_docs_upgrades.md.f2da5968.lean.js new file mode 100644 index 000000000..0c72590ce --- /dev/null +++ b/assets/public_gamedevtree_docs_upgrades.md.f2da5968.lean.js @@ -0,0 +1 @@ +import{_ as s,o as e,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Upgrades","description":"","frontmatter":{},"headers":[],"relativePath":"public/gamedevtree/docs/upgrades.md","filePath":"public/gamedevtree/docs/upgrades.md","lastUpdated":1621388509000}'),t={name:"public/gamedevtree/docs/upgrades.md"},o=n("",10),l=[o];function p(r,i,c,u,d,h){return e(),a("div",null,l)}const f=s(t,[["render",p]]);export{g as __pageData,f as default}; diff --git a/assets/public_kronos_Old Things_2.0-format-changes.md.01e6cf21.js b/assets/public_kronos_Old Things_2.0-format-changes.md.01e6cf21.js new file mode 100644 index 000000000..fa25850b1 --- /dev/null +++ b/assets/public_kronos_Old Things_2.0-format-changes.md.01e6cf21.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"2.0 format changes","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/Old Things/2.0-format-changes.md","filePath":"public/kronos/Old Things/2.0-format-changes.md","lastUpdated":1664930814000}'),n={name:"public/kronos/Old Things/2.0-format-changes.md"},i=o('

2.0 format changes

  • Temp format is changed from temp.something[layer] to temp[layer].something, for consistency
  • Challenges are now saved as an object with the amount of completions in each spot. (This will break saves.)
  • effectDisplay in Challenges and Upgrades no longer takes an argument, and neither does effect for Buyables
  • Buyable cost can take an argument for amount of buyables, but it needs to function if no argument is supplied (it should do the cost for the next purchase).
  • Generation of Points now happens in the main game loop (not in a layer update function), enabled by canGenPoints in game.js.
  • Changed fullLayerReset to layerDataReset, which takes an array of names of values to keep

In addition, many names were changed, mostly expanding abbreviations:

All instances of:

  • chall -> challenge
  • unl -> unlocked
  • upg -> upgrade (besides CSS)
  • amt -> amount
  • desc -> description
  • resCeil -> roundUpCost
  • order -> unlockOrder
  • incr_order -> increaseUnlockOrder

Challenges:

  • desc -> challengeDescription
  • reward -> rewardDescription
  • effect -> rewardEffect
  • effectDisplay -> rewardDisplay
  • active -> challengeActive
',7),l=[i];function s(r,c,d,h,g,p){return a(),t("div",null,l)}const u=e(n,[["render",s]]);export{m as __pageData,u as default}; diff --git a/assets/public_kronos_Old Things_2.0-format-changes.md.01e6cf21.lean.js b/assets/public_kronos_Old Things_2.0-format-changes.md.01e6cf21.lean.js new file mode 100644 index 000000000..40c6b8769 --- /dev/null +++ b/assets/public_kronos_Old Things_2.0-format-changes.md.01e6cf21.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"2.0 format changes","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/Old Things/2.0-format-changes.md","filePath":"public/kronos/Old Things/2.0-format-changes.md","lastUpdated":1664930814000}'),n={name:"public/kronos/Old Things/2.0-format-changes.md"},i=o("",7),l=[i];function s(r,c,d,h,g,p){return a(),t("div",null,l)}const u=e(n,[["render",s]]);export{m as __pageData,u as default}; diff --git a/assets/public_kronos_README.md.1d24f81b.js b/assets/public_kronos_README.md.1d24f81b.js new file mode 100644 index 000000000..3b3c712e8 --- /dev/null +++ b/assets/public_kronos_README.md.1d24f81b.js @@ -0,0 +1 @@ +import{_ as e,o,c as t,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Kronos","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/README.md","filePath":"public/kronos/README.md","lastUpdated":1664930814000}'),r={name:"public/kronos/README.md"},s=a('

Kronos

Play here.

Updating the website:

  • git submodule update --remote
  • git add -A
  • git commit -m "Updated kronos"
  • git push
',4),i=[s];function n(c,d,l,_,p,u){return o(),t("div",null,i)}const f=e(r,[["render",n]]);export{m as __pageData,f as default}; diff --git a/assets/public_kronos_README.md.1d24f81b.lean.js b/assets/public_kronos_README.md.1d24f81b.lean.js new file mode 100644 index 000000000..3ce04b40b --- /dev/null +++ b/assets/public_kronos_README.md.1d24f81b.lean.js @@ -0,0 +1 @@ +import{_ as e,o,c as t,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Kronos","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/README.md","filePath":"public/kronos/README.md","lastUpdated":1664930814000}'),r={name:"public/kronos/README.md"},s=a("",4),i=[s];function n(c,d,l,_,p,u){return o(),t("div",null,i)}const f=e(r,[["render",n]]);export{m as __pageData,f as default}; diff --git a/assets/public_kronos_changelog.md.214bb4a9.js b/assets/public_kronos_changelog.md.214bb4a9.js new file mode 100644 index 000000000..f29d3aeee --- /dev/null +++ b/assets/public_kronos_changelog.md.214bb4a9.js @@ -0,0 +1 @@ +import{_ as e,o as i,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The Modding Tree changelog:","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/changelog.md","filePath":"public/kronos/changelog.md","lastUpdated":1664930814000}'),t={name:"public/kronos/changelog.md"},o=l('

The Modding Tree changelog:

v2.5.9.2 - 5/19/21

  • Fixed many issues with things not updating.

v2.5.9.1 - 5/18/21

  • Made text inputs never give NaNs.

v2.5.9 - 5/18/21

  • Fixed issue when using text inputs for Numbers.
  • Added particle color feature.
  • Particle speed and dir are updated as it moves.
  • Added setSpeed and setDir for particles.
  • Added more trig functions.

v2.5.8 - 5/17/21

  • Added makeShinies, which creates a stationary particle in a random spot.
  • Bars will visually update more quickly.
  • Fixed a major particle-related issue.
  • Fixed autoUpgrade.
  • Fixed a minor visual issue with tree nodes.

v2.5.7 - 5/15/21

  • Added a particle system! Not only can it be used for visual effects, but particles can interact with the mouse. They could be used to create golden cookies or collectables, for example.
  • Added marked feature to buyables, clickables, and challenges. By default, stars multi-completion challenges when maxed.
  • Added 'deactivated' feature to layers, which disables many features.
  • Improved number formatting slightly.

v2.5.6 - 5/14/21

  • You can now use non-numeric ids for upgrades, buyables, etc.
  • Fixed an exploit that let you buy an extra buyable.
  • Moved basic getter/setter functions to easyAccess.js.

v2.5.5.2 - 5/12/21

  • Fixed a major issue with buyables.
  • Fixed a variety of tabFormat-related issues.
  • Fixed commas appearing in decimal places (thanks to pg132!)

v2.5.5.1 - 5/12/21

  • Fixed clickables.

v2.5.5 - 5/12/21

  • Added grids! They are a grid of buttons which behave the same, but have their own data. Good for inventory grids, map tiles, and more!
  • Added "marked" feature to add a mark to a node. Can be an image instead of a star. (Originally by Jacorb)
  • Added "layer-proxy" component that lets you use components from another layer.
  • Added the ability to display non-whole numbers in main-display.

v2.5.4 - 5/10/21

  • Added a setting to always use single-tab mode.
  • Added directMult, which multiplies prestige gain after exponents and softcaps. It actually multiplies gain for static layers.
  • Added onEnter and onExit for challenges.
  • Improved displaying numbers between 0.0001 and 0.1.
  • Added documentation on how gainMult/Exp work for static layers.
  • Fixed a visual issue on mobile, thanks to thepaperpilot.
  • Improved documentation in general.

v2.5.3 - 5/8/21

  • Improved performance of tab formats and bars.
  • Respec confirmation settings are now kept on resets.
  • Improved compatibility with older browsers.
  • Fixed missing pixel on vertical bars.

v2.5.2.1 - 5/7/21

  • Fixed microtabs making layers highlight incorrectly.

v2.5.2 - 5/7/21

  • Added glowColor for subtabs.
  • Improved the display for extremely small numbers.
  • Fixed issues in the buyable docs.

v2.5.1 - 5/7/21

  • Fixed dynamic things in tabFormat not updating.

v2.5: Dreams Really Do Come True - 5/7/21

  • Optimizations, hopefully a significant amount.
  • Added OOM/s point gen display at high values (thanks to Ducdat!)
  • Only one tab will display if the window is not wide enough (also thanks to Ducdat!)
  • Holding down a buyable's button now buys it continuously.
  • New milestone setting will also show the most recently unlocked milestone. (Also renamed all settings to be clearer)
  • Added an onHold feature for clickables.
  • Layer nodes will be highlighted even if the player is on the same tab.
  • Added customizable node glowColor.
  • Added buyable purchaseLimit.
  • Amount is automatically supplied to buyable cost and effect functions.
  • Locked (not yet visible) milestones no longer take up space. Also fixed hidden milestones taking a tiny bit of space.
  • Re-centered respec buttons.
  • Force-displayed tooltips are not hidden by resets.
  • Added formatting support for very small numbers. Disabled in most places by default because rounding errors might cause issues. Access it with formatSmall, or enable it globally by adding "allowSmall: true" to modInfo.

v2.4.1 - 4/29/21

  • A number of minor fixes, many thanks to thepaperpilot.
  • The respec confirmation checkbox is now part of the respec-button component. (This also fixes the checkbox appearing when there is no respec button)
  • Added a few undocumented changes to the 2.4 changelog (the two at the bottom)

v2.4: Rationalized Edition - 4/29/21

  • Completely reworked tooltips. Shift-click a node to force its tooltip to stay displayed. (And hopefully finally fixed flickering!)

  • Added text-input and slider components.

  • Added the ability to toggle respec confirmations.

  • Added custom respec confirmation messages.

  • The red layer highlight will not appear before a layer is unlocked.

  • Added unlocking hotkeys.

  • You no longer need to supply 'rows' and 'cols' for any Big Features.

  • Node symbols can use HTML.

  • Added documentation for the respec button.

  • Added prestigeNotify to subtabs, and prestigeNotify in subtabs also highlights the layer node.

  • The version number no longer contains special characters or irrational numbers.

  • Added ctrlDown and shiftDown variables.

  • Tooltips now use HTML (this means you need to replace any newlines with
    )

v2.π.1 - 4/7/21

  • Fixed formatting for some larger numbers.
  • Upgrades will expand if there is too much text to display.
  • Fixed styling challenges.
  • No longer attempts to display a base currency when there is none.

v2.π: Incrementally Updated - 2/5/21

  • Performance improvements.
  • Fixed tooltips overlapping with the top display.
  • Clicking a popup dismisses it immediately.
  • Added support for bulk challenge completions.
  • "Best" is updated automatically.
  • Fixed keeping Decimal values on reset.
  • Code reorganization and style improvements by fudo.

v2.3.5 - 12/21/20

  • Added resetTime, which tracks the time since a layer prestiged or was reset.
  • A layer node will be highlighted red if one of its subtabs is highlighted red.
  • Fixed issues with keeping challenges, buyables, and clickables on reset.
  • Improved the unlocking of custom layers.
  • Other minor fixes.

v2.3.4 - 12/16/20

  • Added a node image feature.
  • Resource display now always shows the amount of the currency the layer's gain is based on.
  • Added spacing between tree nodes.
  • Another attempt to fix tooltip flickering.

v2.3.3 - 12/13/20

  • Fixed the first node in a row always taking up space.
  • layerShown is now optional.
  • All prestige types can now use features for custom prestige types.

v2.3.2 - 12/13/20

  • Fixed achievement/milestone popups.

v2.3.1 - 12/12/20

  • Another attempt to fix flickering tooltips.
  • The "this" keyword should work everywhere except tabFormat arrays (although I may have missed some things).
  • Fixed tree branches not updating when scrolling on the right-side tab.
  • Fixed a spacing issue when a node's symbol is ""
  • Removed some old, unneeded files.

v2.3: Cooler and Newer Edition - 12/10/20

  • Added achievement/milestone popups (thank you to Jacorb for this contribution!)
  • The changelog tab is back, and can be set in mod.js.
  • Layer nodes and respec buttons will not be clicked by pressing "enter".
  • Possible fix for flickering tooltips and strange transitions.
  • The victory screen text is configurable.
  • Added image and textStyle features to achievements.
  • Added an argument to use specific rows in an "upgrades" component.
  • Fixed the comma appearing in the main display when there was no effectDescription
  • Added the ability to easily make a tab that is a collection of layers in subtabs.
  • Improved spacing for embedding layers with subtabs into subtabs.

v2.2.8 - 12/03/20

  • Double-clicking a layer node brings you to the main subtab for that layer.
  • Attempted to fix challenges visually updating a different way.
  • Added a softcap function for use in formulas.
  • Added displayRow feature, which lets layers be shown somewhere separate from where they are in the reset order (e.g. side layers)
  • Fixed autoupgrade issue.

v2.2.7 - 11/30/20

  • Added autoUpgrade feature.
  • resource-display now shows resource gain per second if passiveGain is active.
  • Fixed formatting issues on some large numbers.
  • Better support for using classed objects in player and in layers/tmp.
  • Made hard resetting more effective.
  • Removed Herobrine from getStartClickables.

v2.2.6 - 11/30/20

  • Added goalDescription for challenges and made the new "canComplete" system the standard.
  • Another attempt to fix challenges not visually updating.
  • Fixed side layers not appearing.
  • Fixed getStartClickables again.

v2.2.5 - 11/29/20

  • Added features for overriding the displays and costs/goals of upgrades and challenges to make them fully custom.
  • best, total, and unlocked are always automatically added to layerData (but best and total will only display if you add them yourself).
  • Fixed getStartClickables.

v2.2.4 - 11/28/20

  • Added softcap and softcapPower features (for Normal layers)
  • Offline time limit and default max tick length were fixed (previously the limits were 1000x too large)
  • Added fixOldSaves.
  • You can use HTML in main-display.
  • Fixed a number of minor oddities.

v2.2.3 - 11/28/20

  • Layers will be highlighted if you can finish a challenge.
  • The "can complete challenge" color now overrides the "already completed" color.
  • Button nodes now work as side "layers".
  • Setting a tooltip to "" hides it entirely.

v2.2.2 - 11/22/20

  • Fixed right half of the screen being unclickable in some circumstances.
  • Fixed tree branches being offset.
  • Fix to lastSafeTab.

v2.2.1 - 11/7/20

  • Added a small highlight to layers you can meaningfully prestige on.
  • Added passiveGeneration and autoPrestige features to standardize prestige automation. (The old ways still work, but the new ones work better with other things)
  • Improved milestones visually a bit.
  • "best" and "total" are now only displayed if present in startData.
  • Fixed issues with things not updating visually. (Thank you to to Jacorb!)
  • Side layers and button nodes can now be highlighted.
  • Updated docs on the new tree-related features.

v2.2: Uprooted - 11/7/20

  • You can now embed a layer inside of a subtab or microtab!
  • Added support for hiding or reformatting the tree tab
  • Added non-layer button nodes
  • Added shouldNotify to subtab/microtab buttons. (You can make them highlighted)
  • Added commas to large exponents.
  • Upgrades now only show "currently" if they have an effectDisplay (so not for constant effects).
  • Achievements are part of the default tab format.
  • NaN is now handled more intelligently.
  • Renamed files, and moved less relevant ones to another folder.
  • The "hide completed challenges" setting now only hides challenges at max completions.
  • Thank you to thepaperpilot for fixing errors in docs and improving the infobox appearance!
  • Many other minor fixes.

v2.1.4 - 10/25/20

  • Added an infobox component. Thank you to thepaperpilot for this contribution!
  • Layer type is now optional, and defaults to "none".
  • Improved the look of bars and tab buttons.
  • Improved spacing between layer nodes (also thanks to thepaperpilot!)
  • Fixed the "blank" component breaking if only specifying the height.
  • Fixed some numbers not displaying with enough digits.
  • Made a few more things able to be functions.
  • A few other minor fixes.

v2.1.3.1 - 10/21/20

  • Fixed the update function.

v2.1.3 - 10/21/20

  • gainMult and gainExp are now optional.
  • Layer unlocking is now kept on reset.
  • Game should start up faster.
  • Layer updates now have a determined order and starts with earlier-rowed layers.
  • Automation now has a determined order and starts with later-rowed layers.
  • Fixed issues with resetting clickables and challenges.
  • Commas should no longer appear in the decimal places of a number.
  • Fixed potential issue in displaying the tree.

v2.1.2 - 10/19/20

  • Added buyUpgrade function (buyUpg still works though)
  • Added author name to modInfo.
  • Fix to crash caused when the name of a subtab or microtab is changed.
  • Fixes to outdated information in docs.
  • Improvements to Discord links.
  • Thank you to thepaperpilot for contributing to this update!

v2.1.1 - 10/17/20

  • Added resource-display component, which displays the base currency for the prestige layer, as well as the best and/or total of this layer's prestige currency.
  • Fixed the value for the base currency not updating in resource-display.

v2.1: We should have thought of this sooner! - 10/17/20

  • Moved most of the code users will want to edit to mod.js, added documentation for it.
    • Specifically, modInfo, VERSION, canGenPoints, getPointGen, and maxTickLength
  • Added getStartPoints()
  • Added the ability to store non-layer-related data
  • Added the ability to display more things at the top of the tree tab below points.
  • Made the endgame condition customizable
  • Added "sell one" and "sell all" buttons for buyables.
  • Moved the old "game" to demo.js, and replaced it with a minimal game that won't cause issues when edited.
  • Fixed issues with version number
  • Fixed number formatting issue making things like "10e9" appear.

v2.0.5 - 10/16/20

  • Made more features (including prestige parameters) able to be dynamic.
  • Layer nodes can be hidden but still take up space with "ghost" visibility
  • Added clickableEffect for real.
  • Fixed some visual issues with bars.
  • A few other minor tweaks and improvements.

v2.0.4 - 10/16/20

  • Fixed HTML on buttons interfering with clicking on them.

v2.0.3 - 10/16/20

  • Fixed hotkeys not displaying in info.
  • Fixed the game supressing all external hotkeys.
  • You can use more things as currencies for upgrade costs and challenge goals using currencyLocation.
  • Added maxTickLength, which can be used to prevent offline time or tab-switching from breaking time-limit based mechanics.
  • Made buyable respec buttons and clickable "master" buttons their own components, and gave them a hide/show feature.
  • Added a general "tooltip" feature for achievements.

v2.0.2 - 10/15/20

  • Branches are now dynamic (they can be functions).
  • Fixed a crash related to offline time.
  • Fixed links being too wide.

v2.0.1 - 10/15/20

  • Fixed side layers appearing multiple times.

v2.0: The Pinnacle of Achievement Mountain - 10/15/20

  • Added progress bars, which are highly customizable and can be horizontal or vertical!
  • Added "side layers", displayed smaller and off to the side, and don't get reset by default. They can be used for global achievements and statistics. Speaking of which...
  • Added achievements!
  • Added clickables, a more generalized variant of buyables.
  • Almost every value in layer data can be either a function or a constant value!
  • Added support for multiple completions of challenges.
  • Added "none" prestige type, which removes the need for any other prestige-related features.
  • The points display and other gui elements stay at the top of the screen when the tree scrolls.
  • Added getter/setter functions for the amounts and effects of most Big Features
  • Moved modInfo to game.js, added a spot in modInfo for a Discord link, changelog link. Also added a separate mod version from the TMT version in VERSION.
  • Tree structure is based on layer data, no index.html editing is needed.
  • Tmp does not need to be manually updated.
  • You don't have to have the same amount of upgrades in every row (and challs and buyables)
  • "unlocked" is optional for all Big Components (defaults to true).
  • All displays will update correctly.
  • Changelog is no longer in index.html at all.
  • Generation of Points now happens in the main game loop
  • Changed the reset functions to make keeping things easier
  • Renamed many things to increase readability (see the list in the link below)
  • Improved documentation based on feedback

v1.3.5:

  • Completely automated convertToDecimal, now you never have to worry about it again.
  • Branches can be defined without a color id. But they can also use hex values for color ids!
  • Created a tutorial for getting started with TMT and Github.
  • Page title is now automatically taken from mod name.

v1.3.4 - 10/8/20

  • Added "midsection" feature to add things to a tab's layout while still keeping the standard layout.
  • Fix for being able to buy more buyables than you should.

v1.3.3 - 10/7/20

  • Fix for the "order of operations" issue in temp.

v1.3.1 - 10/7/20

  • Added custom CSS and tooltips for Layer Nodes.
  • Added custom CSS for upgrades, buyables, milestones, and challenges, both individually and layer-wide.
  • You can now use HTML in most display text!
  • You can now make milestones unlockable and not display immediately.
  • Fixed importing saves, and issue with upgrades not appearing, and probably more.
  • Optional "name" layer feature, used in confirmation messages.

v1.3: Tabception... ception! - 10/7/20

  • Added subtabs! And also a Micro-tab component to let you make smaller subtab-esque areas anywhere.
  • Added a "custom" prestige formula type, and a number of features to support it.
  • Added points/sec display (can be disabled).
  • Added h-line, v-line and image-display components, plus components for individual upgrades, challenges, and milestones.
  • Added upgEffect, buyableEffect, and challEffect functions.
  • Added "hide completed challenges" setting.
  • Moved old changelogs to a separate place.
  • Fixed hasMilestone and incr_order.
  • Static layers now show the currency amount needed for the next one if you can buy max.

v1.2.4 - 10/4/20

  • Layers are now highlighted if you can buy an upgrade, and a new feature, shouldNotify, lets you make it highlight other ways.
  • Fixed bugs with hasUpg, hasChall, hasMilestone, and inChallenge.
  • Changed the sample code to use the above functions for convenience.

v1.2.3 - 10/3/20

  • Added a row component, which displays a list of objects in a row.
  • Added a column component, which displays a list of objects in a column (useful within a row).
  • Changed blanks to have a customizable width and height.

v1.2: This Changes Everything! - 10/3/20

  • Many layer features can now be static values or functions. (This made some formats change, which will break old things)
  • You can now use the "this" keyword, to make code easier to transfer when making new layers.
  • Also added "this.layer", which is the current layer's name, and works on existing subfeatures (e.g. individual upgrades) as well! Subfeatures also have "this.id".
  • Fixed a big save issue. If you use a unique mod id, your save will never conflict with other mods.
  • Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)
  • Added a few minor features, and updated the docs with new information.

v1.1.1 - 9/30/20

  • You can define hotkeys directly from layer config.

v1.1: Enhanced Edition - 9/30/20

  • Added "Buyables", which can function like Space Buildings or Enhancers.
  • Custom CSS can now be used on any component! Make the third argument an object with CSS parameters.
  • Lots of minor good things.

v1.0 - 9/27/20

  • First release.
',115),n=[o];function r(s,d,h,u,c,m){return i(),a("div",null,n)}const f=e(t,[["render",r]]);export{b as __pageData,f as default}; diff --git a/assets/public_kronos_changelog.md.214bb4a9.lean.js b/assets/public_kronos_changelog.md.214bb4a9.lean.js new file mode 100644 index 000000000..d96d683d2 --- /dev/null +++ b/assets/public_kronos_changelog.md.214bb4a9.lean.js @@ -0,0 +1 @@ +import{_ as e,o as i,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The Modding Tree changelog:","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/changelog.md","filePath":"public/kronos/changelog.md","lastUpdated":1664930814000}'),t={name:"public/kronos/changelog.md"},o=l("",115),n=[o];function r(s,d,h,u,c,m){return i(),a("div",null,n)}const f=e(t,[["render",r]]);export{b as __pageData,f as default}; diff --git a/assets/public_kronos_docs_!general-info.md.a2b0cacb.js b/assets/public_kronos_docs_!general-info.md.a2b0cacb.js new file mode 100644 index 000000000..dea067ea8 --- /dev/null +++ b/assets/public_kronos_docs_!general-info.md.a2b0cacb.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/!general-info.md","filePath":"public/kronos/docs/!general-info.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/!general-info.md"},r=o('

The-Modding-Tree

Making a game in The Modding Tree mostly involves defining parameters or functions on objects. If you aren't following the getting started guide, you should start by setting up your basic mod info in mod.js. It's important to set a mod id to ensure saving works properly.

Beyond that, the main way to add content is through creating layers, often in layers.js. You can add new layers by calling addLayer(layername, layerdata). There is an example of a basic layer in layers.js showing the recommended method. It is just an example and can be freely deleted. You can also use it as a reference or a base for your own layers.

Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to, for example to add new Vue components in components.js.

The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects, and must be treated differently. For example, you have to use new Decimal(x) to create a Decimal value instead of a plain number, and perform operations on them by calling functions. e.g, instead of x = x + y, use x = x.add(y). Keep in mind this also applies to comparison operators, which should be replaced with calling the .gt, .gte, .lt, .lte, .eq, and .neq functions. See the break_eternity.js docs for more details on working with Decimal values.

Almost all values can be either a constant value, or a dynamic value. Dynamic values are defined by putting a function that returns what the value should be at any given time.

All display text can use basic HTML elements (But you can't use most Vue features there).

While reading this documentation, the following key will be used when describing features:

  • No label: This is required and the game may crash if it isn't included.
  • sometimes required: This is may be required, depending on other things in the layer.
  • optional: You can leave this out if you don't intend to use that feature for the layer.
  • assigned automagically: This value will be set automatically and override any value you set.
  • deprecated: This feature is not recommended to be used, because newer features are able to achieve the same thing in a better, easier way.

Table of Contents

General

  • Getting Started: Getting your own copy of the code set up with Github Desktop.
  • Main mod info: How to set up general things for your mod in mod.js.
  • Basic layer breakdown: Breaking down the components of a layer with minimal features.
  • Layer features: Explanations of all of the different properties that you can give a layer.
  • Custom Tab Layouts: An optional way to give your tabs a different layout. You can even create entirely new components to use.
  • Custom game layouts: You can get rid of the tree tab, add buttons and other things to the tree, or even customize the tab's layout like a layer tab.
  • Updating TMT: Using Github Desktop to update your mod's version of TMT.

Common components

  • Upgrades: How to create upgrades for a layer.
  • Milestones: How to create milestones for a layer.
  • Buyables: Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings, for example.
  • Clickables: A more generalized variant of buyables, for any kind of thing that is sometimes clickable. Between these and Buyables, you can do just about anything.
  • Achievements: How to create achievements for a layer (or for the whole game).

Other components and features

  • Challenges: How to create challenges for a layer.
  • Bars: Display some information as a progress bar, gauge, or similar. They are highly customizable, and can be horizontal and vertical as well.
  • Subtabs and Microtabs: Create subtabs for your tabs, as well as "microtab" components that you can put inside the tabs. You can even use them to embed a layer inside another layer!
  • [Grids][grids.md]: Create a group buttons that behave the same, but have their own data. Good for map tiles, an inventory grid, and more!
  • Infoboxes: Boxes containing text that can be shown or hidden.
  • Trees: Make your own trees. You can make non-layer button nodes too!
  • Particle system: Can be used to create particles for visual effects, but also interactable things like golden cookies or collectables.
',16),i=[r];function s(l,d,c,h,u,m){return a(),t("div",null,i)}const y=e(n,[["render",s]]);export{b as __pageData,y as default}; diff --git a/assets/public_kronos_docs_!general-info.md.a2b0cacb.lean.js b/assets/public_kronos_docs_!general-info.md.a2b0cacb.lean.js new file mode 100644 index 000000000..2727fa453 --- /dev/null +++ b/assets/public_kronos_docs_!general-info.md.a2b0cacb.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/!general-info.md","filePath":"public/kronos/docs/!general-info.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/!general-info.md"},r=o("",16),i=[r];function s(l,d,c,h,u,m){return a(),t("div",null,i)}const y=e(n,[["render",s]]);export{b as __pageData,y as default}; diff --git a/assets/public_kronos_docs_achievements.md.87e51d9c.js b/assets/public_kronos_docs_achievements.md.87e51d9c.js new file mode 100644 index 000000000..8819423e9 --- /dev/null +++ b/assets/public_kronos_docs_achievements.md.87e51d9c.js @@ -0,0 +1,13 @@ +import{_ as e,o as t,c as a,Q as s}from"./chunks/framework.1169fbc9.js";const v=JSON.parse('{"title":"Achievements","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/achievements.md","filePath":"public/kronos/docs/achievements.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/achievements.md"},o=s(`

Achievements

Achievements are awarded to the player when they meet a certain goal, and optionally give some benefit.

You can make global achievements by putting them in a side layer by making its row equal to "side" instead of a number.

Useful functions for dealing with achievements and implementing their effects:

  • hasAchievement(layer, id): determine if the player has the Achievement.
  • achievementEffect(layer, id): Returns the current effects of the achievement, if any.

Achievements should be formatted like this:

js
achievements: {
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}
achievements: {
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}

Usually, each achievement should have an id where the first digit is the row and the second digit is the column.

Individual achievement can have these features:

  • name: optional. displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the achievement should be awarded.

  • tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML. Setting this to "" disables the tooltip.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.

  • unlocked(): optional. A function returning a bool to determine if the achievement is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the achievement is completed.

  • image: optional, puts the image from the given URL (relative or absolute) in the achievement

  • style: optional. Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • textStyle: optional. Applies CSS to the text, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.

  • goalTooltip: optional, deprecated. Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.

  • doneTooltip: optional, deprecated. Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.

Disable achievement popups by adding achievementsPopups: false to the layer.

`,11),i=[o];function l(p,r,c,h,d,u){return t(),a("div",null,i)}const g=e(n,[["render",l]]);export{v as __pageData,g as default}; diff --git a/assets/public_kronos_docs_achievements.md.87e51d9c.lean.js b/assets/public_kronos_docs_achievements.md.87e51d9c.lean.js new file mode 100644 index 000000000..82bcbfa93 --- /dev/null +++ b/assets/public_kronos_docs_achievements.md.87e51d9c.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as s}from"./chunks/framework.1169fbc9.js";const v=JSON.parse('{"title":"Achievements","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/achievements.md","filePath":"public/kronos/docs/achievements.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/achievements.md"},o=s("",11),i=[o];function l(p,r,c,h,d,u){return t(),a("div",null,i)}const g=e(n,[["render",l]]);export{v as __pageData,g as default}; diff --git a/assets/public_kronos_docs_bars.md.d76e8fe1.js b/assets/public_kronos_docs_bars.md.d76e8fe1.js new file mode 100644 index 000000000..ba597739c --- /dev/null +++ b/assets/public_kronos_docs_bars.md.d76e8fe1.js @@ -0,0 +1,19 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Bars","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/bars.md","filePath":"public/kronos/docs/bars.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/bars.md"},l=e(`

Bars

Bars let you display information in a more direct way. It can be a progress bar, health bar, capacity gauge, or anything else.

Bars are defined like other Big Features:

js
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}

Features:

  • direction: UP, DOWN, LEFT, or RIGHT (not strings). Determines the direction that the bar is filled as it progresses. RIGHT means from left to right.

  • width, height: The size in pixels of the bar, but as numbers (no "px" at the end).

  • progress(): A function that returns the portion of the bar that is filled, from "empty" at 0 to "full" at 1, updating automatically. (Nothing bad happens if the value goes out of these bounds, and it can be a number or Decimal)

  • display(): optional. A function that returns text to be displayed on top of the bar, can use HTML.

  • unlocked(): optional. A function returning a bool to determine if the bar is visible or not. Default is unlocked.

  • baseStyle, fillStyle, borderStyle, textStyle: Optional, Apply CSS to the unfilled portion, filled portion, border, and display text on the bar, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

`,6),t=[l];function p(r,c,i,y,E,d){return a(),n("div",null,t)}const b=s(o,[["render",p]]);export{u as __pageData,b as default}; diff --git a/assets/public_kronos_docs_bars.md.d76e8fe1.lean.js b/assets/public_kronos_docs_bars.md.d76e8fe1.lean.js new file mode 100644 index 000000000..1adf193b2 --- /dev/null +++ b/assets/public_kronos_docs_bars.md.d76e8fe1.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Bars","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/bars.md","filePath":"public/kronos/docs/bars.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/bars.md"},l=e("",6),t=[l];function p(r,c,i,y,E,d){return a(),n("div",null,t)}const b=s(o,[["render",p]]);export{u as __pageData,b as default}; diff --git a/assets/public_kronos_docs_basic-layer-breakdown.md.21ce399d.js b/assets/public_kronos_docs_basic-layer-breakdown.md.21ce399d.js new file mode 100644 index 000000000..a407c811a --- /dev/null +++ b/assets/public_kronos_docs_basic-layer-breakdown.md.21ce399d.js @@ -0,0 +1,63 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Basic layer breakdown","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/basic-layer-breakdown.md","filePath":"public/kronos/docs/basic-layer-breakdown.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/basic-layer-breakdown.md"},e=l(`

Basic layer breakdown

This is a very minimal layer with minimal features. Most things will require additional features.

js
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true },          // Returns a bool for if this layer's node should be visible in the tree.
+
+    upgrades: {
+        // Look in the upgrades docs to see what goes here!
+    },
+})
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true },          // Returns a bool for if this layer's node should be visible in the tree.
+
+    upgrades: {
+        // Look in the upgrades docs to see what goes here!
+    },
+})
`,3),p=[e];function t(r,c,y,E,i,u){return n(),a("div",null,p)}const F=s(o,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/public_kronos_docs_basic-layer-breakdown.md.21ce399d.lean.js b/assets/public_kronos_docs_basic-layer-breakdown.md.21ce399d.lean.js new file mode 100644 index 000000000..02c1fc572 --- /dev/null +++ b/assets/public_kronos_docs_basic-layer-breakdown.md.21ce399d.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Basic layer breakdown","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/basic-layer-breakdown.md","filePath":"public/kronos/docs/basic-layer-breakdown.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/basic-layer-breakdown.md"},e=l("",3),p=[e];function t(r,c,y,E,i,u){return n(),a("div",null,p)}const F=s(o,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/public_kronos_docs_buyables.md.1fc0cb4b.js b/assets/public_kronos_docs_buyables.md.1fc0cb4b.js new file mode 100644 index 000000000..e46ab92fa --- /dev/null +++ b/assets/public_kronos_docs_buyables.md.1fc0cb4b.js @@ -0,0 +1,25 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/buyables.md","filePath":"public/kronos/docs/buyables.md","lastUpdated":1664930814000}'),e={name:"public/kronos/docs/buyables.md"},o=l(`

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. They come with optional buttons that can be used for respeccing or selling buyables, among other things.

The amount of a buyable owned is a Decimal.

Useful functions for dealing with buyables and implementing their effects:

  • getBuyableAmount(layer, id): get the amount of the buyable the player has
  • setBuyableAmount(layer, id, amount): set the amount of the buyable the player has
  • buyableEffect(layer, id): Returns the current effects of the buyable, if any.

Buyables should be formatted like this:

js
buyables: {
+    11: {
+        cost(x) { return new Decimal(1).mul(x) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}
buyables: {
+    11: {
+        cost(x) { return new Decimal(1).mul(x) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th purchase. (x is a Decimal). Can return an object if there are multiple currencies.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this buyable. Can have an optional argument "x" to calculate the effect of having x of the buyable.. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the buyable is visible or not. Default is unlocked.

  • canAfford(): A function returning a bool to determine if you can buy one of the buyables.

  • buy(): A function that implements buying one of the buyable, including spending the currency.

  • buyMax(): optional. A function that implements buying as many of the buyable as possible.

  • style: optional. Applies CSS to this buyable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • purchaseLimit: optional. The limit on how many of the buyable can be bought. The default is no limit.

  • marked: optional Adds a mark to the corner of the buyable. If it's "true" it will be a star, but it can also be an image URL.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the buyable was stored under, for convenient access. The buyable in the example's id is 11.

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

  • sellOne/sellAll(): optional. Called when the button is pressed. The standard use would be to decrease/reset the amount of the buyable, and possibly return some currency to the player.

  • canSellOne/canSellAll(): optional. booleans determining whether or not to show the buttons. If "canSellOne/All" is absent but "sellOne/All" is present, the appropriate button will always show.

To add a respec button, or something similar, add the respecBuyables function to the main buyables object (not individual buyables). You can use these features along with it:

  • respec(): optional. This is called when the button is pressed (after a toggleable confirmation message).

  • respecText: optional. Text to display on the respec Button.

  • showRespec(): optional. A function determining whether or not to show the button, if respecBuyables is defined. Defaults to true if absent.

  • respecMessage: optional. A custom confirmation message on respec, in place of the default one.

`,14),t=[o];function p(r,c,i,y,u,E){return a(),n("div",null,t)}const d=s(e,[["render",p]]);export{b as __pageData,d as default}; diff --git a/assets/public_kronos_docs_buyables.md.1fc0cb4b.lean.js b/assets/public_kronos_docs_buyables.md.1fc0cb4b.lean.js new file mode 100644 index 000000000..d353605ef --- /dev/null +++ b/assets/public_kronos_docs_buyables.md.1fc0cb4b.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/buyables.md","filePath":"public/kronos/docs/buyables.md","lastUpdated":1664930814000}'),e={name:"public/kronos/docs/buyables.md"},o=l("",14),t=[o];function p(r,c,i,y,u,E){return a(),n("div",null,t)}const d=s(e,[["render",p]]);export{b as __pageData,d as default}; diff --git a/assets/public_kronos_docs_challenges.md.8e58ea7f.js b/assets/public_kronos_docs_challenges.md.8e58ea7f.js new file mode 100644 index 000000000..599d61e80 --- /dev/null +++ b/assets/public_kronos_docs_challenges.md.8e58ea7f.js @@ -0,0 +1,17 @@ +import{_ as e,o as n,c as s,Q as a}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Challenges","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/challenges.md","filePath":"public/kronos/docs/challenges.md","lastUpdated":1664930814000}'),l={name:"public/kronos/docs/challenges.md"},t=a(`

Challenges

Challenges can have fully customizable win conditions. Useful functions for dealing with Challenges and implementing their effects:

  • inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one).
  • hasChallenge(layer, id): determine if the player has completed the challenge.
  • challengeCompletions(layer, id): determine how many times the player completed the challenge.
  • maxedChallenge(layer, id): determines if the player has reached the maximum completions.
  • challengeEffect(layer, id): Returns the current effects of the challenge, if any.

Challenges are stored in the following format:

js
challenges: {
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        canComplete: function() {return player.points.gte(100)},
+        etc
+    },
+    etc
+}
challenges: {
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        canComplete: function() {return player.points.gte(100)},
+        etc
+    },
+    etc
+}

Usually, each challenge should have an id where the first digit is the row and the second digit is the column.

Individual Challenges can have these features:

  • name: Name of the challenge, can be a string or a function. Can use basic HTML.

  • challengeDescription: A description of what makes the challenge a challenge. You will need to implement these elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • goalDescription: A description of the win condition for the challenge. It can also be a function that returns updating text. Can use basic HTML. (Optional if using the old goal system)

  • canComplete(): A function that returns true if you meet the win condition for the challenge. Returning a number will allow bulk completing the challenge. (Optional if using the old goal system)

  • rewardDescription: A description of the reward's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • rewardEffect(): optional. A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.

  • rewardDisplay(): optional. A function that returns a display of the current effects of the reward with formatting. Default behavior is to just display the a number appropriately formatted.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the challenge. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the challenge is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the challenge is completed when previously incomplete.

  • onEnter() - optional. this function will be called when entering the challenge

  • onExit() - optional. this function will be called when exiting the challenge in any way

  • countsAs: optional. If a challenge combines the effects of other challenges in this layer, you can use this. An array of challenge ids. The player is effectively in all of those challenges when in the current one.

  • completionLimit: optional. the amount of times you can complete this challenge. Default is 1 completion.

  • style: optional. Applies CSS to this challenge, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • marked: optional Adds a mark to the corner of the challenge. If it's "true" it will be a star, but it can also be an image URL. By default, if the challenge has multiple completions, it will be starred at max completions.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.

The old goal system uses these features:

  • goal: deprecated, A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.

  • currencyDisplayName: deprecated. the name to display for the currency for the goal

  • currencyInternalName: deprecated. the internal name for that currency

  • currencyLayer: deprecated. the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation(): deprecated. if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

`,10),o=[t];function i(r,p,c,h,u,g){return n(),s("div",null,o)}const f=e(l,[["render",i]]);export{y as __pageData,f as default}; diff --git a/assets/public_kronos_docs_challenges.md.8e58ea7f.lean.js b/assets/public_kronos_docs_challenges.md.8e58ea7f.lean.js new file mode 100644 index 000000000..f53a5589c --- /dev/null +++ b/assets/public_kronos_docs_challenges.md.8e58ea7f.lean.js @@ -0,0 +1 @@ +import{_ as e,o as n,c as s,Q as a}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Challenges","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/challenges.md","filePath":"public/kronos/docs/challenges.md","lastUpdated":1664930814000}'),l={name:"public/kronos/docs/challenges.md"},t=a("",10),o=[t];function i(r,p,c,h,u,g){return n(),s("div",null,o)}const f=e(l,[["render",i]]);export{y as __pageData,f as default}; diff --git a/assets/public_kronos_docs_clickables.md.6b6e0c98.js b/assets/public_kronos_docs_clickables.md.6b6e0c98.js new file mode 100644 index 000000000..ee865a48f --- /dev/null +++ b/assets/public_kronos_docs_clickables.md.6b6e0c98.js @@ -0,0 +1,13 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Clickables","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/clickables.md","filePath":"public/kronos/docs/clickables.md","lastUpdated":1664930814000}'),l={name:"public/kronos/docs/clickables.md"},n=t(`

Clickables

Clickables are any kind of thing that you can click for an effect. They're a more generalized version of Buyables.

DO NOT USE THESE TO MAKE THINGS THAT YOU CLICK REPEATEDLY FOR A BONUS BECAUSE THOSE ARE AWFUL.

There are several differences between the two. One is that a buyable's saved data is its amount as a Decimal, while Clickables store a "state" which can be a number or string, but not Decimal, array, or object). Buyables have a number of extra features which you can see on their page. Clickables also have a smaller default size.

Useful functions for dealing with clickables and implementing their effects:

  • getClickableState(layer, id): get the state of the clickable the player has
  • setClickableState(layer, id, state): set the state of the clickable the player has
  • clickableEffect(layer, id): Returns the current effects of the clickable, if any.

Clickables should be formatted like this:

js
clickables: {
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}
clickables: {
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this clickable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the clickable after the title, likely changing based on its state. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the clickable is visible or not. Default is unlocked.

  • canClick(): A function returning a bool to determine if you can click the clickable.

  • onClick(): A function that implements clicking the clickable.

  • onHold(): optional A function that is called 20x/sec when the button is held for at least 0.25 seconds.

  • style: optional. Applies CSS to this clickable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • marked: optional Adds a mark to the corner of the clickable. If it's "true" it will be a star, but it can also be an image URL.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the clickable was stored under, for convenient access. The clickable in the example's id is 11.

You can also use these features on the clickables object to add a button above all the clickables, for implementing a respec button or similar.

  • masterButtonPress(): optional. If present, an additional button will appear above the clickables. Pressing it will call this function.

  • masterButtonText: optional. Text to display on the Master Button.

  • showMasterButton(): optional. A function determining whether or not to show the button, if masterButtonPress is defined. Defaults to true if absent.

`,12),o=[n];function i(c,p,r,u,h,d){return s(),a("div",null,o)}const f=e(l,[["render",i]]);export{y as __pageData,f as default}; diff --git a/assets/public_kronos_docs_clickables.md.6b6e0c98.lean.js b/assets/public_kronos_docs_clickables.md.6b6e0c98.lean.js new file mode 100644 index 000000000..78ad8e239 --- /dev/null +++ b/assets/public_kronos_docs_clickables.md.6b6e0c98.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Clickables","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/clickables.md","filePath":"public/kronos/docs/clickables.md","lastUpdated":1664930814000}'),l={name:"public/kronos/docs/clickables.md"},n=t("",12),o=[n];function i(c,p,r,u,h,d){return s(),a("div",null,o)}const f=e(l,[["render",i]]);export{y as __pageData,f as default}; diff --git a/assets/public_kronos_docs_custom-tab-layouts.md.419753ca.js b/assets/public_kronos_docs_custom-tab-layouts.md.419753ca.js new file mode 100644 index 000000000..dbe9c03d4 --- /dev/null +++ b/assets/public_kronos_docs_custom-tab-layouts.md.419753ca.js @@ -0,0 +1,27 @@ +import{_ as s,o as a,c as o,Q as t}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Custom tab layouts","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/custom-tab-layouts.md","filePath":"public/kronos/docs/custom-tab-layouts.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/custom-tab-layouts.md"},e=t(`

Custom tab layouts

Note: If you are using subtabs, tabFormat is used differently, but the same format is used for defining their layouts. See here for more on subtabs.

Custom tab layouts can be used to do basically anything in a tab window, especially combined with the "style" layer feature. The tabFormat feature is an array of things, like this:

js
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]

It is a list of components, which can be either just a name, or an array with arguments. If it's an array, the first item is the name of the component, the second is the data passed into it, and the third (optional) applies a CSS style to it with a "CSS object", where the keys are CSS attributes.

These are the existing components, but you can create more in components.js:

  • display-text: Displays some text (can use basic HTML). The argument is the text to display. It can also be a function that returns updating text.

  • raw-html: Displays some basic HTML, can also be a function.

  • blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions. If it's a single value (e.g. "20px"), that determines the height. If you have a pair of arguments, the first is width and the second is height.

  • row: Display a list of components horizontally. The argument is an array of components in the tab layout format.

  • column: Display a list of components vertically. The argument is an array of components in the tab layout format. This is useful to display columns within a row.

  • main-display: The text that displays the main currency for the layer and its effects. The argument is the amount of precision to use, allowing it to display non-whole numbers.

  • resource-display: The text that displays the currency that this layer is based on, as well as the best and/or total values for this layer's prestige currency (if they are put in startData for this layer).

  • prestige-button: The argument is a string that the prestige button should say before the amount of currency you will gain. It can also be a function that returns updating text.

  • text-input: A text input box. The argument is the name of the variable in player[layer] that the input is for, player[layer][argument] (Works with strings, numbers, and Decimals!)

  • slider: Lets the user input a value with a slider. The argument a 3-element array: [name, min, max]. The name is the name of the variable in player[layer] that the input that the input is for, and min and max are the limits of the slider. (Does not work for Decimal values)

  • upgrades: The layer's upgrades. The argument is optional, and is a the list of rows this component should include, if it doesn't have all of them.

  • milestones, challenges, achievements: Display the upgrades, milestones, and challenges for a layer, as appropriate.

  • buyables, clickables: Display all of the buyables/clickables for this layer, as appropriate. The argument is optional and is the size of the boxes in pixels.

  • microtabs: Display a set of subtabs for an area. The argument is the name of the set of microtabs in the "microtabs" feature.

  • bar: Display a bar. The argument is the id of the bar to display.

  • infobox: Display an infobox. The argument is the id of the infobox to display.

  • tree: Displays a tree. The argument is an array of arrays containing the names of the nodes in the tree (first by row, then by column) See here for more information on tree layouts and nodes!

  • toggle: A toggle button that toggles a bool value. The argument is a pair that identifies the location in player of the bool to toggle, e.g. [layer, id]. 'layer' also affects the color of the toggle.

  • grid: Displays the gridable grid for the layer. If you need more than one grid, use a layer proxy.

  • layer-proxy: Lets you use components from another layer. The argument is a pair, [layer, data], consisting of the id of the layer to proxy from, and the tabFormat for the components to show. (Note: you cannot use a microtab within a layer proxy)

The rest of the components are sub-components. They can be used just like other components, but are typically part of another component.

  • upgrade, milestone, challenge, buyable, clickable, achievement, gridable: An individual upgrade, challenge, etc. The argument is the id. This can be used if you want to have upgrades split up across multiple subtabs, for example.

  • respec-button, master-button: The respec and master buttons for buyables and clickables, respectively.

  • sell-one, sell-all: The "sell one" and "sell all" for buyables, respectively. The argument is the id of the buyable.

`,9),l=[e];function p(r,i,c,y,u,E){return a(),o("div",null,l)}const m=s(n,[["render",p]]);export{d as __pageData,m as default}; diff --git a/assets/public_kronos_docs_custom-tab-layouts.md.419753ca.lean.js b/assets/public_kronos_docs_custom-tab-layouts.md.419753ca.lean.js new file mode 100644 index 000000000..d242ef023 --- /dev/null +++ b/assets/public_kronos_docs_custom-tab-layouts.md.419753ca.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as o,Q as t}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Custom tab layouts","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/custom-tab-layouts.md","filePath":"public/kronos/docs/custom-tab-layouts.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/custom-tab-layouts.md"},e=t("",9),l=[e];function p(r,i,c,y,u,E){return a(),o("div",null,l)}const m=s(n,[["render",p]]);export{d as __pageData,m as default}; diff --git a/assets/public_kronos_docs_getting-started.md.d3fc63be.js b/assets/public_kronos_docs_getting-started.md.d3fc63be.js new file mode 100644 index 000000000..065f92a60 --- /dev/null +++ b/assets/public_kronos_docs_getting-started.md.d3fc63be.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/getting-started.md","filePath":"public/kronos/docs/getting-started.md","lastUpdated":1664930814000}'),a={name:"public/kronos/docs/getting-started.md"},n=i('

Getting started

Welcome to The Modding Tree!

Using the Modding Tree, at its simplest level, just requires getting a copy of it onto your computer. However, if you do it the right way, it will help in many ways.

Don't let the word "Github" scare you away. It's actually much easier to use than most people think, especially because most people use it the hard way. The key is Github Desktop, which lets you do everything you need to, without even touching the command line.

The benefits of using Github:

  • It makes it much, much easier to update The Modding Tree.
  • You can share your work without any extra effort using githack, or with a bit more effort, set up a github.io site.
  • It lets you undo changes to your code, and to have multiple versions of it.
  • It lets you collaborate with other people, if you want to.

Getting set up with Github Desktop, Visual Studio Code, and The Modding Tree:

  1. Install Github Desktop and Visual Studio Code.

  2. Make a Github account. You can handle this on your own.

  3. Log in on your browser, and go back to The Modding Tree page. At the top right, there should be a button that says "fork". Click on it, and then on your username. You now have your own fork, or copy, of The Modding Tree.

  4. Open Github Desktop and log in. Ignore everything else and choose "clone a repository". A "repository" is basically a "Github project", like The Modding Tree. "Cloning" is downloading a copy of the repository to your computer.

  5. Look for The Modding Tree in the list of repositiories (it should be the only one) and click "clone".

  6. Select that you're using it for your own purposes, and click continue. It will download the files and handle everything.

Using your repository

  1. Click on "show in explorer/finder" to the right, and then open the index.html file in the folder. The page should open up on your browser. This will let you view and test your project locally!

  2. To edit your project, click "open in VSCode" in Github Desktop.

  3. Open mod.js in VSCode, and look at the top part where it has a "modInfo" object. Fill in your mod's name to whatever you want, and change the id as well. (It can be any string value, and it's used to determine where the savefile is. Make it something that's probably unique, and don't change it again later or else it'll effectively wipe existing saves)

  4. Save mod.js, and then reload index.html in your browser. The title on the tab, as well as on the info page, will now be updated! You can reload the page every time you change the code to test it quickly and easily.

  5. Go back to Github Desktop. It's time to save your changes into the git system by making a "commit". This basically saves your work and creates a snapshot of what your code looks like at this moment, allowing you to look back at it later.

  6. At the bottom right corner, add a summary of your changes, and then click "commit to master".

  7. Finally, at the top middle, click "push origin" to push your changes out onto the online repository.

  8. You can view your project on line, or share it with others, by going to https://raw.githack.com/[YOUR-GITHUB-USERNAME]/The-Modding-Tree/master/index.html

And now, you have successfully used Github! You can look at the documentation to see how The Modding Tree's system works and to make your mod a reality.

',11),r=[n];function s(l,h,u,d,p,c){return t(),o("div",null,r)}const m=e(a,[["render",s]]);export{y as __pageData,m as default}; diff --git a/assets/public_kronos_docs_getting-started.md.d3fc63be.lean.js b/assets/public_kronos_docs_getting-started.md.d3fc63be.lean.js new file mode 100644 index 000000000..383acb267 --- /dev/null +++ b/assets/public_kronos_docs_getting-started.md.d3fc63be.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/getting-started.md","filePath":"public/kronos/docs/getting-started.md","lastUpdated":1664930814000}'),a={name:"public/kronos/docs/getting-started.md"},n=i("",11),r=[n];function s(l,h,u,d,p,c){return t(),o("div",null,r)}const m=e(a,[["render",s]]);export{y as __pageData,m as default}; diff --git a/assets/public_kronos_docs_grids.md.d08f6e38.js b/assets/public_kronos_docs_grids.md.d08f6e38.js new file mode 100644 index 000000000..668ec260c --- /dev/null +++ b/assets/public_kronos_docs_grids.md.d08f6e38.js @@ -0,0 +1,41 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Grids","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/grids.md","filePath":"public/kronos/docs/grids.md","lastUpdated":1664930814000}'),e={name:"public/kronos/docs/grids.md"},o=l(`

Grids

Grids are an easier way of making a group of similar clickables. They all have the same behavior, but are different based on their data.

NOTE: Gridables are similar to clickables in some respects, but are fundamentally different from normal TMT components in quite a few ways. Be sure to keep these in mind:

  • Gridable ids use base 100 instead of base 10, so you can have more than 10 tiles in a row. This means that a grid might look like this: 101 102 201 202
  • Individual gridables are not defined individually. All properties go directly into the "grid" object. Functions are called with arguments for the id of the gridables and its associated data, so you can give them the appropriate appearance and properties based on that.
  • If you need two unrelated grids in a layer, you'll need to use a layer proxy component.

Useful functions for dealing with grids:

  • getGridData(layer, id): get the data for the chosen gridable
  • setGridData(layer, id, state): set the data for the chosen gridable
  • gridEffect(layer, id): get the effect for the chosen gridable

The grid should be formatted like this:

js
grid: {
+    rows: 4, // If these are dynamic make sure to have a max value as well!
+    cols: 5,
+    getStartData(id) {
+        return 0
+    },
+    getUnlocked(id) { // Default
+        return true
+    },
+    getCanClick(data, id) {
+        return true
+    },
+    onClick(data, id) { 
+        player[this.layer].grid[id]++
+    },
+    getDisplay(data, id) {
+        return data 
+    },
+
+    etc
+}
grid: {
+    rows: 4, // If these are dynamic make sure to have a max value as well!
+    cols: 5,
+    getStartData(id) {
+        return 0
+    },
+    getUnlocked(id) { // Default
+        return true
+    },
+    getCanClick(data, id) {
+        return true
+    },
+    onClick(data, id) { 
+        player[this.layer].grid[id]++
+    },
+    getDisplay(data, id) {
+        return data 
+    },
+
+    etc
+}

Features:

  • rows, cols: The amount of rows and columns of gridable to display.

  • maxRows, maxCols: sometimes needed. If rows or cols are dynamic, you need to define the maximum amount that there can be (you can increase it when you update the game though). These CANNOT be dynamic.

  • getStartData(id): Creates the default data for the gridable at this position. This can be an object, or a regular value.

  • getUnlocked(id): optional. Returns true if the gridable at this position should be visible.

  • getTitle(data, id): optional. Returns text that should displayed at the top in a larger font, based on the position and data of the gridable.

  • getDisplay(data, id): optional. Returns everything that should be displayed on the gridable after the title, based on the position and data of the gridable.

  • getStyle(data, id): optional. Returns CSS to apply to this gridable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • getCanClick(data, id): optional. A function returning a bool to determine if you can click a gridable, based on its data and position. If absent, you can always click it.

  • onClick(data, id): A function that implements clicking on the gridable, based on its position and data.

  • onHold(data, id): optional A function that is called 20x/sec when the button is held for at least 0.25 seconds.

  • getEffect(data, id): optional. A function that calculates and returns a gridable's effect, based on its position and data. (Whatever that means for a gridable)

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

`,10),t=[o];function p(r,i,c,d,y,E){return a(),n("div",null,t)}const g=s(e,[["render",p]]);export{u as __pageData,g as default}; diff --git a/assets/public_kronos_docs_grids.md.d08f6e38.lean.js b/assets/public_kronos_docs_grids.md.d08f6e38.lean.js new file mode 100644 index 000000000..9cecd0d43 --- /dev/null +++ b/assets/public_kronos_docs_grids.md.d08f6e38.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Grids","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/grids.md","filePath":"public/kronos/docs/grids.md","lastUpdated":1664930814000}'),e={name:"public/kronos/docs/grids.md"},o=l("",10),t=[o];function p(r,i,c,d,y,E){return a(),n("div",null,t)}const g=s(e,[["render",p]]);export{u as __pageData,g as default}; diff --git a/assets/public_kronos_docs_infoboxes.md.aaf3ac06.js b/assets/public_kronos_docs_infoboxes.md.aaf3ac06.js new file mode 100644 index 000000000..4fa9c6ba0 --- /dev/null +++ b/assets/public_kronos_docs_infoboxes.md.aaf3ac06.js @@ -0,0 +1,15 @@ +import{_ as s,o,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Infoboxes","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/infoboxes.md","filePath":"public/kronos/docs/infoboxes.md","lastUpdated":1664930814000}'),e={name:"public/kronos/docs/infoboxes.md"},t=a(`

Infoboxes

Infoboxes are good for displaying "lore", or story elements, as well as for explaining complicated things.

In the default tab layout, the first infobox will be displayed at the very top of the tab.

Infoboxes are defined like other Big Features:

js
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}

Features:

  • title: The text displayed above the main box. Can be a function to be dynamic, and can use basic HTML.

  • body: The text displayed inside the box. Can be a function to be dynamic, and can use basic HTML.

  • style, titleStyle, bodyStyle: optional. Apply CSS to the infobox, or to the title button or body of the infobox, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a bool to determine if the infobox is visible or not. Default is unlocked.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The infobox in the example's id is "lore".

`,7),l=[t];function p(i,r,c,y,d,E){return o(),n("div",null,l)}const h=s(e,[["render",p]]);export{b as __pageData,h as default}; diff --git a/assets/public_kronos_docs_infoboxes.md.aaf3ac06.lean.js b/assets/public_kronos_docs_infoboxes.md.aaf3ac06.lean.js new file mode 100644 index 000000000..3941c344f --- /dev/null +++ b/assets/public_kronos_docs_infoboxes.md.aaf3ac06.lean.js @@ -0,0 +1 @@ +import{_ as s,o,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Infoboxes","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/infoboxes.md","filePath":"public/kronos/docs/infoboxes.md","lastUpdated":1664930814000}'),e={name:"public/kronos/docs/infoboxes.md"},t=a("",7),l=[t];function p(i,r,c,y,d,E){return o(),n("div",null,l)}const h=s(e,[["render",p]]);export{b as __pageData,h as default}; diff --git a/assets/public_kronos_docs_layer-features.md.162192ee.js b/assets/public_kronos_docs_layer-features.md.162192ee.js new file mode 100644 index 000000000..5c12bc189 --- /dev/null +++ b/assets/public_kronos_docs_layer-features.md.162192ee.js @@ -0,0 +1,21 @@ +import{_ as e,o as t,c as s,Q as a}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"Layer Features","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/layer-features.md","filePath":"public/kronos/docs/layer-features.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/layer-features.md"},n=a(`

Layer Features

This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.

You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.

Layer Definition features

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar to access the saved value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.

  • name: optional. used in reset confirmations (and the default infobox title). If absent, it just uses the layer's id.

  • startData(): A function to return the default save data for this layer. Add any variables you have to it. Make sure to use Decimal values rather than normal numbers.

    Standard values: - Required: - unlocked: a bool determining if this layer is unlocked or not - points: a Decimal, the main currency for the layer - Optional: - total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here. - best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here. - unlockOrder: used to keep track of relevant layers unlocked before this one. - resetTime: A number, time since this layer was last prestiged (or reset by another layer)

  • color: A color associated with this layer, used in many places. (A string in hex format with a #)

  • row: The row of the layer, starting at 0. This affects where the node appears on the standard tree, and which resets affect the layer.

    Using "side" instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements and statistics). Side layers are not affected by resets unless you add a doReset to them.

  • displayRow: OVERRIDE Changes where the layer node appears without changing where it is in the reset order.

  • resource: Name of the main currency you gain by resetting on this layer.

  • effect(): optional. A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. You will also have to implement the effect where it is applied.

  • effectDescription: optional. A function that returns a description of this effect. If the text stays constant, it can just be a string.

  • layerShown(): optional, A function returning a bool which determines if this layer's node should be visible on the tree. It can also return "ghost", which will hide the layer, but its node will still take up space in the tree. Defaults to true.

  • hotkeys: optional. An array containing information on any hotkeys associated with this layer:

    js
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") },
    +        unlocked() {return hasMilestone('p', 3)} // Determines if you can use the hotkey, optional
    +    }
    +]
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") },
    +        unlocked() {return hasMilestone('p', 3)} // Determines if you can use the hotkey, optional
    +    }
    +]
  • style: optional. a "CSS object" where the keys are CSS attributes, containing any CSS that should affect this layer's entire tab.

  • tabFormat: optional. use this if you want to add extra things to your tab or change the layout. See here for more info.

  • midsection: optional, an alternative to tabFormat, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)

Big features (all optional)

  • upgrades: A set of one-time purchases which can have unique upgrade conditions, currency costs, and bonuses. See here for more info.

  • milestones: A list of bonuses gained upon reaching certain thresholds of a resource. Often used for automation/QOL. See here for more info.

  • challenges: The player can enter challenges, which make the game harder. If they reach a goal and beat the challenge, they recieve a bonus. See here for more info.

  • buyables: Effectively upgrades that can be bought multiple times, and are optionally respeccable. Many uses. See here for more info.

  • clickables: Extremely versatile and generalized buttons which can only be clicked sometimes. See here for more info.

  • microtabs: An area that functions like a set of subtabs, with buttons at the top changing the content within. (Advanced) See here for more info.

  • bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be vertical as well. See here for more info.

  • achievements: Kind of like milestones, but with a different display style and some other differences. Extra features are on the way at a later date! See here for more info.

  • achievementPopups, milestonePopups: optional, If false, disables popup message when you get the achievement/milestone. True by default.

  • infoboxes: Displays some text in a box that can be shown or hidden. See here for more info.

  • grid: A grid of buttons that behave the same, but have their own data.See here for more info.

Prestige formula features

  • type: optional. Determines which prestige formula you use. Defaults to "none".

    • "normal": The amount of currency you gain is independent of its current amount (like Prestige). The formula before bonuses is based on baseResource^exponent
    • "static": The cost is dependent on your total after reset. The formula before bonuses is based on base^(x^exponent)
    • "custom": You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom)
    • "none": This layer does not prestige, and therefore does not need any of the other features in this section.
  • baseResource: The name of the resource that determines how much of the main currency you gain on reset.

  • baseAmount(): A function that gets the current value of the base resource.

  • requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).

  • exponent: Used as described above.

  • base: sometimes required. required for "static" layers, used as described above. If absent, defaults to 2. Must be greater than 1.

  • roundUpCost: optional. a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a "static" currency.)

  • gainMult(), gainExp(): optional. For normal layers, these functions calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in most bonuses here. For static layers, they instead divide and root the cost of the resource.

  • directMult(): optional. Directly multiplies the resource gain, after exponents and softcaps. For static layers, actually multiplies resource gain instead of reducing the cost.

  • softcap, softcapPower: optional. For normal layers, gain beyond [softcap] points is put to the [softcapPower]th power Default for softcap is e1e7, and for power is 0.5.

  • canBuyMax(): sometimes required. required for static layers, function used to determine if buying max is permitted.

  • onPrestige(gain): optional. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.

  • resetDescription: optional. Use this to replace "Reset for " on the Prestige button with something else.

  • prestigeButtonText(): sometimes required. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.

  • passiveGeneration(): optional, returns a regular number. You automatically generate your gain times this number every second (does nothing if absent) This is good for automating Normal layers.

  • autoPrestige(): optional, returns a boolean, if true, the layer will always automatically do a prestige if it can. This is good for automating Static layers.

Tree/node features

  • symbol: optional. The text that appears on this layer's node. Default is the layer id with the first letter capitalized.

  • image: override. The url (local or global) of an image that goes on the node. (Overrides symbol)

  • position: optional. Determines the horizontal position of the layer in its row in a standard tree. By default, it uses the layer id, and layers are sorted in alphabetical order.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this layer's node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree. If the value is "", the tooltip will be disabled.

  • marked: optional Adds a mark to the corner of the node. If it's "true" it will be a star, but it can also be an image URL.

Other features

  • doReset(resettingLayer): optional. Is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. doReset is always called for side layers, but for these the default behavior is to reset nothing.

    If you want to keep things, determine what to keep based on resettingLayer, milestones, and such, then call layerDataReset(layer, keep), where layer is this layer, and keep is an array of the names of things to keep. It can include things like "points", "best", "total" (for this layer's prestige currency), "upgrades", any unique variables like "generatorPower", etc. If you want to only keep specific upgrades or something like that, save them in a separate variable, then call layerDataReset, and then set player[this.layer].upgrades to the saved upgrades.

  • update(diff): optional. This function is called every game tick. Use it for any passive resource production or time-based things. diff is the time since the last tick.

  • autoUpgrade: optional, a boolean value, if true, the game will attempt to buy this layer's upgrades every tick. Defaults to false.

  • automate(): optional. This function is called every game tick, after production. Use it to activate automation things that aren't otherwise supported.

  • resetsNothing: optional. Returns true if this layer shouldn't trigger any resets when you prestige.

  • increaseUnlockOrder: optional. An array of layer ids. When this layer is unlocked for the first time, the unlockOrder value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.

  • shouldNotify: optional. A function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.

  • glowColor: optional. The color that this layer will be highlighted if it should notify. The default is red. You can use this if you want several different notification types!

  • componentStyles: optional. An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:

js
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}
  • deactivated: optional, if this is true, hasUpgrade, hasChallenge, hasAchievement, and hasMilestone will return false for things in the layer, and you will be unable to buy or click things on the layer. You will have to disable effects of buyables, the innate layer effect, and possibly other things yourself.

Custom Prestige type

(All of these can also be used by other prestige types)

  • getResetGain(): mostly for custom prestige type. Returns how many points you should get if you reset now. You can call getResetGain(this.layer, useType = "static") or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer).

  • getNextAt(canMax=false): mostly for custom prestige type. Returns how many of the base currency you need to get to the next point. canMax is an optional variable used with Static-ish layers to differentiate between if it's looking for the first point you can reset at, or the requirement for any gain at all (Supporting both is good). You can also call getNextAt(this.layer, canMax=false, useType = "static") or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer).

  • canReset(): mostly for custom prestige type. Return true only if you have the resources required to do a prestige here.

  • prestigeNotify(): mostly for custom prestige types, returns true if this layer should be subtly highlighted to indicate you can prestige for a meaningful gain.

`,20),r=[n];function l(i,p,c,u,h,d){return t(),s("div",null,r)}const g=e(o,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/public_kronos_docs_layer-features.md.162192ee.lean.js b/assets/public_kronos_docs_layer-features.md.162192ee.lean.js new file mode 100644 index 000000000..4ba23c23b --- /dev/null +++ b/assets/public_kronos_docs_layer-features.md.162192ee.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as s,Q as a}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"Layer Features","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/layer-features.md","filePath":"public/kronos/docs/layer-features.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/layer-features.md"},n=a("",20),r=[n];function l(i,p,c,u,h,d){return t(),s("div",null,r)}const g=e(o,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/public_kronos_docs_main-mod-info.md.07830185.js b/assets/public_kronos_docs_main-mod-info.md.07830185.js new file mode 100644 index 000000000..590aa4904 --- /dev/null +++ b/assets/public_kronos_docs_main-mod-info.md.07830185.js @@ -0,0 +1,9 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"mod.js","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/main-mod-info.md","filePath":"public/kronos/docs/main-mod-info.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/main-mod-info.md"},o=t(`

mod.js

Most of the non-layer code and data that you're likely to edit is here in mod.js. Everything in mod.js will not be altered by updates, besides the addition of new things.

Here's a breakdown of what's in it:

  • modInfo is where most of the basic configuration for the mod is. It contains:

    • name: The name of your mod. (a string)

    • id: The id for your mod, a unique string that is used to determine savefile location. Be sure to set it when you start making a mod, and don't change it later because it will erase all saves.

    • author: The name of the author, displayed in the info tab.

    • pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)

    • discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it.

      "discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.

    • offlineLimit: The maximum amount of offline time that the player can accumulate, in hours. Any extra time is lost. (a number)

      This is useful because most of these mods are fast-paced enough that too much offline time ruins the balance, such as the time in between updates. That is why I suggest developers disable offline time on their own savefile.

    • initialStartPoints: A Decimal for the amount of points a new player should start with.

  • VERSION is used to describe the current version of your mod. It contains:

    • num: The mod's version number, displayed at the top right of the tree tab.
    • name: The version's name, displayed alongside the number in the info tab.
  • changelog is the HTML displayed in the changelog tab. If this gets particularly long, it might be good to put in a separate file (be sure to add the file to index.html)

  • doNotCallTheseFunctionsEveryTick is very important, if you are adding non-standard functions. TMT calls every function anywhere in "layers" every tick to store the result, unless specifically told not to. Functions that have are used to do an action need to be identified. "Official" functions (those in the documentation) are all fine, but if you make any new ones, add their names to this array.

js
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
  • getStartPoints(): A function to determine the amount of points the player starts with after a reset. (returns a Decimal value)

  • canGenPoints(): A function returning a boolean for if points should be generated. Use this if you want an upgrade to unlock generating points.

  • getPointGen(): A function that calculates your points per second. Anything that affects your point gain should go into the calculation here.

  • addedPlayerData(): A function that returns any non-layer-related data that you want to be added to the save data and "player" object.

js
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
  • displayThings: An array of functions used to display extra things at the top of the tree tab. Each function returns a string, which is a line to display (with basic HTML support). If a function returns nothing, nothing is displayed (and it doesn't take up a line).

  • isEndgame(): A function to determine if the player has reached the end of the game, at which point the "you win!" screen appears.

Less important things beyond this point!

  • maxTickLength(): Returns the maximum tick length, in milliseconds. Only really useful if you have something that reduces over time, which long ticks mess up (usually a challenge).

  • fixOldSave(): Can be used to modify a save file when loading into a new version of the game. Use this to undo inflation, never forcibly hard reset your players.

`,10),l=[o];function i(p,r,c,d,u,h){return s(),a("div",null,l)}const m=e(n,[["render",i]]);export{f as __pageData,m as default}; diff --git a/assets/public_kronos_docs_main-mod-info.md.07830185.lean.js b/assets/public_kronos_docs_main-mod-info.md.07830185.lean.js new file mode 100644 index 000000000..ae27c6a18 --- /dev/null +++ b/assets/public_kronos_docs_main-mod-info.md.07830185.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"mod.js","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/main-mod-info.md","filePath":"public/kronos/docs/main-mod-info.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/main-mod-info.md"},o=t("",10),l=[o];function i(p,r,c,d,u,h){return s(),a("div",null,l)}const m=e(n,[["render",i]]);export{f as __pageData,m as default}; diff --git a/assets/public_kronos_docs_milestones.md.943678fc.js b/assets/public_kronos_docs_milestones.md.943678fc.js new file mode 100644 index 000000000..2f07e2e8a --- /dev/null +++ b/assets/public_kronos_docs_milestones.md.943678fc.js @@ -0,0 +1,15 @@ +import{_ as s,o as e,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Milestones","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/milestones.md","filePath":"public/kronos/docs/milestones.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/milestones.md"},t=a(`

Milestones

Milestones are awarded to the player when they meet a certain goal, and give some benefit. Milestones should be formatted like this:

js
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}

You can use hasMilestone(layer, id) to determine if the player has a given milestone

Milestone features:

  • requirementDescription: A string describing the requirement for unlocking this milestone. Suggestion: Use a "total". It can also be a function that returns updating text. Can use basic HTML.

  • effectDescription: A string describing the reward for having the milestone. You will have to implement the reward elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the milestone should be awarded.

  • toggles: optional. Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

    Tip: Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.

  • style: optional. Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the milestone was stored under, for convenient access. The milestone in the example's id is 0.

Disaable milestone popups by adding milestonePopups: false to the layer.

`,7),l=[t];function p(i,r,c,u,d,h){return e(),n("div",null,l)}const g=s(o,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/public_kronos_docs_milestones.md.943678fc.lean.js b/assets/public_kronos_docs_milestones.md.943678fc.lean.js new file mode 100644 index 000000000..578545b2f --- /dev/null +++ b/assets/public_kronos_docs_milestones.md.943678fc.lean.js @@ -0,0 +1 @@ +import{_ as s,o as e,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Milestones","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/milestones.md","filePath":"public/kronos/docs/milestones.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/milestones.md"},t=a("",7),l=[t];function p(i,r,c,u,d,h){return e(),n("div",null,l)}const g=s(o,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/public_kronos_docs_particles.md.f44e1f6e.js b/assets/public_kronos_docs_particles.md.f44e1f6e.js new file mode 100644 index 000000000..8c6f84b9c --- /dev/null +++ b/assets/public_kronos_docs_particles.md.f44e1f6e.js @@ -0,0 +1,21 @@ +import{_ as s,o as e,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Particles","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/particles.md","filePath":"public/kronos/docs/particles.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/particles.md"},t=l(`

Particles

Particles are free-floating elements that can move and have many different behaviors. They can also interact with the mouse.

To make particles, use makeParticles(particle, amount). particle is a particle-defining object, with features as explained below. There is also makeShinies, which uses different defaults and creates stationary particles at a random location. There are also a few other useful things listed at the end.

js

+const myParticle {
+    image:"options_wheel.png",
+    spread: 20,
+    gravity: 2,
+    time: 3,
+    speed() { // Randomize speed a bit
+        return (Math.random() + 1.2) * 8 
+    },
+    etc...
+}

+const myParticle {
+    image:"options_wheel.png",
+    spread: 20,
+    gravity: 2,
+    time: 3,
+    speed() { // Randomize speed a bit
+        return (Math.random() + 1.2) * 8 
+    },
+    etc...
+}

Features can be functions or constant. These features will be called when each particle is made, with an id argument, which is assigned based on which of the amount particles being spawned this is. All of these are optional, with a default value.

All distances are in pixels and angles are in degrees, with 0 being up and going clockwise.

  • time: The amount of time, in seconds, that the particle will last. Default is 3.

  • fadeOutTime: The amount of seconds that fading out at the end should take (part of the total lifetime). Default is 1.

  • fadeInTime: The amount of seconds that fading in should take (part of the total lifetime). Default is 0.

  • image: The image the particle should display. "" will display no image. Default is a generic particle.

  • text: Displays text on the particle. Can use basic HTML.

  • style: Lets you apply other CSS styling to the particle.

  • width, height: The dimensions of the particle. Default is 35 and 35.

  • color: Sets the color of the image to this color.

  • angle: The angle that the particle should face. Default is 0.

  • dir: The initial angle that the particles should move in, before spread is factored in. Default is whatever angle is.

  • spread: If there are several particles, they will be spread out by this many degrees, centered on dir. Default is 30.

  • rotation: The amount that the (visual) angle of the particle should change by. Default is 0.

  • speed: The starting speed of the particle. Default is 15.

  • gravity: The amount the particle should accelerate downwards. Default is 0.

  • x, y: The starting coordinates of the particle. Default is at the mouse position.

  • offset: How far from the start each particle should appear. Default is 10.

  • xVel, yVel: Set initially based on other properties, then used to update movement.

  • layer: When changing tabs, if leaving the layer tab, this particle will be erased.

  • You can add other features to particles, but you must impliment their effects yourself.

Function features: These stay as functions and are for more advanced things. They are optional.

  • update(): Called each tick. Lets you do more advanced visual and movement behaviors by changing other properties.
  • onClick(), onMouseOver(), onMouseLeave(): Called when the particle is interacted with.

Other useful things that are not features of the particle object:

  • setDir(particle, dir), setSpeed(particle, speed): Set the speed/direction on a particle.
  • clearParticles(check): Function to delete particles. With no check, it deletes all particles. Check is a function that takes a particle, and returns true if that particle should be deleted.
  • You can use Vue.delete(particles, this.id) to make a particle delete itself.
  • mouseX and mouseY are variables that track the mouse position.
  • sin(x), cos(x), tan(x): functions that do these operations, with x in degrees. (Instead of radians).
  • asin(x), acos(x), atan(x): functions that do these operations, with the returned value in degrees. (instead of radians).
`,11),o=[t];function p(i,r,c,d,h,y){return e(),a("div",null,o)}const f=s(n,[["render",p]]);export{E as __pageData,f as default}; diff --git a/assets/public_kronos_docs_particles.md.f44e1f6e.lean.js b/assets/public_kronos_docs_particles.md.f44e1f6e.lean.js new file mode 100644 index 000000000..dcca87fee --- /dev/null +++ b/assets/public_kronos_docs_particles.md.f44e1f6e.lean.js @@ -0,0 +1 @@ +import{_ as s,o as e,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Particles","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/particles.md","filePath":"public/kronos/docs/particles.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/particles.md"},t=l("",11),o=[t];function p(i,r,c,d,h,y){return e(),a("div",null,o)}const f=s(n,[["render",p]]);export{E as __pageData,f as default}; diff --git a/assets/public_kronos_docs_subtabs-and-microtabs.md.6172e2b9.js b/assets/public_kronos_docs_subtabs-and-microtabs.md.6172e2b9.js new file mode 100644 index 000000000..487f63842 --- /dev/null +++ b/assets/public_kronos_docs_subtabs-and-microtabs.md.6172e2b9.js @@ -0,0 +1,49 @@ +import{_ as s,o as a,c as n,Q as t}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Subtabs and Microtabs","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/subtabs-and-microtabs.md","filePath":"public/kronos/docs/subtabs-and-microtabs.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/subtabs-and-microtabs.md"},e=t(`

Subtabs and Microtabs

Subtabs are separate sections of a tab that you can view by selecting one at the top of the tab. Microtabs are smaller areas that function in much the same way. You can also embed layers inside of subtabs/microtabs.

Subtabs are defined by using the tab format like this, where each element of tabFormat is given the name of that subtab:

js
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}

Microtabs are defined similarly, and use the same features, but are defined in the "microtabs" feature. Each entry is a group of tabs which will appear in a microtabs component. The first set, "stuff", has 2 tabs, and the second, "otherStuff", has none.

js
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}

Normal subtabs and microtab subtabs both use the same features:

Features:

  • content: The tab layout code for the subtab, in the tab layout format.

  • style: optional. Applies CSS to the whole subtab when switched to, in the form of an "CSS Object", where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • buttonStyle: optional. A CSS object, which affects the appearance of the button for that subtab.

  • unlocked(): optional. a function to determine if the button for this subtab should be visible. By default, a subtab is always unlocked. You can't use the "this" keyword in this function.

  • shouldNotify()/prestigeNotify(): optional, if true, the tab button will be highlighted to notify the player that there is something there.

  • glowColor: optional, specifies the color that the subtab glows. If this subtab is causing the main layer to node glow (and it would't otherwise) the node also glows this color. Is NOT overridden by embedding a layer.

  • embedLayer: SIGNIFICANT, the id of another layer. If you have this, it will override "content", "style" and "shouldNotify", instead displaying the entire layer in the subtab.

`,9),l=[e];function p(c,r,i,E,b,u){return a(),n("div",null,l)}const d=s(o,[["render",p]]);export{h as __pageData,d as default}; diff --git a/assets/public_kronos_docs_subtabs-and-microtabs.md.6172e2b9.lean.js b/assets/public_kronos_docs_subtabs-and-microtabs.md.6172e2b9.lean.js new file mode 100644 index 000000000..23e93fca7 --- /dev/null +++ b/assets/public_kronos_docs_subtabs-and-microtabs.md.6172e2b9.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as t}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Subtabs and Microtabs","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/subtabs-and-microtabs.md","filePath":"public/kronos/docs/subtabs-and-microtabs.md","lastUpdated":1664930814000}'),o={name:"public/kronos/docs/subtabs-and-microtabs.md"},e=t("",9),l=[e];function p(c,r,i,E,b,u){return a(),n("div",null,l)}const d=s(o,[["render",p]]);export{h as __pageData,d as default}; diff --git a/assets/public_kronos_docs_trees-and-tree-customization.md.50820db8.js b/assets/public_kronos_docs_trees-and-tree-customization.md.50820db8.js new file mode 100644 index 000000000..79afea41a --- /dev/null +++ b/assets/public_kronos_docs_trees-and-tree-customization.md.50820db8.js @@ -0,0 +1,5 @@ +import{_ as e,o as t,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Trees and tree customization","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/trees-and-tree-customization.md","filePath":"public/kronos/docs/trees-and-tree-customization.md","lastUpdated":1664930814000}'),s={name:"public/kronos/docs/trees-and-tree-customization.md"},n=a(`

Trees and tree customization

If you want to have something beyond the standard tree on the left tab, you can do that in tree.js. You can change the layout of the tree, including making non-layer nodes, change it into something other than a tree, or hide the left tab altogether. This also introduces the "tree" component, which can be used in your layers as well.

layoutInfo

The most important part is layoutInfo, containing:

  • startTab: The id of the default tab to show on the left at the start.
  • showTree: True if the tree tab should be shown at the start of the game. (The other tab will fill the whole page)
  • treeLayout: If present, overrides the tree layout and places nodes as you describe instead (explained in the next section).

Additionally, if you want the main layout to not be a tree, you can edit the "tree-tab" layer at the bottom of tree.js to modify it just like a normal layer's tab. You can even switch between left tabs, using showNavTab(layer) to make that layer appear on the left.

Trees

The tree component is defined as an array of arrays of names of layers or nodes to show in the tree. They work just like layers/ nodes in the main tree (but branches between nodes will only work on the first node if you have duplicates.)

Here is an example tree:

js
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]

Nodes

Nodes are non-layer buttons that can go in trees. They are defined similarly to layers, but with addNode instead of addLayer.

Features:

  • color: optional, The node's color. (A string in hex format with a #)

  • symbol: optional The text on the button (The id capitalized by default)

  • canClick(): Returns true if the player can click the node. ()

  • onClick(): The function called when the node is clicked.

  • layerShown(): optional, A function returning a bool which determines if this node should be visible. It can also return "ghost", which will hide the layer, but its node will still take up space in its tree.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this node to all of the nodes in the list. Alternatively, an entry in the array can be a 2-element array consisting of the id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree.

  • row: optional, the row that this node appears in (for the default tree).

  • position: optional, Determines the horizontal position of the layer in its row in a default tree. By default, it uses the id, and layers/nodes are sorted in alphabetical order.

`,14),l=[n];function r(i,p,c,h,u,d){return t(),o("div",null,l)}const f=e(s,[["render",r]]);export{E as __pageData,f as default}; diff --git a/assets/public_kronos_docs_trees-and-tree-customization.md.50820db8.lean.js b/assets/public_kronos_docs_trees-and-tree-customization.md.50820db8.lean.js new file mode 100644 index 000000000..500fea0dc --- /dev/null +++ b/assets/public_kronos_docs_trees-and-tree-customization.md.50820db8.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Trees and tree customization","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/trees-and-tree-customization.md","filePath":"public/kronos/docs/trees-and-tree-customization.md","lastUpdated":1664930814000}'),s={name:"public/kronos/docs/trees-and-tree-customization.md"},n=a("",14),l=[n];function r(i,p,c,h,u,d){return t(),o("div",null,l)}const f=e(s,[["render",r]]);export{E as __pageData,f as default}; diff --git a/assets/public_kronos_docs_updating-tmt.md.6ef74952.js b/assets/public_kronos_docs_updating-tmt.md.6ef74952.js new file mode 100644 index 000000000..154d21470 --- /dev/null +++ b/assets/public_kronos_docs_updating-tmt.md.6ef74952.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Updating The Modding Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/updating-tmt.md","filePath":"public/kronos/docs/updating-tmt.md","lastUpdated":1664930814000}'),i={name:"public/kronos/docs/updating-tmt.md"},n=a('

Updating The Modding Tree

This tutorial assumes that you have used the Getting Started Tutorial, and are using Github Desktop and VSCode for your mod.

Here's what you have to do when there's a TMT update:

  1. Look at the changelog. It will warn you if the update will break anything or require any changes. Decide if you want to try to update.

  2. Open Github Desktop, and at the top middle, click "fetch origin". This will make Github Desktop get information about the update.

  3. Click where it says "current branch: master" at the top middle, and at the bottom of the thing that appears, click "choose a branch to merge into master".

  4. Select upstream/master. It will likely say there are conflicts, but you have tools to resolve them. Click "Merge upstream/master into master".

  5. A conflict happens when the things you're trying to merge have both made changes in the same place. Click "open in Visual Studio Code" next to the first file.

  6. Scroll down through the file, and look for the parts highlighted in red and green. One of these is your code, and the other is some code that will be modified by the update. Do your best to try to edit things to keep the updated changes, but keep your content.

  7. Continue to do this for all remaining changes.

  8. Do any other changes required by the update, run the game, fix issues, etc.

',4),r=[n];function d(h,s,l,p,u,c){return e(),o("div",null,r)}const _=t(i,[["render",d]]);export{m as __pageData,_ as default}; diff --git a/assets/public_kronos_docs_updating-tmt.md.6ef74952.lean.js b/assets/public_kronos_docs_updating-tmt.md.6ef74952.lean.js new file mode 100644 index 000000000..bf964f498 --- /dev/null +++ b/assets/public_kronos_docs_updating-tmt.md.6ef74952.lean.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Updating The Modding Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/updating-tmt.md","filePath":"public/kronos/docs/updating-tmt.md","lastUpdated":1664930814000}'),i={name:"public/kronos/docs/updating-tmt.md"},n=a("",4),r=[n];function d(h,s,l,p,u,c){return e(),o("div",null,r)}const _=t(i,[["render",d]]);export{m as __pageData,_ as default}; diff --git a/assets/public_kronos_docs_upgrades.md.33de426a.js b/assets/public_kronos_docs_upgrades.md.33de426a.js new file mode 100644 index 000000000..19b1a8dea --- /dev/null +++ b/assets/public_kronos_docs_upgrades.md.33de426a.js @@ -0,0 +1,15 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Upgrades","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/upgrades.md","filePath":"public/kronos/docs/upgrades.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/upgrades.md"},o=t(`

Upgrades

Useful functions for dealing with Upgrades and implementing their effects:

  • hasUpgrade(layer, id): determine if the player has the upgrade
  • upgradeEffect(layer, id): Returns the current effects of the upgrade, if any
  • buyUpgrade(layer, id): Buys an upgrade directly (if affordable)

Hint: Basic point gain is calculated in mod.js's "getPointGen" function.

Upgrades are stored in the following format:

js
upgrades: {
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}
upgrades: {
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}

Usually, upgrades should have an id where the first digit is the row and the second digit is the column.

Individual upgrades can have these features:

  • title: optional. Displayed at the top in a larger font. It can also be a function that returns updating text. Can use basic HTML.

  • description: A description of the upgrade's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.

  • effectDisplay(): optional. A function that returns a display of the current effects of the upgrade with formatting. Default displays nothing. Can use basic HTML.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the upgrade. Can use basic HTML.

  • cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.

  • unlocked(): optional. A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.

  • onPurchase(): optional. This function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".

  • style: optional. Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the upgrade was stored under, for convenient access. The upgrade in the example's id is 11.

By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):

  • currencyDisplayName: optional. The name to display for the currency for the upgrade.

  • currencyInternalName: optional. The internal name for that currency.

  • currencyLayer: optional. The internal name of the layer that currency is stored in. If it's not in a layer (like Points), omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional. If your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)

  • canAfford(): OVERRIDE, a function determining if you are able to buy the upgrade

  • pay(): OVERRIDE, a function that reduces your currencies when you buy the upgrade

`,13),l=[o];function r(p,i,c,u,d,h){return s(),a("div",null,l)}const f=e(n,[["render",r]]);export{g as __pageData,f as default}; diff --git a/assets/public_kronos_docs_upgrades.md.33de426a.lean.js b/assets/public_kronos_docs_upgrades.md.33de426a.lean.js new file mode 100644 index 000000000..62a8e4f16 --- /dev/null +++ b/assets/public_kronos_docs_upgrades.md.33de426a.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Upgrades","description":"","frontmatter":{},"headers":[],"relativePath":"public/kronos/docs/upgrades.md","filePath":"public/kronos/docs/upgrades.md","lastUpdated":1664930814000}'),n={name:"public/kronos/docs/upgrades.md"},o=t("",13),l=[o];function r(p,i,c,u,d,h){return s(),a("div",null,l)}const f=e(n,[["render",r]]);export{g as __pageData,f as default}; diff --git a/assets/public_lit_Old Things_2.0-format-changes.md.1c4753bc.js b/assets/public_lit_Old Things_2.0-format-changes.md.1c4753bc.js new file mode 100644 index 000000000..8902437b3 --- /dev/null +++ b/assets/public_lit_Old Things_2.0-format-changes.md.1c4753bc.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as i}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"2.0 format changes","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/Old Things/2.0-format-changes.md","filePath":"public/lit/Old Things/2.0-format-changes.md","lastUpdated":1664930832000}'),l={name:"public/lit/Old Things/2.0-format-changes.md"},n=i('

2.0 format changes

  • Temp format is changed from temp.something[layer] to temp[layer].something, for consistency
  • Challenges are now saved as an object with the amount of completions in each spot. (This will break saves.)
  • effectDisplay in Challenges and Upgrades no longer takes an argument, and neither does effect for Buyables
  • Buyable cost can take an argument for amount of buyables, but it needs to function if no argument is supplied (it should do the cost for the next purchase).
  • Generation of Points now happens in the main game loop (not in a layer update function), enabled by canGenPoints in game.js.
  • Changed fullLayerReset to layerDataReset, which takes an array of names of values to keep

In addition, many names were changed, mostly expanding abbreviations:

All instances of:

  • chall -> challenge
  • unl -> unlocked
  • upg -> upgrade (besides CSS)
  • amt -> amount
  • desc -> description
  • resCeil -> roundUpCost
  • order -> unlockOrder
  • incr_order -> increaseUnlockOrder

Challenges:

  • desc -> challengeDescription
  • reward -> rewardDescription
  • effect -> rewardEffect
  • effectDisplay -> rewardDisplay
  • active -> challengeActive
',7),o=[n];function s(c,r,d,h,g,p){return a(),t("div",null,o)}const u=e(l,[["render",s]]);export{m as __pageData,u as default}; diff --git a/assets/public_lit_Old Things_2.0-format-changes.md.1c4753bc.lean.js b/assets/public_lit_Old Things_2.0-format-changes.md.1c4753bc.lean.js new file mode 100644 index 000000000..2374c5c89 --- /dev/null +++ b/assets/public_lit_Old Things_2.0-format-changes.md.1c4753bc.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as i}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"2.0 format changes","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/Old Things/2.0-format-changes.md","filePath":"public/lit/Old Things/2.0-format-changes.md","lastUpdated":1664930832000}'),l={name:"public/lit/Old Things/2.0-format-changes.md"},n=i("",7),o=[n];function s(c,r,d,h,g,p){return a(),t("div",null,o)}const u=e(l,[["render",s]]);export{m as __pageData,u as default}; diff --git a/assets/public_lit_README.md.37700f83.js b/assets/public_lit_README.md.37700f83.js new file mode 100644 index 000000000..bb78e4344 --- /dev/null +++ b/assets/public_lit_README.md.37700f83.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Kronos","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/README.md","filePath":"public/lit/README.md","lastUpdated":1664930832000}'),r={name:"public/lit/README.md"},i=a('

Kronos

Play here.

Updating the website:

  • git submodule update --remote
  • git add -A
  • git commit -m "Updated kronos"
  • git push
',4),l=[i];function s(c,d,n,_,p,u){return t(),o("div",null,l)}const f=e(r,[["render",s]]);export{m as __pageData,f as default}; diff --git a/assets/public_lit_README.md.37700f83.lean.js b/assets/public_lit_README.md.37700f83.lean.js new file mode 100644 index 000000000..f040ca00a --- /dev/null +++ b/assets/public_lit_README.md.37700f83.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Kronos","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/README.md","filePath":"public/lit/README.md","lastUpdated":1664930832000}'),r={name:"public/lit/README.md"},i=a("",4),l=[i];function s(c,d,n,_,p,u){return t(),o("div",null,l)}const f=e(r,[["render",s]]);export{m as __pageData,f as default}; diff --git a/assets/public_lit_changelog.md.07a3430c.js b/assets/public_lit_changelog.md.07a3430c.js new file mode 100644 index 000000000..0ee2fea5b --- /dev/null +++ b/assets/public_lit_changelog.md.07a3430c.js @@ -0,0 +1 @@ +import{_ as e,o as i,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The Modding Tree changelog:","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/changelog.md","filePath":"public/lit/changelog.md","lastUpdated":1664930832000}'),t={name:"public/lit/changelog.md"},o=l('

The Modding Tree changelog:

v2.π: Incrementally Updated - 2/5/21

  • Performance improvements.
  • Fixed tooltips overlapping with the top display.
  • Clicking a popup dismisses it immediately.
  • Added support for bulk challenge completions.
  • "Best" is updated automatically.
  • Fixed keeping Decimal values on reset.
  • Code reorganization and style improvements by fudo.

v2.3.5 - 12/21/20

  • Added resetTime, which tracks the time since a layer prestiged or was reset.
  • A layer node will be highlighted red if one of its subtabs is highlighted red.
  • Fixed issues with keeping challenges, buyables, and clickables on reset.
  • Improved the unlocking of custom layers.
  • Other minor fixes.

v2.3.4 - 12/16/20

  • Added a node image feature.
  • Resource display now always shows the amount of the currency the layer's gain is based on.
  • Added spacing between tree nodes.
  • Another attempt to fix tooltip flickering.

v2.3.3 - 12/13/20

  • Fixed the first node in a row always taking up space.
  • layerShown is now optional.
  • All prestige types can now use features for custom prestige types.

v2.3.2 - 12/13/20

  • Fixed achievement/milestone popups.

v2.3.1 - 12/12/20

  • Another attempt to fix flickering tooltips.
  • The "this" keyword should work everywhere except tabFormat arrays (although I may have missed some things).
  • Fixed tree branches not updating when scrolling on the right-side tab.
  • Fixed a spacing issue when a node's symbol is ""
  • Removed some old, unneeded files.

v2.3: Cooler and Newer Edition - 12/10/20

  • Added achievement/milestone popups (thank you to Jacorb for this contribution!)
  • The changelog tab is back, and can be set in mod.js.
  • Layer nodes and respec buttons will not be clicked by pressing "enter".
  • Possible fix for flickering tooltips and strange transitions.
  • The victory screen text is configurable.
  • Added image and textStyle features to achievements.
  • Added an argument to use specific rows in an "upgrades" component.
  • Fixed the comma appearing in the main display when there was no effectDescription
  • Added the ability to easily make a tab that is a collection of layers in subtabs.
  • Improved spacing for embedding layers with subtabs into subtabs.

v2.2.8 - 12/03/20

  • Double-clicking a layer node brings you to the main subtab for that layer.
  • Attempted to fix challenges visually updating a different way.
  • Added a softcap function for use in formulas.
  • Added displayRow feature, which lets layers be shown somewhere separate from where they are in the reset order (e.g. side layers)
  • Fixed autoupgrade issue.

v2.2.7 - 11/30/20

  • Added autoUpgrade feature.
  • resource-display now shows resource gain per second if passiveGain is active.
  • Fixed formatting issues on some large numbers.
  • Better support for using classed objects in player and in layers/tmp.
  • Made hard resetting more effective.
  • Removed Herobrine from getStartClickables.

v2.2.6 - 11/30/20

  • Added goalDescription for challenges and made the new "canComplete" system the standard.
  • Another attempt to fix challenges not visually updating.
  • Fixed side layers not appearing.
  • Fixed getStartClickables again.

v2.2.5 - 11/29/20

  • Added features for overriding the displays and costs/goals of upgrades and challenges to make them fully custom.
  • best, total, and unlocked are always automatically added to layerData (but best and total will only display if you add them yourself).
  • Fixed getStartClickables.

v2.2.4 - 11/28/20

  • Added softcap and softcapPower features (for Normal layers)
  • Offline time limit and default max tick length were fixed (previously the limits were 1000x too large)
  • Added fixOldSaves.
  • You can use HTML in main-display.
  • Fixed a number of minor oddities.

v2.2.3 - 11/28/20

  • Layers will be highlighted if you can finish a challenge.
  • The "can complete challenge" color now overrides the "already completed" color.
  • Button nodes now work as side "layers".
  • Setting a tooltip to "" hides it entirely.

v2.2.2 - 11/22/20

  • Fixed right half of the screen being unclickable in some circumstances.
  • Fixed tree branches being offset.
  • Fix to lastSafeTab.

v2.2.1 - 11/7/20

  • Added a small highlight to layers you can meaningfully prestige on.
  • Added passiveGeneration and autoPrestige features to standardize prestige automation. (The old ways still work, but the new ones work better with other things)
  • Improved milestones visually a bit.
  • "best" and "total" are now only displayed if present in startData.
  • Fixed issues with things not updating visually. (Thank you to to Jacorb!)
  • Side layers and button nodes can now be highlighted.
  • Updated docs on the new tree-related features.

v2.2: Uprooted - 11/7/20

  • You can now embed a layer inside of a subtab or microtab!
  • Added support for hiding or reformatting the tree tab
  • Added non-layer button nodes
  • Added shouldNotify to subtab/microtab buttons. (You can make them highlighted)
  • Added commas to large exponents.
  • Upgrades now only show "currently" if they have an effectDisplay (so not for constant effects).
  • Achievements are part of the default tab format.
  • NaN is now handled more intelligently.
  • Renamed files, and moved less relevant ones to another folder.
  • The "hide completed challenges" setting now only hides challenges at max completions.
  • Thank you to thepaperpilot for fixing errors in docs and improving the infobox appearance!
  • Many other minor fixes.

v2.1.4 - 10/25/20

  • Added an infobox component. Thank you to thepaperpilot for this contribution!
  • Layer type is now optional, and defaults to "none".
  • Improved the look of bars and tab buttons.
  • Improved spacing between layer nodes (also thanks to thepaperpilot!)
  • Fixed the "blank" component breaking if only specifying the height.
  • Fixed some numbers not displaying with enough digits.
  • Made a few more things able to be functions.
  • A few other minor fixes.

v2.1.3.1 - 10/21/20

  • Fixed the update function.

v2.1.3 - 10/21/20

  • gainMult and gainExp are now optional.
  • Layer unlocking is now kept on reset.
  • Game should start up faster.
  • Layer updates now have a determined order and starts with earlier-rowed layers.
  • Automation now has a determined order and starts with later-rowed layers.
  • Fixed issues with resetting clickables and challenges.
  • Commas should no longer appear in the decimal places of a number.
  • Fixed potential issue in displaying the tree.

v2.1.2 - 10/19/20

  • Added buyUpgrade function (buyUpg still works though)
  • Added author name to modInfo.
  • Fix to crash caused when the name of a subtab or microtab is changed.
  • Fixes to outdated information in docs.
  • Improvements to Discord links.
  • Thank you to thepaperpilot for contributing to this update!

v2.1.1 - 10/17/20

  • Added resource-display component, which displays the base currency for the prestige layer, as well as the best and/or total of this layer's prestige currency.
  • Fixed the value for the base currency not updating in resource-display.

v2.1: We should have thought of this sooner! - 10/17/20

  • Moved most of the code users will want to edit to mod.js, added documentation for it.
    • Specifically, modInfo, VERSION, canGenPoints, getPointGen, and maxTickLength
  • Added getStartPoints()
  • Added the ability to store non-layer-related data
  • Added the ability to display more things at the top of the tree tab below points.
  • Made the endgame condition customizable
  • Added "sell one" and "sell all" buttons for buyables.
  • Moved the old "game" to demo.js, and replaced it with a minimal game that won't cause issues when edited.
  • Fixed issues with version number
  • Fixed number formatting issue making things like "10e9" appear.

v2.0.5 - 10/16/20

  • Made more features (including prestige parameters) able to be dynamic.
  • Layer nodes can be hidden but still take up space with "ghost" visibility
  • Added clickableEffect for real.
  • Fixed some visual issues with bars.
  • A few other minor tweaks and improvements.

v2.0.4 - 10/16/20

  • Fixed HTML on buttons interfering with clicking on them.

v2.0.3 - 10/16/20

  • Fixed hotkeys not displaying in info.
  • Fixed the game supressing all external hotkeys.
  • You can use more things as currencies for upgrade costs and challenge goals using currencyLocation.
  • Added maxTickLength, which can be used to prevent offline time or tab-switching from breaking time-limit based mechanics.
  • Made buyable respec buttons and clickable "master" buttons their own components, and gave them a hide/show feature.
  • Added a general "tooltip" feature for achievements.

v2.0.2 - 10/15/20

  • Branches are now dynamic (they can be functions).
  • Fixed a crash related to offline time.
  • Fixed links being too wide.

v2.0.1 - 10/15/20

  • Fixed side layers appearing multiple times.

v2.0: The Pinnacle of Achievement Mountain - 10/15/20

  • Added progress bars, which are highly customizable and can be horizontal or vertical!
  • Added "side layers", displayed smaller and off to the side, and don't get reset by default. They can be used for global achievements and statistics. Speaking of which...
  • Added achievements!
  • Added clickables, a more generalized variant of buyables.
  • Almost every value in layer data can be either a function or a constant value!
  • Added support for multiple completions of challenges.
  • Added "none" prestige type, which removes the need for any other prestige-related features.
  • The points display and other gui elements stay at the top of the screen when the tree scrolls.
  • Added getter/setter functions for the amounts and effects of most Big Features
  • Moved modInfo to game.js, added a spot in modInfo for a Discord link, changelog link. Also added a separate mod version from the TMT version in VERSION.
  • Tree structure is based on layer data, no index.html editing is needed.
  • Tmp does not need to be manually updated.
  • You don't have to have the same amount of upgrades in every row (and challs and buyables)
  • "unlocked" is optional for all Big Components (defaults to true).
  • All displays will update correctly.
  • Changelog is no longer in index.html at all.
  • Generation of Points now happens in the main game loop
  • Changed the reset functions to make keeping things easier
  • Renamed many things to increase readability (see the list in the link below)
  • Improved documentation based on feedback

v1.3.5:

  • Completely automated convertToDecimal, now you never have to worry about it again.
  • Branches can be defined without a color id. But they can also use hex values for color ids!
  • Created a tutorial for getting started with TMT and Github.
  • Page title is now automatically taken from mod name.

v1.3.4 - 10/8/20

  • Added "midsection" feature to add things to a tab's layout while still keeping the standard layout.
  • Fix for being able to buy more buyables than you should.

v1.3.3 - 10/7/20

  • Fix for the "order of operations" issue in temp.

v1.3.1 - 10/7/20

  • Added custom CSS and tooltips for Layer Nodes.
  • Added custom CSS for upgrades, buyables, milestones, and challenges, both individually and layer-wide.
  • You can now use HTML in most display text!
  • You can now make milestones unlockable and not display immediately.
  • Fixed importing saves, and issue with upgrades not appearing, and probably more.
  • Optional "name" layer feature, used in confirmation messages.

v1.3: Tabception... ception! - 10/7/20

  • Added subtabs! And also a Micro-tab component to let you make smaller subtab-esque areas anywhere.
  • Added a "custom" prestige formula type, and a number of features to support it.
  • Added points/sec display (can be disabled).
  • Added h-line, v-line and image-display components, plus components for individual upgrades, challenges, and milestones.
  • Added upgEffect, buyableEffect, and challEffect functions.
  • Added "hide completed challenges" setting.
  • Moved old changelogs to a separate place.
  • Fixed hasMilestone and incr_order.
  • Static layers now show the currency amount needed for the next one if you can buy max.

v1.2.4 - 10/4/20

  • Layers are now highlighted if you can buy an upgrade, and a new feature, shouldNotify, lets you make it highlight other ways.
  • Fixed bugs with hasUpg, hasChall, hasMilestone, and inChallenge.
  • Changed the sample code to use the above functions for convenience.

v1.2.3 - 10/3/20

  • Added a row component, which displays a list of objects in a row.
  • Added a column component, which displays a list of objects in a column (useful within a row).
  • Changed blanks to have a customizable width and height.

v1.2: This Changes Everything! - 10/3/20

  • Many layer features can now be static values or functions. (This made some formats change, which will break old things)
  • You can now use the "this" keyword, to make code easier to transfer when making new layers.
  • Also added "this.layer", which is the current layer's name, and works on existing subfeatures (e.g. individual upgrades) as well! Subfeatures also have "this.id".
  • Fixed a big save issue. If you use a unique mod id, your save will never conflict with other mods.
  • Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)
  • Added a few minor features, and updated the docs with new information.

v1.1.1:

  • You can define hotkeys directly from layer config.

v1.1: Enhanced Edition

  • Added "Buyables", which can function like Space Buildings or Enhancers.
  • Custom CSS can now be used on any component! Make the third argument an object with CSS parameters.
  • Lots of minor good things.

v1.0:

  • First release.
',79),n=[o];function s(r,d,h,u,c,m){return i(),a("div",null,n)}const p=e(t,[["render",s]]);export{b as __pageData,p as default}; diff --git a/assets/public_lit_changelog.md.07a3430c.lean.js b/assets/public_lit_changelog.md.07a3430c.lean.js new file mode 100644 index 000000000..44bf0a282 --- /dev/null +++ b/assets/public_lit_changelog.md.07a3430c.lean.js @@ -0,0 +1 @@ +import{_ as e,o as i,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"The Modding Tree changelog:","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/changelog.md","filePath":"public/lit/changelog.md","lastUpdated":1664930832000}'),t={name:"public/lit/changelog.md"},o=l("",79),n=[o];function s(r,d,h,u,c,m){return i(),a("div",null,n)}const p=e(t,[["render",s]]);export{b as __pageData,p as default}; diff --git a/assets/public_lit_docs_!general-info.md.a19e7dda.js b/assets/public_lit_docs_!general-info.md.a19e7dda.js new file mode 100644 index 000000000..3a290eccc --- /dev/null +++ b/assets/public_lit_docs_!general-info.md.a19e7dda.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/!general-info.md","filePath":"public/lit/docs/!general-info.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/!general-info.md"},r=o('

The-Modding-Tree

The main way to add content is through creating layers. You can either add a layer directly in the layers object in layerSupport.js, or declare it in another file and register it by calling addLayer(layername, layerdata). There is an example layer registration in layers.js showing the recommended method. It is just an example and can be freely deleted. You can also use it as a reference or a base for your own layers.

The first thing you need to do is fill out the modInfo object at the top of mod.js to set your mod's name, ID (a string), and other information. A unique modId will prevent your mod's saves from conflicting with other mods. Note that changing this after people have started playing will reset their saves.

Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to, for example to add new Vue components in v.js.

The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects, and must be treated differently. For example, you have to use new Decimal(x) to create a Decimal value instead of a plain number, and perform operations on them by calling functions. e.g, instead of x = x + y, use x = x.add(y). Keep in mind this also applies to comparison operators, which should be replaced with calling the .gt, .gte, .lt, .lte, .eq, and .neq functions. See the break_eternity.js docs for more details on working with Decimal values.

Almost all values can be either a constant value, or a dynamic value. Dynamic values are defined by putting a function that returns what the value should be at any given time.

All display text can use basic HTML elements (But you can't use most Vue features there).

While reading this documentation, the following key will be used when describing features:

  • No label: This is required and the game may crash if it isn't included.
  • sometimes required: This is may be required, depending on other things in the layer.
  • optional: You can leave this out if you don't intend to use that feature for the layer.
  • assigned automagically: This value will be set automatically and override any value you set.
  • deprecated: This feature is not recommended to be used anymore, and may be removed in future versions of TMT.

Table of Contents

General

  • Getting Started: Getting your own copy of the code set up with Github Desktop.
  • Main mod info: How to set up general things for your mod in mod.js.
  • Basic layer breakdown: Breaking down the components of a layer with minimal features.
  • Layer features: Explanations of all of the different properties that you can give a layer.
  • Custom Tab Layouts: An optional way to give your tabs a different layout. You can even create entirely new components to use.
  • Custom game layouts: You can get rid of the tree tab, add buttons and other things to the tree, or even customize the tab's layout like a layer tab.
  • Updating TMT: Using Github Desktop to update your mod's version of TMT.

Common components

  • Upgrades: How to create upgrades for a layer.
  • Milestones: How to create milestones for a layer.
  • Buyables: Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings.
  • Clickables: A more generalized variant of buyables, for any kind of thing that is sometimes clickable. Between these and Buyables, you can do just about anything.

Other components and features

  • Challenges: How to create challenges for a layer.
  • Bars: Display some information as a progress bar, gauge, or similar. They are highly customizable, and can be horizontal and vertical as well.
  • Subtabs and Microtabs: Create subtabs for your tabs, as well as "microtab" components that you can put inside the tabs. You can even use them to embed a layer inside another layer!
  • Achievements: How to create achievements for a layer (or for the whole game).
  • Infoboxes: Boxes containing text that can be shown or hidden.
  • Trees: Make your own trees. You can make non-layer button nodes too!
',16),i=[r];function s(l,d,h,c,u,m){return a(),t("div",null,i)}const b=e(n,[["render",s]]);export{y as __pageData,b as default}; diff --git a/assets/public_lit_docs_!general-info.md.a19e7dda.lean.js b/assets/public_lit_docs_!general-info.md.a19e7dda.lean.js new file mode 100644 index 000000000..368b1adb6 --- /dev/null +++ b/assets/public_lit_docs_!general-info.md.a19e7dda.lean.js @@ -0,0 +1 @@ +import{_ as e,o as a,c as t,Q as o}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"The-Modding-Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/!general-info.md","filePath":"public/lit/docs/!general-info.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/!general-info.md"},r=o("",16),i=[r];function s(l,d,h,c,u,m){return a(),t("div",null,i)}const b=e(n,[["render",s]]);export{y as __pageData,b as default}; diff --git a/assets/public_lit_docs_achievements.md.da2fc65b.js b/assets/public_lit_docs_achievements.md.da2fc65b.js new file mode 100644 index 000000000..213158226 --- /dev/null +++ b/assets/public_lit_docs_achievements.md.da2fc65b.js @@ -0,0 +1,17 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Achievements","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/achievements.md","filePath":"public/lit/docs/achievements.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/achievements.md"},o=t(`

Achievements

Achievements are awarded to the player when they meet a certain goal, and optionally give some benefit. Currently they are pretty basic, but additional features will be added later to help.

You can make global achievements by putting them in a side layer by making its row equal to "side" instead of a number.

Useful functions for dealing with achievements and implementing their effects:

  • hasAchievement(layer, id): determine if the player has the Achievement.
  • achievementEffect(layer, id): Returns the current effects of the achievement, if any.

Achievements should be formatted like this:

js
achievements: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}
achievements: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}

Each achievement should have an id where the first digit is the row and the second digit is the column.

Individual achievement can have these features:

  • name: optional. displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the achievement should be awarded.

  • tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML. Setting this to "" disables the tooltip.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.

  • unlocked(): optional. A function returning a bool to determine if the achievement is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the achievement is completed.

  • image: optional, puts the image from the given URL (relative or absolute) in the achievement

  • style: optional. Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • textStyle: optional. Applies CSS to the text, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.

  • goalTooltip: optional, deprecated. Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.

  • doneTooltip: optional, deprecated. Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.

Disable achievement popups by adding achievementsPopups: false to the layer.

`,11),l=[o];function i(p,r,c,h,d,u){return s(),a("div",null,l)}const v=e(n,[["render",i]]);export{y as __pageData,v as default}; diff --git a/assets/public_lit_docs_achievements.md.da2fc65b.lean.js b/assets/public_lit_docs_achievements.md.da2fc65b.lean.js new file mode 100644 index 000000000..2e55cc60d --- /dev/null +++ b/assets/public_lit_docs_achievements.md.da2fc65b.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Achievements","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/achievements.md","filePath":"public/lit/docs/achievements.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/achievements.md"},o=t("",11),l=[o];function i(p,r,c,h,d,u){return s(),a("div",null,l)}const v=e(n,[["render",i]]);export{y as __pageData,v as default}; diff --git a/assets/public_lit_docs_bars.md.12a2ea1f.js b/assets/public_lit_docs_bars.md.12a2ea1f.js new file mode 100644 index 000000000..a14a0e8f5 --- /dev/null +++ b/assets/public_lit_docs_bars.md.12a2ea1f.js @@ -0,0 +1,19 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Bars","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/bars.md","filePath":"public/lit/docs/bars.md","lastUpdated":1664930832000}'),o={name:"public/lit/docs/bars.md"},l=e(`

Bars

Bars let you display information in a more direct way. It can be a progress bar, health bar, capacity gauge, or anything else.

Bars are defined like other Big Features:

js
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}

Features:

  • direction: UP, DOWN, LEFT, or RIGHT (not strings). Determines the direction that the bar is filled as it progresses. RIGHT means from left to right.

  • width, height: The size in pixels of the bar, but as numbers (no "px" at the end).

  • progress(): A function that returns the portion of the bar that is filled, from "empty" at 0 to "full" at 1, updating automatically. (Nothing bad happens if the value goes out of these bounds, and it can be a number or Decimal)

  • display(): optional. A function that returns text to be displayed on top of the bar, can use HTML.

  • unlocked(): optional. A function returning a bool to determine if the bar is visible or not. Default is unlocked.

  • baseStyle, fillStyle, borderStyle, textStyle: Optional, Apply CSS to the unfilled portion, filled portion, border, and display text on the bar, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

`,6),t=[l];function p(r,i,c,y,E,d){return a(),n("div",null,t)}const b=s(o,[["render",p]]);export{u as __pageData,b as default}; diff --git a/assets/public_lit_docs_bars.md.12a2ea1f.lean.js b/assets/public_lit_docs_bars.md.12a2ea1f.lean.js new file mode 100644 index 000000000..1b5c6a727 --- /dev/null +++ b/assets/public_lit_docs_bars.md.12a2ea1f.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as e}from"./chunks/framework.1169fbc9.js";const u=JSON.parse('{"title":"Bars","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/bars.md","filePath":"public/lit/docs/bars.md","lastUpdated":1664930832000}'),o={name:"public/lit/docs/bars.md"},l=e("",6),t=[l];function p(r,i,c,y,E,d){return a(),n("div",null,t)}const b=s(o,[["render",p]]);export{u as __pageData,b as default}; diff --git a/assets/public_lit_docs_basic-layer-breakdown.md.537c8e8d.js b/assets/public_lit_docs_basic-layer-breakdown.md.537c8e8d.js new file mode 100644 index 000000000..0baa9abf7 --- /dev/null +++ b/assets/public_lit_docs_basic-layer-breakdown.md.537c8e8d.js @@ -0,0 +1,55 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Basic layer breakdown","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/basic-layer-breakdown.md","filePath":"public/lit/docs/basic-layer-breakdown.md","lastUpdated":1664930832000}'),o={name:"public/lit/docs/basic-layer-breakdown.md"},e=l(`

Basic layer breakdown

This is a very minimal layer with minimal features. Most things will require additional features.

js
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true }            // Returns a bool for if this layer's node should be visible in the tree.
+})
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true }            // Returns a bool for if this layer's node should be visible in the tree.
+})
`,3),p=[e];function t(r,c,y,i,E,u){return n(),a("div",null,p)}const F=s(o,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/public_lit_docs_basic-layer-breakdown.md.537c8e8d.lean.js b/assets/public_lit_docs_basic-layer-breakdown.md.537c8e8d.lean.js new file mode 100644 index 000000000..bdbbeabf3 --- /dev/null +++ b/assets/public_lit_docs_basic-layer-breakdown.md.537c8e8d.lean.js @@ -0,0 +1 @@ +import{_ as s,o as n,c as a,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Basic layer breakdown","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/basic-layer-breakdown.md","filePath":"public/lit/docs/basic-layer-breakdown.md","lastUpdated":1664930832000}'),o={name:"public/lit/docs/basic-layer-breakdown.md"},e=l("",3),p=[e];function t(r,c,y,i,E,u){return n(),a("div",null,p)}const F=s(o,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/public_lit_docs_buyables.md.59dff372.js b/assets/public_lit_docs_buyables.md.59dff372.js new file mode 100644 index 000000000..17ea357f0 --- /dev/null +++ b/assets/public_lit_docs_buyables.md.59dff372.js @@ -0,0 +1,29 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/buyables.md","filePath":"public/lit/docs/buyables.md","lastUpdated":1664930832000}'),o={name:"public/lit/docs/buyables.md"},e=l(`

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. If you set a respec function, the player can reset the purchases to get their currency back.

The amount of a buyable owned is a Decimal.

Useful functions for dealing with buyables and implementing their effects:

  • getBuyableAmount(layer, id): get the amount of the buyable the player has
  • setBuyableAmount(layer, id, amount): set the amount of the buyable the player has
  • buyableEffect(layer, id): Returns the current effects of the buyable, if any.

Buyables should be formatted like this:

js
buyables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        cost(x) { return new Decimal(1).mul(x || getBuyableAmt(this.layer, this.id)) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmt(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}
buyables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        cost(x) { return new Decimal(1).mul(x || getBuyableAmt(this.layer, this.id)) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmt(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th object, but needs to use "current amount" as a default value for x. (x is a Decimal). Can return an object if there are multiple currencies.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this buyable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the buyable is visible or not. Default is unlocked.

  • canAfford(): A function returning a bool to determine if you can buy one of the buyables.

  • buy(): A function that implements buying one of the buyable, including spending the currency.

  • buyMax(): optional. A function that implements buying as many of the buyable as possible.

  • style: optional. Applies CSS to this buyable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the buyable was stored under, for convenient access. The buyable in the example's id is 11.

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

  • sellOne/sellAll(): optional. Called when the button is pressed. The standard use would be to decrease/reset the amount of the buyable, and possibly return some currency to the player.

  • canSellOne/canSellAll(): optional. booleans determining whether or not to show the buttons. If "canSellOne/All" is absent but "sellOne/All" is present, the appropriate button will always show.

`,12),p=[e];function t(r,c,y,i,E,u){return a(),n("div",null,p)}const d=s(o,[["render",t]]);export{b as __pageData,d as default}; diff --git a/assets/public_lit_docs_buyables.md.59dff372.lean.js b/assets/public_lit_docs_buyables.md.59dff372.lean.js new file mode 100644 index 000000000..774e56501 --- /dev/null +++ b/assets/public_lit_docs_buyables.md.59dff372.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Buyables","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/buyables.md","filePath":"public/lit/docs/buyables.md","lastUpdated":1664930832000}'),o={name:"public/lit/docs/buyables.md"},e=l("",12),p=[e];function t(r,c,y,i,E,u){return a(),n("div",null,p)}const d=s(o,[["render",t]]);export{b as __pageData,d as default}; diff --git a/assets/public_lit_docs_challenges.md.cdc3d397.js b/assets/public_lit_docs_challenges.md.cdc3d397.js new file mode 100644 index 000000000..5d1eef34e --- /dev/null +++ b/assets/public_lit_docs_challenges.md.cdc3d397.js @@ -0,0 +1,21 @@ +import{_ as e,o as s,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Challenges","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/challenges.md","filePath":"public/lit/docs/challenges.md","lastUpdated":1664930832000}'),l={name:"public/lit/docs/challenges.md"},t=a(`

Challenges

Challenges can have fully customizable win conditions. Useful functions for dealing with Challenges and implementing their effects:

  • inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one).
  • hasChallenge(layer, id): determine if the player has completed the challenge.
  • challengeCompletions(layer, id): determine how many times the player completed the challenge.
  • challengeEffect(layer, id): Returns the current effects of the challenge, if any.

Challenges are stored in the following format:

js
challenges: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        goal: new Decimal(100),
+        etc
+    },
+    etc
+}
challenges: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        goal: new Decimal(100),
+        etc
+    },
+    etc
+}

Each challenge should have an id where the first digit is the row and the second digit is the column.

Individual Challenges can have these features:

  • name: Name of the challenge, can be a string or a function. Can use basic HTML.

  • challengeDescription: A description of what makes the challenge a challenge. You will need to implement these elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • goalDescription: A description of the win condition for the challenge. It can also be a function that returns updating text. Can use basic HTML. (Optional if using the old goal system)

  • canComplete(): A function that returns true if you meet the win condition for the challenge. Returning a number will allow bulk completing the challenge. (Optional if using the old goal system)

  • rewardDescription: A description of the reward's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • rewardEffect(): optional. A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.

  • rewardDisplay(): optional. A function that returns a display of the current effects of the reward with formatting. Default behavior is to just display the a number appropriately formatted.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the challenge. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the challenge is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the challenge is completed when previously incomplete.

  • countsAs: optional. If a challenge combines the effects of other challenges in this layer, you can use this. An array of challenge ids. The player is effectively in all of those challenges when in the current one.

  • completionLimit: optional. the amount of times you can complete this challenge. Default is 1 completion.

  • style: optional. Applies CSS to this challenge, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.

The old goal system uses these features:

  • goal: deprecated, A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.

  • currencyDisplayName: deprecated. the name to display for the currency for the goal

  • currencyInternalName: deprecated. the internal name for that currency

  • currencyLayer: deprecated. the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation(): deprecated. if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

`,10),o=[t];function i(p,c,r,h,u,y){return s(),n("div",null,o)}const f=e(l,[["render",i]]);export{d as __pageData,f as default}; diff --git a/assets/public_lit_docs_challenges.md.cdc3d397.lean.js b/assets/public_lit_docs_challenges.md.cdc3d397.lean.js new file mode 100644 index 000000000..5020ab361 --- /dev/null +++ b/assets/public_lit_docs_challenges.md.cdc3d397.lean.js @@ -0,0 +1 @@ +import{_ as e,o as s,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Challenges","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/challenges.md","filePath":"public/lit/docs/challenges.md","lastUpdated":1664930832000}'),l={name:"public/lit/docs/challenges.md"},t=a("",10),o=[t];function i(p,c,r,h,u,y){return s(),n("div",null,o)}const f=e(l,[["render",i]]);export{d as __pageData,f as default}; diff --git a/assets/public_lit_docs_clickables.md.e36de12e.js b/assets/public_lit_docs_clickables.md.e36de12e.js new file mode 100644 index 000000000..74defc9d9 --- /dev/null +++ b/assets/public_lit_docs_clickables.md.e36de12e.js @@ -0,0 +1,17 @@ +import{_ as s,o as a,c as e,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Clickables","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/clickables.md","filePath":"public/lit/docs/clickables.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/clickables.md"},t=l(`

Clickables

Clickables are any kind of thing that you can click for an effect. They're a more generalized version of Buyables.

DO NOT USE THESE TO MAKE THINGS THAT YOU CLICK REPEATEDLY FOR A BONUS BECAUSE THOSE ARE AWFUL.

There are several differences between the two. One is that a buyable's saved data is its amount as a Decimal, while Clickables store a "state" which can be a number or string, but not Decimal, array, or object). Buyables have a number of extra features which you can see on their page. Clickables also have a smaller default size.

Useful functions for dealing with achievements and implementing their effects:

  • getClickableState(layer, id): get the state of the clickable the player has
  • setClickableState(layer, id, state): set the state of the buyable the player has
  • clickableEffect(layer, id): Returns the current effects of the clickable, if any.

Clickables should be formatted like this:

js
clickables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}
clickables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this clickable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the clickable after the title, likely changing based on its state. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the clickable is visible or not. Default is unlocked.

  • canClick(): A function returning a bool to determine if you can click the clickable.

  • onClick(): A function that implements clicking one of the clickable.

  • style: optional. Applies CSS to this clickable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the clickable was stored under, for convenient access. The clickable in the example's id is 11.

You can also use these features on the clickables object to add a button above all the clickables, for implementing a respec button or similar.

  • masterButtonPress(): optional. If present, an additional button will appear above the clickables. Pressing it will call this function.

  • masterButtonText: optional. Text to display on the Master Button.

  • showMasterButton(): optional. A function determining whether or not to show the button. Defaults to true if absent.

`,12),o=[t];function p(c,i,r,u,h,y){return a(),e("div",null,o)}const b=s(n,[["render",p]]);export{d as __pageData,b as default}; diff --git a/assets/public_lit_docs_clickables.md.e36de12e.lean.js b/assets/public_lit_docs_clickables.md.e36de12e.lean.js new file mode 100644 index 000000000..0eaf6bd1d --- /dev/null +++ b/assets/public_lit_docs_clickables.md.e36de12e.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as e,Q as l}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Clickables","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/clickables.md","filePath":"public/lit/docs/clickables.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/clickables.md"},t=l("",12),o=[t];function p(c,i,r,u,h,y){return a(),e("div",null,o)}const b=s(n,[["render",p]]);export{d as __pageData,b as default}; diff --git a/assets/public_lit_docs_custom-tab-layouts.md.f908e848.js b/assets/public_lit_docs_custom-tab-layouts.md.f908e848.js new file mode 100644 index 000000000..1902b7f38 --- /dev/null +++ b/assets/public_lit_docs_custom-tab-layouts.md.f908e848.js @@ -0,0 +1,27 @@ +import{_ as s,o as a,c as o,Q as n}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Custom tab layouts","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/custom-tab-layouts.md","filePath":"public/lit/docs/custom-tab-layouts.md","lastUpdated":1664930832000}'),t={name:"public/lit/docs/custom-tab-layouts.md"},e=n(`

Custom tab layouts

Note: If you are using subtabs, tabFormat is used differently, but you still use the same format within each subtabs. See here for more on subtabs.

Custom tab layouts can be used to do basically anything in a tab window, especially combined with the "style" layer feature. The tabFormat feature is an array of things, like this:

js
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]

It is a list of components, which can be either just a name, or an array with arguments. If it's an array, the first item is the name of the component, the second is the data passed into it, and the third (optional) applies a CSS style to it with a "CSS object", where the keys are CSS attributes.

These are the existing components, but you can create more in components.js:

  • display-text: Displays some text (can use basic HTML). The argument is the text to display. It can also be a function that returns updating text.

  • raw-html: Displays some basic HTML, can also be a function.

  • blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions. If it's a single value (e.g. "20px"), that determines the height. If you have a pair of arguments, the first is width and the second is height.

  • row: Display a list of components horizontally. The argument is an array of components in the tab layout format.

  • column: Display a list of components vertically. The argument is an array of components in the tab layout format. This is useful to display columns within a row.

  • main-display: The text that displays the main currency for the layer and its effects.

  • resource-display: The text that displays the currency that this layer is based on, as well as the best and/or total values for this layer's prestige currency (if they are put in startData for this layer).

  • prestige-button: The argument is a string that the prestige button should say before the amount of currency you will gain. It can also be a function that returns updating text.

  • upgrades: The layer's upgrades. The argument is optional, and is a the list of rows this component should include, if it doesn't have all of them.

  • milestones, challenges, achievements: Display the upgrades, milestones, and challenges for a layer, as appropriate.

  • buyables, clickables: Display all of the buyables/clickables for this layer, as appropriate. The argument is optional and is the size of the boxes in pixels.

  • microtabs: Display a set of subtabs for an area. The argument is the name of the set of microtabs in the "microtabs" feature.

  • bar: Display a bar. The argument is the id of the bar to display.

  • infobox: Display an infobox. The argument is the id of the infobox to display.

  • tree: Displays a tree. The argument is an array of arrays containing the names of the nodes in the tree (first by row, then by column) See here for more information on tree layouts and nodes!

  • toggle: A toggle button that toggles a bool value. The data is a pair that identifies what bool to toggle, e.g. [layer, id]

The rest of the components are sub-components. They can be used just like other components, but are typically part of another component.

  • upgrade, milestone, challenge, buyable, clickable, achievement: An individual upgrade, challenge, etc. The argument is the id. This can be used if you want to have upgrades split up across multiple subtabs, for example.

  • respec-button, master-button: The respec and master buttons for buyables and clickables, respectively.

  • sell-one, sell-all: The "sell one" and "sell all" for buyables, respectively. The argument is the id of the buyable.

`,9),l=[e];function p(r,c,i,y,u,E){return a(),o("div",null,l)}const b=s(t,[["render",p]]);export{d as __pageData,b as default}; diff --git a/assets/public_lit_docs_custom-tab-layouts.md.f908e848.lean.js b/assets/public_lit_docs_custom-tab-layouts.md.f908e848.lean.js new file mode 100644 index 000000000..4f6bdbc19 --- /dev/null +++ b/assets/public_lit_docs_custom-tab-layouts.md.f908e848.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as o,Q as n}from"./chunks/framework.1169fbc9.js";const d=JSON.parse('{"title":"Custom tab layouts","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/custom-tab-layouts.md","filePath":"public/lit/docs/custom-tab-layouts.md","lastUpdated":1664930832000}'),t={name:"public/lit/docs/custom-tab-layouts.md"},e=n("",9),l=[e];function p(r,c,i,y,u,E){return a(),o("div",null,l)}const b=s(t,[["render",p]]);export{d as __pageData,b as default}; diff --git a/assets/public_lit_docs_getting-started.md.1c4d3077.js b/assets/public_lit_docs_getting-started.md.1c4d3077.js new file mode 100644 index 000000000..768674d54 --- /dev/null +++ b/assets/public_lit_docs_getting-started.md.1c4d3077.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/getting-started.md","filePath":"public/lit/docs/getting-started.md","lastUpdated":1664930832000}'),a={name:"public/lit/docs/getting-started.md"},n=i('

Getting started

Welcome to The Modding Tree!

Using the Modding Tree, at its simplest level, just requires getting a copy of it onto your computer. However, if you do it the right way, it will help in many ways.

Don't let the word "Github" scare you away. It's actually much easier to use than most people think, especially because most people use it the hard way. The key is Github Desktop, which lets you do everything you need to, without even touching the command line.

The benefits of using Github:

  • It makes it much, much easier to update The Modding Tree.
  • You can share your work without any extra effort using githack, or with a bit more effort, set up a github.io site.
  • It lets you undo changes to your code, and to have multiple versions of it.
  • It lets you collaborate with other people, if you want to.

Getting set up with Github Desktop, Visual Studio Code, and The Modding Tree:

  1. Install Github Desktop and Visual Studio Code.

  2. Make a Github account. You can handle this on your own.

  3. Log in on your browser, and go back to The Modding Tree page. At the top right, there should be a button that says "fork". Click on it, and then on your username. You now have your own fork, or copy, of The Modding Tree.

  4. Open Github Desktop and log in. Ignore everything else and choose "clone a repository". A "repository" is basically a "Github project", like The Modding Tree. "Cloning" is downloading a copy of the repository to your computer.

  5. Look for The Modding Tree in the list of repositiories (it should be the only one) and click "clone".

  6. Select that you're using it for your own purposes, and click continue. It will download the files and handle everything.

Using your repository

  1. Click on "show in explorer/finder" to the right, and then open the index.html file in the folder. The page should open up on your browser. This will let you view and test your project locally!

  2. To edit your project, click "open in VSCode" in Github Desktop.

  3. Open mod.js in VSCode, and look at the top part where it has a "modInfo" object. Fill in your mod's name to whatever you want, and change the id as well. (It can be any string value, and it's used to determine where the savefile is. Make it something that's probably unique, and don't change it again later or else it'll effectively wipe existing saves)

  4. Save mod.js, and then reload index.html in your browser. The title on the tab, as well as on the info page, will now be updated! You can reload the page every time you change the code to test it quickly and easily.

  5. Go back to Github Desktop. It's time to save your changes into the git system by making a "commit". This basically saves your work and creates a snapshot of what your code looks like at this moment, allowing you to look back at it later.

  6. At the bottom right corner, add a summary of your changes, and then click "commit to master".

  7. Finally, at the top middle, click "push origin" to push your changes out onto the online repository.

  8. You can view your project on line, or share it with others, by going to https://raw.githack.com/[YOUR-GITHUB-USERNAME]/The-Modding-Tree/master/index.html

And now, you have successfully used Github! You can look at the documentation to see how The Modding Tree's system works and to make your mod a reality.

',11),r=[n];function s(l,h,u,d,p,c){return t(),o("div",null,r)}const m=e(a,[["render",s]]);export{y as __pageData,m as default}; diff --git a/assets/public_lit_docs_getting-started.md.1c4d3077.lean.js b/assets/public_lit_docs_getting-started.md.1c4d3077.lean.js new file mode 100644 index 000000000..2e7478d8e --- /dev/null +++ b/assets/public_lit_docs_getting-started.md.1c4d3077.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as i}from"./chunks/framework.1169fbc9.js";const y=JSON.parse('{"title":"Getting started","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/getting-started.md","filePath":"public/lit/docs/getting-started.md","lastUpdated":1664930832000}'),a={name:"public/lit/docs/getting-started.md"},n=i("",11),r=[n];function s(l,h,u,d,p,c){return t(),o("div",null,r)}const m=e(a,[["render",s]]);export{y as __pageData,m as default}; diff --git a/assets/public_lit_docs_infoboxes.md.fb00fba0.js b/assets/public_lit_docs_infoboxes.md.fb00fba0.js new file mode 100644 index 000000000..37a86698a --- /dev/null +++ b/assets/public_lit_docs_infoboxes.md.fb00fba0.js @@ -0,0 +1,15 @@ +import{_ as s,o,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Infoboxes","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/infoboxes.md","filePath":"public/lit/docs/infoboxes.md","lastUpdated":1664930832000}'),e={name:"public/lit/docs/infoboxes.md"},t=n(`

Infoboxes

Infoboxes are good for displaying "lore", or story elements, as well as for explaining complicated things.

In the default tab layout, the first infobox will be displayed at the very top of the tab.

Infoboxes are defined like other Big Features:

js
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}

Features:

  • title: The text displayed above the main box. Can be a function to be dynamic, and can use basic HTML.

  • body: The text displayed inside the box. Can be a function to be dynamic, and can use basic HTML.

  • style, titleStyle, bodyStyle: optional. Apply CSS to the infobox, or to the title button or body of the infobox, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a bool to determine if the infobox is visible or not. Default is unlocked.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The infobox in the example's id is "lore".

`,7),l=[t];function p(i,r,c,y,d,E){return o(),a("div",null,l)}const h=s(e,[["render",p]]);export{b as __pageData,h as default}; diff --git a/assets/public_lit_docs_infoboxes.md.fb00fba0.lean.js b/assets/public_lit_docs_infoboxes.md.fb00fba0.lean.js new file mode 100644 index 000000000..872a5f3e3 --- /dev/null +++ b/assets/public_lit_docs_infoboxes.md.fb00fba0.lean.js @@ -0,0 +1 @@ +import{_ as s,o,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const b=JSON.parse('{"title":"Infoboxes","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/infoboxes.md","filePath":"public/lit/docs/infoboxes.md","lastUpdated":1664930832000}'),e={name:"public/lit/docs/infoboxes.md"},t=n("",7),l=[t];function p(i,r,c,y,d,E){return o(),a("div",null,l)}const h=s(e,[["render",p]]);export{b as __pageData,h as default}; diff --git a/assets/public_lit_docs_layer-features.md.107a6243.js b/assets/public_lit_docs_layer-features.md.107a6243.js new file mode 100644 index 000000000..73af9186e --- /dev/null +++ b/assets/public_lit_docs_layer-features.md.107a6243.js @@ -0,0 +1,19 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"Layer Features","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/layer-features.md","filePath":"public/lit/docs/layer-features.md","lastUpdated":1664930832000}'),s={name:"public/lit/docs/layer-features.md"},n=o(`

Layer Features

This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.

You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.

Layer Definition features

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar to access the saved value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.

  • name: optional. used in reset confirmations (and the default infobox title). If absent, it just uses the layer's id.

  • startData(): A function to return the default save data for this layer. Add any variables you have to it. Make sure to use Decimal values rather than normal numbers.

    Standard values: - Required: - unlocked: a bool determining if this layer is unlocked or not - points: a Decimal, the main currency for the layer - Optional: - total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here. - best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here. - unlockOrder: used to keep track of relevant layers unlocked before this one. - resetTime: A number, time since this layer was last prestiged (or reset by another layer)

  • color: A color associated with this layer, used in many places. (A string in hex format with a #)

  • row: The row of the layer, starting at 0. This affects where the node appears on the standard tree, and which resets affect the layer.

    Using "side" instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements and statistics). Side layers are not affected by resets unless you add a doReset to them.

  • displayRow: OVERRIDE Changes where the layer node appears without changing where it is in the reset order.

  • resource: Name of the main currency you gain by resetting on this layer.

  • effect(): optional. A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. You will also have to implement the effect where it is applied.

  • effectDescription: optional. A function that returns a description of this effect. If the text stays constant, it can just be a string.

  • layerShown(): optional, A function returning a bool which determines if this layer's node should be visible on the tree. It can also return "ghost", which will hide the layer, but its node will still take up space in the tree. Defaults to true.

  • hotkeys: optional. An array containing information on any hotkeys associated with this layer:

    js
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") }
    +    }
    +]
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") }
    +    }
    +]
  • style: optional. a "CSS object" where the keys are CSS attributes, containing any CSS that should affect this layer's entire tab.

  • tabFormat: optional. use this if you want to add extra things to your tab or change the layout. See here for more info.

  • midsection: optional, an alternative to tabFormat, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)

Big features (all optional)

  • upgrades: A grid of one-time purchases which can have unique upgrade conditions, currency costs, and bonuses. See here for more info.

  • milestones: A list of bonuses gained upon reaching certain thresholds of a resource. Often used for automation/QOL. See here for more info.

  • challenges: The player can enter challenges, which make the game harder. If they reach a goal and beat the challenge, they recieve a bonus. See here for more info.

  • buyables: Effectively upgrades that can be bought multiple times, and are optionally respeccable. Many uses. See here for more info.

  • clickables: Extremely versatile and generalized buttons which can only be clicked sometimes. See here for more info.

  • microtabs: An area that functions like a set of subtabs, with buttons at the top changing the content within. (Advanced) See here for more info.

  • bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be vertical as well. See here for more info.

  • achievements: Kind of like milestones, but with a different display style and some other differences. Extra features are on the way at a later date! See here for more info.

  • infoboxes: Displays some text in a box that can be shown or hidden. See here for more info.

  • achievementPopups, milestonePopups: optional, If false, disables popup message when you get the achievement/milestone. True by default.

Prestige formula features

  • type: optional. Determines which prestige formula you use. Defaults to "none".

    • "normal": The amount of currency you gain is independent of its current amount (like Prestige). The formula before bonuses is based on baseResource^exponent
    • "static": The cost is dependent on your total after reset. The formula before bonuses is based on base^(x^exponent)
    • "custom": You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom)
    • "none": This layer does not prestige, and therefore does not need any of the other features in this section.
  • baseResource: The name of the resource that determines how much of the main currency you gain on reset.

  • baseAmount(): A function that gets the current value of the base resource.

  • requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).

  • exponent: Used as described above.

  • base: sometimes required. required for "static" layers, used as described above. If absent, defaults to 2. Must be greater than 1.

  • roundUpCost: optional. a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a "static" currency.)

  • gainMult(), gainExp(): optional. Functions that calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in any bonuses here.

  • softcap, softcapPower: optional. For normal layers, gain beyond [softcap] points is put to the [softcapPower]th power Default for softcap is e1e7, and for power is 0.5.

  • canBuyMax(): sometimes required. required for static layers, function used to determine if buying max is permitted.

  • onPrestige(gain): optional. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.

  • resetDescription: optional. Use this to replace "Reset for " on the Prestige button with something else.

  • prestigeButtonText(): sometimes required. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.

  • passiveGeneration(): optional, returns a regular number. You automatically generate your gain times this number every second (does nothing if absent) This is good for automating Normal layers.

  • autoPrestige(): optional, returns a boolean, if true, the layer will always automatically do a prestige if it can. This is good for automating Static layers.

Tree/node features

  • symbol: optional. The text that appears on this layer's node. Default is the layer id with the first letter capitalized.

  • image: override. The url (local or global) of an image that goes on the node. (Overrides symbol)

  • position: optional. Determines the horizontal position of the layer in its row in a standard tree. By default, it uses the layer id, and layers are sorted in alphabetical order.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this layer's node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree. If the value is "", the tooltip will be disabled.

Other features

  • doReset(resettingLayer): optional. Is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. doReset is always called for side layers, but for these the default behavior is to reset nothing.

    If you want to keep things, determine what to keep based on resettingLayer, milestones, and such, then call layerDataReset(layer, keep), where layer is this layer, and keep is an array of the names of things to keep. It can include things like "points", "best", "total" (for this layer's prestige currency), "upgrades", any unique variables like "generatorPower", etc. If you want to only keep specific upgrades or something like that, save them in a separate variable, then call layerDataReset, and then set player[this.layer].upgrades to the saved upgrades.

  • update(diff): optional. This function is called every game tick. Use it for any passive resource production or time-based things. diff is the time since the last tick.

  • autoUpgrade: optional, a boolean value, if true, the game will attempt to buy this layer's upgrades every tick. Defaults to false.

  • automate(): optional. This function is called every game tick, after production. Use it to activate automation things that aren't otherwise supported.

  • resetsNothing: optional. Returns true if this layer shouldn't trigger any resets when you prestige.

  • increaseUnlockOrder: optional. An array of layer ids. When this layer is unlocked for the first time, the unlockOrder value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.

  • shouldNotify: optional. A function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.

  • componentStyles: optional. An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:

js
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}

Custom Prestige type

(All of these can also be used by other prestige types)

  • getResetGain(): mostly for custom prestige type. Returns how many points you should get if you reset now. You can call getResetGain(this.layer, useType = "static") or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer).

  • getNextAt(canMax=false): mostly for custom prestige type. Returns how many of the base currency you need to get to the next point. canMax is an optional variable used with Static-ish layers to differentiate between if it's looking for the first point you can reset at, or the requirement for any gain at all (Supporting both is good). You can also call getNextAt(this.layer, canMax=false, useType = "static") or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer).

  • canReset(): mostly for custom prestige type. Return true only if you have the resources required to do a prestige here.

  • prestigeNotify(): mostly for custom prestige types, returns true if this layer should be subtly highlighted to indicate you can prestige for a meaningful gain.

`,19),r=[n];function l(i,p,c,u,h,d){return t(),a("div",null,r)}const g=e(s,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/public_lit_docs_layer-features.md.107a6243.lean.js b/assets/public_lit_docs_layer-features.md.107a6243.lean.js new file mode 100644 index 000000000..d37afe6c2 --- /dev/null +++ b/assets/public_lit_docs_layer-features.md.107a6243.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as a,Q as o}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"Layer Features","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/layer-features.md","filePath":"public/lit/docs/layer-features.md","lastUpdated":1664930832000}'),s={name:"public/lit/docs/layer-features.md"},n=o("",19),r=[n];function l(i,p,c,u,h,d){return t(),a("div",null,r)}const g=e(s,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/public_lit_docs_main-mod-info.md.8b9794d9.js b/assets/public_lit_docs_main-mod-info.md.8b9794d9.js new file mode 100644 index 000000000..733a57cc9 --- /dev/null +++ b/assets/public_lit_docs_main-mod-info.md.8b9794d9.js @@ -0,0 +1,9 @@ +import{_ as s,o as e,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"mod.js","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/main-mod-info.md","filePath":"public/lit/docs/main-mod-info.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/main-mod-info.md"},o=t(`

mod.js

All of the non-layer code and data that you're likely to edit is here in mod.js! Everything in mod.js will not be altered by updates, besides the addition of new things.

Here's a breakdown of what's in it:

  • modInfo is where most of the basic configuration for the mod is. It contains:

    • name: The name of your mod. (a string)

    • id: The id for your mod, a unique string that is used to determine savefile location. Setting it is important!

    • author: The name of the author, displayed in the info tab.

    • pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)

    • discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it.

      "discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.

    • offlineLimit: The maximum amount of offline time that the player can accumulate, in hours. Any extra time is lost. (a number)

      This is useful because most of these mods are fast-paced enough that too much offline time ruins the balance, such as the time in between updates. That is why I suggest developers disable offline time on their own savefile.

    • initialStartPoints: A Decimal for the amount of points a new player should start with.

  • VERSION is used to describe the current version of your mod. It contains:

    • num: The mod's version number, displayed at the top right of the tree tab.
    • name: The version's name, displayed alongside the number in the info tab.
  • changelog is the HTML displayed in the changelog tab.

  • doNotCallTheseFunctionsEveryTick is very important. TMT calls every function anywhere in "layers" every tick to store the result, unless specifically told not to. Functions that have are used to do an action need to be identified. "Official" functions (those in the documentation) are all fine, but if you make any new ones, add their names to this array.

js
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
  • getStartPoints(): A function to determine the amount of points the player starts with after a reset. (returns a Decimal value)

  • canGenPoints(): A function returning a boolean for if points should be generated. Use this if you want an upgrade to unlock generating points.

  • getPointGen(): A function that calculates your points per second. Anything that affects your point gain should go into the calculation here.

  • addedPlayerData(): A function that returns any non-layer-related data that you want to be added to the save data and "player" object.

js
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
  • displayThings: An array of functions used to display extra things at the top of the tree tab. Each function returns a string, which is a line to display (with basic HTML support). If a function returns nothing, nothing is displayed (and it doesn't take up a line).

  • isEndgame(): A function to determine if the player has reached the end of the game, at which point the "you win!" screen appears.

Less important things beyond this point!

  • maxTickLength(): Returns the maximum tick length, in milliseconds. Only really useful if you have something that reduces over time, which long ticks mess up (usually a challenge).
`,10),l=[o];function i(p,r,c,d,u,h){return e(),a("div",null,l)}const m=s(n,[["render",i]]);export{f as __pageData,m as default}; diff --git a/assets/public_lit_docs_main-mod-info.md.8b9794d9.lean.js b/assets/public_lit_docs_main-mod-info.md.8b9794d9.lean.js new file mode 100644 index 000000000..aa15b3427 --- /dev/null +++ b/assets/public_lit_docs_main-mod-info.md.8b9794d9.lean.js @@ -0,0 +1 @@ +import{_ as s,o as e,c as a,Q as t}from"./chunks/framework.1169fbc9.js";const f=JSON.parse('{"title":"mod.js","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/main-mod-info.md","filePath":"public/lit/docs/main-mod-info.md","lastUpdated":1664930832000}'),n={name:"public/lit/docs/main-mod-info.md"},o=t("",10),l=[o];function i(p,r,c,d,u,h){return e(),a("div",null,l)}const m=s(n,[["render",i]]);export{f as __pageData,m as default}; diff --git a/assets/public_lit_docs_milestones.md.65084c13.js b/assets/public_lit_docs_milestones.md.65084c13.js new file mode 100644 index 000000000..fe5c73265 --- /dev/null +++ b/assets/public_lit_docs_milestones.md.65084c13.js @@ -0,0 +1,15 @@ +import{_ as s,o as e,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Milestones","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/milestones.md","filePath":"public/lit/docs/milestones.md","lastUpdated":1664930832000}'),t={name:"public/lit/docs/milestones.md"},o=a(`

Milestones

Milestones are awarded to the player when they meet a certain goal, and give some benefit. Milestones should be formatted like this:

js
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}

You can use hasMilestone(layer, id) to determine if the player has a given milestone

Milestone features:

  • requirementDescription: A string describing the requirement for unlocking this milestone. Suggestion: Use a "total". It can also be a function that returns updating text. Can use basic HTML.

  • effectDescription: A string describing the reward for having the milestone. You will have to implement the reward elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the milestone should be awarded.

  • toggles: optional. Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

    Tip: Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.

  • style: optional. Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the milestone was stored under, for convenient access. The milestone in the example's id is 0.

Disaable milestone popups by adding milestonePopups: false to the layer.

`,7),l=[o];function p(i,r,c,u,d,h){return e(),n("div",null,l)}const g=s(t,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/public_lit_docs_milestones.md.65084c13.lean.js b/assets/public_lit_docs_milestones.md.65084c13.lean.js new file mode 100644 index 000000000..b4d344a9b --- /dev/null +++ b/assets/public_lit_docs_milestones.md.65084c13.lean.js @@ -0,0 +1 @@ +import{_ as s,o as e,c as n,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Milestones","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/milestones.md","filePath":"public/lit/docs/milestones.md","lastUpdated":1664930832000}'),t={name:"public/lit/docs/milestones.md"},o=a("",7),l=[o];function p(i,r,c,u,d,h){return e(),n("div",null,l)}const g=s(t,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/public_lit_docs_subtabs-and-microtabs.md.9c5c6883.js b/assets/public_lit_docs_subtabs-and-microtabs.md.9c5c6883.js new file mode 100644 index 000000000..d6cc4877b --- /dev/null +++ b/assets/public_lit_docs_subtabs-and-microtabs.md.9c5c6883.js @@ -0,0 +1,49 @@ +import{_ as s,o as a,c as n,Q as t}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Subtabs and Microtabs","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/subtabs-and-microtabs.md","filePath":"public/lit/docs/subtabs-and-microtabs.md","lastUpdated":1664930832000}'),e={name:"public/lit/docs/subtabs-and-microtabs.md"},o=t(`

Subtabs and Microtabs

Subtabs are separate sections of a tab that you can view by selecting one at the top of the tab. Microtabs are smaller areas that function in much the same way. You can also embed layers inside of subtabs/microtabs.

Subtabs are defined by using the tab format like this, where each element of tabFormat is given the name of that subtab:

js
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}

Microtabs are defined similarly, and use the same features, but are defined in the "microtabs" feature. Each entry is a group of tabs which will appear in a microtabs component. The first set, "stuff", has 2 tabs, and the second, "otherStuff", has none.

js
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}

Normal subtabs and microtab subtabs both use the same features:

Features:

  • content: The tab layout code for the subtab, in the tab layout format.

  • style: optional. Applies CSS to the whole subtab when switched to, in the form of an "CSS Object", where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • buttonStyle: optional. A CSS object, which affects the appearance of the button for that subtab.

  • unlocked(): optional. a function to determine if the button for this subtab should be visible. By default, a subtab is always unlocked. You can't use the "this" keyword in this function.

  • shouldNotify(): optional, if true, the tab button will be highlighted to notify the player that there is something there.

  • embedLayer: SIGNIFICANT, the id of another layer. If you have this, it will override "content", "style" and "shouldNotify", instead displaying the entire layer in the subtab.

`,9),l=[o];function p(c,r,i,E,b,u){return a(),n("div",null,l)}const d=s(e,[["render",p]]);export{h as __pageData,d as default}; diff --git a/assets/public_lit_docs_subtabs-and-microtabs.md.9c5c6883.lean.js b/assets/public_lit_docs_subtabs-and-microtabs.md.9c5c6883.lean.js new file mode 100644 index 000000000..888311959 --- /dev/null +++ b/assets/public_lit_docs_subtabs-and-microtabs.md.9c5c6883.lean.js @@ -0,0 +1 @@ +import{_ as s,o as a,c as n,Q as t}from"./chunks/framework.1169fbc9.js";const h=JSON.parse('{"title":"Subtabs and Microtabs","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/subtabs-and-microtabs.md","filePath":"public/lit/docs/subtabs-and-microtabs.md","lastUpdated":1664930832000}'),e={name:"public/lit/docs/subtabs-and-microtabs.md"},o=t("",9),l=[o];function p(c,r,i,E,b,u){return a(),n("div",null,l)}const d=s(e,[["render",p]]);export{h as __pageData,d as default}; diff --git a/assets/public_lit_docs_trees-and-tree-customization.md.5cb2e22e.js b/assets/public_lit_docs_trees-and-tree-customization.md.5cb2e22e.js new file mode 100644 index 000000000..bc837b23f --- /dev/null +++ b/assets/public_lit_docs_trees-and-tree-customization.md.5cb2e22e.js @@ -0,0 +1,5 @@ +import{_ as e,o as t,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Trees and tree customization","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/trees-and-tree-customization.md","filePath":"public/lit/docs/trees-and-tree-customization.md","lastUpdated":1664930832000}'),s={name:"public/lit/docs/trees-and-tree-customization.md"},n=a(`

Trees and tree customization

If you want to have something beyond the standard tree on the left tab, you can do that in tree.js. You can change the layout of the tree, including making non-layer nodes, change it into something other than a tree, or hide the left tab altogether. This also introduces the "tree" component, which can be used in your layers as well.

layoutInfo

The most important part is layoutInfo, containing:

  • startTab: The id of the default tab to show on the left at the start.
  • showTree: True if the tree tab should be shown at the start of the game. (The other tab will fill the whole page)
  • treeLayout: If present, overrides the tree layout and places nodes as you describe instead (explained in the next section).

Additionally, if you want the main layout to not be a tree, you can edit the "tree-tab" layer at the bottom of tree.js to modify it just like a normal layer's tab. You can even switch between left tabs, using showNavTab(layer) to make that layer appear on the left.

Trees

The tree component is defined as an array of arrays of names of layers or nodes to show in the tree. They work just like layers/ nodes in the main tree (but branches between nodes will only work on the first node if you have duplicates.)

Here is an example tree:

js
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]

Nodes

Nodes are non-layer buttons that can go in trees. They are defined similarly to layers, but with addNode instead of addLayer.

Features:

  • color: optional, The node's color. (A string in hex format with a #)

  • symbol: optional The text on the button (The id capitalized by default)

  • canClick(): Returns true if the player can click the node. ()

  • onClick(): The function called when the node is clicked.

  • layerShown(): optional, A function returning a bool which determines if this node should be visible. It can also return "ghost", which will hide the layer, but its node will still take up space in its tree.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this node to all of the nodes in the list. Alternatively, an entry in the array can be a 2-element array consisting of the id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree.

  • row: optional, the row that this node appears in (for the default tree).

  • position: optional, Determines the horizontal position of the layer in its row in a default tree. By default, it uses the id, and layers/nodes are sorted in alphabetical order.

`,14),l=[n];function r(i,p,c,h,u,d){return t(),o("div",null,l)}const f=e(s,[["render",r]]);export{E as __pageData,f as default}; diff --git a/assets/public_lit_docs_trees-and-tree-customization.md.5cb2e22e.lean.js b/assets/public_lit_docs_trees-and-tree-customization.md.5cb2e22e.lean.js new file mode 100644 index 000000000..a83de63a4 --- /dev/null +++ b/assets/public_lit_docs_trees-and-tree-customization.md.5cb2e22e.lean.js @@ -0,0 +1 @@ +import{_ as e,o as t,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const E=JSON.parse('{"title":"Trees and tree customization","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/trees-and-tree-customization.md","filePath":"public/lit/docs/trees-and-tree-customization.md","lastUpdated":1664930832000}'),s={name:"public/lit/docs/trees-and-tree-customization.md"},n=a("",14),l=[n];function r(i,p,c,h,u,d){return t(),o("div",null,l)}const f=e(s,[["render",r]]);export{E as __pageData,f as default}; diff --git a/assets/public_lit_docs_updating-tmt.md.81e44c79.js b/assets/public_lit_docs_updating-tmt.md.81e44c79.js new file mode 100644 index 000000000..e40b21301 --- /dev/null +++ b/assets/public_lit_docs_updating-tmt.md.81e44c79.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Updating The Modding Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/updating-tmt.md","filePath":"public/lit/docs/updating-tmt.md","lastUpdated":1664930832000}'),i={name:"public/lit/docs/updating-tmt.md"},n=a('

Updating The Modding Tree

This tutorial assumes that you have used the Getting Started Tutorial, and are using Github Desktop and VSCode for your mod.

Here's what you have to do when there's a TMT update:

  1. Look at the changelog. It will warn you if the update will break anything or require any changes. Decide if you want to try to update.

  2. Open Github Desktop, and at the top middle, click "fetch origin". This will make Github Desktop get information about the update.

  3. Click where it says "current branch: master" at the top middle, and at the bottom of the thing that appears, click "choose a branch to merge into master".

  4. Select upstream/master. It will likely say there are conflicts, but you have tools to resolve them. Click "Merge upstream/master into master".

  5. A conflict happens when the things you're trying to merge have both made changes in the same place. Click "open in Visual Studio Code" next to the first file.

  6. Scroll down through the file, and look for the parts highlighted in red and green. One of these is your code, and the other is some code that will be modified by the update. Do your best to try to edit things to keep the updated changes, but keep your content.

  7. Continue to do this for all remaining changes.

  8. Do any other changes required by the update, run the game, fix issues, etc.

',4),r=[n];function d(h,s,l,p,u,c){return e(),o("div",null,r)}const _=t(i,[["render",d]]);export{m as __pageData,_ as default}; diff --git a/assets/public_lit_docs_updating-tmt.md.81e44c79.lean.js b/assets/public_lit_docs_updating-tmt.md.81e44c79.lean.js new file mode 100644 index 000000000..8be964caf --- /dev/null +++ b/assets/public_lit_docs_updating-tmt.md.81e44c79.lean.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as o,Q as a}from"./chunks/framework.1169fbc9.js";const m=JSON.parse('{"title":"Updating The Modding Tree","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/updating-tmt.md","filePath":"public/lit/docs/updating-tmt.md","lastUpdated":1664930832000}'),i={name:"public/lit/docs/updating-tmt.md"},n=a("",4),r=[n];function d(h,s,l,p,u,c){return e(),o("div",null,r)}const _=t(i,[["render",d]]);export{m as __pageData,_ as default}; diff --git a/assets/public_lit_docs_upgrades.md.02ce1421.js b/assets/public_lit_docs_upgrades.md.02ce1421.js new file mode 100644 index 000000000..ac96f7e42 --- /dev/null +++ b/assets/public_lit_docs_upgrades.md.02ce1421.js @@ -0,0 +1,19 @@ +import{_ as s,o as e,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Upgrades","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/upgrades.md","filePath":"public/lit/docs/upgrades.md","lastUpdated":1664930832000}'),t={name:"public/lit/docs/upgrades.md"},o=n(`

Upgrades

Useful functions for dealing with Upgrades and implementing their effects:

  • hasUpgrade(layer, id): determine if the player has the upgrade
  • upgradeEffect(layer, id): Returns the current effects of the upgrade, if any
  • buyUpgrade(layer, id): Buys an upgrade directly (if affordable)

Hint: Basic point gain is calculated in mod.js's "getPointGen" function.

Upgrades are stored in the following format:

js
upgrades: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}
upgrades: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}

Each upgrade should have an id where the first digit is the row and the second digit is the column.

Individual upgrades can have these features:

  • title: optional. Displayed at the top in a larger font. It can also be a function that returns updating text. Can use basic HTML.

  • description: A description of the upgrade's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.

  • effectDisplay(): optional. A function that returns a display of the current effects of the upgrade with formatting. Default displays nothing. Can use basic HTML.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the upgrade. Can use basic HTML.

  • cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.

  • unlocked(): optional. A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.

  • onPurchase(): optional. This function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".

  • style: optional. Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the upgrade was stored under, for convenient access. The upgrade in the example's id is 11.

By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):

  • currencyDisplayName: optional. The name to display for the currency for the upgrade.

  • currencyInternalName: optional. The internal name for that currency.

  • currencyLayer: optional. The internal name of the layer that currency is stored in. If it's not in a layer (like Points), omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional. If your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)

  • canAfford(): OVERRIDE, a function determining if you are able to buy the upgrade

  • pay(): OVERRIDE, a function that reduces your currencies when you buy the upgrade

`,13),l=[o];function p(r,i,c,u,d,y){return e(),a("div",null,l)}const f=s(t,[["render",p]]);export{g as __pageData,f as default}; diff --git a/assets/public_lit_docs_upgrades.md.02ce1421.lean.js b/assets/public_lit_docs_upgrades.md.02ce1421.lean.js new file mode 100644 index 000000000..f253d5af6 --- /dev/null +++ b/assets/public_lit_docs_upgrades.md.02ce1421.lean.js @@ -0,0 +1 @@ +import{_ as s,o as e,c as a,Q as n}from"./chunks/framework.1169fbc9.js";const g=JSON.parse('{"title":"Upgrades","description":"","frontmatter":{},"headers":[],"relativePath":"public/lit/docs/upgrades.md","filePath":"public/lit/docs/upgrades.md","lastUpdated":1664930832000}'),t={name:"public/lit/docs/upgrades.md"},o=n("",13),l=[o];function p(r,i,c,u,d,y){return e(),a("div",null,l)}const f=s(t,[["render",p]]);export{g as __pageData,f as default}; diff --git a/assets/sandsoftime.ba63f865.png b/assets/sandsoftime.ba63f865.png new file mode 100644 index 000000000..969321130 Binary files /dev/null and b/assets/sandsoftime.ba63f865.png differ diff --git a/assets/screenshot.3bf794a2.png b/assets/screenshot.3bf794a2.png new file mode 100644 index 000000000..5f7d3cf72 Binary files /dev/null and b/assets/screenshot.3bf794a2.png differ diff --git a/assets/screenshot.78830a30.png b/assets/screenshot.78830a30.png new file mode 100644 index 000000000..b198c465f Binary files /dev/null and b/assets/screenshot.78830a30.png differ diff --git a/assets/screenshot.f2631300.png b/assets/screenshot.f2631300.png new file mode 100644 index 000000000..bee7103ae Binary files /dev/null and b/assets/screenshot.f2631300.png differ diff --git a/assets/simulator.7ede7b83.jpg b/assets/simulator.7ede7b83.jpg new file mode 100644 index 000000000..1b2d192fa Binary files /dev/null and b/assets/simulator.7ede7b83.jpg differ diff --git a/assets/style.3ee67463.css b/assets/style.3ee67463.css new file mode 100644 index 000000000..42398a551 --- /dev/null +++ b/assets/style.3ee67463.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-gray-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-9613cc9f]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.vp-doc h1>.VPBadge[data-v-9613cc9f]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-9613cc9f]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-9613cc9f]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-9613cc9f],.vp-doc h5>.VPBadge[data-v-9613cc9f],.vp-doc h6>.VPBadge[data-v-9613cc9f]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-9613cc9f]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-9613cc9f]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-9613cc9f]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-9613cc9f]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-d0ee3533]{position:relative;z-index:1}.nested[data-v-d0ee3533]{padding-left:16px}.outline-link[data-v-d0ee3533]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-d0ee3533]:hover,.outline-link.active[data-v-d0ee3533]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-d0ee3533]{padding-left:13px}.VPDocAsideOutline[data-v-d330b1bb]{display:none}.VPDocAsideOutline.has-outline[data-v-d330b1bb]{display:block}.content[data-v-d330b1bb]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d330b1bb]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-d330b1bb]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-ef5dee53]{margin-top:64px}.edit-info[data-v-ef5dee53]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-ef5dee53]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-ef5dee53]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-ef5dee53]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-ef5dee53]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-ef5dee53]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-ef5dee53]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-ef5dee53]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-ef5dee53]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-ef5dee53]{margin-left:auto;text-align:right}.desc[data-v-ef5dee53]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-ef5dee53]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-eadfb36b]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-eadfb36b]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-eadfb36b]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-eadfb36b]{color:var(--vp-c-text-1)}.icon[data-v-eadfb36b]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-eadfb36b] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-eadfb36b]{transform:rotate(90deg)}.items[data-v-eadfb36b]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-6b87e69f]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:block}}@media (min-width: 768px){.VPDoc[data-v-6b87e69f]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-6b87e69f]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-6b87e69f]{display:flex;justify-content:center}.VPDoc .aside[data-v-6b87e69f]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{max-width:1104px}}.container[data-v-6b87e69f]{margin:0 auto;width:100%}.aside[data-v-6b87e69f]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-6b87e69f]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-6b87e69f]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-6b87e69f]::-webkit-scrollbar{display:none}.aside-curtain[data-v-6b87e69f]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-6b87e69f]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-6b87e69f]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-6b87e69f]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-6b87e69f]{order:1;margin:0;min-width:640px}}.content-container[data-v-6b87e69f]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-6b87e69f]{max-width:688px}.external-link-icon-enabled[data-v-6b87e69f] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-c1c5efc1]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-c1c5efc1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c1c5efc1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c1c5efc1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c1c5efc1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c1c5efc1]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-c1c5efc1]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-c1c5efc1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c1c5efc1]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-c1c5efc1]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-c1c5efc1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c1c5efc1]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-c1c5efc1]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-da5d1713]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-da5d1713]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-da5d1713]{flex-direction:row}}.main[data-v-da5d1713]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-da5d1713]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-da5d1713]{text-align:left}}@media (min-width: 960px){.main[data-v-da5d1713]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-da5d1713]{max-width:592px}}.name[data-v-da5d1713],.text[data-v-da5d1713]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0 auto}.name[data-v-da5d1713]{color:var(--vp-home-hero-name-color)}.clip[data-v-da5d1713]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-da5d1713],.text[data-v-da5d1713]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-da5d1713],.text[data-v-da5d1713]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0}}.tagline[data-v-da5d1713]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-da5d1713]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-da5d1713]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0}}.actions[data-v-da5d1713]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-da5d1713]{justify-content:center}@media (min-width: 640px){.actions[data-v-da5d1713]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-da5d1713]{justify-content:flex-start}}.action[data-v-da5d1713]{flex-shrink:0;padding:6px}.image[data-v-da5d1713]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-da5d1713]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-da5d1713]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-da5d1713]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-da5d1713]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-da5d1713]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-da5d1713]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-da5d1713]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-da5d1713]{width:320px;height:320px}}[data-v-da5d1713] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-da5d1713] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-da5d1713] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPContent[data-v-669faec9]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-669faec9]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-669faec9]{margin:0}@media (min-width: 960px){.VPContent[data-v-669faec9]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-669faec9]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-669faec9]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e03eb2e1]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e03eb2e1]{display:none}@media (min-width: 768px){.VPFooter[data-v-e03eb2e1]{padding:32px}}.container[data-v-e03eb2e1]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e03eb2e1],.copyright[data-v-e03eb2e1]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-1c15a60a]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-1c15a60a]{color:var(--vp-c-text-1)}.icon[data-v-1c15a60a]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-1c15a60a] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-1c15a60a]{transform:rotate(90deg)}.items[data-v-1c15a60a]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.header[data-v-1c15a60a]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-1c15a60a]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-1c15a60a]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-1c15a60a]{transition:all .2s ease-out}.flyout-leave-active[data-v-1c15a60a]{transition:all .15s ease-in}.flyout-enter-from[data-v-1c15a60a],.flyout-leave-to[data-v-1c15a60a]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-79c8c1df]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-79c8c1df]{position:fixed}.VPLocalNav.reached-top[data-v-79c8c1df]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-79c8c1df]{display:none}}.menu[data-v-79c8c1df]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-79c8c1df]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-79c8c1df]{padding:0 32px}}.menu-icon[data-v-79c8c1df]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-79c8c1df]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-79c8c1df]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-ce54a7d1]{opacity:1}.moon[data-v-ce54a7d1],.dark .sun[data-v-ce54a7d1]{opacity:0}.dark .moon[data-v-ce54a7d1]{opacity:1}.dark .VPSwitchAppearance[data-v-ce54a7d1] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-9c007e85]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-40855f84]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-40855f84]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-40855f84]{display:none}}.trans-title[data-v-40855f84]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-40855f84],.item.social-links[data-v-40855f84]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-40855f84]{min-width:176px}.appearance-action[data-v-40855f84]{margin-right:-2px}.social-links-list[data-v-40855f84]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-42ef59de]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-86d1bed8]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-86d1bed8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-86d1bed8]{border-bottom-color:var(--vp-c-divider)}}[data-v-86d1bed8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-a0fd61f4]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-a0fd61f4]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-a0fd61f4]{padding:0}.VPNavBar[data-v-a0fd61f4]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-a0fd61f4]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-a0fd61f4],.container>.content[data-v-a0fd61f4]{pointer-events:none}.container[data-v-a0fd61f4] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-a0fd61f4]{max-width:100%}}.title[data-v-a0fd61f4]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-a0fd61f4]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-a0fd61f4]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-a0fd61f4]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-a0fd61f4]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-a0fd61f4]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-a0fd61f4]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-a0fd61f4]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-a0fd61f4]{column-gap:.5rem}}.menu+.translations[data-v-a0fd61f4]:before,.menu+.appearance[data-v-a0fd61f4]:before,.menu+.social-links[data-v-a0fd61f4]:before,.translations+.appearance[data-v-a0fd61f4]:before,.appearance+.social-links[data-v-a0fd61f4]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-a0fd61f4]:before,.translations+.appearance[data-v-a0fd61f4]:before{margin-right:16px}.appearance+.social-links[data-v-a0fd61f4]:before{margin-left:16px}.social-links[data-v-a0fd61f4]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-a0fd61f4]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-a0fd61f4]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-a0fd61f4]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-add8f686]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-add8f686]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-1ecb84e7]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-1ecb84e7]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-1ecb84e7]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-1ecb84e7]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-1ecb84e7]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-1ecb84e7]{transform:rotate(45deg)}.button[data-v-1ecb84e7]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-1ecb84e7]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-1ecb84e7]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-1ecb84e7]:first-child{padding-top:0}.group+.group[data-v-1ecb84e7],.group+.item[data-v-1ecb84e7]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-b00e2fdd]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-b00e2fdd]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-b00e2fdd]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-b00e2fdd]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-b00e2fdd]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-b00e2fdd]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-b00e2fdd]{outline:0}.group+.group[data-v-b00e2fdd]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-b00e2fdd]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5a346dfe]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-28528e42]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-28528e42]{padding:32px}.VPTeamMembersItem.small .data[data-v-28528e42]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-28528e42]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-28528e42]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-28528e42]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-28528e42]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-28528e42]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-28528e42]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-28528e42]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-28528e42]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-28528e42]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-28528e42]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-28528e42]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-28528e42]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-28528e42]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-28528e42]{text-align:center}.avatar[data-v-28528e42]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-28528e42]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-28528e42]{margin:0;font-weight:600}.affiliation[data-v-28528e42]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-28528e42]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-28528e42]:hover{color:var(--vp-c-brand-1)}.desc[data-v-28528e42]{margin:0 auto}.desc[data-v-28528e42] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-28528e42]{display:flex;justify-content:center;height:56px}.sp-link[data-v-28528e42]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-28528e42]:hover,.sp .sp-link.link[data-v-28528e42]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-28528e42]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-font-family-mono: Roboto Mono, monospace}.main .name .clip{font-family:Pacifico,cursive} diff --git a/assets/system-architecture-600.254c8a7e.jpg b/assets/system-architecture-600.254c8a7e.jpg new file mode 100644 index 000000000..e482d25d5 Binary files /dev/null and b/assets/system-architecture-600.254c8a7e.jpg differ diff --git a/assets/unittests.e8833eb5.png b/assets/unittests.e8833eb5.png new file mode 100644 index 000000000..51717e77d Binary files /dev/null and b/assets/unittests.e8833eb5.png differ diff --git a/dream/assets/bat.png b/dream/assets/bat.png new file mode 100644 index 000000000..37b42b8db Binary files /dev/null and b/dream/assets/bat.png differ diff --git a/dream/assets/city.png b/dream/assets/city.png new file mode 100644 index 000000000..149c27c62 Binary files /dev/null and b/dream/assets/city.png differ diff --git a/dream/assets/default.png b/dream/assets/default.png new file mode 100644 index 000000000..1c58180ed Binary files /dev/null and b/dream/assets/default.png differ diff --git a/dream/assets/discord.png b/dream/assets/discord.png new file mode 100644 index 000000000..87aaee626 Binary files /dev/null and b/dream/assets/discord.png differ diff --git a/dream/assets/dollar.png b/dream/assets/dollar.png new file mode 100644 index 000000000..dcb4312d2 Binary files /dev/null and b/dream/assets/dollar.png differ diff --git a/dream/assets/gold.png b/dream/assets/gold.png new file mode 100644 index 000000000..6a9b32954 Binary files /dev/null and b/dream/assets/gold.png differ diff --git a/dream/assets/graveyard.png b/dream/assets/graveyard.png new file mode 100644 index 000000000..7a73ed681 Binary files /dev/null and b/dream/assets/graveyard.png differ diff --git a/dream/assets/hero.png b/dream/assets/hero.png new file mode 100644 index 000000000..5becf1c1d Binary files /dev/null and b/dream/assets/hero.png differ diff --git a/dream/assets/logo.png b/dream/assets/logo.png new file mode 100644 index 000000000..22c46fcbb Binary files /dev/null and b/dream/assets/logo.png differ diff --git a/dream/assets/potion.png b/dream/assets/potion.png new file mode 100644 index 000000000..7f542f109 Binary files /dev/null and b/dream/assets/potion.png differ diff --git a/dream/assets/savanna.png b/dream/assets/savanna.png new file mode 100644 index 000000000..cf2243883 Binary files /dev/null and b/dream/assets/savanna.png differ diff --git a/dream/assets/shield.png b/dream/assets/shield.png new file mode 100644 index 000000000..9945c7e44 Binary files /dev/null and b/dream/assets/shield.png differ diff --git a/dream/assets/skeleton.png b/dream/assets/skeleton.png new file mode 100644 index 000000000..06325ce2e Binary files /dev/null and b/dream/assets/skeleton.png differ diff --git a/dream/assets/slime.png b/dream/assets/slime.png new file mode 100644 index 000000000..86ee0197a Binary files /dev/null and b/dream/assets/slime.png differ diff --git a/dream/assets/witch.png b/dream/assets/witch.png new file mode 100644 index 000000000..edbd87b43 Binary files /dev/null and b/dream/assets/witch.png differ diff --git a/dream/css/app.102ce798.css b/dream/css/app.102ce798.css new file mode 100644 index 000000000..25dde7e0d --- /dev/null +++ b/dream/css/app.102ce798.css @@ -0,0 +1 @@ +.header[data-v-373683a0]{background:var(--raised-color);padding:8px;border-bottom:solid 2px var(--fg-color);position:fixed;top:0;left:0;right:0}h2[data-v-373683a0]{margin:0;padding-right:8px;margin-right:8px;display:inline}h2[data-v-373683a0]:not(:last-of-type){border-right:solid 2px var(--fg-color)}img[data-v-373683a0]{height:32px;float:right}.modal-mask[data-v-58320308]{position:fixed;z-index:9998;top:0;left:0;width:100%;min-width:640px;height:var(--height);background-color:rgba(0,0,0,.5);display:table;transition:opacity .3s ease}.modal-wrapper[data-v-58320308]{display:table-cell;vertical-align:middle}.modal-container[data-v-58320308]{width:300px;margin:0 auto;padding:20px 30px;background-color:var(--raised-color);border-radius:2px;box-shadow:0 2px 8px rgba(0,0,0,.33);transition:all .3s ease;font-family:Helvetica,Arial,sans-serif}.modal-header h3[data-v-58320308]{margin-top:0;color:var(--hi-color)}.modal-body[data-v-58320308]{margin:20px 0}.modal-footer[data-v-58320308]{min-height:24px}.modal-default-button[data-v-58320308]{float:right}.modal-enter[data-v-58320308],.modal-leave-active[data-v-58320308]{opacity:0}.modal-enter .modal-container[data-v-58320308],.modal-leave-active .modal-container[data-v-58320308]{transform:scale(1.1)}.town-container[data-v-f050f780]{flex-grow:1;transition-duration:2s;position:absolute;top:50px;bottom:0;left:0;right:0;background:var(--bg-color);z-index:1;min-width:640px;height:calc(var(--height) - 50px)}.town-enter[data-v-f050f780],.town-leave-active[data-v-f050f780]{opacity:0;filter:blur(100px)}.vue-pan-zoom-item[data-v-f050f780]{overflow:hidden;height:100%}.town[data-v-f050f780]{width:1000px;height:1000px;position:relative;transition-duration:0s}.town[data-v-f050f780]:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background:var(--hi-color);filter:blur(10px)}.background[data-v-f050f780]{top:500px;left:500px;font-size:160px;margin:0;text-align:center;cursor:default}.background[data-v-f050f780],.building[data-v-f050f780]{position:absolute;transform:translate(-50%,-50%);font-weight:900;color:var(--other-color)}.building[data-v-f050f780]{height:50px;font-size:xx-large;cursor:pointer;border-radius:50%;padding:8px;background:var(--fg-color)}.building.highlight[data-v-f050f780]{box-shadow:var(--bg-color) 0 0 8px 4px}.header[data-v-f050f780]{margin:-30px;margin-bottom:0;width:calc(100% + 60px)}.header-enemies[data-v-f050f780]{display:flex;position:absolute;top:-30px;height:120px;justify-content:center;align-items:center;width:100%}.header-enemies img[data-v-f050f780]{width:96px;height:96px;filter:drop-shadow(4px 4px 4px var(--fg-color))}.action[data-v-10e41e9b]{border-top:solid var(--bg-color) 0;height:0;box-sizing:border-box;background-size:cover;background-position:50%;position:relative;overflow:hidden}.tile.active .action[data-v-10e41e9b]{height:200px;border-top-width:10px}.action img[data-v-10e41e9b]{width:128px;height:128px}.left[data-v-10e41e9b]{left:30%}.left[data-v-10e41e9b],.right[data-v-10e41e9b]{position:absolute;top:50%;transform:translate(-50%,-50%);transition-duration:0s;display:inline-block}.right[data-v-10e41e9b]{left:70%}.tile:not(.active) .left[data-v-10e41e9b],.tile:not(.active) .right[data-v-10e41e9b]{display:none}.shake[data-v-10e41e9b]{-webkit-animation:shake-data-v-10e41e9b 1.5s infinite;animation:shake-data-v-10e41e9b 1.5s infinite}.health[data-v-10e41e9b]{width:150px;height:16px;background:var(--bg-color);border:solid 2px var(--fg-color);position:absolute;top:90%;text-align:center;overflow:hidden}.health span[data-v-10e41e9b]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-weight:900;font-size:small;z-index:1}.health-fill[data-v-10e41e9b]{position:absolute;top:0;bottom:0;left:0;background:var(--other-color);transition-duration:0s}.right.amount[data-v-10e41e9b]{position:absolute;left:unset;transform:unset;right:calc(30% - 60px);top:calc(50% - 60px);font-size:x-large;font-weight:900;color:var(--other-color);background:var(--fg-color);padding:4px;border-radius:4px;opacity:.9}@-webkit-keyframes shake-data-v-10e41e9b{0%,45%{transform:translate(-50%,-50%) rotate(-15deg)}55%,90%{transform:translate(-50%,-50%) rotate(15deg)}to{transform:translate(-50%,-50%) rotate(-15deg)}}@keyframes shake-data-v-10e41e9b{0%,45%{transform:translate(-50%,-50%) rotate(-15deg)}55%,90%{transform:translate(-50%,-50%) rotate(15deg)}to{transform:translate(-50%,-50%) rotate(-15deg)}}.actionPreview[data-v-5df944e2]{margin:9px;width:64px;height:64px}.tile.active .actionPreview.active[data-v-5df944e2]{transform:scale(1.5)}.amount-container[data-v-5df944e2]{position:relative}.amount[data-v-5df944e2]{position:absolute;top:4px;right:4px;font-weight:900;color:var(--other-color);background:var(--fg-color);padding:4px;border-radius:4px;font-size:small;opacity:.9}.tile[data-v-10491106]{width:600px;margin:10px auto;background:var(--raised-color)}.tile.blur[data-v-10491106]{filter:blur(2px)}.tile.active[data-v-10491106]{margin-bottom:30px}.indicator[data-v-10491106]{width:15%;height:100px;display:inline-flex;align-items:center;justify-content:center;background:var(--other-color)}.indicator-hero[data-v-10491106]{width:64px;height:64px}.indicator-index[data-v-10491106]{font-size:xx-large;font-weight:900}.actions-container[data-v-10491106]{width:85%;display:inline-flex;height:100px;vertical-align:bottom;padding:9px 16px;box-sizing:border-box;background-size:cover;background-position:bottom}.actionProgress[data-v-10491106]{height:0;position:relative;overflow:hidden}.tile.active .actionProgress[data-v-10491106]{height:20px}.actionProgress-fill[data-v-10491106]{position:absolute;top:0;bottom:0;left:0;background:var(--other-color);transition-duration:0s}.endAtFloor[data-v-10491106]{display:inline-flex;flex-direction:column;justify-content:center;width:15%;height:100px;text-align:center;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.dream[data-v-db681ec8]{position:absolute;top:50px;bottom:0;left:0;right:0;background:var(--bg-color);padding:20px;min-width:640px;height:calc(var(--height) - 50px);box-sizing:border-box}.endAtLoop[data-v-db681ec8]{width:600px;margin:10px auto;background:var(--raised-color);height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;padding:10px;text-align:center;box-sizing:border-box}.endAtLoop>[data-v-db681ec8]{margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}:root{--fg-color:#292831;--bg-color:#ee8695;--hi-color:#333f58;--raised-color:#fbbbad;--other-color:#4a7a96}*{transition-duration:.5s;font-family:Roboto Mono,monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}html{min-width:640px}body,html{width:100%;height:100%}body{color:var(--fg-color);background-color:var(--bg-color);margin:0}#app{width:100%;height:100%;display:flex;flex-flow:column}button{outline:none;border:solid 2px var(--fg-color);background:var(--bg-color)}#app .ps__thumb-y{background-color:var(--fg-color)}#app .ps .ps__rail-x.ps--clicking,#app .ps .ps__rail-x:focus,#app .ps .ps__rail-x:hover,#app .ps .ps__rail-y.ps--clicking,#app .ps .ps__rail-y:focus,#app .ps .ps__rail-y:hover{background-color:var(--other-color)}[background-image],img{image-rendering:crisp-edges}.victory-enter,.victory-leave-active{opacity:0;filter:blur(100px)}.victory{position:fixed;width:100%;height:100%;box-sizing:border-box;background:var(--fg-color);color:var(--bg-color);text-align:center;padding:20px;transition-duration:2s;z-index:100}.victory button{font-size:large;font-weight:900}.welcome-leave-active{opacity:0;filter:blur(100px)}.welcome{transition-duration:2s;background:var(--fg-color);position:fixed;width:100%;height:100%;z-index:100}.welcome img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-animation:blur 5s infinite;animation:blur 5s infinite}.dream img{filter:drop-shadow(4px 4px 4px var(--fg-color))}@-webkit-keyframes blur{0%{filter:blur(0)}33%{filter:blur(4px)}66%,to{filter:blur(0)}}@keyframes blur{0%{filter:blur(0)}33%{filter:blur(4px)}66%,to{filter:blur(0)}} \ No newline at end of file diff --git a/dream/css/chunk-vendors.d8f4d95f.css b/dream/css/chunk-vendors.d8f4d95f.css new file mode 100644 index 000000000..7096b3194 --- /dev/null +++ b/dream/css/chunk-vendors.d8f4d95f.css @@ -0,0 +1 @@ +.ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{height:15px;bottom:0}.ps__rail-x,.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;position:absolute}.ps__rail-y{width:15px;right:0}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px}.ps__thumb-x,.ps__thumb-y{background-color:#aaa;border-radius:6px;position:absolute}.ps__thumb-y{transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style:none){.ps{overflow:auto!important}}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.ps{overflow:auto!important}}.ps{position:relative} \ No newline at end of file diff --git a/dream/favicon.ico b/dream/favicon.ico new file mode 100644 index 000000000..df36fcfb7 Binary files /dev/null and b/dream/favicon.ico differ diff --git a/dream/index.html b/dream/index.html new file mode 100644 index 000000000..1f0c89649 --- /dev/null +++ b/dream/index.html @@ -0,0 +1 @@ +Dream Hero
\ No newline at end of file diff --git a/dream/js/app.d9e1be55.js b/dream/js/app.d9e1be55.js new file mode 100644 index 000000000..4d159dd79 --- /dev/null +++ b/dream/js/app.d9e1be55.js @@ -0,0 +1,2 @@ +(function(t){function e(e){for(var n,o,s=e[0],u=e[1],l=e[2],h=0,g=[];h=5&&!t.$store.keepPlaying?r("transition",{attrs:{name:"victory"}},[r("div",{staticClass:"victory"},[r("h1",[t._v("You Win!")]),r("h2",[t._v("Congratulations, you beat the game in:"),r("br"),t._v(t._s(t.formatTime(t.$store.timePlayed)))]),r("h3",[t._v("You can keep going if you'd like, but things might get weird")]),r("button",{on:{click:t.keepGoing}},[t._v("Keep Going")])])]):t.$store.started?r("div",{attrs:{id:"app"}},[r("Header"),r("Town"),r("Dream",{ref:"dream"})],1):r("transition",{attrs:{name:"welcome"}},[r("div",{staticClass:"welcome",on:{click:t.start}},[r("img",{attrs:{src:"assets/logo.png",alt:"Dream Hero"}})])])],1)},o=[],s=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"header"},[r("h2",[t._v("Dream Hero")]),r("h2",[t._v(t._s(t.formatWhole(t.$store.points)))]),t.$store.dreaming?r("h2",{staticStyle:{color:"var(--hi-color)"}},[t._v("+"+t._s(t.formatWhole(t.$store.tempPoints)))]):t._e(),t.$store.dreaming?r("h2",{staticStyle:{color:"var(--hi-color)"}},[t._v("Cycle "+t._s(t.$store.cycle+1))]):t._e(),t._m(0)])},u=[function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("a",{attrs:{href:"https://discord.gg/WzejVAx",target:"_blank"}},[r("img",{attrs:{src:"assets/discord.png"}})])}],l={name:"Header"},c=l,h=(r("c667"),r("2877")),g=Object(h["a"])(c,s,u,!1,null,"373683a0",null),p=g.exports,m=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("transition",{attrs:{name:"town"}},[this.$store.dreaming?t._e():r("div",{staticClass:"town-container"},[r("panZoom",{on:{init:t.onInit}},[r("div",{staticClass:"town"},[r("h1",{staticClass:"background"},[t._v("World Map")]),r("div",{class:{building:!0,highlight:t.$store.tutorialOne},staticStyle:{top:"500px",left:"700px"},on:{pointerdown:function(e){return t.$actions.openBuilding("Cot")}}},[t._v(" Cot ")]),t.$store.tutorialOne?t._e():r("div",{staticClass:"building",staticStyle:{top:"200px",left:"600px"},on:{pointerdown:function(e){return t.$actions.openBuilding("Bank")}}},[t._v(" Bank ")]),t.$store.tutorialOne?t._e():r("div",{staticClass:"building",staticStyle:{top:"800px",left:"200px"},on:{pointerdown:function(e){return t.$actions.openBuilding("Apothecary")}}},[t._v(" Apothecary ")]),t.$store.tutorialOne?t._e():r("div",{staticClass:"building",staticStyle:{top:"750px",left:"800px"},on:{pointerdown:function(e){return t.$actions.openBuilding("Armory")}}},[t._v(" Armory ")])])]),r("Modal",{attrs:{show:""!==t.$store.openBuilding},on:{close:t.$actions.closeBuilding}},[r("div",{staticStyle:{position:"relative"},attrs:{slot:"header"},slot:"header"},[r("img",{staticClass:"header",attrs:{src:"assets/"+t.buildingInfo.background+".png",alt:"$store.openBuilding"}}),r("div",{staticClass:"header-enemies"},t._l(t.buildingInfo.enemies,(function(t){return r("img",{key:t,attrs:{src:"assets/"+t+".png",alt:t}})})),0),r("h3",[t._v(t._s(t.$store.openBuilding))])]),r("div",{attrs:{slot:"body"},slot:"body"},["Cot"===t.$store.openBuilding?r("div",{staticStyle:{display:"flex","margin-bottom":"8px","border-bottom":"solid 2px var(--fg-color)","padding-bottom":"8px"}},[r("span",{staticStyle:{"flex-grow":"1"}},[t._v("I'm feeling tired...")]),r("button",{staticStyle:{float:"right"},on:{click:function(e){return t.$actions.startDream()}}},[t._v("Dream")])]):t._e(),!t.$store.tutorialOne&&t.upgradeInfo?r("div",{staticStyle:{display:"flex"}},[r("span",{staticStyle:{"flex-grow":"1"}},[t._v(t._s(t.upgradeInfo.description))]),r("button",{staticStyle:{float:"right","margin-left":"4px"},attrs:{disabled:t.$store.points.lt(t.upgradeInfo.cost)},on:{click:function(e){return t.upgradeBuilding()}}},[t._v(" Cost: "+t._s(t.formatWhole(t.upgradeInfo.cost))+" ")])]):r("div",[t._v(" You've fully upgraded this! ")])]),r("div",{staticStyle:{"margin-bottom":"-24px"},attrs:{slot:"footer"},slot:"footer"})])],1)])},f=[],d=(r("a4d3"),r("e01a"),function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("transition",{attrs:{name:"modal"}},[t.show?r("div",{staticClass:"modal-mask"},[r("div",{staticClass:"modal-wrapper",on:{pointerdown:function(e){return e.target!==e.currentTarget?null:t.$emit("close")}}},[r("div",{staticClass:"modal-container"},[r("div",{staticClass:"modal-header"},[t._t("header",[t._v(" default header ")])],2),r("div",{staticClass:"modal-body"},[t._t("body",[t._v(" default body ")])],2),r("div",{staticClass:"modal-footer"},[t._t("footer",[r("button",{staticClass:"modal-default-button",on:{click:function(e){return t.$emit("close")}}},[t._v(" Close ")])])],2)])])]):t._e()])}),y=[],b={name:"Modal",props:{show:Boolean}},v=b,w=(r("a733"),Object(h["a"])(v,d,y,!1,null,"58320308",null)),M=w.exports,N=r("69d9"),_=r("79d6"),x=r.n(_),$={name:"Town",components:{Modal:M},computed:{buildingInfo:function(){return this.$store.openBuilding&&N["a"].buildingInfo[this.$store.openBuilding]},upgradeInfo:function(){if(!this.$store.openBuilding)return null;var t=N["a"].buildingInfo[this.$store.openBuilding],e=t.upgrades[this.$store.upgrades[this.$store.openBuilding]];return!e&&t.infinite&&(e={description:t.infinite.description,cost:x.a.times(t.infinite.base,x.a.pow(t.infinite.r,this.$store.upgrades[this.$store.openBuilding]))}),e}},methods:{onInit:function(t){t.setTransformOrigin(null)},upgradeBuilding:function(){var t,e=N["a"].buildingInfo[this.$store.openBuilding];this.$store.upgrades[this.$store.openBuilding]in e.upgrades?t=e.upgrades[this.$store.upgrades[this.$store.openBuilding]].cost:e.infinite&&(t=x.a.times(e.infinite.base,x.a.pow(e.infinite.r,this.$store.upgrades[this.$store.openBuilding]))),t.lte(this.$store.points)&&(this.$store.points=this.$store.points.sub(t),this.$store.upgrades[this.$store.openBuilding]++)}}},A=$,F=(r("5676"),Object(h["a"])(A,m,f,!1,null,"f050f780",null)),I=F.exports,S=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("scroll",{ref:"scroll",staticClass:"dream"},[t._l(t.$store.path,(function(t,e){return r("Floor",{key:e,attrs:{index:e}})})),t.$store.upgrades.Cot>=1?r("div",{staticClass:"endAtLoop",on:{pointerdown:t.toggleEndAtLoop}},[t.$store.endAtLoop?r("h2",[t._v("Waking up at end of this sleep cycle")]):r("h2",[t._v("Entering deeper sleep at end of this sleep cycle")]),r("span",[t._v("Click to toggle")])]):t._e(),r("Modal",{attrs:{show:t.$store.endingDream},on:{close:t.$actions.endDream}},[r("h3",{attrs:{slot:"header"},slot:"header"},[t._v("Time to wake up")]),r("div",{attrs:{slot:"body"},slot:"body"},["death"===t.$store.endingDreamStatus?r("span",[t._v(" Unfortunately, your dream has met an untimely end. You will only receive a portion of your coins:"),r("br"),t._v("+"+t._s(t.formatWhole(t.$store.tempPoints.pow(.8)))+" ")]):"floor"===t.$store.endingDreamStatus?r("span",[t._v(" You wake up early, avoiding potential death at the cost of some of your potential coins:"),r("br"),t._v("+"+t._s(t.formatWhole(t.$store.tempPoints.pow(.9)))+" ")]):r("span",[t._v(" You wake up feeling refreshed, with a heavier wallet:"),r("br"),t._v("+"+t._s(t.formatWhole(t.$store.tempPoints))+" ")])]),r("div",{attrs:{slot:"footer"},slot:"footer"},[r("button",{on:{pointerdown:t.$actions.endDream}},[t._v("Wake Up")])])])],2)},P=[],C=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{class:{tile:!0,blur:t.$store.position=2&&t.$store.position===t.index?"70%":"85%"}},t._l(t.$store.path[t.index].actions,(function(t,e){return r("ActionPreview",{key:e,attrs:{action:t,index:e}})})),1),r("span",{staticClass:"endAtFloor",style:{width:t.$store.upgrades.Cot>=2&&t.$store.position===t.index?"15%":"0%"},on:{pointerdown:t.toggleEndAtFloor}},[t._v(" Wake up early:"),r("br"),r("b",[t._v(t._s(t.$store.endAtFloor?"On":"Off"))])]),r("Action",{attrs:{tile:t.$store.path[t.index]}}),r("div",{staticClass:"actionProgress"},[r("div",{staticClass:"actionProgress-fill",style:{width:100*t.$store.actionProgress/t.getActionDuration()+"%"}})])],1)},k=[],O=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"action",style:{backgroundImage:"url(assets/"+t.tile.type+".png)"}},[r("img",{staticClass:"shake left",attrs:{src:"assets/hero.png",alt:"hero"}}),r("div",{staticClass:"health left"},[r("span",{style:{color:t.$store.hp.gt(t.getMaxHealth())?"var(--raised-color)":""}},[t._v(t._s(t.formatWhole(t.$store.hp)))]),r("div",{staticClass:"health-fill",style:{width:100*t.$store.hp/t.getMaxHealth()+"%"}})]),r("div",{staticClass:"shake right"},["gold"===t.tile.actions[t.$store.currentAction].type?r("img",{attrs:{src:"assets/"+(t.tile.actions[t.$store.currentAction].image||"gold")+".png",alt:t.tile.actions[t.$store.currentAction].image||"gold"}}):"enemy"===t.tile.actions[t.$store.currentAction].type?r("img",{attrs:{src:"assets/"+t.tile.actions[t.$store.currentAction].enemy+".png",alt:t.tile.actions[t.$store.currentAction].enemy}}):"potion"===t.tile.actions[t.$store.currentAction].type?r("img",{attrs:{src:"assets/potion.png",alt:"potion"}}):"gear"===t.tile.actions[t.$store.currentAction].type?r("img",{attrs:{src:"assets/shield.png",alt:"shield"}}):t._e()]),"gold"===t.tile.actions[t.$store.currentAction].type?r("span",{staticClass:"amount right"},[t._v(" "+t._s(t.formatWhole(t.tile.actions[t.$store.currentAction].amount))+" ")]):t._e(),"enemy"===t.tile.actions[t.$store.currentAction].type?r("div",{staticClass:"health right"},[r("span",[t._v(t._s(t.formatWhole(t.tile.actions[t.$store.currentAction].hp)))]),r("div",{staticClass:"health-fill",style:{width:100*t.tile.actions[t.$store.currentAction].hp/t.tile.actions[t.$store.currentAction].maxHp+"%"}})]):t._e()])},E=[],q={name:"Action",props:{tile:Object}},D=q,T=(r("b795"),Object(h["a"])(D,O,E,!1,null,"10e41e9b",null)),B=T.exports,L=function(){var t=this,e=t.$createElement,r=t._self._c||e;return"enemy"===t.action.type?r("img",{class:{actionPreview:!0,active:t.index===t.$store.currentAction},attrs:{src:"assets/"+t.action.enemy+".png",alt:t.action.enemy}}):"gold"===t.action.type?r("div",{staticClass:"amount-container"},[r("img",{staticClass:"actionPreview",class:{actionPreview:!0,active:t.index===t.$store.currentAction},attrs:{src:"assets/"+(t.action.image||"gold")+".png",alt:t.action.image||"gold"}}),r("span",{staticClass:"amount"},[t._v(t._s(t.formatWhole(t.action.amount)))])]):"potion"===t.action.type?r("img",{class:{actionPreview:!0,active:t.index===t.$store.currentAction},attrs:{src:"assets/potion.png",alt:"potion"}}):"gear"===t.action.type?r("img",{class:{actionPreview:!0,active:t.index===t.$store.currentAction},attrs:{src:"assets/shield.png",alt:"shield"}}):t._e()},j=[],W={name:"ActionPreview",props:{action:Object,index:Number}},V=W,H=(r("fe29"),Object(h["a"])(V,L,j,!1,null,"5df944e2",null)),z=H.exports,Y={name:"Floor",props:{index:Number},components:{Action:B,ActionPreview:z},methods:{toggleEndAtFloor:function(){this.$store.endAtFloor=!this.$store.endAtFloor}}},G=Y,Z=(r("5cd4"),Object(h["a"])(G,C,k,!1,null,"10491106",null)),U=Z.exports,J={name:"Dream",components:{Floor:U,Modal:M},methods:{toggleEndAtLoop:function(){this.$store.endAtLoop=!this.$store.endAtLoop}}},X=J,K=(r("b248"),Object(h["a"])(X,S,P,!1,null,"db681ec8",null)),Q=K.exports,R={name:"App",components:{Header:p,Town:I,Dream:Q},methods:{start:function(){this.$store.started=!0},keepGoing:function(){this.$store.keepPlaying=!0}}},tt=R,et=(r("034f"),Object(h["a"])(tt,a,o,!1,null,null,null)),rt=et.exports,nt=r("2d7e"),it=r("a4a1"),at=r.n(it);r("f6b9"),r("b680"),r("5319"),r("ac1f"),r("d3b7"),r("25f0");function ot(t,e){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=t.log10().floor(),i=t.div(x.a.pow(10,n));return 10===i.toStringWithDecimalPlaces(e)&&(i=new x.a(1),n=n.add(1)),n=st(n),r?i.toStringWithDecimalPlaces(e)+"e"+n:"e"+n}function st(t,e){if(null===t||void 0===t)return"NaN";if(t.mag<.001)return(0).toFixed(e);if(null===e||void 0===e){if(t.layer>1){var r=new x.a(t);r.mag=Math.floor(t.mag);var n=new x.a(t);return n.layer=0,n.mag=t.mag-r.mag,r.floor().toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")+n.toStringWithDecimalPlaces(2).substr(1)}return t.floor().toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")}return t.toStringWithDecimalPlaces(e).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")}function ut(t,e){return null===t||void 0===t?"NaN":t.eq(0)?(0).toFixed(e):t.mag<.001?t.toExponential(e):t.toStringWithDecimalPlaces(e)}function lt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(t=new x.a(t),isNaN(t.sign)||isNaN(t.layer)||isNaN(t.mag))return"NaN";if(t.sign<0)return"-"+lt(t.neg(),e);if(t.mag===Number.POSITIVE_INFINITY)return"Infinity";if(t.gte("eeee1000")){var r=t.slog();return r.gte(1e6)?"F"+lt(r.floor()):x.a.pow(10,r.sub(r.floor())).toStringWithDecimalPlaces(3)+"F"+st(r.floor(),0)}return t.gte("1e100000")?ot(t,0,!1):t.gte("1e1000")?ot(t,0):t.gte(1e6)?ot(t,e):t.gte(1e3)?st(t,0):ut(t,e)}function ct(t){return t=new x.a(t).floor(),t.gte(1e6)||t.lte(.98)&&!t.eq(0)?lt(t,2):lt(t,0)}function ht(t){return t<60?lt(t)+"s":t<3600?ct(Math.floor(t/60))+"m "+lt(t%60)+"s":t<86400?ct(Math.floor(t/3600))+"h "+ct(Math.floor(t/60)%60)+"m "+lt(t%60)+"s":t<31536e3?ct(Math.floor(t/84600)%365)+"d "+ct(Math.floor(t/3600)%24)+"h "+ct(Math.floor(t/60)%60)+"m "+lt(t%60)+"s":ct(Math.floor(t/31536e3))+"y "+ct(Math.floor(t/84600)%365)+"d "+ct(Math.floor(t/3600)%24)+"h "+ct(Math.floor(t/60)%60)+"m "+lt(t%60)+"s"}window.format=lt,window.formatWhole=ct,window.formatTime=ht,window.regularFormat=ut,window.commaFormat=st,window.exponentialFormat=ot;var gt="thepaperpilot-dream",pt={windowHeight:window.innerHeight,timePlayed:0,keepPlaying:!1,points:new x.a(0),tempPoints:new x.a(0),dreaming:!1,autoSave:!0,openBuilding:"",tutorialOne:!0,path:new Array(10).fill(0).map((function(){return{actions:new Array(100).fill(0).map((function(){return{type:"",enemy:"",maxHp:new x.a(0),hp:new x.a(0),attackDuration:0,damage:new x.a(0),progress:0}})),type:""}})),currentAction:0,actionProgress:-1,attackProgress:0,cycle:0,currentTime:performance.now(),hp:new x.a(0),paused:!1,upgrades:{Cot:0,Bank:0,Apothecary:0,Armory:0},gearLevel:0,started:!1,endAtLoop:!1,endAtFloor:!1,endingDream:!1,endingDreamStatus:"death"};function mt(t,e){for(var r in e)null==e[r]?void 0===t[r]&&(t[r]=null):Array.isArray(e[r])?void 0===t[r]?t[r]=e[r]:mt(e[r],t[r]):e[r]instanceof x.a?void 0==t[r]?t[r]=e[r]:t[r]=new x.a(t[r]):e[r]&&"object"===Object(n["a"])(e[r])?void 0==t[r]||"object"!==Object(n["a"])(t[r])?t[r]=e[r]:mt(e[r],t[r]):void 0==t[r]&&(t[r]=e[r])}var ft=localStorage.getItem(gt);null==ft?ft=pt:(ft=Object.assign({},pt,JSON.parse(atob(ft))),mt(ft,pt));var dt=window.player=i["a"].observable(ft);function yt(){return x.a.times(1,x.a.pow(.95,dt.gearLevel)).clamp(Number.MIN_VALUE,Number.MAX_VALUE).toNumber()}function bt(){var t=x.a.add(2,dt.gearLevel).pow(2);return dt.hp.gt(wt())&&(t=t.times(2)),t}function vt(){return x.a.times(2,x.a.pow(.98,dt.gearLevel)).clamp(Number.MIN_VALUE,Number.MAX_VALUE).toNumber()}function wt(t){return new x.a(25).times(x.a.add(1,t||dt.gearLevel).pow(2))}function Mt(){return!!dt.dreaming&&("enemy"===dt.path[dt.position].actions[dt.currentAction].type&&!(dt.actionProgress=1&&t.push("city"),dt.upgrades["Apothecary"]>=1&&t.push("savanna"),dt.upgrades["Armory"]>=1&&t.push("graveyard"),dt.path=new Array(10).fill(0).map((function(){return{type:t[Math.floor(Math.random()*t.length)]}})),dt.position=0,dt.tempPoints=new x.a(0),dt.gearLevel=dt.upgrades.Armory,dt.hp=wt(),this.startLoop(),dt.dreaming=!0},endDream:function(){var t=1;"death"===dt.endingDreamStatus?t=.8:"floor"===dt.endingDreamStatus&&(t=.9),dt.points=dt.points.add(dt.tempPoints.pow(t)),dt.dreaming=!1,dt.endingDream=!1},startLoop:function(){dt.cycle++,dt.position=-1,dt.path.forEach((function(t){t.actions=new Array(dt.cycle+1).fill(0).map((function(){return _t[t.type][Math.floor(Math.random()*_t[t.type].length)](dt.cycle)}))})),window.vue.$root.$children[0].$refs.dream.$refs.scroll.$el.scrollTo({top:0,behavior:"smooth"}),this.nextFloor()},nextFloor:function(){if(dt.position=dt.position+1,dt.position>=10)dt.upgrades.Cot>=1&&!dt.endAtLoop?this.startLoop():(dt.endingDreamStatus="loop",dt.endingDream=!0,dt.position=dt.points-1,dt.currentAction=dt.currentAction-1);else{dt.currentAction=-1;var t=window.vue.$root.$children[0].$refs.dream.$refs.scroll.$el.children[dt.position].offsetTop-250;window.vue.$root.$children[0].$refs.dream.$refs.scroll.$el.scrollTo({top:t,behavior:"smooth"}),this.nextAction()}},nextAction:function(){dt.currentAction++,dt.currentAction>=dt.path[dt.position].actions.length?dt.upgrades.Cot<2||!dt.endAtFloor?this.nextFloor():(dt.endingDreamStatus="floor",dt.endingDream=!0,dt.currentAction=dt.currentAction-1):(dt.actionProgress=0,dt.attackProgress=0)},openBuilding:function(t){dt.openBuilding=t},closeBuilding:function(){dt.openBuilding=""}};function $t(t){var e=(t-dt.currentTime)/1e3;if(e>0&&!dt.paused&&dt.started&&(dt.cycle<5||dt.keepPlaying)&&(dt.timePlayed+=e,dt.dreaming&&!dt.endingDream))if(dt.actionProgress+=e,Mt()){dt.attackProgress+=e,dt.path[dt.position].actions[dt.currentAction].progress+=e;var r=!0;dt.attackProgress>=yt()&&(dt.attackProgress=0,dt.path[dt.position].actions[dt.currentAction].hp=dt.path[dt.position].actions[dt.currentAction].hp.sub(bt()),dt.path[dt.position].actions[dt.currentAction].hp.lte(0)&&(xt.nextAction(),r=!1)),r&&dt.path[dt.position].actions[dt.currentAction].progress>=dt.path[dt.position].actions[dt.currentAction].attackDuration&&(dt.path[dt.position].actions[dt.currentAction].progress=0,dt.hp=dt.hp.sub(dt.path[dt.position].actions[dt.currentAction].damage),dt.hp.lte(0)&&(dt.endingDream=!0,dt.endingDreamStatus="death"))}else if(dt.actionProgress>=vt()){switch(dt.path[dt.position].actions[dt.currentAction].type){case"gold":dt.tempPoints=dt.tempPoints.add(dt.path[dt.position].actions[dt.currentAction].amount);break;case"gear":var n=dt.gearLevel;dt.gearLevel+=dt.path[dt.position].actions[dt.currentAction].amount*dt.upgrades.Armory,dt.hp=dt.hp.add(wt().sub(wt(n)));break;case"potion":dt.hp=dt.hp.add(wt().times(.25).times(dt.upgrades.Apothecary+1));break}xt.nextAction()}dt.currentTime=t,requestAnimationFrame($t)}i["a"].prototype.$actions=xt,i["a"].prototype.window=window,i["a"].prototype.format=lt,i["a"].prototype.formatWhole=ct,i["a"].prototype.formatTime=ht,i["a"].config.productionTip=!1,i["a"].use(nt["a"]),i["a"].use(at.a,{name:"scroll"}),window.addEventListener("resize",(function(){dt.windowHeight=window.innerHeight})),window.vue=new i["a"]({render:function(t){return t(rt)}}).$mount("#app"),$t(performance.now())},"5cd4":function(t,e,r){"use strict";r("5eeb")},"5eeb":function(t,e,r){},"69d9":function(t,e,r){"use strict";(function(t){var n=r("79d6"),i=r.n(n);t.Decimal=i.a;var a="#ee8695",o="#292831",s="#333f58",u="#fbbbad",l="#4a7a96",c=new i.a(0),h=new i.a(1),g=new i.a(NaN),p={Cot:{background:"default",enemies:["bat"],upgrades:[{description:"I'd sleep better on something comfier",cost:new i.a(2)},{description:"An even comfier bed could give me better control on when I wake up",cost:new i.a(2500)}]},Bank:{background:"city",enemies:["slime"],upgrades:[{description:"Building a bank allows me to adventure to cities in my dreams, with increased riches",cost:new i.a(100)}],infinite:{description:"Improve the bank to double all gold gain",r:5,base:100}},Apothecary:{background:"savanna",enemies:["witch"],upgrades:[{description:"Building an apothecary will allow me to find potions in my dreams",cost:new i.a(1e4)}],infinite:{description:"Improve the apothecary to increase how much potions heal",r:3,base:1e4}},Armory:{background:"graveyard",enemies:["skeleton"],upgrades:[{description:"Building an armory will help my gear up in my dreams",cost:new i.a(10)}],infinite:{description:"Improve the armory to increase starting gear level",r:8,base:10}}};e["a"]={bgColor:a,fgColor:o,hiColor:s,raisedColor:u,otherColor:l,decimalZero:c,decimalOne:h,decimalNaN:g,buildingInfo:p}}).call(this,r("c8ba"))},"6b35":function(t,e,r){},"79d6":function(t,e,r){"use strict";var n,i,a=r("7037").default;function o(t,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](t):t instanceof e}function s(t){return(s="function"==typeof Symbol&&"symbol"==a(Symbol.iterator)?function(t){return a(t)}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":a(t)})(t)}r("a4d3"),r("e01a"),r("d3b7"),r("dc8d"),r("b56e"),r("d28b"),r("3ca3"),r("ddb0"),r("6b93"),r("a9e3"),r("b680"),r("2af1"),r("f00c"),r("4c53"),r("b65f"),r("1276"),r("ac1f"),r("5319"),r("498a"),r("25f0"),r("38cf"),r("bf19"),r("90d7"),function(a,o){"object"===s(e)&&"undefined"!=typeof t?t.exports=o():(n=o,i="function"===typeof n?n.call(e,r,e,t):n,void 0===i||(t.exports=i))}(0,(function(){var t=Math.log10(9e15),e=function(){for(var t=[],e=-323;e<=308;e++)t.push(Number("1e"+e));return function(e){return t[e+323]}}(),r=function(t){return l.fromValue_noAlloc(t)},n=function(t,e,r){return l.fromComponents(t,e,r)},i=function(t,e,r){return l.fromComponents_noNormalize(t,e,r)},a=function(t,e){var r=e+1,n=Math.ceil(Math.log10(Math.abs(t))),i=Math.round(t*Math.pow(10,r-n))*Math.pow(10,n-r);return parseFloat(i.toFixed(Math.max(r-n,0)))},s=function(t){return Math.sign(t)*Math.log10(Math.abs(t))},u=function(t){var e,r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;if(!Number.isFinite(t))return t;if(0===t)return t;if(1===t)return.5671432904097838;e=t<10?0:Math.log(t)-Math.log(Math.log(t));for(var i=0;i<100;++i){if(r=(t*Math.exp(-e)+e*e)/(e+1),Math.abs(r-e)1&&void 0!==arguments[1]?arguments[1]:2,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i(1,0,1);return r(t).tetrate(e,n)},l.iteratedexp=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i(1,0,1);return r(t).iteratedexp(e,n)},l.iteratedlog=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return r(t).iteratedlog(e,n)},l.layeradd10=function(t,e){return r(t).layeradd10(e)},l.layeradd=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10;return r(t).layeradd(e,n)},l.slog=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;return r(t).slog(e)},l.lambertw=function(t){return r(t).lambertw()},l.ssqrt=function(t){return r(t).ssqrt()},l.pentate=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i(1,0,1);return r(t).pentate(e,n)},l.affordGeometricSeries=function(t,e,n,i){return this.affordGeometricSeries_core(r(t),r(e),r(n),i)},l.sumGeometricSeries=function(t,e,n,i){return this.sumGeometricSeries_core(t,r(e),r(n),i)},l.affordArithmeticSeries=function(t,e,n,i){return this.affordArithmeticSeries_core(r(t),r(e),r(n),r(i))},l.sumArithmeticSeries=function(t,e,n,i){return this.sumArithmeticSeries_core(r(t),r(e),r(n),r(i))},l.efficiencyOfPurchase=function(t,e,n){return this.efficiencyOfPurchase_core(r(t),r(e),r(n))},l.randomDecimalForTesting=function(t){if(20*Math.random()<1)return i(0,0,0);var e=Math.random()>.5?1:-1;if(20*Math.random()<1)return i(e,0,1);var r=Math.floor(Math.random()*(t+1)),a=0===r?616*Math.random()-308:16*Math.random();Math.random()>.9&&(a=Math.trunc(a));var o=Math.pow(10,a);return Math.random()>.9&&(o=Math.trunc(o)),n(e,r,o)},l.affordGeometricSeries_core=function(t,e,r,n){var i=e.mul(r.pow(n));return l.floor(t.div(i).mul(r.sub(1)).add(1).log10().div(r.log10()))},l.sumGeometricSeries_core=function(t,e,r,n){return e.mul(r.pow(n)).mul(l.sub(1,r.pow(t))).div(l.sub(1,r))},l.affordArithmeticSeries_core=function(t,e,r,n){var i=e.add(n.mul(r)).sub(r.div(2)),a=i.pow(2);return i.neg().add(a.add(r.mul(t).mul(2)).sqrt()).div(r).floor()},l.sumArithmeticSeries_core=function(t,e,r,n){var i=e.add(n.mul(r));return t.div(2).mul(i.mul(2).plus(t.sub(1).mul(r)))},l.efficiencyOfPurchase_core=function(t,e,r){return t.div(e).add(t.div(r))},l.prototype.normalize=function(){if(0===this.sign||0===this.mag&&0===this.layer)return this.sign=0,this.mag=0,this.layer=0,this;if(0===this.layer&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),0===this.layer&&this.mag<1/9e15)return this.layer+=1,this.mag=Math.log10(this.mag),this;var e=Math.abs(this.mag),r=Math.sign(this.mag);if(e>=9e15)return this.layer+=1,this.mag=r*Math.log10(e),this;for(;e0;)this.layer-=1,0===this.layer?this.mag=Math.pow(10,this.mag):(this.mag=r*Math.pow(10,e),e=Math.abs(this.mag),r=Math.sign(this.mag));return 0===this.layer&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):0===this.mag&&(this.sign=0)),this},l.prototype.fromComponents=function(t,e,r){return this.sign=t,this.layer=e,this.mag=r,this.normalize(),this},l.prototype.fromComponents_noNormalize=function(t,e,r){return this.sign=t,this.layer=e,this.mag=r,this},l.prototype.fromMantissaExponent=function(t,e){return this.layer=1,this.sign=Math.sign(t),t=Math.abs(t),this.mag=e+Math.log10(t),this.normalize(),this},l.prototype.fromMantissaExponent_noNormalize=function(t,e){return this.fromMantissaExponent(t,e),this},l.prototype.fromDecimal=function(t){return this.sign=t.sign,this.layer=t.layer,this.mag=t.mag,this},l.prototype.fromNumber=function(t){return this.mag=Math.abs(t),this.sign=Math.sign(t),this.layer=0,this.normalize(),this},l.prototype.fromString=function(t){var e=(t=t.replace(",","")).split("^^^");if(2===e.length){var i=parseFloat(e[0]),a=parseFloat(e[1]),o=1;if(2===(c=e[1].split(";")).length&&(o=parseFloat(c[1]),isFinite(o)||(o=1)),isFinite(i)&&isFinite(a)){var u=l.pentate(i,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var c,h=t.split("^^");if(2===h.length&&(i=parseFloat(h[0]),a=parseFloat(h[1]),2===(c=h[1].split(";")).length&&(o=parseFloat(c[1]),isFinite(o)||(o=1)),isFinite(i)&&isFinite(a)))return u=l.tetrate(i,a,o),this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this;var g,p=t.split("^");if(2===p.length){i=parseFloat(p[0]);var m=parseFloat(p[1]);if(isFinite(i)&&isFinite(m))return u=l.pow(i,m),this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}if(2===(g=(t=t.trim().toLowerCase()).split("pt")).length&&(i=10,a=parseFloat(g[0]),g[1]=g[1].replace("(",""),g[1]=g[1].replace(")",""),o=parseFloat(g[1]),isFinite(o)||(o=1),isFinite(i)&&isFinite(a)))return u=l.tetrate(i,a,o),this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this;if(2===(g=t.split("p")).length&&(i=10,a=parseFloat(g[0]),g[1]=g[1].replace("(",""),g[1]=g[1].replace(")",""),o=parseFloat(g[1]),isFinite(o)||(o=1),isFinite(i)&&isFinite(a)))return u=l.tetrate(i,a,o),this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this;var f=t.split("e"),d=f.length-1;if(0===d){var y=parseFloat(t);if(isFinite(y))return this.fromNumber(y)}else if(1===d&&(y=parseFloat(t),isFinite(y)&&0!==y))return this.fromNumber(y);var b=t.split("e^");if(2===b.length){this.sign=1,"-"==b[0].charAt(0)&&(this.sign=-1);for(var v="",w=0;w=43&&M<=57||101===M))return this.layer=parseFloat(v),this.mag=parseFloat(b[1].substr(w+1)),this.normalize(),this;v+=b[1].charAt(w)}}if(d<1)return this.sign=0,this.layer=0,this.mag=0,this;var N=parseFloat(f[0]);if(0===N)return this.sign=0,this.layer=0,this.mag=0,this;if(m=parseFloat(f[f.length-1]),d>=2){var _=parseFloat(f[f.length-2]);isFinite(_)&&(m*=Math.sign(_),m+=s(_))}if(isFinite(N))if(1===d)this.sign=Math.sign(N),this.layer=1,this.mag=m+Math.log10(Math.abs(N));else{if(this.sign=Math.sign(N),this.layer=d,2===d)return u=l.mul(n(1,2,m),r(N)),this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this;this.mag=m}else this.sign="-"===f[0]?-1:1,this.layer=d,this.mag=m;return this.normalize(),this},l.prototype.fromValue=function(t){return o(t,l)?this.fromDecimal(t):"number"==typeof t?this.fromNumber(t):"string"==typeof t?this.fromString(t):(this.sign=0,this.layer=0,this.mag=0,this)},l.prototype.toNumber=function(){return Number.isFinite(this.layer)?0===this.layer?this.sign*this.mag:1===this.layer?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN},l.prototype.mantissaWithDecimalPlaces=function(t){return isNaN(this.m)?Number.NaN:0===this.m?0:a(this.m,t)},l.prototype.magnitudeWithDecimalPlaces=function(t){return isNaN(this.mag)?Number.NaN:0===this.mag?0:a(this.mag,t)},l.prototype.toString=function(){return 0===this.layer?this.mag<1e21&&this.mag>1e-7||0===this.mag?(this.sign*this.mag).toString():this.m+"e"+this.e:1===this.layer?this.m+"e"+this.e:this.layer<=5?(-1===this.sign?"-":"")+"e".repeat(this.layer)+this.mag:(-1===this.sign?"-":"")+"(e^"+this.layer+")"+this.mag},l.prototype.toExponential=function(t){return 0===this.layer?(this.sign*this.mag).toExponential(t):this.toStringWithDecimalPlaces(t)},l.prototype.toFixed=function(t){return 0===this.layer?(this.sign*this.mag).toFixed(t):this.toStringWithDecimalPlaces(t)},l.prototype.toPrecision=function(t){return this.e<=-7?this.toExponential(t-1):t>this.e?this.toFixed(t-this.exponent-1):this.toExponential(t-1)},l.prototype.valueOf=function(){return this.toString()},l.prototype.toJSON=function(){return this.toString()},l.prototype.toStringWithDecimalPlaces=function(t){return 0===this.layer?this.mag<1e21&&this.mag>1e-7||0===this.mag?(this.sign*this.mag).toFixed(t):a(this.m,t)+"e"+a(this.e,t):1===this.layer?a(this.m,t)+"e"+a(this.e,t):this.layer<=5?(-1===this.sign?"-":"")+"e".repeat(this.layer)+a(this.mag,t):(-1===this.sign?"-":"")+"(e^"+this.layer+")"+a(this.mag,t)},l.prototype.abs=function(){return i(0===this.sign?0:1,this.layer,this.mag)},l.prototype.neg=function(){return i(-this.sign,this.layer,this.mag)},l.prototype.negate=function(){return this.neg()},l.prototype.negated=function(){return this.neg()},l.prototype.sign=function(){return this.sign},l.prototype.sgn=function(){return this.sign},l.prototype.round=function(){return this.mag<0?l.dZero:0===this.layer?n(this.sign,0,Math.round(this.mag)):this},l.prototype.floor=function(){return this.mag<0?l.dZero:0===this.layer?n(this.sign,0,Math.floor(this.mag)):this},l.prototype.ceil=function(){return this.mag<0?l.dZero:0===this.layer?n(this.sign,0,Math.ceil(this.mag)):this},l.prototype.trunc=function(){return this.mag<0?l.dZero:0===this.layer?n(this.sign,0,Math.trunc(this.mag)):this},l.prototype.add=function(t){var e,a,o=r(t);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(o.layer))return o;if(0===this.sign)return o;if(0===o.sign)return this;if(this.sign===-o.sign&&this.layer===o.layer&&this.mag===o.mag)return i(0,0,0);if(this.layer>=2||o.layer>=2)return this.maxabs(o);if(l.cmpabs(this,o)>0?(e=this,a=o):(e=o,a=this),0===e.layer&&0===a.layer)return r(e.sign*e.mag+a.sign*a.mag);var s=e.layer*Math.sign(e.mag),u=a.layer*Math.sign(a.mag);if(s-u>=2)return e;if(0===s&&-1===u){if(Math.abs(a.mag-Math.log10(e.mag))>17)return e;var c=Math.pow(10,Math.log10(e.mag)-a.mag),h=a.sign+e.sign*c;return n(Math.sign(h),1,a.mag+Math.log10(Math.abs(h)))}return 1===s&&0===u?Math.abs(e.mag-Math.log10(a.mag))>17?e:(c=Math.pow(10,e.mag-Math.log10(a.mag)),h=a.sign+e.sign*c,n(Math.sign(h),1,Math.log10(a.mag)+Math.log10(Math.abs(h)))):Math.abs(e.mag-a.mag)>17?e:(c=Math.pow(10,e.mag-a.mag),h=a.sign+e.sign*c,n(Math.sign(h),1,a.mag+Math.log10(Math.abs(h))))},l.prototype.plus=function(t){return this.add(t)},l.prototype.sub=function(t){return this.add(r(t).neg())},l.prototype.subtract=function(t){return this.sub(t)},l.prototype.minus=function(t){return this.sub(t)},l.prototype.mul=function(t){var e,a,o=r(t);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(o.layer))return o;if(0===this.sign||0===o.sign)return i(0,0,0);if(this.layer===o.layer&&this.mag===-o.mag)return i(this.sign*o.sign,0,1);if(this.layer>o.layer||this.layer==o.layer&&Math.abs(this.mag)>Math.abs(o.mag)?(e=this,a=o):(e=o,a=this),0===e.layer&&0===a.layer)return r(e.sign*a.sign*e.mag*a.mag);if(e.layer>=3||e.layer-a.layer>=2)return n(e.sign*a.sign,e.layer,e.mag);if(1===e.layer&&0===a.layer)return n(e.sign*a.sign,1,e.mag+Math.log10(a.mag));if(1===e.layer&&1===a.layer)return n(e.sign*a.sign,1,e.mag+a.mag);if(2===e.layer&&1===a.layer){var s=n(Math.sign(e.mag),e.layer-1,Math.abs(e.mag)).add(n(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return n(e.sign*a.sign,s.layer+1,s.sign*s.mag)}if(2===e.layer&&2===a.layer)return s=n(Math.sign(e.mag),e.layer-1,Math.abs(e.mag)).add(n(Math.sign(a.mag),a.layer-1,Math.abs(a.mag))),n(e.sign*a.sign,s.layer+1,s.sign*s.mag);throw Error("Bad arguments to mul: "+this+", "+t)},l.prototype.multiply=function(t){return this.mul(t)},l.prototype.times=function(t){return this.mul(t)},l.prototype.div=function(t){var e=r(t);return this.mul(e.recip())},l.prototype.divide=function(t){return this.div(t)},l.prototype.divideBy=function(t){return this.div(t)},l.prototype.dividedBy=function(t){return this.div(t)},l.prototype.recip=function(){return 0===this.mag?l.dNaN:0===this.layer?n(this.sign,0,1/this.mag):n(this.sign,this.layer,-this.mag)},l.prototype.reciprocal=function(){return this.recip()},l.prototype.reciprocate=function(){return this.recip()},l.prototype.cmp=function(t){var e=r(t);return this.sign>e.sign?1:this.sign0?this.layer:-this.layer,i=e.mag>0?e.layer:-e.layer;return n>i?1:ne.mag?1:this.mag0?e:this},l.prototype.clamp=function(t,e){return this.max(t).min(e)},l.prototype.clampMin=function(t){return this.max(t)},l.prototype.clampMax=function(t){return this.min(t)},l.prototype.cmp_tolerance=function(t,e){var n=r(t);return this.eq_tolerance(n,e)?0:this.cmp(n)},l.prototype.compare_tolerance=function(t,e){return this.cmp_tolerance(t,e)},l.prototype.eq_tolerance=function(t,e){var n=r(t);if(null==e&&(e=1e-7),this.sign!==n.sign)return!1;if(Math.abs(this.layer-n.layer)>1)return!1;var i=this.mag,a=n.mag;return this.layer>n.layer&&(a=s(a)),this.layer0?n(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):n(1,0,Math.log10(this.mag))},l.prototype.log10=function(){return this.sign<=0?l.dNaN:this.layer>0?n(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):n(this.sign,0,Math.log10(this.mag))},l.prototype.log=function(t){return t=r(t),this.sign<=0||t.sign<=0||1===t.sign&&0===t.layer&&1===t.mag?l.dNaN:0===this.layer&&0===t.layer?n(this.sign,0,Math.log(this.mag)/Math.log(t.mag)):l.div(this.log10(),t.log10())},l.prototype.log2=function(){return this.sign<=0?l.dNaN:0===this.layer?n(this.sign,0,Math.log2(this.mag)):1===this.layer?n(Math.sign(this.mag),0,3.321928094887362*Math.abs(this.mag)):2===this.layer?n(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):n(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))},l.prototype.ln=function(){return this.sign<=0?l.dNaN:0===this.layer?n(this.sign,0,Math.log(this.mag)):1===this.layer?n(Math.sign(this.mag),0,2.302585092994046*Math.abs(this.mag)):2===this.layer?n(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):n(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))},l.prototype.logarithm=function(t){return this.log(t)},l.prototype.pow=function(t){var e=this,n=r(t);if(0===e.sign)return e;if(1===e.sign&&0===e.layer&&1===e.mag)return e;if(0===n.sign)return i(1,0,1);if(1===n.sign&&0===n.layer&&1===n.mag)return e;var a=e.absLog10().mul(n).pow10();return-1===this.sign&&n.toNumber()%2==1?a.neg():a},l.prototype.pow10=function(){if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return l.dNaN;var t=this;if(0===t.layer){var e=Math.pow(10,t.sign*t.mag);if(Number.isFinite(e)&&Math.abs(e)>.1)return n(1,0,e);if(0===t.sign)return l.dOne;t=i(t.sign,t.layer+1,Math.log10(t.mag))}return t.sign>0&&t.mag>0?n(t.sign,t.layer+1,t.mag):t.sign<0&&t.mag>0?n(-t.sign,t.layer+1,-t.mag):l.dOne},l.prototype.pow_base=function(t){return r(t).pow(this)},l.prototype.root=function(t){var e=r(t);return this.pow(e.recip())},l.prototype.factorial=function(){return this.mag<0?this.toNumber().add(1).gamma():0===this.layer?this.add(1).gamma():1===this.layer?l.exp(l.mul(this,l.ln(this).sub(1))):l.exp(this)},l.prototype.gamma=function(){if(this.mag<0)return this.recip();if(0===this.layer){if(this.lt(i(1,0,24)))return r(function(t){if(!isFinite(t))return t;if(t<-50)return t===Math.trunc(t)?Number.NEGATIVE_INFINITY:0;for(var e=1;t<10;)e*=t,++t;var r=.9189385332046727;r+=(.5+(t-=1))*Math.log(t),r-=t;var n=t*t,i=t;return r+=1/(12*i),r+=1/(360*(i*=n)),r+=1/(1260*(i*=n)),r+=1/(1680*(i*=n)),r+=1/(1188*(i*=n)),r+=691/(360360*(i*=n)),r+=7/(1092*(i*=n)),r+=3617/(122400*(i*=n)),Math.exp(r)/e}(this.sign*this.mag));var t=this.mag-1,e=.9189385332046727;e+=(t+.5)*Math.log(t);var n=t*t,a=t,o=12*a,s=1/o,u=(e-=t)+s;if(u===e)return l.exp(e);if((u=(e=u)-(s=1/(o=360*(a*=n))))===e)return l.exp(e);e=u;var c=1/(o=1260*(a*=n));return e+=c,e-=c=1/(o=1680*(a*=n)),l.exp(e)}return 1===this.layer?l.exp(l.mul(this,l.ln(this).sub(1))):l.exp(this)},l.prototype.lngamma=function(){return this.gamma().ln()},l.prototype.exp=function(){return this.mag<0?l.dOne:0===this.layer&&this.mag<=709.7?r(Math.exp(this.sign*this.mag)):0===this.layer?n(1,1,this.sign*Math.log10(Math.E)*this.mag):1===this.layer?n(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):n(1,this.layer+1,this.sign*this.mag)},l.prototype.sqr=function(){return this.pow(2)},l.prototype.sqrt=function(){if(0===this.layer)return r(Math.sqrt(this.sign*this.mag));if(1===this.layer)return n(1,2,Math.log10(this.mag)-.3010299956639812);var t=l.div(i(this.sign,this.layer-1,this.mag),i(1,0,2));return t.layer+=1,t.normalize(),t},l.prototype.cube=function(){return this.pow(3)},l.prototype.cbrt=function(){return this.pow(1/3)},l.prototype.tetrate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i(1,0,1);if(t===Number.POSITIVE_INFINITY){var n=l.ln(this).neg();return n.lambertw().div(n)}if(t<0)return l.iteratedlog(e,this,-t);e=r(e);var a=t-(t=Math.trunc(t));0!==a&&(e.eq(l.dOne)?(++t,e=new l(a)):e=this.eq(10)?e.layeradd10(a):e.layeradd(a,this));for(var o=0;o3)return i(e.sign,e.layer+(t-o-1),e.mag);if(o>100)return e}return e},l.prototype.iteratedexp=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i(1,0,1);return this.tetrate(t,e)},l.prototype.iteratedlog=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(e<0)return l.tetrate(t,-e,this);t=r(t);var n=r(this),i=e-(e=Math.trunc(e));if(n.layer-t.layer>3){var a=Math.min(e,n.layer-t.layer-3);e-=a,n.layer-=a}for(var o=0;o100)return n}return i>0&&i<1&&(n=t.eq(10)?n.layeradd10(-i):n.layeradd(-i,t)),n},l.prototype.slog=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;if(this.mag<0)return l.dNegOne;t=r(t);var e=0,n=r(this);if(n.layer-t.layer>3){var i=n.layer-t.layer-3;e+=i,n.layer-=i}for(var a=0;a<100;++a)if(n.lt(l.dZero))n=l.pow(t,n),e-=1;else{if(n.lte(l.dOne))return r(e+n.toNumber()-1);e+=1,n=l.log(n,t)}return r(e)},l.prototype.layeradd10=function(t){t=l.fromValue_noAlloc(t).toNumber();var e,n=r(this);if(t>=1&&(t-=e=Math.trunc(t),n.layer+=e),t<=-1&&(t-=e=Math.trunc(t),n.layer+=e,n.layer<0))for(var i=0;i<100;++i){if(n.layer++,n.mag=Math.log10(n.mag),!isFinite(n.mag))return n;if(n.layer>=0)break}if(t>0){for(var a=0;Number.isFinite(n.mag)&&n.mag<10;)n.mag=Math.pow(10,n.mag),++a;for(n.mag>1e10&&(n.mag=Math.log10(n.mag),n.layer++),(o=Math.log10(Math.log(1e10)/Math.log(n.mag),10))0;)n.mag=Math.log10(n.mag),--a}else if(t<0){for(a=0;Number.isFinite(n.mag)&&n.mag<10;)n.mag=Math.pow(10,n.mag),++a;var o;for(n.mag>1e10&&(n.mag=Math.log10(n.mag),n.layer++),(o=Math.log10(1/Math.log10(n.mag)))>t&&(n.mag=1e10,n.layer--,t-=o),n.mag=Math.pow(n.mag,Math.pow(10,t));a>0;)n.mag=Math.log10(n.mag),--a}for(;n.layer<0;)n.layer++,n.mag=Math.log10(n.mag);return n.normalize(),n},l.prototype.layeradd=function(t,e){var r=this.slog(e).toNumber()+t;return r>=0?l.tetrate(e,r):Number.isFinite(r)?r>=-1?l.log(l.tetrate(e,r+1),e):void l.log(l.log(l.tetrate(e,r+2),e),e):l.dNaN},l.prototype.lambertw=function(){if(this.lt(-.3678794411710499))throw Error("lambertw is unimplemented for results less than -1, sorry!");return this.mag<0?r(u(this.toNumber())):0===this.layer?r(u(this.sign*this.mag)):1===this.layer||2===this.layer?c(this):this.layer>=3?i(this.sign,this.layer-1,this.mag):void 0};var c=function(t){var e,r,n,i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;if(!Number.isFinite(t.mag))return t;if(0===t)return t;if(1===t)return.5671432904097838;l.abs(t),e=l.ln(t);for(var o=0;o<100;++o){if(r=l.exp(-e),n=e.sub(t.mul(r)),i=e.sub(n.div(e.add(1).sub(e.add(2).mul(n).div(l.mul(2,e).add(2))))),l.abs(i.sub(e)).lt(l.abs(i).mul(a)))return i;e=i}throw Error("Iteration failed to converge: "+t)};return l.prototype.ssqrt=function(){if(1==this.sign&&this.layer>=3)return i(this.sign,this.layer-1,this.mag);var t=this.ln();return t.div(t.lambertw())},l.prototype.pentate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i(1,0,1);e=r(e);var n=t-(t=Math.trunc(t));0!==n&&(e.eq(l.dOne)?(++t,e=new l(n)):e=this.eq(10)?e.layeradd10(n):e.layeradd(n,this));for(var a=0;a10)return e}return e},l.prototype.sin=function(){return this.mag<0?this:0===this.layer?r(Math.sin(this.sign*this.mag)):i(0,0,0)},l.prototype.cos=function(){return this.mag<0?l.dOne:0===this.layer?r(Math.cos(this.sign*this.mag)):i(0,0,0)},l.prototype.tan=function(){return this.mag<0?this:0===this.layer?r(Math.tan(this.sign*this.mag)):i(0,0,0)},l.prototype.asin=function(){return this.mag<0?this:0===this.layer?r(Math.asin(this.sign*this.mag)):i(Number.NaN,Number.NaN,Number.NaN)},l.prototype.acos=function(){return this.mag<0?r(Math.acos(this.toNumber())):0===this.layer?r(Math.acos(this.sign*this.mag)):i(Number.NaN,Number.NaN,Number.NaN)},l.prototype.atan=function(){return this.mag<0?this:0===this.layer?r(Math.atan(this.sign*this.mag)):r(Math.atan(1/0*this.sign))},l.prototype.sinh=function(){return this.exp().sub(this.negate().exp()).div(2)},l.prototype.cosh=function(){return this.exp().add(this.negate().exp()).div(2)},l.prototype.tanh=function(){return this.sinh().div(this.cosh())},l.prototype.asinh=function(){return l.ln(this.add(this.sqr().add(1).sqrt()))},l.prototype.acosh=function(){return l.ln(this.add(this.sqr().sub(1).sqrt()))},l.prototype.atanh=function(){return this.abs().gte(1)?i(Number.NaN,Number.NaN,Number.NaN):l.ln(this.add(1).div(r(1).sub(this))).div(2)},l.prototype.ascensionPenalty=function(t){return 0===t?this:this.root(l.pow(10,t))},l.prototype.egg=function(){return this.add(9)},l.prototype.lessThanOrEqualTo=function(t){return this.cmp(t)<1},l.prototype.lessThan=function(t){return this.cmp(t)<0},l.prototype.greaterThanOrEqualTo=function(t){return this.cmp(t)>-1},l.prototype.greaterThan=function(t){return this.cmp(t)>0},l}();return l.dZero=i(0,0,0),l.dOne=i(1,0,1),l.dNegOne=i(-1,0,1),l.dTwo=i(1,0,2),l.dTen=i(1,0,10),l.dNaN=i(Number.NaN,Number.NaN,Number.NaN),l.dInf=i(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),l.dNegInf=i(-1,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),l.dNumberMax=n(1,0,Number.MAX_VALUE),l.dNumberMin=n(1,0,Number.MIN_VALUE),l}))},"85ec":function(t,e,r){},a55b:function(t,e,r){},a733:function(t,e,r){"use strict";r("2006")},b248:function(t,e,r){"use strict";r("e1c0")},b795:function(t,e,r){"use strict";r("6b35")},c667:function(t,e,r){"use strict";r("3d37")},e1c0:function(t,e,r){},fe29:function(t,e,r){"use strict";r("22a8")}}); +//# sourceMappingURL=app.d9e1be55.js.map \ No newline at end of file diff --git a/dream/js/app.d9e1be55.js.map b/dream/js/app.d9e1be55.js.map new file mode 100644 index 000000000..a16804413 --- /dev/null +++ b/dream/js/app.d9e1be55.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?7e02","webpack:///./src/components/Town.vue?868e","webpack:///./src/App.vue?3e14","webpack:///./src/components/Header.vue?26a6","webpack:///src/components/Header.vue","webpack:///./src/components/Header.vue?4c35","webpack:///./src/components/Header.vue","webpack:///./src/components/Town.vue?ac91","webpack:///./src/components/Modal.vue?49a4","webpack:///src/components/Modal.vue","webpack:///./src/components/Modal.vue?cf53","webpack:///./src/components/Modal.vue","webpack:///src/components/Town.vue","webpack:///./src/components/Town.vue?debc","webpack:///./src/components/Town.vue","webpack:///./src/components/Dream.vue?08eb","webpack:///./src/components/Floor.vue?8e41","webpack:///./src/components/Action.vue?7ef9","webpack:///src/components/Action.vue","webpack:///./src/components/Action.vue?1eca","webpack:///./src/components/Action.vue","webpack:///./src/components/ActionPreview.vue?be5b","webpack:///src/components/ActionPreview.vue","webpack:///./src/components/ActionPreview.vue?d3c2","webpack:///./src/components/ActionPreview.vue","webpack:///src/components/Floor.vue","webpack:///./src/components/Floor.vue?8889","webpack:///./src/components/Floor.vue","webpack:///src/components/Dream.vue","webpack:///./src/components/Dream.vue?6cf6","webpack:///./src/components/Dream.vue","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue?bff9","webpack:///./src/numberFormatting.js","webpack:///./src/main.js","webpack:///./src/components/Floor.vue?87b8","webpack:///./src/common.js","webpack:///./src/break_eternity.js","webpack:///./src/components/Modal.vue?cc2a","webpack:///./src/components/Dream.vue?a867","webpack:///./src/components/Action.vue?6c7d","webpack:///./src/components/Header.vue?6ece","webpack:///./src/components/ActionPreview.vue?9c04"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","style","$store","windowHeight","cycle","keepPlaying","attrs","staticClass","_v","_s","formatTime","timePlayed","on","keepGoing","ref","start","staticRenderFns","formatWhole","points","staticStyle","tempPoints","_e","_m","component","dreaming","onInit","class","building","highlight","tutorialOne","$event","$actions","openBuilding","closeBuilding","slot","buildingInfo","background","_l","enemy","startDream","upgradeInfo","description","lt","cost","upgradeBuilding","target","currentTarget","$emit","_t","tile","index","upgrades","Cot","toggleEndAtLoop","endingDream","endDream","endingDreamStatus","pow","blur","position","active","backgroundImage","path","type","width","action","toggleEndAtFloor","endAtFloor","actionProgress","getActionDuration","color","hp","gt","getMaxHealth","actions","currentAction","image","amount","maxHp","actionPreview","exponentialFormat","num","precision","mantissa","e","log10","floor","div","Decimal","toStringWithDecimalPlaces","add","commaFormat","undefined","mag","toFixed","layer","firstPart","Math","secondPart","toString","replace","substr","regularFormat","eq","toExponential","format","decimal","isNaN","sign","neg","Number","POSITIVE_INFINITY","gte","slog","sub","lte","storageKey","startData","innerHeight","autoSave","Array","fill","map","attackDuration","damage","progress","attackProgress","currentTime","performance","now","paused","Bank","Apothecary","Armory","gearLevel","started","endAtLoop","fixData","dataKey","isArray","loadedData","localStorage","getItem","assign","JSON","parse","atob","store","player","Vue","observable","getAttackDuration","times","clamp","MIN_VALUE","MAX_VALUE","toNumber","getAttackDamage","isCombatActive","getRandomModifier","random","save","setItem","btoa","stringify","setInterval","tiles","default","factorial","city","sqrt","savanna","graveyard","startLoop","modifier","forEach","vue","$root","$children","$refs","dream","scroll","$el","scrollTo","top","behavior","nextFloor","scrollTarget","children","offsetTop","nextAction","update","currTime","delta","alive","oldGearLevel","requestAnimationFrame","config","productionTip","use","panZoom","PerfectScrollbar","addEventListener","render","h","App","$mount","global","bgColor","fgColor","hiColor","raisedColor","otherColor","decimalZero","decimalOne","decimalNaN","NaN","enemies","infinite","base","_instanceof","hasInstance","_typeof","iterator","constructor","define","fromValue_noAlloc","fromComponents","fromComponents_noNormalize","a","ceil","abs","round","parseFloat","max","arguments","isFinite","log","exp","Error","fromDecimal","fromNumber","fromString","set","fromMantissaExponent","exponent","configurable","fromMantissaExponent_noNormalize","fromValue","negate","negated","sgn","trunc","plus","subtract","minus","mul","multiply","divide","recip","reciprocal","reciprocate","cmp","cmpabs","compare","equals","neq","notEquals","min","minabs","maxabs","clampMin","clampMax","cmp_tolerance","compare_tolerance","eq_tolerance","equals_tolerance","neq_tolerance","notEquals_tolerance","lt_tolerance","lte_tolerance","gt_tolerance","gte_tolerance","pLog10","absLog10","log2","ln","logarithm","pow10","root","gamma","lngamma","sqr","cube","cbrt","tetrate","iteratedexp","iteratedlog","layeradd10","layeradd","lambertw","ssqrt","pentate","affordGeometricSeries","affordGeometricSeries_core","sumGeometricSeries","sumGeometricSeries_core","affordArithmeticSeries","affordArithmeticSeries_core","sumArithmeticSeries","sumArithmeticSeries_core","efficiencyOfPurchase","efficiencyOfPurchase_core","randomDecimalForTesting","normalize","split","u","g","f","trim","toLowerCase","y","M","charAt","b","N","v","charCodeAt","_","F","NEGATIVE_INFINITY","mantissaWithDecimalPlaces","magnitudeWithDecimalPlaces","repeat","toPrecision","valueOf","toJSON","dZero","divideBy","dividedBy","dNaN","dOne","pow_base","E","dNegOne","sin","cos","tan","asin","acos","atan","Infinity","sinh","cosh","tanh","asinh","acosh","atanh","ascensionPenalty","egg","lessThanOrEqualTo","lessThan","greaterThanOrEqualTo","greaterThan","dTwo","dTen","dInf","dNegInf","dNumberMax","dNumberMin"],"mappings":"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","file":"js/app.d9e1be55.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Town.vue?vue&type=style&index=0&id=f050f780&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:({ '--height': _vm.$store.windowHeight + 'px' })},[(_vm.$store.cycle >= 5 && !_vm.$store.keepPlaying)?_c('transition',{attrs:{\"name\":\"victory\"}},[_c('div',{staticClass:\"victory\"},[_c('h1',[_vm._v(\"You Win!\")]),_c('h2',[_vm._v(\"Congratulations, you beat the game in:\"),_c('br'),_vm._v(_vm._s(_vm.formatTime(_vm.$store.timePlayed)))]),_c('h3',[_vm._v(\"You can keep going if you'd like, but things might get weird\")]),_c('button',{on:{\"click\":_vm.keepGoing}},[_vm._v(\"Keep Going\")])])]):(_vm.$store.started)?_c('div',{attrs:{\"id\":\"app\"}},[_c('Header'),_c('Town'),_c('Dream',{ref:\"dream\"})],1):_c('transition',{attrs:{\"name\":\"welcome\"}},[_c('div',{staticClass:\"welcome\",on:{\"click\":_vm.start}},[_c('img',{attrs:{\"src\":\"assets/logo.png\",\"alt\":\"Dream Hero\"}})])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('h2',[_vm._v(\"Dream Hero\")]),_c('h2',[_vm._v(_vm._s(_vm.formatWhole(_vm.$store.points)))]),(_vm.$store.dreaming)?_c('h2',{staticStyle:{\"color\":\"var(--hi-color)\"}},[_vm._v(\"+\"+_vm._s(_vm.formatWhole(_vm.$store.tempPoints)))]):_vm._e(),(_vm.$store.dreaming)?_c('h2',{staticStyle:{\"color\":\"var(--hi-color)\"}},[_vm._v(\"Cycle \"+_vm._s(_vm.$store.cycle + 1))]):_vm._e(),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"https://discord.gg/WzejVAx\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"src\":\"assets/discord.png\"}})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=373683a0&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=js&\"\nexport * from \"./Header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=373683a0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"373683a0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"town\"}},[(!this.$store.dreaming)?_c('div',{staticClass:\"town-container\"},[_c('panZoom',{on:{\"init\":_vm.onInit}},[_c('div',{staticClass:\"town\"},[_c('h1',{staticClass:\"background\"},[_vm._v(\"World Map\")]),_c('div',{class:{ building: true, highlight: _vm.$store.tutorialOne },staticStyle:{\"top\":\"500px\",\"left\":\"700px\"},on:{\"pointerdown\":function($event){return _vm.$actions.openBuilding('Cot')}}},[_vm._v(\" Cot \")]),(!_vm.$store.tutorialOne)?_c('div',{staticClass:\"building\",staticStyle:{\"top\":\"200px\",\"left\":\"600px\"},on:{\"pointerdown\":function($event){return _vm.$actions.openBuilding('Bank')}}},[_vm._v(\" Bank \")]):_vm._e(),(!_vm.$store.tutorialOne)?_c('div',{staticClass:\"building\",staticStyle:{\"top\":\"800px\",\"left\":\"200px\"},on:{\"pointerdown\":function($event){return _vm.$actions.openBuilding('Apothecary')}}},[_vm._v(\" Apothecary \")]):_vm._e(),(!_vm.$store.tutorialOne)?_c('div',{staticClass:\"building\",staticStyle:{\"top\":\"750px\",\"left\":\"800px\"},on:{\"pointerdown\":function($event){return _vm.$actions.openBuilding('Armory')}}},[_vm._v(\" Armory \")]):_vm._e()])]),_c('Modal',{attrs:{\"show\":_vm.$store.openBuilding !== ''},on:{\"close\":_vm.$actions.closeBuilding}},[_c('div',{staticStyle:{\"position\":\"relative\"},attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('img',{staticClass:\"header\",attrs:{\"src\":'assets/' + _vm.buildingInfo.background + '.png',\"alt\":\"$store.openBuilding\"}}),_c('div',{staticClass:\"header-enemies\"},_vm._l((_vm.buildingInfo.enemies),function(enemy){return _c('img',{key:enemy,attrs:{\"src\":'assets/' + enemy + '.png',\"alt\":enemy}})}),0),_c('h3',[_vm._v(_vm._s(_vm.$store.openBuilding))])]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[(_vm.$store.openBuilding === 'Cot')?_c('div',{staticStyle:{\"display\":\"flex\",\"margin-bottom\":\"8px\",\"border-bottom\":\"solid 2px var(--fg-color)\",\"padding-bottom\":\"8px\"}},[_c('span',{staticStyle:{\"flex-grow\":\"1\"}},[_vm._v(\"I'm feeling tired...\")]),_c('button',{staticStyle:{\"float\":\"right\"},on:{\"click\":function($event){return _vm.$actions.startDream()}}},[_vm._v(\"Dream\")])]):_vm._e(),(!_vm.$store.tutorialOne && _vm.upgradeInfo)?_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('span',{staticStyle:{\"flex-grow\":\"1\"}},[_vm._v(_vm._s(_vm.upgradeInfo.description))]),_c('button',{staticStyle:{\"float\":\"right\",\"margin-left\":\"4px\"},attrs:{\"disabled\":_vm.$store.points.lt(_vm.upgradeInfo.cost)},on:{\"click\":function($event){return _vm.upgradeBuilding()}}},[_vm._v(\" Cost: \"+_vm._s(_vm.formatWhole(_vm.upgradeInfo.cost))+\" \")])]):_c('div',[_vm._v(\" You've fully upgraded this! \")])]),_c('div',{staticStyle:{\"margin-bottom\":\"-24px\"},attrs:{\"slot\":\"footer\"},slot:\"footer\"})])],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[(_vm.show)?_c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\",on:{\"pointerdown\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('close')}}},[_c('div',{staticClass:\"modal-container\"},[_c('div',{staticClass:\"modal-header\"},[_vm._t(\"header\",[_vm._v(\" default header \")])],2),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"body\",[_vm._v(\" default body \")])],2),_c('div',{staticClass:\"modal-footer\"},[_vm._t(\"footer\",[_c('button',{staticClass:\"modal-default-button\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" Close \")])])],2)])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Modal.vue?vue&type=template&id=58320308&scoped=true&\"\nimport script from \"./Modal.vue?vue&type=script&lang=js&\"\nexport * from \"./Modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Modal.vue?vue&type=style&index=0&id=58320308&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58320308\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Town.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Town.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Town.vue?vue&type=template&id=f050f780&scoped=true&\"\nimport script from \"./Town.vue?vue&type=script&lang=js&\"\nexport * from \"./Town.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Town.vue?vue&type=style&index=0&id=f050f780&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f050f780\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('scroll',{ref:\"scroll\",staticClass:\"dream\"},[_vm._l((_vm.$store.path),function(tile,index){return _c('Floor',{key:index,attrs:{\"index\":index}})}),(_vm.$store.upgrades.Cot >= 1)?_c('div',{staticClass:\"endAtLoop\",on:{\"pointerdown\":_vm.toggleEndAtLoop}},[(_vm.$store.endAtLoop)?_c('h2',[_vm._v(\"Waking up at end of this sleep cycle\")]):_c('h2',[_vm._v(\"Entering deeper sleep at end of this sleep cycle\")]),_c('span',[_vm._v(\"Click to toggle\")])]):_vm._e(),_c('Modal',{attrs:{\"show\":_vm.$store.endingDream},on:{\"close\":_vm.$actions.endDream}},[_c('h3',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_vm._v(\"Time to wake up\")]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[(_vm.$store.endingDreamStatus === 'death')?_c('span',[_vm._v(\" Unfortunately, your dream has met an untimely end. You will only receive a portion of your coins:\"),_c('br'),_vm._v(\"+\"+_vm._s(_vm.formatWhole(_vm.$store.tempPoints.pow(0.8)))+\" \")]):(_vm.$store.endingDreamStatus === 'floor')?_c('span',[_vm._v(\" You wake up early, avoiding potential death at the cost of some of your potential coins:\"),_c('br'),_vm._v(\"+\"+_vm._s(_vm.formatWhole(_vm.$store.tempPoints.pow(0.9)))+\" \")]):_c('span',[_vm._v(\" You wake up feeling refreshed, with a heavier wallet:\"),_c('br'),_vm._v(\"+\"+_vm._s(_vm.formatWhole(_vm.$store.tempPoints))+\" \")])]),_c('div',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('button',{on:{\"pointerdown\":_vm.$actions.endDream}},[_vm._v(\"Wake Up\")])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ tile: true, blur: _vm.$store.position < _vm.index, active: _vm.$store.position === _vm.index }},[_c('span',{staticClass:\"indicator\"},[(_vm.$store.position === _vm.index)?_c('img',{staticClass:\"indicator-hero\",attrs:{\"src\":\"assets/hero.png\",\"alt\":\"hero\"}}):_c('div',{staticClass:\"indicator-index\"},[_vm._v(_vm._s(_vm.index + 1))])]),_c('span',{staticClass:\"actions-container\",style:({\n backgroundImage: 'url(assets/' + _vm.$store.path[_vm.index].type + '.png)',\n width: _vm.$store.upgrades.Cot >= 2 && _vm.$store.position === _vm.index ? '70%' : '85%'\n })},_vm._l((_vm.$store.path[_vm.index].actions),function(action,index){return _c('ActionPreview',{key:index,attrs:{\"action\":action,\"index\":index}})}),1),_c('span',{staticClass:\"endAtFloor\",style:({ width: _vm.$store.upgrades.Cot >= 2 && _vm.$store.position === _vm.index ? '15%' : '0%' }),on:{\"pointerdown\":_vm.toggleEndAtFloor}},[_vm._v(\" Wake up early:\"),_c('br'),_c('b',[_vm._v(_vm._s(_vm.$store.endAtFloor ? \"On\" : \"Off\"))])]),_c('Action',{attrs:{\"tile\":_vm.$store.path[_vm.index]}}),_c('div',{staticClass:\"actionProgress\"},[_c('div',{staticClass:\"actionProgress-fill\",style:({ width: 100 * _vm.$store.actionProgress / _vm.getActionDuration() + '%' })})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"action\",style:({ backgroundImage: 'url(assets/' + _vm.tile.type + '.png)' })},[_c('img',{staticClass:\"shake left\",attrs:{\"src\":\"assets/hero.png\",\"alt\":\"hero\"}}),_c('div',{staticClass:\"health left\"},[_c('span',{style:({ color: _vm.$store.hp.gt(_vm.getMaxHealth()) ? 'var(--raised-color)' : ''})},[_vm._v(_vm._s(_vm.formatWhole(_vm.$store.hp)))]),_c('div',{staticClass:\"health-fill\",style:({ width: 100 * _vm.$store.hp / _vm.getMaxHealth() + '%' })})]),_c('div',{staticClass:\"shake right\"},[(_vm.tile.actions[_vm.$store.currentAction].type === 'gold')?_c('img',{attrs:{\"src\":'assets/' + (_vm.tile.actions[_vm.$store.currentAction].image || 'gold') + '.png',\"alt\":_vm.tile.actions[_vm.$store.currentAction].image || 'gold'}}):(_vm.tile.actions[_vm.$store.currentAction].type === 'enemy')?_c('img',{attrs:{\"src\":'assets/' + _vm.tile.actions[_vm.$store.currentAction].enemy + '.png',\"alt\":_vm.tile.actions[_vm.$store.currentAction].enemy}}):(_vm.tile.actions[_vm.$store.currentAction].type === 'potion')?_c('img',{attrs:{\"src\":\"assets/potion.png\",\"alt\":\"potion\"}}):(_vm.tile.actions[_vm.$store.currentAction].type === 'gear')?_c('img',{attrs:{\"src\":\"assets/shield.png\",\"alt\":\"shield\"}}):_vm._e()]),(_vm.tile.actions[_vm.$store.currentAction].type === 'gold')?_c('span',{staticClass:\"amount right\"},[_vm._v(\" \"+_vm._s(_vm.formatWhole(_vm.tile.actions[_vm.$store.currentAction].amount))+\" \")]):_vm._e(),(_vm.tile.actions[_vm.$store.currentAction].type === 'enemy')?_c('div',{staticClass:\"health right\"},[_c('span',[_vm._v(_vm._s(_vm.formatWhole(_vm.tile.actions[_vm.$store.currentAction].hp)))]),_c('div',{staticClass:\"health-fill\",style:({ width: 100 * _vm.tile.actions[_vm.$store.currentAction].hp / _vm.tile.actions[_vm.$store.currentAction].maxHp + '%' })})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Action.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Action.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Action.vue?vue&type=template&id=10e41e9b&scoped=true&\"\nimport script from \"./Action.vue?vue&type=script&lang=js&\"\nexport * from \"./Action.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Action.vue?vue&type=style&index=0&id=10e41e9b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10e41e9b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.action.type === 'enemy')?_c('img',{class:{ actionPreview: true, active: _vm.index === _vm.$store.currentAction },attrs:{\"src\":'assets/' + _vm.action.enemy + '.png',\"alt\":_vm.action.enemy}}):(_vm.action.type === 'gold')?_c('div',{staticClass:\"amount-container\"},[_c('img',{staticClass:\"actionPreview\",class:{ actionPreview: true, active: _vm.index === _vm.$store.currentAction },attrs:{\"src\":'assets/' + (_vm.action.image || 'gold') + '.png',\"alt\":_vm.action.image || 'gold'}}),_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(_vm.formatWhole(_vm.action.amount)))])]):(_vm.action.type === 'potion')?_c('img',{class:{ actionPreview: true, active: _vm.index === _vm.$store.currentAction },attrs:{\"src\":\"assets/potion.png\",\"alt\":\"potion\"}}):(_vm.action.type === 'gear')?_c('img',{class:{ actionPreview: true, active: _vm.index === _vm.$store.currentAction },attrs:{\"src\":\"assets/shield.png\",\"alt\":\"shield\"}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPreview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ActionPreview.vue?vue&type=template&id=5df944e2&scoped=true&\"\nimport script from \"./ActionPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ActionPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActionPreview.vue?vue&type=style&index=0&id=5df944e2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5df944e2\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Floor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Floor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Floor.vue?vue&type=template&id=10491106&scoped=true&\"\nimport script from \"./Floor.vue?vue&type=script&lang=js&\"\nexport * from \"./Floor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Floor.vue?vue&type=style&index=0&id=10491106&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10491106\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dream.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dream.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dream.vue?vue&type=template&id=db681ec8&scoped=true&\"\nimport script from \"./Dream.vue?vue&type=script&lang=js&\"\nexport * from \"./Dream.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dream.vue?vue&type=style&index=0&id=db681ec8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"db681ec8\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=69d0afbe&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Decimal from './break_eternity.js'\n\nfunction exponentialFormat(num, precision, mantissa = true) {\n\tlet e = num.log10().floor();\n\tlet m = num.div(Decimal.pow(10, e));\n\tif(m.toStringWithDecimalPlaces(precision) === 10) {\n\t\tm = new Decimal(1);\n\t\te = e.add(1);\n\t}\n\te = commaFormat(e);\n\tif (mantissa) {\n\t\treturn m.toStringWithDecimalPlaces(precision)+\"e\"+e;\n\t} else {\n\t\treturn \"e\"+e;\n\t}\n}\n\nfunction commaFormat(num, precision) {\n\tif (num === null || num === undefined) {\n\t\treturn \"NaN\";\n\t}\n\tif (num.mag < 0.001) {\n\t\treturn (0).toFixed(precision);\n\t}\n\tif (precision === null || precision === undefined) {\n\t\tif (num.layer > 1) {\n\t\t\tlet firstPart = new Decimal(num);\n\t\t\tfirstPart.mag = Math.floor(num.mag);\n\t\t\tlet secondPart = new Decimal(num);\n\t\t\tsecondPart.layer = 0;\n\t\t\tsecondPart.mag = num.mag - firstPart.mag;\n\t\t\treturn firstPart.floor().toString().replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\") + secondPart.toStringWithDecimalPlaces(2).substr(1);\n\t\t}\n\t\treturn num.floor().toString().replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\");\n\t}\n\treturn num.toStringWithDecimalPlaces(precision).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\");\n}\n\nfunction regularFormat(num, precision) {\n\tif (num === null || num === undefined) {\n\t\treturn \"NaN\";\n\t}\n\tif (num.eq(0)) {\n\t\treturn (0).toFixed(precision);\n\t}\n\tif (num.mag < 0.001) {\n\t\treturn num.toExponential(precision);\n\t}\n\treturn num.toStringWithDecimalPlaces(precision);\n}\n\nfunction format(decimal, precision=2,) {\n\tdecimal = new Decimal(decimal);\n\tif (isNaN(decimal.sign)||isNaN(decimal.layer)||isNaN(decimal.mag)) {\n\t\treturn \"NaN\";\n\t}\n\tif (decimal.sign<0) {\n\t\treturn \"-\"+format(decimal.neg(), precision);\n\t}\n\tif (decimal.mag === Number.POSITIVE_INFINITY) {\n\t\treturn \"Infinity\";\n\t}\n\tif (decimal.gte(\"eeee1000\")) {\n\t\tconst slog = decimal.slog();\n\t\tif (slog.gte(1e6)) {\n\t\t\treturn \"F\" + format(slog.floor());\n\t\t} else {\n\t\t\treturn Decimal.pow(10, slog.sub(slog.floor())).toStringWithDecimalPlaces(3) + \"F\" + commaFormat(slog.floor(), 0);\n\t\t}\n\t} else if (decimal.gte(\"1e100000\")) {\n\t\treturn exponentialFormat(decimal, 0, false);\n\t} else if (decimal.gte(\"1e1000\")) {\n\t\treturn exponentialFormat(decimal, 0);\n\t} else if (decimal.gte(1e6)) {\n\t\treturn exponentialFormat(decimal, precision);\n\t} else if (decimal.gte(1e3)) {\n\t\treturn commaFormat(decimal, 0);\n\t} else {\n\t\treturn regularFormat(decimal, precision);\n\t}\n}\n\nfunction formatWhole(decimal) {\n\tdecimal = new Decimal(decimal).floor();\n\tif (decimal.gte(1e6)) {\n\t\treturn format(decimal, 2);\n\t}\n\tif (decimal.lte(0.98) && !decimal.eq(0)) {\n\t\treturn format(decimal, 2);\n\t}\n\treturn format(decimal, 0);\n}\n\nfunction formatTime(s) {\n\tif (s<60) {\n\t\treturn format(s)+\"s\";\n\t} else if (s<3600) {\n\t\treturn formatWhole(Math.floor(s/60))+\"m \"+format(s%60)+\"s\";\n\t} else if (s<86400) {\n\t\treturn formatWhole(Math.floor(s/3600))+\"h \"+formatWhole(Math.floor(s/60)%60)+\"m \"+format(s%60)+\"s\";\n\t} else if (s<31536000) {\n\t\treturn formatWhole(Math.floor(s/84600)%365)+\"d \" + formatWhole(Math.floor(s/3600)%24)+\"h \"+formatWhole(Math.floor(s/60)%60)+\"m \"+format(s%60)+\"s\";\n\t} else {\n\t\treturn formatWhole(Math.floor(s/31536000))+\"y \"+formatWhole(Math.floor(s/84600)%365)+\"d \" + formatWhole(Math.floor(s/3600)%24)+\"h \"+formatWhole(Math.floor(s/60)%60)+\"m \"+format(s%60)+\"s\";\n\t}\n}\n\nwindow.format = format;\nwindow.formatWhole = formatWhole;\nwindow.formatTime = formatTime;\nwindow.regularFormat = regularFormat;\nwindow.commaFormat = commaFormat;\nwindow.exponentialFormat = exponentialFormat;\n\nexport { format, formatWhole, formatTime, regularFormat, commaFormat, exponentialFormat };\n","import Vue from 'vue';\nimport App from './App.vue';\nimport panZoom from 'vue-panzoom';\nimport PerfectScrollbar from 'vue2-perfect-scrollbar';\nimport 'vue2-perfect-scrollbar/dist/vue2-perfect-scrollbar.css';\nimport Decimal from './break_eternity.js'\nimport { } from './common.js'\nimport { format, formatWhole, formatTime } from './numberFormatting.js'\n\nconst storageKey = \"thepaperpilot-dream\";\n\n// Load data from localStorage\nconst startData = {\n\twindowHeight: window.innerHeight,\n\ttimePlayed: 0,\n\tkeepPlaying: false,\n\tpoints: new Decimal(0),\n\ttempPoints: new Decimal(0),\n\tdreaming: false,\n\tautoSave: true,\n\topenBuilding: '',\n\ttutorialOne: true,\n\tpath: new Array(10).fill(0).map(() => ({\n\t\tactions: new Array(100).fill(0).map(() => ({\n\t\t\ttype: \"\",\n\t\t\tenemy: \"\",\n\t\t\tmaxHp: new Decimal(0),\n\t\t\thp: new Decimal(0),\n\t\t\tattackDuration: 0,\n\t\t\tdamage: new Decimal(0),\n\t\t\tprogress: 0\n\t\t})),\n\t\ttype: \"\"\n\t})),\n\tcurrentAction: 0,\n\tactionProgress: -1,\n\tattackProgress: 0,\n\tcycle: 0,\n\tcurrentTime: performance.now(),\n\thp: new Decimal(0),\n\tpaused: false,\n\tupgrades: {\n\t\tCot: 0,\n\t\tBank: 0,\n\t\tApothecary: 0,\n\t\tArmory: 0\n\t},\n\tgearLevel: 0,\n\tstarted: false,\n\tendAtLoop: false,\n\tendAtFloor: false,\n\tendingDream: false,\n\tendingDreamStatus: \"death\" // \"loop\", \"floor\"\n};\nfunction fixData(data, startData) {\n\tfor (let dataKey in startData) {\n\t\tif (startData[dataKey] == null) {\n\t\t\tif (data[dataKey] === undefined) {\n\t\t\t\tdata[dataKey] = null;\n\t\t\t}\n\t\t} else if (Array.isArray(startData[dataKey])) {\n\t\t\tif (data[dataKey] === undefined) {\n\t\t\t\tdata[dataKey] = startData[dataKey];\n\t\t\t} else {\n\t\t\t\tfixData(startData[dataKey], data[dataKey]);\n\t\t\t}\n\t\t} else if (startData[dataKey] instanceof Decimal) { // Convert to Decimal\n\t\t\tif (data[dataKey] == undefined) {\n\t\t\t\tdata[dataKey] = startData[dataKey];\n\t\t\t} else {\n\t\t\t\tdata[dataKey] = new Decimal(data[dataKey]);\n\t\t\t}\n\t\t} else if ((!!startData[dataKey]) && (typeof startData[dataKey] === \"object\")) {\n\t\t\tif (data[dataKey] == undefined || (typeof data[dataKey] !== \"object\")) {\n\t\t\t\tdata[dataKey] = startData[dataKey];\n\t\t\t} else {\n\t\t\t\tfixData(startData[dataKey], data[dataKey]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (data[dataKey] == undefined) {\n\t\t\t\tdata[dataKey] = startData[dataKey];\n\t\t\t}\n\t\t}\n\t}\n}\nlet loadedData = localStorage.getItem(storageKey);\nif (loadedData == null) {\n\tloadedData = startData;\n} else {\n\tloadedData = Object.assign({}, startData, JSON.parse(atob(loadedData)));\n\tfixData(loadedData, startData);\n}\nconst store = window.player = Vue.observable(loadedData);\nVue.prototype.$store = store;\n\n// Set up auto-saving every 5s\nwindow.save = function() {\n\tif (store.autoSave) {\n\t\tlocalStorage.setItem(storageKey, btoa(JSON.stringify(window.player)));\n\t}\n}\nsetInterval(window.save, 5000);\n\n// Add getters to Vue\nfunction getAttackDuration() {\n\treturn Decimal.times(1, Decimal.pow(.95, store.gearLevel)).clamp(Number.MIN_VALUE, Number.MAX_VALUE).toNumber();\n}\nVue.prototype.getAttackDuration = window.getAttackDuration = getAttackDuration;\nfunction getAttackDamage() {\n\tlet damage = Decimal.add(2, store.gearLevel).pow(2);\n\tif (store.hp.gt(getMaxHealth())) {\n\t\tdamage = damage.times(2);\n\t}\n\treturn damage;\n}\nVue.prototype.getAttackDamage = window.getAttackDamage = getAttackDamage;\nfunction getActionDuration() {\n\treturn Decimal.times(2, Decimal.pow(.98, store.gearLevel)).clamp(Number.MIN_VALUE, Number.MAX_VALUE).toNumber();\n}\nVue.prototype.getActionDuration = window.getActionDuration = getActionDuration;\nfunction getMaxHealth(gearLevel) {\n\treturn new Decimal(25).times(Decimal.add(1, gearLevel || store.gearLevel).pow(2));\n}\nVue.prototype.getMaxHealth = window.getMaxHealth = getMaxHealth;\nfunction isCombatActive() {\n\tif (!store.dreaming) {\n\t\treturn false;\n\t}\n\tif (store.path[store.position].actions[store.currentAction].type !== \"enemy\") {\n\t\treturn false;\n\t}\n\tif (store.actionProgress < getActionDuration()) {\n\t\treturn false;\n\t}\n\treturn true;\n}\nVue.prototype.isCombatActive = window.isCombatActive = isCombatActive;\n\n// Set up actions\nfunction getRandomModifier(cycle) {\n\treturn (Math.random() * 0.2 + 0.8) * (cycle * 1.5);\n}\nconst tiles = {\n\tdefault: [\n\t\tcycle => { // Bat\n\t\t\tconst hp = new Decimal(getRandomModifier(cycle) + 3).factorial().floor();\n\t\t\treturn Vue.observable({\n\t\t\t\ttype: \"enemy\",\n\t\t\t\tenemy: \"bat\",\n\t\t\t\tmaxHp: hp,\n\t\t\t\thp,\n\t\t\t\tattackDuration: Decimal.times(2, Decimal.pow(.9, cycle)).toNumber(),\n\t\t\t\tdamage: new Decimal(getRandomModifier(cycle) + 1.5).factorial().floor(),\n\t\t\t\tprogress: 0\n\t\t\t});\n\t\t},\n\t\tcycle => { // Gold\n\t\t\treturn Vue.observable({ type: \"gold\", amount: new Decimal(getRandomModifier(cycle) + 1).factorial().times(Decimal.pow(2, store.upgrades.Bank)).floor() });\n\t\t}\n\t],\n\tcity: [\n\t\tcycle => { // Slime\n\t\t\tconst hp = new Decimal(getRandomModifier(cycle) + 2.75).factorial().floor();\n\t\t\treturn Vue.observable({\n\t\t\t\ttype: \"enemy\",\n\t\t\t\tenemy: \"slime\",\n\t\t\t\tmaxHp: hp,\n\t\t\t\thp,\n\t\t\t\tattackDuration: Decimal.times(1, Decimal.pow(.5, cycle + 1)).toNumber(),\n\t\t\t\tdamage: new Decimal(cycle + 1).sqrt(),\n\t\t\t\tprogress: 0\n\t\t\t});\n\t\t},\n\t\tcycle => { // Gold\n\t\t\treturn Vue.observable({ type: \"gold\", image: \"dollar\", amount: new Decimal(getRandomModifier(cycle) + 2).factorial().times(Decimal.pow(2, store.upgrades.Bank)).floor() });\n\t\t}\n\t],\n\tsavanna: [\n\t\tcycle => { // Witch\n\t\t\tconst hp = new Decimal(getRandomModifier(cycle) + 3).factorial().floor();\n\t\t\treturn Vue.observable({\n\t\t\t\ttype: \"enemy\",\n\t\t\t\tenemy: \"witch\",\n\t\t\t\tmaxHp: hp,\n\t\t\t\thp,\n\t\t\t\tattackDuration: Decimal.times(2, Decimal.pow(.95, cycle)).toNumber(),\n\t\t\t\tdamage: new Decimal(getRandomModifier(cycle) + 2).factorial().floor(),\n\t\t\t\tprogress: 0\n\t\t\t});\n\t\t},\n\t\t() => { // Potion\n\t\t\treturn Vue.observable({ type: \"potion\" });\n\t\t}\n\t],\n\tgraveyard: [\n\t\tcycle => { // Skeleton\n\t\t\tconst hp = new Decimal(getRandomModifier(cycle) + 2.5).factorial().floor();\n\t\t\treturn Vue.observable({\n\t\t\t\ttype: \"enemy\",\n\t\t\t\tenemy: \"skeleton\",\n\t\t\t\tmaxHp: hp,\n\t\t\t\thp,\n\t\t\t\tattackDuration: Decimal.times(3, Decimal.pow(.98, cycle)).toNumber(),\n\t\t\t\tdamage: new Decimal(getRandomModifier(cycle) + 2.5).factorial().floor(),\n\t\t\t\tprogress: 0\n\t\t\t});\n\t\t},\n\t\tcycle => { // Gear\n\t\t\treturn Vue.observable({ type: \"gear\", amount: (cycle + 1) / 10 });\n\t\t}\n\t]\n}\n\nconst actions = window.actions = {\n\tstartDream() {\n\t\tstore.endAtLoop = false;\n\t\tstore.endAtFloor = false;\n\t\tstore.tutorialOne = false;\n\t\tstore.openBuilding = '';\n\t\tstore.cycle = -1;\n\t\tlet tiles = [ \"default\" ];\n\t\tif (store.upgrades[\"Bank\"] >= 1) {\n\t\t\ttiles.push(\"city\");\n\t\t}\n\t\tif (store.upgrades[\"Apothecary\"] >= 1) {\n\t\t\ttiles.push(\"savanna\");\n\t\t}\n\t\tif (store.upgrades[\"Armory\"] >= 1) {\n\t\t\ttiles.push(\"graveyard\");\n\t\t}\n\t\tstore.path = new Array(10).fill(0).map(() => ({ type: tiles[Math.floor(Math.random() * tiles.length)] }));\n\t\tstore.position = 0;\n\t\tstore.tempPoints = new Decimal(0);\n\t\tstore.gearLevel = store.upgrades.Armory;\n\t\tstore.hp = getMaxHealth();\n\t\tthis.startLoop();\n\t\tstore.dreaming = true;\n\t},\n\tendDream() {\n\t\tlet modifier = 1;\n\t\tif (store.endingDreamStatus === \"death\") {\n\t\t\tmodifier = 0.8;\n\t\t} else if (store.endingDreamStatus === \"floor\") {\n\t\t\tmodifier = 0.9;\n\t\t}\n\t\tstore.points = store.points.add(store.tempPoints.pow(modifier));\n\t\tstore.dreaming = false;\n\t\tstore.endingDream = false;\n\t},\n\tstartLoop() {\n\t\tstore.cycle++;\n\t\tstore.position = -1;\n\t\tstore.path.forEach(tile => {\n\t\t\ttile.actions = new Array(store.cycle + 1).fill(0).map(() => tiles[tile.type][Math.floor(Math.random() * tiles[tile.type].length)](store.cycle));\n\t\t});\n\t\twindow.vue.$root.$children[0].$refs.dream.$refs.scroll.$el.scrollTo({top: 0, behavior: 'smooth'});\n\t\tthis.nextFloor();\n\t},\n\tnextFloor() {\n\t\tstore.position = store.position + 1;\n\t\tif (store.position >= 10) {\n\t\t\tif (store.upgrades.Cot >= 1 && !store.endAtLoop) {\n\t\t\t\tthis.startLoop();\n\t\t\t} else {\n\t\t\t\tstore.endingDreamStatus = \"loop\";\n\t\t\t\tstore.endingDream = true;\n\t\t\t\tstore.position = store.points - 1;\n\t\t\t\tstore.currentAction = store.currentAction - 1;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tstore.currentAction = -1;\n\t\tconst scrollTarget = window.vue.$root.$children[0].$refs.dream.$refs.scroll.$el.children[store.position].offsetTop - 250;\n\t\twindow.vue.$root.$children[0].$refs.dream.$refs.scroll.$el.scrollTo({ top: scrollTarget, behavior: 'smooth' });\n\t\tthis.nextAction();\n\t},\n\tnextAction() {\n\t\tstore.currentAction++;\n\t\tif (store.currentAction >= store.path[store.position].actions.length) {\n\t\t\tif (store.upgrades.Cot < 2 || !store.endAtFloor) {\n\t\t\t\tthis.nextFloor();\n\t\t\t} else {\n\t\t\t\tstore.endingDreamStatus = \"floor\";\n\t\t\t\tstore.endingDream = true;\n\t\t\t\tstore.currentAction = store.currentAction - 1;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tstore.actionProgress = 0;\n\t\tstore.attackProgress = 0;\n\t},\n\topenBuilding(building) {\n\t\tstore.openBuilding = building;\n\t},\n\tcloseBuilding() {\n\t\tstore.openBuilding = '';\n\t}\n};\nVue.prototype.$actions = actions;\nVue.prototype.window = window;\n\n// Add utility functions to Vue\nVue.prototype.format = format;\nVue.prototype.formatWhole = formatWhole;\nVue.prototype.formatTime = formatTime;\n\n// Setup Vue\nVue.config.productionTip = false;\nVue.use(panZoom);\nVue.use(PerfectScrollbar, { name: 'scroll' });\n\nwindow.addEventListener('resize', () => {\n\tstore.windowHeight = window.innerHeight;\n});\n\n// Start Vue\nwindow.vue = new Vue({\n render: h => h(App),\n}).$mount('#app');\n\n// Setup update loop\nfunction update(currTime) {\n\t// TODO offline time doesn't work if using performance.now()\n\tconst delta = (currTime - store.currentTime) / 1000;\n\tif (delta > 0 && !store.paused && store.started && (store.cycle < 5 || store.keepPlaying)) {\n\t\tstore.timePlayed += delta;\n\t\tif (store.dreaming && !store.endingDream) {\n\t\t\tstore.actionProgress += delta;\n\t\t\tif (isCombatActive()) {\n\t\t\t\tstore.attackProgress += delta;\n\t\t\t\tstore.path[store.position].actions[store.currentAction].progress += delta;\n\t\t\t\tlet alive = true;\n\t\t\t\tif (store.attackProgress >= getAttackDuration()) {\n\t\t\t\t\tstore.attackProgress = 0;\n\t\t\t\t\tstore.path[store.position].actions[store.currentAction].hp =\n\t\t\t\t\t\tstore.path[store.position].actions[store.currentAction].hp.sub(getAttackDamage());\n\t\t\t\t\tif (store.path[store.position].actions[store.currentAction].hp.lte(0)) {\n\t\t\t\t\t\tactions.nextAction();\n\t\t\t\t\t\talive = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (alive && store.path[store.position].actions[store.currentAction].progress >= store.path[store.position].actions[store.currentAction].attackDuration) {\n\t\t\t\t\tstore.path[store.position].actions[store.currentAction].progress = 0;\n\t\t\t\t\tstore.hp = store.hp.sub(store.path[store.position].actions[store.currentAction].damage);\n\t\t\t\t\tif (store.hp.lte(0)) {\n\t\t\t\t\t\tstore.endingDream = true;\n\t\t\t\t\t\tstore.endingDreamStatus = \"death\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (store.actionProgress >= getActionDuration()) {\n\t\t\t\t\tswitch (store.path[store.position].actions[store.currentAction].type) {\n\t\t\t\t\t\tcase \"gold\":\n\t\t\t\t\t\t\tstore.tempPoints = store.tempPoints.add(store.path[store.position].actions[store.currentAction].amount);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"gear\": {\n\t\t\t\t\t\t\tconst oldGearLevel = store.gearLevel;\n\t\t\t\t\t\t\tstore.gearLevel += store.path[store.position].actions[store.currentAction].amount * store.upgrades.Armory;\n\t\t\t\t\t\t\tstore.hp = store.hp.add(getMaxHealth().sub(getMaxHealth(oldGearLevel)));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"potion\":\n\t\t\t\t\t\t\tstore.hp = store.hp.add(getMaxHealth().times(0.25).times(store.upgrades.Apothecary + 1));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tactions.nextAction();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tstore.currentTime = currTime;\n\trequestAnimationFrame(update);\n}\nupdate(performance.now());\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Floor.vue?vue&type=style&index=0&id=10491106&scoped=true&lang=css&\"","import Decimal from './break_eternity.js'\n\nglobal.Decimal = Decimal\n\nconst bgColor = \"#ee8695\";\nconst fgColor = \"#292831\";\nconst hiColor = \"#333f58\";\nconst raisedColor = \"#fbbbad\";\nconst otherColor = \"#4a7a96\";\n\nconst decimalZero = new Decimal(0);\nconst decimalOne = new Decimal(1);\nconst decimalNaN = new Decimal(NaN);\n\nconst buildingInfo = {\n\tCot: {\n\t\tbackground: \"default\",\n\t\tenemies: [ \"bat\" ],\n\t\tupgrades: [\n\t\t\t{ description: \"I'd sleep better on something comfier\", cost: new Decimal(2) },\n\t\t\t{ description: \"An even comfier bed could give me better control on when I wake up\", cost: new Decimal(2500) },\n\t\t\t// TODO upgrade to select order of dream path\n\t\t]\n\t},\n\tBank: {\n\t\tbackground: \"city\",\n\t\tenemies: [ \"slime\" ],\n\t\tupgrades: [\n\t\t\t{ description: \"Building a bank allows me to adventure to cities in my dreams, with increased riches\", cost: new Decimal(100) }\n\t\t],\n\t\tinfinite: {\n\t\t\tdescription: \"Improve the bank to double all gold gain\",\n\t\t\tr: 5,\n\t\t\tbase: 100\n\t\t}\n\t},\n\tApothecary: {\n\t\tbackground: \"savanna\",\n\t\tenemies: [ \"witch\" ],\n\t\tupgrades: [\n\t\t\t{ description: \"Building an apothecary will allow me to find potions in my dreams\", cost: new Decimal(10000) }\n\t\t],\n\t\tinfinite: {\n\t\t\tdescription: \"Improve the apothecary to increase how much potions heal\",\n\t\t\tr: 3,\n\t\t\tbase: 10000\n\t\t}\n\t},\n\tArmory: {\n\t\tbackground: \"graveyard\",\n\t\tenemies: [ \"skeleton\" ],\n\t\tupgrades: [\n\t\t\t{ description: \"Building an armory will help my gear up in my dreams\", cost: new Decimal(10) }\n\t\t],\n\t\tinfinite: {\n\t\t\tdescription: \"Improve the armory to increase starting gear level\",\n\t\t\tr: 8,\n\t\t\tbase: 10\n\t\t}\n\t}\n}\n\nexport default { bgColor, fgColor, hiColor, raisedColor, otherColor, decimalZero, decimalOne, decimalNaN, buildingInfo };\n","/* eslint-disable */\n\"use strict\";function _instanceof(t,r){return null!=r&&\"undefined\"!=typeof Symbol&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](t):t instanceof r}function _typeof(t){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}!function(t,r){\"object\"===(\"undefined\"==typeof exports?\"undefined\":_typeof(exports))&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(r):(t=t||self).Decimal=r()}(void 0,function(){var t=Math.log10(9e15),r=function(){for(var t=[],r=-323;r<=308;r++)t.push(Number(\"1e\"+r));return function(r){return t[r+323]}}(),i=function(t){return h.fromValue_noAlloc(t)},e=function(t,r,i){return h.fromComponents(t,r,i)},n=function(t,r,i){return h.fromComponents_noNormalize(t,r,i)},a=function(t,r){var i=r+1,e=Math.ceil(Math.log10(Math.abs(t))),n=Math.round(t*Math.pow(10,i-e))*Math.pow(10,e-i);return parseFloat(n.toFixed(Math.max(i-e,0)))},s=function(t){return Math.sign(t)*Math.log10(Math.abs(t))},o=function(t){var r,i,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;if(!Number.isFinite(t))return t;if(0===t)return t;if(1===t)return.5671432904097838;r=t<10?0:Math.log(t)-Math.log(Math.log(t));for(var n=0;n<100;++n){if(i=(t*Math.exp(-r)+r*r)/(r+1),Math.abs(i-r)1&&void 0!==arguments[1]?arguments[1]:2,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(1,0,1);return i(t).tetrate(r,e)},h.iteratedexp=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(1,0,1);return i(t).iteratedexp(r,e)},h.iteratedlog=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return i(t).iteratedlog(r,e)},h.layeradd10=function(t,r){return i(t).layeradd10(r)},h.layeradd=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10;return i(t).layeradd(r,e)},h.slog=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;return i(t).slog(r)},h.lambertw=function(t){return i(t).lambertw()},h.ssqrt=function(t){return i(t).ssqrt()},h.pentate=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(1,0,1);return i(t).pentate(r,e)},h.affordGeometricSeries=function(t,r,e,n){return this.affordGeometricSeries_core(i(t),i(r),i(e),n)},h.sumGeometricSeries=function(t,r,e,n){return this.sumGeometricSeries_core(t,i(r),i(e),n)},h.affordArithmeticSeries=function(t,r,e,n){return this.affordArithmeticSeries_core(i(t),i(r),i(e),i(n))},h.sumArithmeticSeries=function(t,r,e,n){return this.sumArithmeticSeries_core(i(t),i(r),i(e),i(n))},h.efficiencyOfPurchase=function(t,r,e){return this.efficiencyOfPurchase_core(i(t),i(r),i(e))},h.randomDecimalForTesting=function(t){if(20*Math.random()<1)return n(0,0,0);var r=Math.random()>.5?1:-1;if(20*Math.random()<1)return n(r,0,1);var i=Math.floor(Math.random()*(t+1)),a=0===i?616*Math.random()-308:16*Math.random();Math.random()>.9&&(a=Math.trunc(a));var s=Math.pow(10,a);return Math.random()>.9&&(s=Math.trunc(s)),e(r,i,s)},h.affordGeometricSeries_core=function(t,r,i,e){var n=r.mul(i.pow(e));return h.floor(t.div(n).mul(i.sub(1)).add(1).log10().div(i.log10()))},h.sumGeometricSeries_core=function(t,r,i,e){return r.mul(i.pow(e)).mul(h.sub(1,i.pow(t))).div(h.sub(1,i))},h.affordArithmeticSeries_core=function(t,r,i,e){var n=r.add(e.mul(i)).sub(i.div(2)),a=n.pow(2);return n.neg().add(a.add(i.mul(t).mul(2)).sqrt()).div(i).floor()},h.sumArithmeticSeries_core=function(t,r,i,e){var n=r.add(e.mul(i));return t.div(2).mul(n.mul(2).plus(t.sub(1).mul(i)))},h.efficiencyOfPurchase_core=function(t,r,i){return t.div(r).add(t.div(i))},h.prototype.normalize=function(){if(0===this.sign||0===this.mag&&0===this.layer)return this.sign=0,this.mag=0,this.layer=0,this;if(0===this.layer&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),0===this.layer&&this.mag<1/9e15)return this.layer+=1,this.mag=Math.log10(this.mag),this;var r=Math.abs(this.mag),i=Math.sign(this.mag);if(r>=9e15)return this.layer+=1,this.mag=i*Math.log10(r),this;for(;r0;)this.layer-=1,0===this.layer?this.mag=Math.pow(10,this.mag):(this.mag=i*Math.pow(10,r),r=Math.abs(this.mag),i=Math.sign(this.mag));return 0===this.layer&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):0===this.mag&&(this.sign=0)),this},h.prototype.fromComponents=function(t,r,i){return this.sign=t,this.layer=r,this.mag=i,this.normalize(),this},h.prototype.fromComponents_noNormalize=function(t,r,i){return this.sign=t,this.layer=r,this.mag=i,this},h.prototype.fromMantissaExponent=function(t,r){return this.layer=1,this.sign=Math.sign(t),t=Math.abs(t),this.mag=r+Math.log10(t),this.normalize(),this},h.prototype.fromMantissaExponent_noNormalize=function(t,r){return this.fromMantissaExponent(t,r),this},h.prototype.fromDecimal=function(t){return this.sign=t.sign,this.layer=t.layer,this.mag=t.mag,this},h.prototype.fromNumber=function(t){return this.mag=Math.abs(t),this.sign=Math.sign(t),this.layer=0,this.normalize(),this};h.prototype.fromString=function(t){var r=(t=t.replace(\",\",\"\")).split(\"^^^\");if(2===r.length){var n=parseFloat(r[0]),a=parseFloat(r[1]),o=1;if(2===(l=r[1].split(\";\")).length){o=parseFloat(l[1]);isFinite(o)||(o=1)}if(isFinite(n)&&isFinite(a)){var u=h.pentate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var g=t.split(\"^^\");if(2===g.length){var l;n=parseFloat(g[0]),a=parseFloat(g[1]);if(2===(l=g[1].split(\";\")).length){o=parseFloat(l[1]);isFinite(o)||(o=1)}if(isFinite(n)&&isFinite(a)){u=h.tetrate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var m,f=t.split(\"^\");if(2===f.length){n=parseFloat(f[0]);var c=parseFloat(f[1]);if(isFinite(n)&&isFinite(c)){u=h.pow(n,c);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}if(2===(m=(t=t.trim().toLowerCase()).split(\"pt\")).length){n=10,a=parseFloat(m[0]),m[1]=m[1].replace(\"(\",\"\"),m[1]=m[1].replace(\")\",\"\");o=parseFloat(m[1]);if(isFinite(o)||(o=1),isFinite(n)&&isFinite(a)){u=h.tetrate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}if(2===(m=t.split(\"p\")).length){n=10,a=parseFloat(m[0]),m[1]=m[1].replace(\"(\",\"\"),m[1]=m[1].replace(\")\",\"\");o=parseFloat(m[1]);if(isFinite(o)||(o=1),isFinite(n)&&isFinite(a)){u=h.tetrate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var p=t.split(\"e\"),y=p.length-1;if(0===y){var d=parseFloat(t);if(isFinite(d))return this.fromNumber(d)}else if(1===y){d=parseFloat(t);if(isFinite(d)&&0!==d)return this.fromNumber(d)}var M=t.split(\"e^\");if(2===M.length){this.sign=1,\"-\"==M[0].charAt(0)&&(this.sign=-1);for(var b=\"\",N=0;N=43&&v<=57||101===v))return this.layer=parseFloat(b),this.mag=parseFloat(M[1].substr(N+1)),this.normalize(),this;b+=M[1].charAt(N)}}if(y<1)return this.sign=0,this.layer=0,this.mag=0,this;var _=parseFloat(p[0]);if(0===_)return this.sign=0,this.layer=0,this.mag=0,this;c=parseFloat(p[p.length-1]);if(y>=2){var F=parseFloat(p[p.length-2]);isFinite(F)&&(c*=Math.sign(F),c+=s(F))}if(isFinite(_))if(1===y)this.sign=Math.sign(_),this.layer=1,this.mag=c+Math.log10(Math.abs(_));else{if(this.sign=Math.sign(_),this.layer=y,2===y){u=h.mul(e(1,2,c),i(_));return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}this.mag=c}else this.sign=\"-\"===p[0]?-1:1,this.layer=y,this.mag=c;return this.normalize(),this},h.prototype.fromValue=function(t){return _instanceof(t,h)?this.fromDecimal(t):\"number\"==typeof t?this.fromNumber(t):\"string\"==typeof t?this.fromString(t):(this.sign=0,this.layer=0,this.mag=0,this)},h.prototype.toNumber=function(){return Number.isFinite(this.layer)?0===this.layer?this.sign*this.mag:1===this.layer?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN},h.prototype.mantissaWithDecimalPlaces=function(t){return isNaN(this.m)?Number.NaN:0===this.m?0:a(this.m,t)},h.prototype.magnitudeWithDecimalPlaces=function(t){return isNaN(this.mag)?Number.NaN:0===this.mag?0:a(this.mag,t)},h.prototype.toString=function(){return 0===this.layer?this.mag<1e21&&this.mag>1e-7||0===this.mag?(this.sign*this.mag).toString():this.m+\"e\"+this.e:1===this.layer?this.m+\"e\"+this.e:this.layer<=5?(-1===this.sign?\"-\":\"\")+\"e\".repeat(this.layer)+this.mag:(-1===this.sign?\"-\":\"\")+\"(e^\"+this.layer+\")\"+this.mag},h.prototype.toExponential=function(t){return 0===this.layer?(this.sign*this.mag).toExponential(t):this.toStringWithDecimalPlaces(t)},h.prototype.toFixed=function(t){return 0===this.layer?(this.sign*this.mag).toFixed(t):this.toStringWithDecimalPlaces(t)},h.prototype.toPrecision=function(t){return this.e<=-7?this.toExponential(t-1):t>this.e?this.toFixed(t-this.exponent-1):this.toExponential(t-1)},h.prototype.valueOf=function(){return this.toString()},h.prototype.toJSON=function(){return this.toString()},h.prototype.toStringWithDecimalPlaces=function(t){return 0===this.layer?this.mag<1e21&&this.mag>1e-7||0===this.mag?(this.sign*this.mag).toFixed(t):a(this.m,t)+\"e\"+a(this.e,t):1===this.layer?a(this.m,t)+\"e\"+a(this.e,t):this.layer<=5?(-1===this.sign?\"-\":\"\")+\"e\".repeat(this.layer)+a(this.mag,t):(-1===this.sign?\"-\":\"\")+\"(e^\"+this.layer+\")\"+a(this.mag,t)},h.prototype.abs=function(){return n(0===this.sign?0:1,this.layer,this.mag)},h.prototype.neg=function(){return n(-this.sign,this.layer,this.mag)},h.prototype.negate=function(){return this.neg()},h.prototype.negated=function(){return this.neg()},h.prototype.sign=function(){return this.sign},h.prototype.sgn=function(){return this.sign},h.prototype.round=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.round(this.mag)):this},h.prototype.floor=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.floor(this.mag)):this},h.prototype.ceil=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.ceil(this.mag)):this},h.prototype.trunc=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.trunc(this.mag)):this},h.prototype.add=function(t){var r,a,s=i(t);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(s.layer))return s;if(0===this.sign)return s;if(0===s.sign)return this;if(this.sign===-s.sign&&this.layer===s.layer&&this.mag===s.mag)return n(0,0,0);if(this.layer>=2||s.layer>=2)return this.maxabs(s);if(h.cmpabs(this,s)>0?(r=this,a=s):(r=s,a=this),0===r.layer&&0===a.layer)return i(r.sign*r.mag+a.sign*a.mag);var o=r.layer*Math.sign(r.mag),u=a.layer*Math.sign(a.mag);if(o-u>=2)return r;if(0===o&&-1===u){if(Math.abs(a.mag-Math.log10(r.mag))>17)return r;var g=Math.pow(10,Math.log10(r.mag)-a.mag),l=a.sign+r.sign*g;return e(Math.sign(l),1,a.mag+Math.log10(Math.abs(l)))}if(1===o&&0===u){if(Math.abs(r.mag-Math.log10(a.mag))>17)return r;g=Math.pow(10,r.mag-Math.log10(a.mag)),l=a.sign+r.sign*g;return e(Math.sign(l),1,Math.log10(a.mag)+Math.log10(Math.abs(l)))}if(Math.abs(r.mag-a.mag)>17)return r;g=Math.pow(10,r.mag-a.mag),l=a.sign+r.sign*g;return e(Math.sign(l),1,a.mag+Math.log10(Math.abs(l)))},h.prototype.plus=function(t){return this.add(t)},h.prototype.sub=function(t){return this.add(i(t).neg())},h.prototype.subtract=function(t){return this.sub(t)},h.prototype.minus=function(t){return this.sub(t)},h.prototype.mul=function(t){var r,a,s=i(t);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(s.layer))return s;if(0===this.sign||0===s.sign)return n(0,0,0);if(this.layer===s.layer&&this.mag===-s.mag)return n(this.sign*s.sign,0,1);if(this.layer>s.layer||this.layer==s.layer&&Math.abs(this.mag)>Math.abs(s.mag)?(r=this,a=s):(r=s,a=this),0===r.layer&&0===a.layer)return i(r.sign*a.sign*r.mag*a.mag);if(r.layer>=3||r.layer-a.layer>=2)return e(r.sign*a.sign,r.layer,r.mag);if(1===r.layer&&0===a.layer)return e(r.sign*a.sign,1,r.mag+Math.log10(a.mag));if(1===r.layer&&1===a.layer)return e(r.sign*a.sign,1,r.mag+a.mag);if(2===r.layer&&1===a.layer){var o=e(Math.sign(r.mag),r.layer-1,Math.abs(r.mag)).add(e(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return e(r.sign*a.sign,o.layer+1,o.sign*o.mag)}if(2===r.layer&&2===a.layer){o=e(Math.sign(r.mag),r.layer-1,Math.abs(r.mag)).add(e(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return e(r.sign*a.sign,o.layer+1,o.sign*o.mag)}throw Error(\"Bad arguments to mul: \"+this+\", \"+t)},h.prototype.multiply=function(t){return this.mul(t)},h.prototype.times=function(t){return this.mul(t)},h.prototype.div=function(t){var r=i(t);return this.mul(r.recip())},h.prototype.divide=function(t){return this.div(t)},h.prototype.divideBy=function(t){return this.div(t)},h.prototype.dividedBy=function(t){return this.div(t)},h.prototype.recip=function(){return 0===this.mag?h.dNaN:0===this.layer?e(this.sign,0,1/this.mag):e(this.sign,this.layer,-this.mag)},h.prototype.reciprocal=function(){return this.recip()},h.prototype.reciprocate=function(){return this.recip()},h.prototype.cmp=function(t){var r=i(t);return this.sign>r.sign?1:this.sign0?this.layer:-this.layer,n=r.mag>0?r.layer:-r.layer;return e>n?1:er.mag?1:this.mag0?r:this},h.prototype.clamp=function(t,r){return this.max(t).min(r)},h.prototype.clampMin=function(t){return this.max(t)},h.prototype.clampMax=function(t){return this.min(t)},h.prototype.cmp_tolerance=function(t,r){var e=i(t);return this.eq_tolerance(e,r)?0:this.cmp(e)},h.prototype.compare_tolerance=function(t,r){return this.cmp_tolerance(t,r)},h.prototype.eq_tolerance=function(t,r){var e=i(t);if(null==r&&(r=1e-7),this.sign!==e.sign)return!1;if(Math.abs(this.layer-e.layer)>1)return!1;var n=this.mag,a=e.mag;return this.layer>e.layer&&(a=s(a)),this.layer0?e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):e(1,0,Math.log10(this.mag))},h.prototype.log10=function(){return this.sign<=0?h.dNaN:this.layer>0?e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):e(this.sign,0,Math.log10(this.mag))},h.prototype.log=function(t){return t=i(t),this.sign<=0?h.dNaN:t.sign<=0?h.dNaN:1===t.sign&&0===t.layer&&1===t.mag?h.dNaN:0===this.layer&&0===t.layer?e(this.sign,0,Math.log(this.mag)/Math.log(t.mag)):h.div(this.log10(),t.log10())},h.prototype.log2=function(){return this.sign<=0?h.dNaN:0===this.layer?e(this.sign,0,Math.log2(this.mag)):1===this.layer?e(Math.sign(this.mag),0,3.321928094887362*Math.abs(this.mag)):2===this.layer?e(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))},h.prototype.ln=function(){return this.sign<=0?h.dNaN:0===this.layer?e(this.sign,0,Math.log(this.mag)):1===this.layer?e(Math.sign(this.mag),0,2.302585092994046*Math.abs(this.mag)):2===this.layer?e(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))},h.prototype.logarithm=function(t){return this.log(t)},h.prototype.pow=function(t){var r=this,e=i(t);if(0===r.sign)return r;if(1===r.sign&&0===r.layer&&1===r.mag)return r;if(0===e.sign)return n(1,0,1);if(1===e.sign&&0===e.layer&&1===e.mag)return r;var a=r.absLog10().mul(e).pow10();return-1===this.sign&&e.toNumber()%2==1?a.neg():a},h.prototype.pow10=function(){if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return h.dNaN;var t=this;if(0===t.layer){var r=Math.pow(10,t.sign*t.mag);if(Number.isFinite(r)&&Math.abs(r)>.1)return e(1,0,r);if(0===t.sign)return h.dOne;t=n(t.sign,t.layer+1,Math.log10(t.mag))}return t.sign>0&&t.mag>0?e(t.sign,t.layer+1,t.mag):t.sign<0&&t.mag>0?e(-t.sign,t.layer+1,-t.mag):h.dOne},h.prototype.pow_base=function(t){return i(t).pow(this)},h.prototype.root=function(t){var r=i(t);return this.pow(r.recip())},h.prototype.factorial=function(){return this.mag<0?this.toNumber().add(1).gamma():0===this.layer?this.add(1).gamma():1===this.layer?h.exp(h.mul(this,h.ln(this).sub(1))):h.exp(this)},h.prototype.gamma=function(){if(this.mag<0)return this.recip();if(0===this.layer){if(this.lt(n(1,0,24)))return i(function(t){if(!isFinite(t))return t;if(t<-50)return t===Math.trunc(t)?Number.NEGATIVE_INFINITY:0;for(var r=1;t<10;)r*=t,++t;var i=.9189385332046727;i+=(.5+(t-=1))*Math.log(t),i-=t;var e=t*t,n=t;return i+=1/(12*n),i+=1/(360*(n*=e)),i+=1/(1260*(n*=e)),i+=1/(1680*(n*=e)),i+=1/(1188*(n*=e)),i+=691/(360360*(n*=e)),i+=7/(1092*(n*=e)),i+=3617/(122400*(n*=e)),Math.exp(i)/r}(this.sign*this.mag));var t=this.mag-1,r=.9189385332046727;r+=(t+.5)*Math.log(t);var e=t*t,a=t,s=12*a,o=1/s,u=(r-=t)+o;if(u===r)return h.exp(r);if((u=(r=u)-(o=1/(s=360*(a*=e))))===r)return h.exp(r);r=u;var g=1/(s=1260*(a*=e));return r+=g,r-=g=1/(s=1680*(a*=e)),h.exp(r)}return 1===this.layer?h.exp(h.mul(this,h.ln(this).sub(1))):h.exp(this)},h.prototype.lngamma=function(){return this.gamma().ln()},h.prototype.exp=function(){return this.mag<0?h.dOne:0===this.layer&&this.mag<=709.7?i(Math.exp(this.sign*this.mag)):0===this.layer?e(1,1,this.sign*Math.log10(Math.E)*this.mag):1===this.layer?e(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):e(1,this.layer+1,this.sign*this.mag)},h.prototype.sqr=function(){return this.pow(2)},h.prototype.sqrt=function(){if(0===this.layer)return i(Math.sqrt(this.sign*this.mag));if(1===this.layer)return e(1,2,Math.log10(this.mag)-.3010299956639812);var t=h.div(n(this.sign,this.layer-1,this.mag),n(1,0,2));return t.layer+=1,t.normalize(),t},h.prototype.cube=function(){return this.pow(3)},h.prototype.cbrt=function(){return this.pow(1/3)},h.prototype.tetrate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(1,0,1);if(t===Number.POSITIVE_INFINITY){var e=h.ln(this).neg();return e.lambertw().div(e)}if(t<0)return h.iteratedlog(r,this,-t);r=i(r);var a=t-(t=Math.trunc(t));0!==a&&(r.eq(h.dOne)?(++t,r=new h(a)):r=this.eq(10)?r.layeradd10(a):r.layeradd(a,this));for(var s=0;s3)return n(r.sign,r.layer+(t-s-1),r.mag);if(s>100)return r}return r},h.prototype.iteratedexp=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(1,0,1);return this.tetrate(t,r)},h.prototype.iteratedlog=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(r<0)return h.tetrate(t,-r,this);t=i(t);var e=i(this),n=r-(r=Math.trunc(r));if(e.layer-t.layer>3){var a=Math.min(r,e.layer-t.layer-3);r-=a,e.layer-=a}for(var s=0;s100)return e}return n>0&&n<1&&(e=t.eq(10)?e.layeradd10(-n):e.layeradd(-n,t)),e},h.prototype.slog=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;if(this.mag<0)return h.dNegOne;t=i(t);var r=0,e=i(this);if(e.layer-t.layer>3){var n=e.layer-t.layer-3;r+=n,e.layer-=n}for(var a=0;a<100;++a)if(e.lt(h.dZero))e=h.pow(t,e),r-=1;else{if(e.lte(h.dOne))return i(r+e.toNumber()-1);r+=1,e=h.log(e,t)}return i(r)},h.prototype.layeradd10=function(t){t=h.fromValue_noAlloc(t).toNumber();var r,e=i(this);t>=1&&(t-=r=Math.trunc(t),e.layer+=r);if(t<=-1&&(t-=r=Math.trunc(t),e.layer+=r,e.layer<0))for(var n=0;n<100;++n){if(e.layer++,e.mag=Math.log10(e.mag),!isFinite(e.mag))return e;if(e.layer>=0)break}if(t>0){for(var a=0;Number.isFinite(e.mag)&&e.mag<10;)e.mag=Math.pow(10,e.mag),++a;for(e.mag>1e10&&(e.mag=Math.log10(e.mag),e.layer++),(s=Math.log10(Math.log(1e10)/Math.log(e.mag),10))0;)e.mag=Math.log10(e.mag),--a}else if(t<0){for(a=0;Number.isFinite(e.mag)&&e.mag<10;)e.mag=Math.pow(10,e.mag),++a;var s;for(e.mag>1e10&&(e.mag=Math.log10(e.mag),e.layer++),(s=Math.log10(1/Math.log10(e.mag)))>t&&(e.mag=1e10,e.layer--,t-=s),e.mag=Math.pow(e.mag,Math.pow(10,t));a>0;)e.mag=Math.log10(e.mag),--a}for(;e.layer<0;)e.layer++,e.mag=Math.log10(e.mag);return e.normalize(),e},h.prototype.layeradd=function(t,r){var i=this.slog(r).toNumber()+t;return i>=0?h.tetrate(r,i):Number.isFinite(i)?i>=-1?h.log(h.tetrate(r,i+1),r):void h.log(h.log(h.tetrate(r,i+2),r),r):h.dNaN},h.prototype.lambertw=function(){if(this.lt(-.3678794411710499))throw Error(\"lambertw is unimplemented for results less than -1, sorry!\");return this.mag<0?i(o(this.toNumber())):0===this.layer?i(o(this.sign*this.mag)):1===this.layer?u(this):2===this.layer?u(this):this.layer>=3?n(this.sign,this.layer-1,this.mag):void 0};var u=function(t){var r,i,e,n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;if(!Number.isFinite(t.mag))return t;if(0===t)return t;if(1===t)return.5671432904097838;h.abs(t);r=h.ln(t);for(var s=0;s<100;++s){if(i=h.exp(-r),e=r.sub(t.mul(i)),n=r.sub(e.div(r.add(1).sub(r.add(2).mul(e).div(h.mul(2,r).add(2))))),h.abs(n.sub(r)).lt(h.abs(n).mul(a)))return n;r=n}throw Error(\"Iteration failed to converge: \"+t)};return h.prototype.ssqrt=function(){if(1==this.sign&&this.layer>=3)return n(this.sign,this.layer-1,this.mag);var t=this.ln();return t.div(t.lambertw())},h.prototype.pentate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(1,0,1);r=i(r);var e=t-(t=Math.trunc(t));0!==e&&(r.eq(h.dOne)?(++t,r=new h(e)):r=this.eq(10)?r.layeradd10(e):r.layeradd(e,this));for(var a=0;a10)return r}return r},h.prototype.sin=function(){return this.mag<0?this:0===this.layer?i(Math.sin(this.sign*this.mag)):n(0,0,0)},h.prototype.cos=function(){return this.mag<0?h.dOne:0===this.layer?i(Math.cos(this.sign*this.mag)):n(0,0,0)},h.prototype.tan=function(){return this.mag<0?this:0===this.layer?i(Math.tan(this.sign*this.mag)):n(0,0,0)},h.prototype.asin=function(){return this.mag<0?this:0===this.layer?i(Math.asin(this.sign*this.mag)):n(Number.NaN,Number.NaN,Number.NaN)},h.prototype.acos=function(){return this.mag<0?i(Math.acos(this.toNumber())):0===this.layer?i(Math.acos(this.sign*this.mag)):n(Number.NaN,Number.NaN,Number.NaN)},h.prototype.atan=function(){return this.mag<0?this:0===this.layer?i(Math.atan(this.sign*this.mag)):i(Math.atan(Infinity*this.sign))},h.prototype.sinh=function(){return this.exp().sub(this.negate().exp()).div(2)},h.prototype.cosh=function(){return this.exp().add(this.negate().exp()).div(2)},h.prototype.tanh=function(){return this.sinh().div(this.cosh())},h.prototype.asinh=function(){return h.ln(this.add(this.sqr().add(1).sqrt()))},h.prototype.acosh=function(){return h.ln(this.add(this.sqr().sub(1).sqrt()))},h.prototype.atanh=function(){return this.abs().gte(1)?n(Number.NaN,Number.NaN,Number.NaN):h.ln(this.add(1).div(i(1).sub(this))).div(2)},h.prototype.ascensionPenalty=function(t){return 0===t?this:this.root(h.pow(10,t))},h.prototype.egg=function(){return this.add(9)},h.prototype.lessThanOrEqualTo=function(t){return this.cmp(t)<1},h.prototype.lessThan=function(t){return this.cmp(t)<0},h.prototype.greaterThanOrEqualTo=function(t){return this.cmp(t)>-1},h.prototype.greaterThan=function(t){return this.cmp(t)>0},h}();return h.dZero=n(0,0,0),h.dOne=n(1,0,1),h.dNegOne=n(-1,0,1),h.dTwo=n(1,0,2),h.dTen=n(1,0,10),h.dNaN=n(Number.NaN,Number.NaN,Number.NaN),h.dInf=n(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h.dNegInf=n(-1,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),h.dNumberMax=e(1,0,Number.MAX_VALUE),h.dNumberMin=e(1,0,Number.MIN_VALUE),h});","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=58320308&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dream.vue?vue&type=style&index=0&id=db681ec8&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Action.vue?vue&type=style&index=0&id=10e41e9b&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=373683a0&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPreview.vue?vue&type=style&index=0&id=5df944e2&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/dream/js/chunk-vendors.df7b93b3.js b/dream/js/chunk-vendors.df7b93b3.js new file mode 100644 index 000000000..9059729fc --- /dev/null +++ b/dream/js/chunk-vendors.df7b93b3.js @@ -0,0 +1,13 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00c7":function(t,e){function n(t){var e=Object.create(null);return{on:function(n,r,o){if("function"!==typeof r)throw new Error("callback is expected to be a function");var i=e[n];return i||(i=e[n]=[]),i.push({callback:r,ctx:o}),t},off:function(n,r){var o="undefined"===typeof n;if(o)return e=Object.create(null),t;if(e[n]){var i="function"!==typeof r;if(i)delete e[n];else for(var a=e[n],c=0;c1&&(r=Array.prototype.splice.call(arguments,1));for(var i=0;i]*>)/g,c=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,s,u,l){var f=n+t.length,d=s.length,p=c;return void 0!==u&&(u=r(u),p=a),i.call(l,p,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(f);case"<":a=u[i.slice(1,-1)];break;default:var c=+i;if(0===c)return r;if(c>d){var l=o(c/10);return 0===l?r:l<=d?void 0===s[l-1]?i.charAt(1):s[l-1]+i.charAt(1):r}a=s[c-1]}return void 0===a?"":a}))}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},1148:function(t,e,n){"use strict";var r=n("a691"),o=n("1d80");t.exports="".repeat||function(t){var e=String(o(this)),n="",i=r(t);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},1276:function(t,e,n){"use strict";var r=n("d784"),o=n("44e7"),i=n("825a"),a=n("1d80"),c=n("4840"),s=n("8aa5"),u=n("50c4"),l=n("14c3"),f=n("9263"),d=n("d039"),p=[].push,h=Math.min,v=4294967295,m=!d((function(){return!RegExp(v,"y")}));r("split",2,(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=String(a(this)),i=void 0===n?v:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!o(t))return e.call(r,t,i);var c,s,u,l=[],d=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),h=0,m=new RegExp(t.source,d+"g");while(c=f.call(m,r)){if(s=m.lastIndex,s>h&&(l.push(r.slice(h,c.index)),c.length>1&&c.index=i))break;m.lastIndex===c.index&&m.lastIndex++}return h===r.length?!u&&m.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=a(this),i=void 0==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(String(o),e,n)},function(t,o){var a=n(r,t,this,o,r!==e);if(a.done)return a.value;var f=i(t),d=String(this),p=c(f,RegExp),g=f.unicode,y=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(m?"y":"g"),b=new p(m?f:"^(?:"+f.source+")",y),w=void 0===o?v:o>>>0;if(0===w)return[];if(0===d.length)return null===l(b,d)?[d]:[];var x=0,_=0,S=[];while(_1?arguments[1]:void 0)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,c={next:function(){return{done:!!a++}},return:function(){i=!0}};c[o]=function(){return this},Array.from(c,(function(){throw 2}))}catch(s){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(s){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),c=n("35a1"),s=n("2a62"),u=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var l,f,d,p,h,v,m,g=n&&n.that,y=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),w=!(!n||!n.INTERRUPTED),x=a(e,g,1+y+w),_=function(t){return l&&s(l),new u(!0,t)},S=function(t){return y?(r(t),w?x(t[0],t[1],_):x(t[0],t[1])):w?x(t,_):x(t)};if(b)l=t;else{if(f=c(t),"function"!=typeof f)throw TypeError("Target is not iterable");if(o(f)){for(d=0,p=i(t.length);p>d;d++)if(h=S(t[d]),h&&h instanceof u)return h;return new u(!1)}l=f.call(t)}v=l.next;while(!(m=v.call(l)).done){try{h=S(m.value)}catch(E){throw s(l),E}if("object"==typeof h&&h&&h instanceof u)return h}return new u(!1)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),s=n("e893"),u=n("94ca");t.exports=function(t,e){var n,l,f,d,p,h,v=t.target,m=t.global,g=t.stat;if(l=m?r:g?r[v]||c(v,{}):(r[v]||{}).prototype,l)for(f in e){if(p=e[f],t.noTargetGet?(h=o(l,f),d=h&&h.value):d=l[f],n=u(m?f:v+(g?".":"#")+f,t.forced),!n&&void 0!==d){if(typeof p===typeof d)continue;s(p,d)}(t.sham||d&&d.sham)&&i(p,"sham",!0),a(l,f,p,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),o=n("825a"),i=n("d039"),a=n("ad6d"),c="toString",s=RegExp.prototype,u=s[c],l=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),f=u.name!=c;(l||f)&&r(RegExp.prototype,c,(function(){var t=o(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in s)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,c){var s,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(s=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=s):o&&(s=c?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),s)if(u.functional){u._injectStyles=s;var l=u.render;u.render=function(t,e){return s.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,s):[s]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2af1":function(t,e,n){var r=n("23e7"),o=n("f748");r({target:"Math",stat:!0},{sign:o})},"2b0e":function(t,e,n){"use strict";(function(t){ +/*! + * Vue.js v2.6.12 + * (c) 2014-2020 Evan You + * Released under the MIT License. + */ +var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function c(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function s(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){return"[object RegExp]"===u.call(t)}function d(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function w(t,e){return b.call(t,e)}function x(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var _=/-(\w)/g,S=x((function(t){return t.replace(_,(function(t,e){return e?e.toUpperCase():""}))})),E=x((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),A=/\B([A-Z])/g,O=x((function(t){return t.replace(A,"-$1").toLowerCase()}));function C(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function T(t,e){return t.bind(e)}var $=Function.prototype.bind?T:C;function k(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function I(t,e){for(var n in e)t[n]=e[n];return t}function L(t){for(var e={},n=0;n0,nt=Q&&Q.indexOf("edge/")>0,rt=(Q&&Q.indexOf("android"),Q&&/iphone|ipad|ipod|ios/.test(Q)||"ios"===J),ot=(Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q),Q&&Q.match(/firefox\/(\d+)/)),it={}.watch,at=!1;if(K)try{var ct={};Object.defineProperty(ct,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,ct)}catch(Sa){}var st=function(){return void 0===q&&(q=!K&&!G&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),q},ut=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function lt(t){return"function"===typeof t&&/native code/.test(t.toString())}var ft,dt="undefined"!==typeof Symbol&<(Symbol)&&"undefined"!==typeof Reflect&<(Reflect.ownKeys);ft="undefined"!==typeof Set&<(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var pt=j,ht=0,vt=function(){this.id=ht++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){y(this.subs,t)},vt.prototype.depend=function(){vt.target&&vt.target.addDep(this)},vt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!w(o,"default"))a=!1;else if(""===a||a===O(t)){var s=te(String,o.type);(s<0||c0&&(a=Ce(a,(e||"")+"_"+n),Oe(a[0])&&Oe(u)&&(l[s]=_t(u.text+a[0].text),a.shift()),l.push.apply(l,a)):c(a)?Oe(u)?l[s]=_t(u.text+a):""!==a&&l.push(_t(a)):Oe(a)&&Oe(u)?l[s]=_t(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),l.push(a)));return l}function Te(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function $e(t){var e=ke(t.$options.inject,t);e&&($t(!1),Object.keys(e).forEach((function(n){Rt(t,n,e[n])})),$t(!0))}function ke(t,e){if(t){for(var n=Object.create(null),r=dt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,c=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&c===r.$key&&!i&&!r.$hasNormal)return r;for(var s in o={},t)t[s]&&"$"!==s[0]&&(o[s]=Re(e,s,t[s]))}else o={};for(var u in e)u in o||(o[u]=Me(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),U(o,"$stable",a),U(o,"$key",c),U(o,"$hasNormal",i),o}function Re(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Ae(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Me(t,e){return function(){return t[e]}}function Pe(t,e){var n,r,i,a,c;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?k(n):n;for(var r=k(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(qn=function(){return Zn.now()})}function Kn(){var t,e;for(Vn=qn(),Bn=!0,Xn.sort((function(t,e){return t.id-e.id})),Un=0;UnUn&&Xn[n].id>t.id)n--;Xn.splice(n+1,0,t)}else Xn.push(t);Hn||(Hn=!0,he(Kn))}}var er=0,nr=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++er,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ft,this.newDepIds=new ft,this.expression="","function"===typeof e?this.getter=e:(this.getter=V(e),this.getter||(this.getter=j)),this.value=this.lazy?void 0:this.get()};nr.prototype.get=function(){var t;gt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Sa){if(!this.user)throw Sa;ee(Sa,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&me(t),yt(),this.cleanupDeps()}return t},nr.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},nr.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},nr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():tr(this)},nr.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Sa){ee(Sa,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},nr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},nr.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},nr.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var rr={enumerable:!0,configurable:!0,get:j,set:j};function or(t,e,n){rr.get=function(){return this[e][n]},rr.set=function(t){this[e][n]=t},Object.defineProperty(t,n,rr)}function ir(t){t._watchers=[];var e=t.$options;e.props&&ar(t,e.props),e.methods&&hr(t,e.methods),e.data?cr(t):jt(t._data={},!0),e.computed&&lr(t,e.computed),e.watch&&e.watch!==it&&vr(t,e.watch)}function ar(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||$t(!1);var a=function(i){o.push(i);var a=Kt(i,e,n,t);Rt(r,i,a),i in t||or(t,"_props",i)};for(var c in e)a(c);$t(!0)}function cr(t){var e=t.$options.data;e=t._data="function"===typeof e?sr(e,t):e||{},l(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&w(r,i)||B(i)||or(t,"_data",i)}jt(e,!0)}function sr(t,e){gt();try{return t.call(e,e)}catch(Sa){return ee(Sa,e,"data()"),{}}finally{yt()}}var ur={lazy:!0};function lr(t,e){var n=t._computedWatchers=Object.create(null),r=st();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new nr(t,a||j,j,ur)),o in t||fr(t,o,i)}}function fr(t,e,n){var r=!st();"function"===typeof n?(rr.get=r?dr(e):pr(n),rr.set=j):(rr.get=n.get?r&&!1!==n.cache?dr(e):pr(n.get):j,rr.set=n.set||j),Object.defineProperty(t,e,rr)}function dr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),vt.target&&e.depend(),e.value}}function pr(t){return function(){return t.call(this,this)}}function hr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?j:$(e[n],t)}function vr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=k(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Ar(t){t.mixin=function(t){return this.options=qt(this.options,t),this}}function Or(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=qt(n.options,t),a["super"]=n,a.options.props&&Cr(a),a.options.computed&&Tr(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,X.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=I({},a.options),o[r]=a,a}}function Cr(t){var e=t.options.props;for(var n in e)or(t.prototype,"_props",n)}function Tr(t){var e=t.options.computed;for(var n in e)fr(t.prototype,n,e[n])}function $r(t){X.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function kr(t){return t&&(t.Ctor.options.name||t.tag)}function Ir(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Lr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var c=kr(a.componentOptions);c&&!e(c)&&jr(n,i,r,o)}}}function jr(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,y(n,e)}br(Sr),gr(Sr),$n(Sr),jn(Sr),yn(Sr);var Rr=[String,RegExp,Array],Mr={name:"keep-alive",abstract:!0,props:{include:Rr,exclude:Rr,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)jr(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Lr(t,(function(t){return Ir(e,t)}))})),this.$watch("exclude",(function(e){Lr(t,(function(t){return!Ir(e,t)}))}))},render:function(){var t=this.$slots.default,e=Sn(t),n=e&&e.componentOptions;if(n){var r=kr(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Ir(i,r))||a&&r&&Ir(a,r))return e;var c=this,s=c.cache,u=c.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;s[l]?(e.componentInstance=s[l].componentInstance,y(u,l),u.push(l)):(s[l]=e,u.push(l),this.max&&u.length>parseInt(this.max)&&jr(s,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Pr={KeepAlive:Mr};function Nr(t){var e={get:function(){return W}};Object.defineProperty(t,"config",e),t.util={warn:pt,extend:I,mergeOptions:qt,defineReactive:Rt},t.set=Mt,t.delete=Pt,t.nextTick=he,t.observable=function(t){return jt(t),t},t.options=Object.create(null),X.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,I(t.options.components,Pr),Er(t),Ar(t),Or(t),$r(t)}Nr(Sr),Object.defineProperty(Sr.prototype,"$isServer",{get:st}),Object.defineProperty(Sr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Sr,"FunctionalRenderContext",{value:Ge}),Sr.version="2.6.12";var Dr=m("style,class"),Yr=m("input,textarea,option,select,progress"),Xr=function(t,e,n){return"value"===n&&Yr(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Fr=m("contenteditable,draggable,spellcheck"),Wr=m("events,caret,typing,plaintext-only"),Hr=function(t,e){return qr(e)||"false"===e?"false":"contenteditable"===t&&Wr(e)?e:"true"},Br=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Ur="http://www.w3.org/1999/xlink",zr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Vr=function(t){return zr(t)?t.slice(6,t.length):""},qr=function(t){return null==t||!1===t};function Zr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Kr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Kr(e,n.data));return Gr(e.staticClass,e.class)}function Kr(t,e){return{staticClass:Jr(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Gr(t,e){return o(t)||o(e)?Jr(t,Qr(e)):""}function Jr(t,e){return t?e?t+" "+e:t:e||""}function Qr(t){return Array.isArray(t)?to(t):s(t)?eo(t):"string"===typeof t?t:""}function to(t){for(var e,n="",r=0,i=t.length;r-1?co[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:co[t]=/HTMLUnknownElement/.test(e.toString())}var uo=m("text,number,password,search,email,tel,url");function lo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function fo(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function po(t,e){return document.createElementNS(no[t],e)}function ho(t){return document.createTextNode(t)}function vo(t){return document.createComment(t)}function mo(t,e,n){t.insertBefore(e,n)}function go(t,e){t.removeChild(e)}function yo(t,e){t.appendChild(e)}function bo(t){return t.parentNode}function wo(t){return t.nextSibling}function xo(t){return t.tagName}function _o(t,e){t.textContent=e}function So(t,e){t.setAttribute(e,"")}var Eo=Object.freeze({createElement:fo,createElementNS:po,createTextNode:ho,createComment:vo,insertBefore:mo,removeChild:go,appendChild:yo,parentNode:bo,nextSibling:wo,tagName:xo,setTextContent:_o,setStyleScope:So}),Ao={create:function(t,e){Oo(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Oo(t,!0),Oo(e))},destroy:function(t){Oo(t,!0)}};function Oo(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?y(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var Co=new bt("",{},[]),To=["create","activate","update","remove","destroy"];function $o(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&ko(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function ko(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||uo(r)&&uo(i)}function Io(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function Lo(t){var e,n,a={},s=t.modules,u=t.nodeOps;for(e=0;ev?(f=r(n[y+1])?null:n[y+1].elm,S(t,f,n,h,y,i)):h>y&&A(e,d,v)}function T(t,e,n,r){for(var i=n;i-1?Ho(t,e,n):Br(e)?qr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Fr(e)?t.setAttribute(e,Hr(e,n)):zr(e)?qr(n)?t.removeAttributeNS(Ur,Vr(e)):t.setAttributeNS(Ur,e,n):Ho(t,e,n)}function Ho(t,e,n){if(qr(n))t.removeAttribute(e);else{if(tt&&!et&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Bo={create:Fo,update:Fo};function Uo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var c=Zr(e),s=n._transitionClasses;o(s)&&(c=Jr(c,Qr(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}}var zo,Vo={create:Uo,update:Uo},qo="__r",Zo="__c";function Ko(t){if(o(t[qo])){var e=tt?"change":"input";t[e]=[].concat(t[qo],t[e]||[]),delete t[qo]}o(t[Zo])&&(t.change=[].concat(t[Zo],t.change||[]),delete t[Zo])}function Go(t,e,n){var r=zo;return function o(){var i=e.apply(null,arguments);null!==i&&ti(t,o,n,r)}}var Jo=ae&&!(ot&&Number(ot[1])<=53);function Qo(t,e,n,r){if(Jo){var o=Vn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}zo.addEventListener(t,e,at?{capture:n,passive:r}:n)}function ti(t,e,n,r){(r||zo).removeEventListener(t,e._wrapper||e,n)}function ei(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};zo=e.elm,Ko(n),we(n,o,Qo,ti,Go,e.context),zo=void 0}}var ni,ri={create:ei,update:ei};function oi(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,c=t.data.domProps||{},s=e.data.domProps||{};for(n in o(s.__ob__)&&(s=e.data.domProps=I({},s)),c)n in s||(a[n]="");for(n in s){if(i=s[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===c[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);ii(a,u)&&(a.value=u)}else if("innerHTML"===n&&oo(a.tagName)&&r(a.innerHTML)){ni=ni||document.createElement("div"),ni.innerHTML=""+i+"";var l=ni.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(l.firstChild)a.appendChild(l.firstChild)}else if(i!==c[n])try{a[n]=i}catch(Sa){}}}}function ii(t,e){return!t.composing&&("OPTION"===t.tagName||ai(t,e)||ci(t,e))}function ai(t,e){var n=!0;try{n=document.activeElement!==t}catch(Sa){}return n&&t.value!==e}function ci(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var si={create:oi,update:oi},ui=x((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function li(t){var e=fi(t.style);return t.staticStyle?I(t.staticStyle,e):e}function fi(t){return Array.isArray(t)?L(t):"string"===typeof t?ui(t):t}function di(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=li(o.data))&&I(r,n)}(n=li(t.data))&&I(r,n);var i=t;while(i=i.parent)i.data&&(n=li(i.data))&&I(r,n);return r}var pi,hi=/^--/,vi=/\s*!important$/,mi=function(t,e,n){if(hi.test(e))t.style.setProperty(e,n);else if(vi.test(n))t.style.setProperty(O(e),n.replace(vi,""),"important");else{var r=yi(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(xi).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Si(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(xi).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Ei(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&I(e,Ai(t.name||"v")),I(e,t),e}return"string"===typeof t?Ai(t):void 0}}var Ai=x((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Oi=K&&!et,Ci="transition",Ti="animation",$i="transition",ki="transitionend",Ii="animation",Li="animationend";Oi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&($i="WebkitTransition",ki="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ii="WebkitAnimation",Li="webkitAnimationEnd"));var ji=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Ri(t){ji((function(){ji(t)}))}function Mi(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),_i(t,e))}function Pi(t,e){t._transitionClasses&&y(t._transitionClasses,e),Si(t,e)}function Ni(t,e,n){var r=Yi(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var c=o===Ci?ki:Li,s=0,u=function(){t.removeEventListener(c,l),n()},l=function(e){e.target===t&&++s>=a&&u()};setTimeout((function(){s0&&(n=Ci,l=a,f=i.length):e===Ti?u>0&&(n=Ti,l=u,f=s.length):(l=Math.max(a,u),n=l>0?a>u?Ci:Ti:null,f=n?n===Ci?i.length:s.length:0);var d=n===Ci&&Di.test(r[$i+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:d}}function Xi(t,e){while(t.length1}function zi(t,e){!0!==e.data.show&&Wi(e)}var Vi=K?{create:zi,activate:zi,remove:function(t,e){!0!==t.data.show?Hi(t,e):e()}}:{},qi=[Bo,Vo,ri,si,wi,Vi],Zi=qi.concat(Xo),Ki=Lo({nodeOps:Eo,modules:Zi});et&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&oa(t,"input")}));var Gi={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?xe(n,"postpatch",(function(){Gi.componentUpdated(t,e,n)})):Ji(t,e,n.context),t._vOptions=[].map.call(t.options,ea)):("textarea"===n.tag||uo(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",na),t.addEventListener("compositionend",ra),t.addEventListener("change",ra),et&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Ji(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,ea);if(o.some((function(t,e){return!P(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return ta(t,o)})):e.value!==e.oldValue&&ta(e.value,o);i&&oa(t,"change")}}}};function Ji(t,e,n){Qi(t,e,n),(tt||nt)&&setTimeout((function(){Qi(t,e,n)}),0)}function Qi(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,c=0,s=t.options.length;c-1,a.selected!==i&&(a.selected=i);else if(P(ea(a),r))return void(t.selectedIndex!==c&&(t.selectedIndex=c));o||(t.selectedIndex=-1)}}function ta(t,e){return e.every((function(e){return!P(e,t)}))}function ea(t){return"_value"in t?t._value:t.value}function na(t){t.target.composing=!0}function ra(t){t.target.composing&&(t.target.composing=!1,oa(t.target,"input"))}function oa(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function ia(t){return!t.componentInstance||t.data&&t.data.transition?t:ia(t.componentInstance._vnode)}var aa={bind:function(t,e,n){var r=e.value;n=ia(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Wi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=ia(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Wi(n,(function(){t.style.display=t.__vOriginalDisplay})):Hi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},ca={model:Gi,show:aa},sa={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ua(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ua(Sn(e.children)):t}function la(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[S(i)]=o[i];return e}function fa(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function da(t){while(t=t.parent)if(t.data.transition)return!0}function pa(t,e){return e.key===t.key&&e.tag===t.tag}var ha=function(t){return t.tag||_n(t)},va=function(t){return"show"===t.name},ma={name:"transition",props:sa,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ha),n.length)){0;var r=this.mode;0;var o=n[0];if(da(this.$vnode))return o;var i=ua(o);if(!i)return o;if(this._leaving)return fa(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:c(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=la(this),u=this._vnode,l=ua(u);if(i.data.directives&&i.data.directives.some(va)&&(i.data.show=!0),l&&l.data&&!pa(i,l)&&!_n(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=I({},s);if("out-in"===r)return this._leaving=!0,xe(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),fa(t,o);if("in-out"===r){if(_n(i))return u;var d,p=function(){d()};xe(s,"afterEnter",p),xe(s,"enterCancelled",p),xe(f,"delayLeave",(function(t){d=t}))}}return o}}},ga=I({tag:String,moveClass:String},sa);delete ga.mode;var ya={props:ga,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=In(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=la(this),c=0;cn)e.push(arguments[n++]);return w[++b]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete w[t]},d?r=function(t){m.nextTick(S(t))}:y&&y.now?r=function(t){y.now(S(t))}:g&&!f?(o=new g,i=o.port2,o.port1.onmessage=E,r=s(i.postMessage,i,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts&&p&&"file:"!==p.protocol&&!c(A)?(r=A,a.addEventListener("message",E,!1)):r=x in l("script")?function(t){u.appendChild(l("script"))[x]=function(){u.removeChild(this),_(t)}}:function(t){setTimeout(S(t),0)}),t.exports={set:h,clear:v}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,s=c&&c.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"2d7e":function(t,e,n){"use strict";var r=n("7d05"),o=n.n(r),i={name:"panZoom",props:{options:Object,selector:String},data:function(){return{$panZoomInstance:null,instanceId:null,defaultOptions:{autocenter:!0,bounds:!0,transformOrigin:{x:.5,y:.5}}}},created:function(){this.instanceId=this.generateRandomId(20)},mounted:function(){if(this.scene){var t=Object.assign({},this.defaultOptions,this.options);this.$panZoomInstance=this.$panZoom(this.scene,t),this.$panZoomInstanceId=this.instanceId,this.attachEvents()}},computed:{scene:function(){var t,e=this.$el.querySelector(".vue-pan-zoom-scene");return this.selector?t=e.querySelector(this.selector):(t=e.querySelector("svg, object, embed"),t||(t=e.firstChild)),t}},methods:{generateRandomId:function(t){t=t||16;for(var e="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",n=e.length,r=[],o=0;os)o.f(t,n=r[s++],e[n]);return t}},"38cf":function(t,e,n){var r=n("23e7"),o=n("1148");r({target:"String",proto:!0},{repeat:o})},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var r=n("6547").charAt,o=n("69f3"),i=n("7dd0"),a="String Iterator",c=o.set,s=o.getterFor(a);i(String,"String",(function(t){c(this,{type:a,string:String(t),index:0})}),(function(){var t,e=s(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"408a":function(t,e,n){var r=n("c6b6");t.exports=function(t){if("number"!=typeof t&&"Number"!=r(t))throw TypeError("Incorrect invocation");return+t}},"408b":function(t,e){function n(){this.x=0,this.y=0,this.scale=1}t.exports=n},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),c=Array.prototype;void 0==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},4930:function(t,e,n){var r=n("605d"),o=n("2d00"),i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!Symbol.sham&&(r?38===o:o>37&&o<41)}))},"498a":function(t,e,n){"use strict";var r=n("23e7"),o=n("58a8").trim,i=n("c8d2");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"4c53":function(t,e,n){"use strict";var r=n("23e7"),o=n("857a"),i=n("af03");r({target:"String",proto:!0,forced:i("sub")},{sub:function(){return o(this,"sub","","")}})},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),l=i(a,u);if(t&&n!=n){while(u>l)if(c=s[l++],c!=c)return!0}else for(;u>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),a=n("a691"),c=n("1d80"),s=n("8aa5"),u=n("0cb2"),l=n("14c3"),f=Math.max,d=Math.min,p=function(t){return void 0===t?t:String(t)};r("replace",2,(function(t,e,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var o=c(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,o,r):e.call(String(o),n,r)},function(t,r){if(!h&&v||"string"===typeof r&&-1===r.indexOf(m)){var c=n(e,t,this,r);if(c.done)return c.value}var g=o(t),y=String(this),b="function"===typeof r;b||(r=String(r));var w=g.global;if(w){var x=g.unicode;g.lastIndex=0}var _=[];while(1){var S=l(g,y);if(null===S)break;if(_.push(S),!w)break;var E=String(S[0]);""===E&&(g.lastIndex=s(y,i(g.lastIndex),x))}for(var A="",O=0,C=0;C<_.length;C++){S=_[C];for(var T=String(S[0]),$=f(d(a(S.index),y.length),0),k=[],I=1;I=O&&(A+=y.slice(O,$)+R,O=$+T.length)}return A+y.slice(O)}]}))},"53ca":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0");function r(t){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}},5647:function(t,e){function n(t,e){var n=r(t);if(!n)throw new Error("panzoom requires DOM element to be attached to the DOM tree");var o=t.parentElement;t.scrollTop=0,e.disableKeyboardInteraction||o.setAttribute("tabindex",0);var i={getBBox:c,getOwner:a,applyTransform:s};return i;function a(){return o}function c(){return{left:0,top:0,width:t.clientWidth,height:t.clientHeight}}function s(e){t.style.transformOrigin="0 0 0",t.style.transform="matrix("+e.scale+", 0, 0, "+e.scale+", "+e.x+", "+e.y+")"}}function r(t){return t&&t.parentElement&&t.style}t.exports=n,t.exports.canAttach=r},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.9.1",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),o=n("5899"),i="["+o+"]",a=RegExp("^"+i+i+"*"),c=RegExp(i+i+"*$"),s=function(t){return function(e){var n=String(r(e));return 1&t&&(n=n.replace(a,"")),2&t&&(n=n.replace(c,"")),n}};t.exports={start:s(1),end:s(2),trim:s(3)}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),c=n("d1e7"),s=n("7b0b"),u=n("44ad"),l=Object.assign,f=Object.defineProperty;t.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||i(l({},e)).join("")!=o}))?function(t,e){var n=s(t),o=arguments.length,l=1,f=a.f,d=c.f;while(o>l){var p,h=u(arguments[l++]),v=f?i(h).concat(f(h)):i(h),m=v.length,g=0;while(m>g)p=v[g++],r&&!d.call(h,p)||(n[p]=h[p])}return n}:l},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,c=String(o(e)),s=r(n),u=c.length;return s<0||s>=u?t?"":void 0:(i=c.charCodeAt(s),i<55296||i>56319||s+1===u||(a=c.charCodeAt(s+1))<56320||a>57343?t?c.charAt(s):i:t?c.slice(s,s+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"65f0":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t,e){var n;return o(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!o(n.prototype)?r(n)&&(n=n[a],null===n&&(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),s=n("861d"),u=n("9112"),l=n("5135"),f=n("c6cd"),d=n("f772"),p=n("d012"),h=c.WeakMap,v=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a){var g=f.state||(f.state=new h),y=g.get,b=g.has,w=g.set;r=function(t,e){return e.facade=t,w.call(g,t,e),e},o=function(t){return y.call(g,t)||{}},i=function(t){return b.call(g,t)}}else{var x=d("state");p[x]=!0,r=function(t,e){return e.facade=t,u(t,x,e),e},o=function(t){return l(t,x)?t[x]:{}},i=function(t){return l(t,x)}}t.exports={set:r,get:o,has:i,enforce:v,getterFor:m}},"6b93":function(t,e,n){var r=n("23e7"),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(t){return o(t)*i}})},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),s=n("69f3"),u=s.get,l=s.enforce,f=String(String).split("String");(t.exports=function(t,e,n,c){var s,u=!!c&&!!c.unsafe,d=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s=l(n),s.source||(s.source=f.join("string"==typeof e?e:""))),t!==r?(u?!p&&t[e]&&(d=!0):delete t[e],d?t[e]=n:o(t,e,n)):d?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},7037:function(t,e,n){function r(e){return"function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?(t.exports=r=function(t){return typeof t},t.exports["default"]=t.exports,t.exports.__esModule=!0):(t.exports=r=function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports["default"]=t.exports,t.exports.__esModule=!0),r(e)}n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0"),t.exports=r,t.exports["default"]=t.exports,t.exports.__esModule=!0},7156:function(t,e,n){var r=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},7708:function(t,e,n){var r=n("d138"),o={ease:r(.25,.1,.25,1),easeIn:r(.42,0,1,1),easeOut:r(0,0,.58,1),easeInOut:r(.42,0,.58,1),linear:r(0,0,1,1)};function i(t,e,n){var r=Object.create(null),i=Object.create(null);n=n||{};var s="function"===typeof n.easing?n.easing:o[n.easing];s||(n.easing&&console.warn("Unknown easing function in amator: "+n.easing),s=o.ease);var u="function"===typeof n.step?n.step:a,l="function"===typeof n.done?n.done:a,f=c(n.scheduler),d=Object.keys(e);d.forEach((function(n){r[n]=t[n],i[n]=e[n]-t[n]}));var p,h="number"===typeof n.duration?n.duration:400,v=Math.max(1,.06*h),m=0;return p=f.next(y),{cancel:g};function g(){f.cancel(p),p=0}function y(){var e=s(m/v);m+=1,b(e),m<=v?(p=f.next(y),u(t)):(p=0,setTimeout((function(){l(t)}),0))}function b(e){d.forEach((function(n){t[n]=i[n]*e+r[n]}))}}function a(){}function c(t){if(!t){var e="undefined"!==typeof window&&window.requestAnimationFrame;return e?s():u()}if("function"!==typeof t.next)throw new Error("Scheduler is supposed to have next(cb) function");if("function"!==typeof t.cancel)throw new Error("Scheduler is supposed to have cancel(handle) function");return t}function s(){return{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}}function u(){return{next:function(t){return setTimeout(t,1e3/60)},cancel:function(t){return clearTimeout(t)}}}function l(){var t=new Set,e=new Set,n=0;return{next:o,cancel:o,clearAll:r};function r(){t.clear(),e.clear(),cancelAnimationFrame(n),n=0}function o(t){e.add(t),i()}function i(){n||(n=requestAnimationFrame(a))}function a(){n=0;var r=e;e=t,t=r,t.forEach((function(t){t()})),t.clear()}}t.exports=i,t.exports.makeAggregateRaf=l,t.exports.sharedScheduler=l()},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),c=n("d012"),s=n("1be4"),u=n("cc12"),l=n("f772"),f=">",d="<",p="prototype",h="script",v=l("IE_PROTO"),m=function(){},g=function(t){return d+h+f+t+d+"/"+h+f},y=function(t){t.write(g("")),t.close();var e=t.parentWindow.Object;return t=null,e},b=function(){var t,e=u("iframe"),n="java"+h+":";return e.style.display="none",s.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(g("document.F=Object")),t.close(),t.F},w=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}w=r?y(r):b();var t=a.length;while(t--)delete w[p][a[t]];return w()};c[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(m[p]=o(t),n=new m,m[p]=null,n[v]=t):n=w(),void 0===e?n:i(n,e)}},"7d05":function(t,e,n){"use strict";var r=n("7d67"),o=n("7708"),i=n("00c7"),a=n("e9ff"),c=n("0201"),s=c(),u=c(!0),l=n("408b"),f=n("c327"),d=n("5647"),p=1,h=1.75,v=300;function m(t,e){e=e||{};var n=e.controller;if(n||(f.canAttach(t)?n=f(t,e):d.canAttach(t)&&(n=d(t,e))),!n)throw new Error("Cannot create panzoom for the current type of dom element");var c=n.getOwner(),m={x:0,y:0},y=!1,x=new l;n.initTransform&&n.initTransform(x);var E,A="function"===typeof e.filterKey?e.filterKey:b,O="number"===typeof e.pinchSpeed?e.pinchSpeed:1,C=e.bounds,T="number"===typeof e.maxZoom?e.maxZoom:Number.POSITIVE_INFINITY,$="number"===typeof e.minZoom?e.minZoom:0,k="number"===typeof e.boundsPadding?e.boundsPadding:.05,I="number"===typeof e.zoomDoubleClickSpeed?e.zoomDoubleClickSpeed:h,L=e.beforeWheel||b,j=e.beforeMouseDown||b,R="number"===typeof e.zoomSpeed?e.zoomSpeed:p,M=g(e.transformOrigin),P=e.enableTextSelection?u:s;w(C),e.autocenter&&ot();var N,D,Y,X,F,W,H,B,U=0,z=!1,V=!1;F="smoothScroll"in e&&!e.smoothScroll?S():a(ht,Ct,e.smoothScroll);var q=!1;$t();var Z={dispose:Tt,moveBy:Ot,moveTo:vt,smoothMoveTo:At,centerOn:Et,zoomTo:te,zoomAbs:St,smoothZoom:Gt,smoothZoomAbs:Jt,showRectangle:nt,pause:Q,resume:tt,isPaused:et,getTransform:it,getMinZoom:at,setMinZoom:ct,getMaxZoom:st,setMaxZoom:ut,getTransformOrigin:lt,setTransformOrigin:ft,getZoomSpeed:dt,setZoomSpeed:pt};i(Z);var K="number"===typeof e.initialX?e.initialX:x.x,G="number"===typeof e.initialY?e.initialY:x.y,J="number"===typeof e.initialZoom?e.initialZoom:x.scale;return K==x.x&&G==x.y&&J==x.Scale||St(K,G,J),Z;function Q(){kt(),q=!0}function tt(){q&&($t(),q=!1)}function et(){return q}function nt(t){var e=c.getBoundingClientRect(),n=rt(e.width,e.height),r=t.right-t.left,o=t.bottom-t.top;if(!Number.isFinite(r)||!Number.isFinite(o))throw new Error("Invalid rectangle");var i=n.x/r,a=n.y/o,s=Math.min(i,a);x.x=-(t.left+r/2)*s+n.x/2,x.y=-(t.top+o/2)*s+n.y/2,x.scale=s}function rt(t,e){if(n.getScreenCTM){var r=n.getScreenCTM(),o=r.a,i=r.d,a=r.e,c=r.f;m.x=t*o-a,m.y=e*i-c}else m.x=t,m.y=e;return m}function ot(){var t,e,r=0,o=0,i=yt();if(i)r=i.left,o=i.top,t=i.right-i.left,e=i.bottom-i.top;else{var a=c.getBoundingClientRect();t=a.width,e=a.height}var s=n.getBBox();if(0!==s.width&&0!==s.height){var u=e/s.height,l=t/s.width,f=Math.min(l,u);x.x=-(s.left+s.width/2)*f+t/2+r,x.y=-(s.top+s.height/2)*f+e/2+o,x.scale=f}}function it(){return x}function at(){return $}function ct(t){$=t}function st(){return T}function ut(t){T=t}function lt(){return M}function ft(t){M=g(t)}function dt(){return R}function pt(t){if(!Number.isFinite(t))throw new Error("Zoom speed should be a number");R=t}function ht(){return{x:x.x,y:x.y}}function vt(t,e){x.x=t,x.y=e,gt(),ae("pan"),xt()}function mt(t,e){vt(x.x+t,x.y+e)}function gt(){var t=yt();if(t){var e=!1,n=bt(),r=t.left-n.right;return r>0&&(x.x+=r,e=!0),r=t.right-n.left,r<0&&(x.x+=r,e=!0),r=t.top-n.bottom,r>0&&(x.y+=r,e=!0),r=t.bottom-n.top,r<0&&(x.y+=r,e=!0),e}}function yt(){if(C){if("boolean"===typeof C){var t=c.getBoundingClientRect(),e=t.width,n=t.height;return{left:e*k,top:n*k,right:e*(1-k),bottom:n*(1-k)}}return C}}function bt(){var t=n.getBBox(),e=wt(t.left,t.top);return{left:e.x,top:e.y,right:t.width*x.scale+e.x,bottom:t.height*x.scale+e.y}}function wt(t,e){return{x:t*x.scale+x.x,y:e*x.scale+x.y}}function xt(){y=!0,E=window.requestAnimationFrame(It)}function _t(t,e,n){if(_(t)||_(e)||_(n))throw new Error("zoom requires valid numbers");var r=x.scale*n;if(r<$){if(x.scale===$)return;n=$/x.scale}if(r>T){if(x.scale===T)return;n=T/x.scale}var o=rt(t,e);if(x.x=o.x-n*(o.x-x.x),x.y=o.y-n*(o.y-x.y),C&&1===k&&1===$)x.scale*=n,gt();else{var i=gt();i||(x.scale*=n)}ae("zoom"),xt()}function St(t,e,n){var r=n/x.scale;_t(t,e,r)}function Et(t){var e=t.ownerSVGElement;if(!e)throw new Error("ui element is required to be within the scene");var n=t.getBoundingClientRect(),r=n.left+n.width/2,o=n.top+n.height/2,i=e.getBoundingClientRect(),a=i.width/2-r,c=i.height/2-o;Ot(a,c,!0)}function At(t,e){Ot(t-x.x,e-x.y,!0)}function Ot(t,e,n){if(!n)return mt(t,e);W&&W.cancel();var r={x:0,y:0},i={x:t,y:e},a=0,c=0;W=o(r,i,{step:function(t){mt(t.x-a,t.y-c),a=t.x,c=t.y}})}function Ct(t,e){ee(),vt(t,e)}function Tt(){kt()}function $t(){c.addEventListener("mousedown",Bt,{passive:!1}),c.addEventListener("dblclick",Ht,{passive:!1}),c.addEventListener("touchstart",Mt,{passive:!1}),c.addEventListener("keydown",jt,{passive:!1}),r.addWheelListener(c,Zt,{passive:!1}),xt()}function kt(){r.removeWheelListener(c,Zt),c.removeEventListener("mousedown",Bt),c.removeEventListener("keydown",jt),c.removeEventListener("dblclick",Ht),c.removeEventListener("touchstart",Mt),E&&(window.cancelAnimationFrame(E),E=0),F.cancel(),Vt(),qt(),P.release(),oe()}function It(){y&&Lt()}function Lt(){y=!1,n.applyTransform(x),ae("transform"),E=0}function jt(t){var e=0,n=0,r=0;if(38===t.keyCode?n=1:40===t.keyCode?n=-1:37===t.keyCode?e=1:39===t.keyCode?e=-1:189===t.keyCode||109===t.keyCode?r=1:187!==t.keyCode&&107!==t.keyCode||(r=-1),!A(t,e,n,r)){if(e||n){t.preventDefault(),t.stopPropagation();var o=c.getBoundingClientRect(),i=Math.min(o.width,o.height),a=.05,s=i*a*e,u=i*a*n;Ot(s,u)}if(r){var l=ne(100*r);i=M?Qt():Rt();te(i.x,i.y,l)}}}function Rt(){var t=c.getBoundingClientRect();return{x:t.width/2,y:t.height/2}}function Mt(t){if(Pt(t),1===t.touches.length)return Dt(t,t.touches[0]);2===t.touches.length&&(X=Wt(t.touches[0],t.touches[1]),B=!0,Yt())}function Pt(t){e.onTouch&&!e.onTouch(t)||(t.stopPropagation(),t.preventDefault())}function Nt(t){e.onDoubleClick&&!e.onDoubleClick(t)||(t.preventDefault(),t.stopPropagation())}function Dt(t){var e=t.touches[0],n=Kt(e);N=n;var r=rt(n.x,n.y);D=r.x,Y=r.y,F.cancel(),Yt()}function Yt(){z||(z=!0,document.addEventListener("touchmove",Xt),document.addEventListener("touchend",Ft),document.addEventListener("touchcancel",Ft))}function Xt(t){if(1===t.touches.length){t.stopPropagation();var e=t.touches[0],n=Kt(e),r=rt(n.x,n.y),o=r.x-D,i=r.y-Y;0!==o&&0!==i&&re(),D=r.x,Y=r.y,Ot(o,i)}else if(2===t.touches.length){B=!0;var a=t.touches[0],c=t.touches[1],s=Wt(a,c),u=1+(s/X-1)*O,l=Kt(a),f=Kt(c);if(D=(l.x+f.x)/2,Y=(l.y+f.y)/2,M){n=Qt();D=n.x,Y=n.y}te(D,Y,u),X=s,t.stopPropagation(),t.preventDefault()}}function Ft(t){if(t.touches.length>0){var e=Kt(t.touches[0]),n=rt(e.x,e.y);D=n.x,Y=n.y}else{var r=new Date;if(r-U0&&(e*=100);var n=ne(e);if(1!==n){var r=M?Qt():Kt(t);te(r.x,r.y,n),t.preventDefault()}}}function Kt(t){var e,n,r=c.getBoundingClientRect();return e=t.clientX-r.left,n=t.clientY-r.top,{x:e,y:n}}function Gt(t,e,n){var r=x.scale,i={scale:r},a={scale:n*r};F.cancel(),ee(),H=o(i,a,{step:function(n){St(t,e,n.scale)},done:ie})}function Jt(t,e,n){var r=x.scale,i={scale:r},a={scale:n};F.cancel(),ee(),H=o(i,a,{step:function(n){St(t,e,n.scale)}})}function Qt(){var t=c.getBoundingClientRect();return{x:t.width*M.x,y:t.height*M.y}}function te(t,e,n){return F.cancel(),ee(),_t(t,e,n)}function ee(){H&&(H.cancel(),H=null)}function ne(t){var e=Math.sign(t),n=Math.min(.25,Math.abs(R*t/128));return 1-e*n}function re(){V||(ae("panstart"),V=!0,F.start())}function oe(){V&&(B||F.stop(),ae("panend"))}function ie(){ae("zoomend")}function ae(t){Z.fire(t,Z)}}function g(t){if(t)return"object"===typeof t?(x(t.x)&&x(t.y)||y(t),t):void y()}function y(t){throw console.error(t),new Error(["Cannot parse transform origin.","Some good examples:",' "center center" can be achieved with {x: 0.5, y: 0.5}',' "top center" can be achieved with {x: 0.5, y: 0}',' "bottom right" can be achieved with {x: 1, y: 1}'].join("\n"))}function b(){}function w(t){var e=typeof t;if("undefined"!==e&&"boolean"!==e){var n=x(t.left)&&x(t.top)&&x(t.bottom)&&x(t.right);if(!n)throw new Error("Bounds object is not valid. It can be: undefined, boolean (true|false) or an object {left, top, right, bottom}")}}function x(t){return Number.isFinite(t)}function _(t){return Number.isNaN?Number.isNaN(t):t!==t}function S(){return{start:b,stop:b,cancel:b}}function E(){if("undefined"!==typeof document){var t=document.getElementsByTagName("script");if(t){for(var e,n=0;n1?arguments[1]:void 0,n),s=a>2?arguments[2]:void 0,u=void 0===s?n:o(s,n);while(u>c)e[c++]=t;return e}},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"857a":function(t,e,n){var r=n("1d80"),o=/"/g;t.exports=function(t,e,n,i){var a=String(r(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+String(i).replace(o,""")+'"'),c+">"+a+""}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90d7":function(t,e,n){var r=n("23e7"),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(t){return o(t)/i}})},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=RegExp.prototype.exec,a=String.prototype.replace,c=i,s=function(){var t=/a/,e=/b*/g;return i.call(t,"a"),i.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),u=o.UNSUPPORTED_Y||o.BROKEN_CARET,l=void 0!==/()??/.exec("")[1],f=s||l||u;f&&(c=function(t){var e,n,o,c,f=this,d=u&&f.sticky,p=r.call(f),h=f.source,v=0,m=t;return d&&(p=p.replace("y",""),-1===p.indexOf("g")&&(p+="g"),m=String(t).slice(f.lastIndex),f.lastIndex>0&&(!f.multiline||f.multiline&&"\n"!==t[f.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),l&&(n=new RegExp("^"+h+"$(?!\\s)",p)),s&&(e=f.lastIndex),o=i.call(d?n:f,m),d?o?(o.input=o.input.slice(v),o[0]=o[0].slice(v),o.index=f.lastIndex,f.lastIndex+=o[0].length):f.lastIndex=0:s&&o&&(f.lastIndex=f.global?o.index+o[0].length:e),l&&o&&o.length>1&&a.call(o[0],n,(function(){for(c=1;ct[i]-t[a]-1&&(t.reach[s]="end"),e&&(f.dispatchEvent(m("ps-scroll-"+s)),e<0?f.dispatchEvent(m("ps-scroll-"+u)):e>0&&f.dispatchEvent(m("ps-scroll-"+l)),r&&d(t,s)),t.reach[s]&&(e||o)&&f.dispatchEvent(m("ps-"+s+"-reach-"+t.reach[s]))}function b(t){return parseInt(t,10)||0}function w(t){return i(t,"input,[contenteditable]")||i(t,"select,[contenteditable]")||i(t,"textarea,[contenteditable]")||i(t,"button,[contenteditable]")}function x(t){var n=e(t);return b(n.width)+b(n.paddingLeft)+b(n.paddingRight)+b(n.borderLeftWidth)+b(n.borderRightWidth)}v.prototype.eventElement=function(t){var e=this.eventElements.filter((function(e){return e.element===t}))[0];return e||(e=new p(t),this.eventElements.push(e)),e},v.prototype.bind=function(t,e,n){this.eventElement(t).bind(e,n)},v.prototype.unbind=function(t,e,n){var r=this.eventElement(t);r.unbind(e,n),r.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(r),1)},v.prototype.unbindAll=function(){this.eventElements.forEach((function(t){return t.unbindAll()})),this.eventElements=[]},v.prototype.once=function(t,e,n){var r=this.eventElement(t),o=function(t){r.unbind(e,o),n(t)};r.bind(e,o)};var _={isWebKit:"undefined"!==typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!==typeof window&&("ontouchstart"in window||"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!==typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!==typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)};function S(t){var e=t.element,n=Math.floor(e.scrollTop),r=e.getBoundingClientRect();t.containerWidth=Math.ceil(r.width),t.containerHeight=Math.ceil(r.height),t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(c(e,s.element.rail("x")).forEach((function(t){return a(t)})),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(c(e,s.element.rail("y")).forEach((function(t){return a(t)})),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),A(e,t),t.scrollbarXActive?e.classList.add(s.state.active("x")):(e.classList.remove(s.state.active("x")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=!0===t.isRtl?t.contentWidth:0),t.scrollbarYActive?e.classList.add(s.state.active("y")):(e.classList.remove(s.state.active("y")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)}function E(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function A(t,e){var r={width:e.railXWidth},o=Math.floor(t.scrollTop);e.isRtl?r.left=e.negativeScrollAdjustment+t.scrollLeft+e.containerWidth-e.contentWidth:r.left=t.scrollLeft,e.isScrollbarXUsingBottom?r.bottom=e.scrollbarXBottom-o:r.top=e.scrollbarXTop+o,n(e.scrollbarXRail,r);var i={top:o,height:e.railYHeight};e.isScrollbarYUsingRight?e.isRtl?i.right=e.contentWidth-(e.negativeScrollAdjustment+t.scrollLeft)-e.scrollbarYRight-e.scrollbarYOuterWidth-9:i.right=e.scrollbarYRight-t.scrollLeft:e.isRtl?i.left=e.negativeScrollAdjustment+t.scrollLeft+2*e.containerWidth-e.contentWidth-e.scrollbarYLeft-e.scrollbarYOuterWidth:i.left=e.scrollbarYLeft+t.scrollLeft,n(e.scrollbarYRail,i),n(e.scrollbarX,{left:e.scrollbarXLeft,width:e.scrollbarXWidth-e.railBorderXWidth}),n(e.scrollbarY,{top:e.scrollbarYTop,height:e.scrollbarYHeight-e.railBorderYWidth})}function O(t){t.element;t.event.bind(t.scrollbarY,"mousedown",(function(t){return t.stopPropagation()})),t.event.bind(t.scrollbarYRail,"mousedown",(function(e){var n=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top,r=n>t.scrollbarYTop?1:-1;t.element.scrollTop+=r*t.containerHeight,S(t),e.stopPropagation()})),t.event.bind(t.scrollbarX,"mousedown",(function(t){return t.stopPropagation()})),t.event.bind(t.scrollbarXRail,"mousedown",(function(e){var n=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left,r=n>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=r*t.containerWidth,S(t),e.stopPropagation()}))}function C(t){T(t,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x","scrollbarXRail"]),T(t,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y","scrollbarYRail"])}function T(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],a=e[4],c=e[5],u=e[6],d=e[7],p=e[8],h=t.element,v=null,m=null,g=null;function y(e){e.touches&&e.touches[0]&&(e[o]=e.touches[0].pageY),h[u]=v+g*(e[o]-m),l(t,d),S(t),e.stopPropagation(),e.preventDefault()}function b(){f(t,d),t[p].classList.remove(s.state.clicking),t.event.unbind(t.ownerDocument,"mousemove",y)}function w(e,a){v=h[u],a&&e.touches&&(e[o]=e.touches[0].pageY),m=e[o],g=(t[r]-t[n])/(t[i]-t[c]),a?t.event.bind(t.ownerDocument,"touchmove",y):(t.event.bind(t.ownerDocument,"mousemove",y),t.event.once(t.ownerDocument,"mouseup",b),e.preventDefault()),t[p].classList.add(s.state.clicking),e.stopPropagation()}t.event.bind(t[a],"mousedown",(function(t){w(t)})),t.event.bind(t[a],"touchstart",(function(t){w(t,!0)}))}function $(t){var e=t.element,n=function(){return i(e,":hover")},r=function(){return i(t.scrollbarX,":focus")||i(t.scrollbarY,":focus")};function o(n,r){var o=Math.floor(e.scrollTop);if(0===n){if(!t.scrollbarYActive)return!1;if(0===o&&r>0||o>=t.contentHeight-t.containerHeight&&r<0)return!t.settings.wheelPropagation}var i=e.scrollLeft;if(0===r){if(!t.scrollbarXActive)return!1;if(0===i&&n<0||i>=t.contentWidth-t.containerWidth&&n>0)return!t.settings.wheelPropagation}return!0}t.event.bind(t.ownerDocument,"keydown",(function(i){if(!(i.isDefaultPrevented&&i.isDefaultPrevented()||i.defaultPrevented)&&(n()||r())){var a=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(a){if("IFRAME"===a.tagName)a=a.contentDocument.activeElement;else while(a.shadowRoot)a=a.shadowRoot.activeElement;if(w(a))return}var c=0,s=0;switch(i.which){case 37:c=i.metaKey?-t.contentWidth:i.altKey?-t.containerWidth:-30;break;case 38:s=i.metaKey?t.contentHeight:i.altKey?t.containerHeight:30;break;case 39:c=i.metaKey?t.contentWidth:i.altKey?t.containerWidth:30;break;case 40:s=i.metaKey?-t.contentHeight:i.altKey?-t.containerHeight:-30;break;case 32:s=i.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:s=t.containerHeight;break;case 34:s=-t.containerHeight;break;case 36:s=t.contentHeight;break;case 35:s=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==c||t.settings.suppressScrollY&&0!==s||(e.scrollTop-=s,e.scrollLeft+=c,S(t),o(c,s)&&i.preventDefault())}}))}function k(t){var n=t.element;function r(e,r){var o,i=Math.floor(n.scrollTop),a=0===n.scrollTop,c=i+n.offsetHeight===n.scrollHeight,s=0===n.scrollLeft,u=n.scrollLeft+n.offsetWidth===n.scrollWidth;return o=Math.abs(r)>Math.abs(e)?a||c:s||u,!o||!t.settings.wheelPropagation}function o(t){var e=t.deltaX,n=-1*t.deltaY;return"undefined"!==typeof e&&"undefined"!==typeof n||(e=-1*t.wheelDeltaX/6,n=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,n*=10),e!==e&&n!==n&&(e=0,n=t.wheelDelta),t.shiftKey?[-n,-e]:[e,n]}function i(t,r,o){if(!_.isWebKit&&n.querySelector("select:focus"))return!0;if(!n.contains(t))return!1;var i=t;while(i&&i!==n){if(i.classList.contains(s.element.consuming))return!0;var a=e(i);if(o&&a.overflowY.match(/(scroll|auto)/)){var c=i.scrollHeight-i.clientHeight;if(c>0&&(i.scrollTop>0&&o<0||i.scrollTop0))return!0}if(r&&a.overflowX.match(/(scroll|auto)/)){var u=i.scrollWidth-i.clientWidth;if(u>0&&(i.scrollLeft>0&&r<0||i.scrollLeft0))return!0}i=i.parentNode}return!1}function a(e){var a=o(e),c=a[0],s=a[1];if(!i(e.target,c,s)){var u=!1;t.settings.useBothWheelAxes?t.scrollbarYActive&&!t.scrollbarXActive?(s?n.scrollTop-=s*t.settings.wheelSpeed:n.scrollTop+=c*t.settings.wheelSpeed,u=!0):t.scrollbarXActive&&!t.scrollbarYActive&&(c?n.scrollLeft+=c*t.settings.wheelSpeed:n.scrollLeft-=s*t.settings.wheelSpeed,u=!0):(n.scrollTop-=s*t.settings.wheelSpeed,n.scrollLeft+=c*t.settings.wheelSpeed),S(t),u=u||r(c,s),u&&!e.ctrlKey&&(e.stopPropagation(),e.preventDefault())}}"undefined"!==typeof window.onwheel?t.event.bind(n,"wheel",a):"undefined"!==typeof window.onmousewheel&&t.event.bind(n,"mousewheel",a)}function I(t){if(_.supportsTouch||_.supportsIePointer){var n=t.element,r={},o=0,i={},a=null;_.supportsTouch?(t.event.bind(n,"touchstart",d),t.event.bind(n,"touchmove",h),t.event.bind(n,"touchend",v)):_.supportsIePointer&&(window.PointerEvent?(t.event.bind(n,"pointerdown",d),t.event.bind(n,"pointermove",h),t.event.bind(n,"pointerup",v)):window.MSPointerEvent&&(t.event.bind(n,"MSPointerDown",d),t.event.bind(n,"MSPointerMove",h),t.event.bind(n,"MSPointerUp",v)))}function c(e,r){var o=Math.floor(n.scrollTop),i=n.scrollLeft,a=Math.abs(e),c=Math.abs(r);if(c>a){if(r<0&&o===t.contentHeight-t.containerHeight||r>0&&0===o)return 0===window.scrollY&&r>0&&_.isChrome}else if(a>c&&(e<0&&i===t.contentWidth-t.containerWidth||e>0&&0===i))return!0;return!0}function u(e,r){n.scrollTop-=r,n.scrollLeft-=e,S(t)}function l(t){return t.targetTouches?t.targetTouches[0]:t}function f(t){return(!t.pointerType||"pen"!==t.pointerType||0!==t.buttons)&&(!(!t.targetTouches||1!==t.targetTouches.length)||!(!t.pointerType||"mouse"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function d(t){if(f(t)){var e=l(t);r.pageX=e.pageX,r.pageY=e.pageY,o=(new Date).getTime(),null!==a&&clearInterval(a)}}function p(t,r,o){if(!n.contains(t))return!1;var i=t;while(i&&i!==n){if(i.classList.contains(s.element.consuming))return!0;var a=e(i);if(o&&a.overflowY.match(/(scroll|auto)/)){var c=i.scrollHeight-i.clientHeight;if(c>0&&(i.scrollTop>0&&o<0||i.scrollTop0))return!0}if(r&&a.overflowX.match(/(scroll|auto)/)){var u=i.scrollWidth-i.clientWidth;if(u>0&&(i.scrollLeft>0&&r<0||i.scrollLeft0))return!0}i=i.parentNode}return!1}function h(t){if(f(t)){var e=l(t),n={pageX:e.pageX,pageY:e.pageY},a=n.pageX-r.pageX,s=n.pageY-r.pageY;if(p(t.target,a,s))return;u(a,s),r=n;var d=(new Date).getTime(),h=d-o;h>0&&(i.x=a/h,i.y=s/h,o=d),c(a,s)&&t.preventDefault()}}function v(){t.settings.swipeEasing&&(clearInterval(a),a=setInterval((function(){t.isInitialized?clearInterval(a):i.x||i.y?Math.abs(i.x)<.01&&Math.abs(i.y)<.01?clearInterval(a):(u(30*i.x,30*i.y),i.x*=.8,i.y*=.8):clearInterval(a)}),10))}}var L=function(){return{handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1}},j={"click-rail":O,"drag-thumb":C,keyboard:$,wheel:k,touch:I},R=function(t,o){var i=this,a=this;if(void 0===o&&(o={}),"string"===typeof t&&(t=document.querySelector(t)),!t||!t.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var c in this.element=t,t.classList.add(s.main),this.settings=L(),o)i.settings[c]=o[c];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var u=function(){return t.classList.add(s.state.focus)},l=function(){return t.classList.remove(s.state.focus)};this.isRtl="rtl"===e(t).direction,!0===this.isRtl&&t.classList.add(s.rtl),this.isNegativeScroll=function(){var e=t.scrollLeft,n=null;return t.scrollLeft=-1,n=t.scrollLeft<0,t.scrollLeft=e,n}(),this.negativeScrollAdjustment=this.isNegativeScroll?t.scrollWidth-t.clientWidth:0,this.event=new v,this.ownerDocument=t.ownerDocument||document,this.scrollbarXRail=r(s.element.rail("x")),t.appendChild(this.scrollbarXRail),this.scrollbarX=r(s.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",u),this.event.bind(this.scrollbarX,"blur",l),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var f=e(this.scrollbarXRail);this.scrollbarXBottom=parseInt(f.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=b(f.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=b(f.borderLeftWidth)+b(f.borderRightWidth),n(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=b(f.marginLeft)+b(f.marginRight),n(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=r(s.element.rail("y")),t.appendChild(this.scrollbarYRail),this.scrollbarY=r(s.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",u),this.event.bind(this.scrollbarY,"blur",l),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var d=e(this.scrollbarYRail);this.scrollbarYRight=parseInt(d.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=b(d.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?x(this.scrollbarY):null,this.railBorderYWidth=b(d.borderTopWidth)+b(d.borderBottomWidth),n(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=b(d.marginTop)+b(d.marginBottom),n(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:t.scrollLeft<=0?"start":t.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:t.scrollTop<=0?"start":t.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(t){return j[t](a)})),this.lastScrollTop=Math.floor(t.scrollTop),this.lastScrollLeft=t.scrollLeft,this.event.bind(this.element,"scroll",(function(t){return a.onScroll(t)})),S(this)};R.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,n(this.scrollbarXRail,{display:"block"}),n(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=b(e(this.scrollbarXRail).marginLeft)+b(e(this.scrollbarXRail).marginRight),this.railYMarginHeight=b(e(this.scrollbarYRail).marginTop)+b(e(this.scrollbarYRail).marginBottom),n(this.scrollbarXRail,{display:"none"}),n(this.scrollbarYRail,{display:"none"}),S(this),g(this,"top",0,!1,!0),g(this,"left",0,!1,!0),n(this.scrollbarXRail,{display:""}),n(this.scrollbarYRail,{display:""}))},R.prototype.onScroll=function(t){this.isAlive&&(S(this),g(this,"top",this.element.scrollTop-this.lastScrollTop),g(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=Math.floor(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},R.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),a(this.scrollbarX),a(this.scrollbarY),a(this.scrollbarXRail),a(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},R.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(t){return!t.match(/^ps([-_].+|)$/)})).join(" ")};var M={name:"PerfectScrollbar",props:{options:{type:Object,required:!1,default:function(){}},tag:{type:String,required:!1,default:"div"},watchOptions:{type:Boolean,required:!1,default:!1}},data:function(){return{ps:null}},watch:{watchOptions:function(t){!t&&this.watcher?this.watcher():this.createWatcher()}},mounted:function(){this.create(),this.watchOptions&&this.createWatcher()},updated:function(){var t=this;this.$nextTick((function(){t.update()}))},beforeDestroy:function(){this.destroy()},methods:{create:function(){this.ps&&this.$isServer||(this.ps=new R(this.$refs.container,this.options))},createWatcher:function(){var t=this;this.watcher=this.$watch("options",(function(){t.destroy(),t.create()}),{deep:!0})},update:function(){this.ps&&this.ps.update()},destroy:function(){this.ps&&(this.ps.destroy(),this.ps=null)}},render:function(t){return t(this.tag,{ref:"container",class:"ps",on:this.$listeners},this.$slots.default)}};function P(t,e){e&&(e.name&&"string"===typeof e.name&&(M.name=e.name),e.options&&"object"===typeof e.options&&(M.props.options.default=function(){return e.options}),e.tag&&"string"===typeof e.tag&&(M.props.tag.default=e.tag),e.watchOptions&&"boolean"===typeof e.watchOptions&&(M.props.watchOptions=e.watchOptions)),t.component(M.name,M)}t.install=P,t.PerfectScrollbar=M,t.default=P,Object.defineProperty(t,"__esModule",{value:!0})}))},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),o=n("da84"),i=n("d066"),a=n("c430"),c=n("83ab"),s=n("4930"),u=n("fdbf"),l=n("d039"),f=n("5135"),d=n("e8b5"),p=n("861d"),h=n("825a"),v=n("7b0b"),m=n("fc6a"),g=n("c04e"),y=n("5c6c"),b=n("7c73"),w=n("df75"),x=n("241c"),_=n("057f"),S=n("7418"),E=n("06cf"),A=n("9bf2"),O=n("d1e7"),C=n("9112"),T=n("6eeb"),$=n("5692"),k=n("f772"),I=n("d012"),L=n("90e3"),j=n("b622"),R=n("e538"),M=n("746f"),P=n("d44e"),N=n("69f3"),D=n("b727").forEach,Y=k("hidden"),X="Symbol",F="prototype",W=j("toPrimitive"),H=N.set,B=N.getterFor(X),U=Object[F],z=o.Symbol,V=i("JSON","stringify"),q=E.f,Z=A.f,K=_.f,G=O.f,J=$("symbols"),Q=$("op-symbols"),tt=$("string-to-symbol-registry"),et=$("symbol-to-string-registry"),nt=$("wks"),rt=o.QObject,ot=!rt||!rt[F]||!rt[F].findChild,it=c&&l((function(){return 7!=b(Z({},"a",{get:function(){return Z(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=q(U,e);r&&delete U[e],Z(t,e,n),r&&t!==U&&Z(U,e,r)}:Z,at=function(t,e){var n=J[t]=b(z[F]);return H(n,{type:X,tag:t,description:e}),c||(n.description=e),n},ct=u?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof z},st=function(t,e,n){t===U&&st(Q,e,n),h(t);var r=g(e,!0);return h(n),f(J,r)?(n.enumerable?(f(t,Y)&&t[Y][r]&&(t[Y][r]=!1),n=b(n,{enumerable:y(0,!1)})):(f(t,Y)||Z(t,Y,y(1,{})),t[Y][r]=!0),it(t,r,n)):Z(t,r,n)},ut=function(t,e){h(t);var n=m(e),r=w(n).concat(ht(n));return D(r,(function(e){c&&!ft.call(n,e)||st(t,e,n[e])})),t},lt=function(t,e){return void 0===e?b(t):ut(b(t),e)},ft=function(t){var e=g(t,!0),n=G.call(this,e);return!(this===U&&f(J,e)&&!f(Q,e))&&(!(n||!f(this,e)||!f(J,e)||f(this,Y)&&this[Y][e])||n)},dt=function(t,e){var n=m(t),r=g(e,!0);if(n!==U||!f(J,r)||f(Q,r)){var o=q(n,r);return!o||!f(J,r)||f(n,Y)&&n[Y][r]||(o.enumerable=!0),o}},pt=function(t){var e=K(m(t)),n=[];return D(e,(function(t){f(J,t)||f(I,t)||n.push(t)})),n},ht=function(t){var e=t===U,n=K(e?Q:m(t)),r=[];return D(n,(function(t){!f(J,t)||e&&!f(U,t)||r.push(J[t])})),r};if(s||(z=function(){if(this instanceof z)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=L(t),n=function(t){this===U&&n.call(Q,t),f(this,Y)&&f(this[Y],e)&&(this[Y][e]=!1),it(this,e,y(1,t))};return c&&ot&&it(U,e,{configurable:!0,set:n}),at(e,t)},T(z[F],"toString",(function(){return B(this).tag})),T(z,"withoutSetter",(function(t){return at(L(t),t)})),O.f=ft,A.f=st,E.f=dt,x.f=_.f=pt,S.f=ht,R.f=function(t){return at(j(t),t)},c&&(Z(z[F],"description",{configurable:!0,get:function(){return B(this).description}}),a||T(U,"propertyIsEnumerable",ft,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!s,sham:!s},{Symbol:z}),D(w(nt),(function(t){M(t)})),r({target:X,stat:!0,forced:!s},{for:function(t){var e=String(t);if(f(tt,e))return tt[e];var n=z(e);return tt[e]=n,et[n]=e,n},keyFor:function(t){if(!ct(t))throw TypeError(t+" is not a symbol");if(f(et,t))return et[t]},useSetter:function(){ot=!0},useSimple:function(){ot=!1}}),r({target:"Object",stat:!0,forced:!s,sham:!c},{create:lt,defineProperty:st,defineProperties:ut,getOwnPropertyDescriptor:dt}),r({target:"Object",stat:!0,forced:!s},{getOwnPropertyNames:pt,getOwnPropertySymbols:ht}),r({target:"Object",stat:!0,forced:l((function(){S.f(1)}))},{getOwnPropertySymbols:function(t){return S.f(v(t))}}),V){var vt=!s||l((function(){var t=z();return"[null]"!=V([t])||"{}"!=V({a:t})||"{}"!=V(Object(t))}));r({target:"JSON",stat:!0,forced:vt},{stringify:function(t,e,n){var r,o=[t],i=1;while(arguments.length>i)o.push(arguments[i++]);if(r=e,(p(e)||void 0!==t)&&!ct(t))return d(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!ct(e))return e}),o[1]=e,V.apply(null,o)}})}z[F][W]||C(z[F],W,z[F].valueOf),P(z,X),I[Y]=!0},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),c=n("d066"),s=n("4840"),u=n("cdf9"),l=n("6eeb"),f=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));r({target:"Promise",proto:!0,real:!0,forced:f},{finally:function(t){var e=s(this,c("Promise")),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",c("Promise").prototype["finally"])},a9e3:function(t,e,n){"use strict";var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("6eeb"),c=n("5135"),s=n("c6b6"),u=n("7156"),l=n("c04e"),f=n("d039"),d=n("7c73"),p=n("241c").f,h=n("06cf").f,v=n("9bf2").f,m=n("58a8").trim,g="Number",y=o[g],b=y.prototype,w=s(d(b))==g,x=function(t){var e,n,r,o,i,a,c,s,u=l(t,!1);if("string"==typeof u&&u.length>2)if(u=m(u),e=u.charCodeAt(0),43===e||45===e){if(n=u.charCodeAt(2),88===n||120===n)return NaN}else if(48===e){switch(u.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+u}for(i=u.slice(2),a=i.length,c=0;co)return NaN;return parseInt(i,r)}return+u};if(i(g,!y(" 0o1")||!y("0b1")||y("+0x1"))){for(var _,S=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof S&&(w?f((function(){b.valueOf.call(n)})):s(n)!=g)?u(new y(x(e)),n,S):x(e)},E=r?p(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),A=0;E.length>A;A++)c(y,_=E[A])&&!c(S,_)&&v(S,_,h(y,_));S.prototype=b,b.constructor=S,a(o,g,S)}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("d039"),c=n("e163"),s=n("9112"),u=n("5135"),l=n("b622"),f=n("c430"),d=l("iterator"),p=!1,h=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):p=!0);var v=void 0==r||a((function(){var t={};return r[d].call(t)!==t}));v&&(r={}),f&&!v||u(r,d)||s(r,d,h),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},af03:function(t,e,n){var r=n("d039");t.exports=function(t){return r((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b56e:function(t,e,n){"use strict";var r=n("861d"),o=n("9bf2"),i=n("e163"),a=n("b622"),c=a("hasInstance"),s=Function.prototype;c in s||o.f(s,c,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;while(t=i(t))if(this.prototype===t)return!0;return!1}})},b575:function(t,e,n){var r,o,i,a,c,s,u,l,f=n("da84"),d=n("06cf").f,p=n("2cf4").set,h=n("1cdc"),v=n("a4b4"),m=n("605d"),g=f.MutationObserver||f.WebKitMutationObserver,y=f.document,b=f.process,w=f.Promise,x=d(f,"queueMicrotask"),_=x&&x.value;_||(r=function(){var t,e;m&&(t=b.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},h||m||v||!g||!y?w&&w.resolve?(u=w.resolve(void 0),l=u.then,a=function(){l.call(u,r)}):a=m?function(){b.nextTick(r)}:function(){p.call(f,r)}:(c=!0,s=y.createTextNode(""),new g(r).observe(s,{characterData:!0}),a=function(){s.data=c=!c})),t.exports=_||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),s=n("fdbf"),u=o("wks"),l=r.Symbol,f=s?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)&&(c||"string"==typeof u[t])||(c&&i(l,t)?u[t]=l[t]:u[t]=f("Symbol."+t)),u[t]}},b65f:function(t,e,n){var r=n("23e7"),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(t){return(t>0?i:o)(t)}})},b680:function(t,e,n){"use strict";var r=n("23e7"),o=n("a691"),i=n("408a"),a=n("1148"),c=n("d039"),s=1..toFixed,u=Math.floor,l=function(t,e,n){return 0===e?n:e%2===1?l(t,e-1,n*t):l(t*t,e/2,n)},f=function(t){var e=0,n=t;while(n>=4096)e+=12,n/=4096;while(n>=2)e+=1,n/=2;return e},d=function(t,e,n){var r=-1,o=n;while(++r<6)o+=e*t[r],t[r]=o%1e7,o=u(o/1e7)},p=function(t,e){var n=6,r=0;while(--n>=0)r+=t[n],t[n]=u(r/e),r=r%e*1e7},h=function(t){var e=6,n="";while(--e>=0)if(""!==n||0===e||0!==t[e]){var r=String(t[e]);n=""===n?r:n+a.call("0",7-r.length)+r}return n},v=s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!c((function(){s.call({})}));r({target:"Number",proto:!0,forced:v},{toFixed:function(t){var e,n,r,c,s=i(this),u=o(t),v=[0,0,0,0,0,0],m="",g="0";if(u<0||u>20)throw RangeError("Incorrect fraction digits");if(s!=s)return"NaN";if(s<=-1e21||s>=1e21)return String(s);if(s<0&&(m="-",s=-s),s>1e-21)if(e=f(s*l(2,69,1))-69,n=e<0?s*l(2,-e,1):s/l(2,e,1),n*=4503599627370496,e=52-e,e>0){d(v,0,n),r=u;while(r>=7)d(v,1e7,0),r-=7;d(v,l(10,r,1),0),r=e-1;while(r>=23)p(v,1<<23),r-=23;p(v,1<0?(c=g.length,g=m+(c<=u?"0."+a.call("0",u-c)+g:g.slice(0,c-u)+"."+g.slice(c-u))):g=m+g,g}})},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),c=n("65f0"),s=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,l=4==t,f=6==t,d=7==t,p=5==t||f;return function(h,v,m,g){for(var y,b,w=i(h),x=o(w),_=r(v,m,3),S=a(x.length),E=0,A=g||c,O=e?A(h,S):n||d?A(h,0):void 0;S>E;E++)if((p||E in x)&&(y=x[E],b=_(y,E,w),t))if(e)O[E]=b;else if(b)switch(t){case 3:return!0;case 5:return y;case 6:return E;case 2:s.call(O,y)}else switch(t){case 4:return!1;case 7:s.call(O,y)}return f?-1:u||l?l:O}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterOut:u(7)}},bf19:function(t,e,n){"use strict";var r=n("23e7");r({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return URL.prototype.toString.call(this)}})},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c327:function(t,e){function n(t,e){if(!r(t))throw new Error("svg element is required for svg.panzoom to work");var n=t.ownerSVGElement;if(!n)throw new Error("Do not apply panzoom to the root element. Use its child instead (e.g. ). As of March 2016 only FireFox supported transform on the root element");e.disableKeyboardInteraction||n.setAttribute("tabindex",0);var o={getBBox:a,getScreenCTM:c,getOwner:i,applyTransform:u,initTransform:s};return o;function i(){return n}function a(){var e=t.getBBox();return{left:e.x,top:e.y,width:e.width,height:e.height}}function c(){var t=n.getCTM();return t||n.getScreenCTM()}function s(e){var r=t.getCTM();null===r&&(r=document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGMatrix()),e.x=r.e,e.y=r.f,e.scale=r.a,n.removeAttributeNS(null,"viewBox")}function u(e){t.setAttribute("transform","matrix("+e.scale+" 0 0 "+e.scale+" "+e.x+" "+e.y+")")}}function r(t){return t&&t.ownerSVGElement&&t.getCTM}t.exports=n,t.exports.canAttach=r},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},c8d2:function(t,e,n){var r=n("d039"),o=n("5899"),i="​…᠎";t.exports=function(t){return r((function(){return!!o[t]()||i[t]()!=i||o[t].name!==t}))}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)!r(a,n)&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},cb29:function(t,e,n){var r=n("23e7"),o=n("81d5"),i=n("44d2");r({target:"Array",proto:!0},{fill:o}),i("fill")},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d138:function(t,e){var n=4,r=.001,o=1e-7,i=10,a=11,c=1/(a-1),s="function"===typeof Float32Array;function u(t,e){return 1-3*e+3*t}function l(t,e){return 3*e-6*t}function f(t){return 3*t}function d(t,e,n){return((u(e,n)*t+l(e,n))*t+f(e))*t}function p(t,e,n){return 3*u(e,n)*t*t+2*l(e,n)*t+f(e)}function h(t,e,n,r,a){var c,s,u=0;do{s=e+(n-e)/2,c=d(s,r,a)-t,c>0?n=s:e=s}while(Math.abs(c)>o&&++u=r?v(e,f,t,n):0===d?f:h(e,o,o+c,t,n)}return function(t){return 0===t?0:1===t?1:d(l(t),e,o)}}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d28b:function(t,e,n){var r=n("746f");r("iterator")},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("d039"),i=n("b622"),a=n("9263"),c=n("9112"),s=i("species"),u=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){return"$0"==="a".replace(/./,"$0")}(),f=i("replace"),d=function(){return!!/./[f]&&""===/./[f]("a","$0")}(),p=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,f){var h=i(t),v=!o((function(){var e={};return e[h]=function(){return 7},7!=""[t](e)})),m=v&&!o((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[s]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return e=!0,null},n[h](""),!e}));if(!v||!m||"replace"===t&&(!u||!l||d)||"split"===t&&!p){var g=/./[h],y=n(h,""[t],(function(t,e,n,r,o){return e.exec===a?v&&!o?{done:!0,value:g.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],w=y[1];r(String.prototype,t,b),r(RegExp.prototype,h,2==e?function(t,e){return w.call(t,this,e)}:function(t){return w.call(t,this)})}f&&c(RegExp.prototype[h],"sham",!0)}},d81d:function(t,e,n){"use strict";var r=n("23e7"),o=n("b727").map,i=n("1dde"),a=i("map");r({target:"Array",proto:!0,forced:!a},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},dc8d:function(t,e,n){var r=n("746f");r("hasInstance")},ddb0:function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("e260"),a=n("9112"),c=n("b622"),s=c("iterator"),u=c("toStringTag"),l=i.values;for(var f in o){var d=r[f],p=d&&d.prototype;if(p){if(p[s]!==l)try{a(p,s,l)}catch(v){p[s]=l}if(p[u]||a(p,u,f),o[f])for(var h in i)if(p[h]!==i[h])try{a(p,h,i[h])}catch(v){p[h]=i[h]}}}},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},e01a:function(t,e,n){"use strict";var r=n("23e7"),o=n("83ab"),i=n("da84"),a=n("5135"),c=n("861d"),s=n("9bf2").f,u=n("e893"),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var f={},d=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof d?new l(t):void 0===t?l():l(t);return""===t&&(f[e]=!0),e};u(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,v="Symbol(test)"==String(l("test")),m=/^Symbol\((.*)\)[^)]+$/;s(p,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=h.call(t);if(a(f,t))return"";var n=v?e.slice(7,-1):e.replace(m,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:d})}},e163:function(t,e,n){var r=n("5135"),o=n("7b0b"),i=n("f772"),a=n("e177"),c=i("IE_PROTO"),s=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),a=n("69f3"),c=n("7dd0"),s="Array Iterator",u=a.set,l=a.getterFor(s);t.exports=c(Array,"Array",(function(t,e){u(this,{type:s,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e285:function(t,e,n){var r=n("da84"),o=r.isFinite;t.exports=Number.isFinite||function(t){return"number"==typeof t&&o(t)}},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,c=n("23e7"),s=n("c430"),u=n("da84"),l=n("d066"),f=n("fea9"),d=n("6eeb"),p=n("e2cc"),h=n("d44e"),v=n("2626"),m=n("861d"),g=n("1c0b"),y=n("19aa"),b=n("8925"),w=n("2266"),x=n("1c7e"),_=n("4840"),S=n("2cf4").set,E=n("b575"),A=n("cdf9"),O=n("44de"),C=n("f069"),T=n("e667"),$=n("69f3"),k=n("94ca"),I=n("b622"),L=n("605d"),j=n("2d00"),R=I("species"),M="Promise",P=$.get,N=$.set,D=$.getterFor(M),Y=f,X=u.TypeError,F=u.document,W=u.process,H=l("fetch"),B=C.f,U=B,z=!!(F&&F.createEvent&&u.dispatchEvent),V="function"==typeof PromiseRejectionEvent,q="unhandledrejection",Z="rejectionhandled",K=0,G=1,J=2,Q=1,tt=2,et=k(M,(function(){var t=b(Y)!==String(Y);if(!t){if(66===j)return!0;if(!L&&!V)return!0}if(s&&!Y.prototype["finally"])return!0;if(j>=51&&/native code/.test(Y))return!1;var e=Y.resolve(1),n=function(t){t((function(){}),(function(){}))},r=e.constructor={};return r[R]=n,!(e.then((function(){}))instanceof n)})),nt=et||!x((function(t){Y.all(t)["catch"]((function(){}))})),rt=function(t){var e;return!(!m(t)||"function"!=typeof(e=t.then))&&e},ot=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;E((function(){var r=t.value,o=t.state==G,i=0;while(n.length>i){var a,c,s,u=n[i++],l=o?u.ok:u.fail,f=u.resolve,d=u.reject,p=u.domain;try{l?(o||(t.rejection===tt&&st(t),t.rejection=Q),!0===l?a=r:(p&&p.enter(),a=l(r),p&&(p.exit(),s=!0)),a===u.promise?d(X("Promise-chain cycle")):(c=rt(a))?c.call(a,f,d):f(a)):d(r)}catch(h){p&&!s&&p.exit(),d(h)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&at(t)}))}},it=function(t,e,n){var r,o;z?(r=F.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},!V&&(o=u["on"+t])?o(r):t===q&&O("Unhandled promise rejection",n)},at=function(t){S.call(u,(function(){var e,n=t.facade,r=t.value,o=ct(t);if(o&&(e=T((function(){L?W.emit("unhandledRejection",r,n):it(q,n,r)})),t.rejection=L||ct(t)?tt:Q,e.error))throw e.value}))},ct=function(t){return t.rejection!==Q&&!t.parent},st=function(t){S.call(u,(function(){var e=t.facade;L?W.emit("rejectionHandled",e):it(Z,e,t.value)}))},ut=function(t,e,n){return function(r){t(e,r,n)}},lt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=J,ot(t,!0))},ft=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw X("Promise can't be resolved itself");var r=rt(e);r?E((function(){var n={done:!1};try{r.call(e,ut(ft,n,t),ut(lt,n,t))}catch(o){lt(n,o,t)}})):(t.value=e,t.state=G,ot(t,!1))}catch(o){lt({done:!1},o,t)}}};et&&(Y=function(t){y(this,Y,M),g(t),r.call(this);var e=P(this);try{t(ut(ft,e),ut(lt,e))}catch(n){lt(e,n)}},r=function(t){N(this,{type:M,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:K,value:void 0})},r.prototype=p(Y.prototype,{then:function(t,e){var n=D(this),r=B(_(this,Y));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=L?W.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=K&&ot(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=P(t);this.promise=t,this.resolve=ut(ft,e),this.reject=ut(lt,e)},C.f=B=function(t){return t===Y||t===i?new o(t):U(t)},s||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(t,e){var n=this;return new Y((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof H&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return A(Y,H.apply(u,arguments))}}))),c({global:!0,wrap:!0,forced:et},{Promise:Y}),h(Y,M,!1,!0),v(M),i=l(M),c({target:M,stat:!0,forced:et},{reject:function(t){var e=B(this);return e.reject.call(void 0,t),e.promise}}),c({target:M,stat:!0,forced:s||et},{resolve:function(t){return A(s&&this===i?Y:this,t)}}),c({target:M,stat:!0,forced:nt},{all:function(t){var e=this,n=B(e),r=n.resolve,o=n.reject,i=T((function(){var n=g(e.resolve),i=[],a=0,c=1;w(t,(function(t){var s=a++,u=!1;i.push(void 0),c++,n.call(e,t).then((function(t){u||(u=!0,i[s]=t,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=B(e),r=n.reject,o=T((function(){var o=g(e.resolve);w(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;uv)&&(l=m*s,u+=l),(f<-v||f>v)&&(p=m*f,d+=p),h=y(E)}function E(){var t=Date.now()-a,n=!1,r=0,o=0;l&&(r=-l*Math.exp(-t/b),r>.5||r<-.5?n=!0:r=l=0),p&&(o=-p*Math.exp(-t/b),o>.5||o<-.5?n=!0:o=p=0),n&&(e(u+r,d+o),h=y(E))}}function r(){return"function"===typeof cancelAnimationFrame?cancelAnimationFrame:clearTimeout}function o(){return"function"===typeof requestAnimationFrame?requestAnimationFrame:function(t){return setTimeout(t,16)}}t.exports=n},f00c:function(t,e,n){var r=n("23e7"),o=n("e285");r({target:"Number",stat:!0},{isFinite:o})},f069:function(t,e,n){"use strict";var r=n("1c0b"),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),c="Arguments"==o(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),a))?n:c?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f6b9:function(t,e,n){},f748:function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fdbc:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fea9:function(t,e,n){var r=n("da84");t.exports=r.Promise}}]); +//# sourceMappingURL=chunk-vendors.df7b93b3.js.map \ No newline at end of file diff --git a/dream/js/chunk-vendors.df7b93b3.js.map b/dream/js/chunk-vendors.df7b93b3.js.map new file mode 100644 index 000000000..864ad3126 --- /dev/null +++ b/dream/js/chunk-vendors.df7b93b3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/ngraph.events/index.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/panzoom/lib/createTextSelectionInterceptor.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/vue-panzoom/dist/vue-panzoom.esm.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/modules/es.string.repeat.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/panzoom/lib/transform.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.string.sub.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/panzoom/lib/domController.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/amator/index.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/panzoom/index.js","webpack:///./node_modules/wheel/index.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/modules/es.math.log2.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/vue2-perfect-scrollbar/dist/vue2-perfect-scrollbar.umd.js","webpack:///./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/modules/es.promise.finally.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/string-html-forced.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/modules/es.function.has-instance.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/modules/es.math.trunc.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/modules/web.url.to-json.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/panzoom/lib/svgController.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/bezier-easing/src/index.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/modules/es.symbol.has-instance.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/number-is-finite.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/panzoom/lib/kinetic.js","webpack:///./node_modules/core-js/modules/es.number.is-finite.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js"],"names":["createEventsStorage","subject","registeredEvents","Object","create","on","eventName","callback","ctx","Error","handlers","push","off","wantToRemoveAll","deleteAllCallbacksForEvent","callbacks","i","length","splice","fire","fireArguments","arguments","Array","prototype","call","callbackInfo","apply","validateSubject","reservedWords","hasOwnProperty","module","exports","eventsStorage","wellKnownSymbol","TO_STRING_TAG","test","String","createTextSelectionInterceptor","useFake","capture","noop","release","dragObject","prevSelectStart","prevDragStart","wasCaptured","domObject","window","document","onselectstart","ondragstart","disabled","e","stopPropagation","aFunction","fn","that","undefined","a","b","c","toIndexedObject","nativeGetOwnPropertyNames","f","toString","windowNames","getOwnPropertyNames","getWindowNames","it","error","slice","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toPrimitive","has","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","getOwnPropertyDescriptor","O","P","toObject","floor","Math","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","str","position","captures","namedCaptures","replacement","tailPos","m","symbols","match","ch","charAt","n","fails","createElement","defineProperty","get","toInteger","requireObjectCoercible","repeat","count","this","result","Infinity","RangeError","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","speciesConstructor","advanceStringIndex","toLength","callRegExpExec","regexpExec","arrayPush","min","MAX_UINT32","SUPPORTS_Y","RegExp","SPLIT","nativeSplit","maybeCallNative","internalSplit","split","separator","limit","string","lim","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","source","index","splitter","regexp","res","done","value","rx","S","C","unicodeMatching","p","q","A","z","classof","R","exec","TypeError","global","DOMIterables","forEach","createNonEnumerableProperty","COLLECTION_NAME","Collection","CollectionPrototype","$forEach","arrayMethodIsStrict","STRICT_METHOD","callbackfn","Constructor","name","getBuiltIn","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","next","from","SKIP_CLOSING","ITERATION_SUPPORT","object","userAgent","V8_VERSION","SPECIES","METHOD_NAME","array","constructor","foo","Boolean","isArrayIteratorMethod","bind","getIteratorMethod","iteratorClose","Result","stopped","iterable","unboundFunction","options","iterator","iterFn","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","max","integer","redefine","setGlobal","copyConstructorProperties","isForced","FORCED","target","key","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","sham","internalObjectKeys","enumBugKeys","hiddenKeys","concat","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","unsafe","definePropertyModule","CONSTRUCTOR_NAME","configurable","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","returnMethod","$","sign","emptyObject","freeze","isUndef","v","isDef","isTrue","isFalse","isPrimitive","isObject","obj","_toString","isPlainObject","isValidArrayIndex","val","parseFloat","isFinite","isPromise","then","catch","isArray","JSON","stringify","toNumber","isNaN","makeMap","expectsLowerCase","map","list","toLowerCase","isReservedAttribute","remove","arr","item","indexOf","hasOwn","cached","cache","hit","camelizeRE","camelize","_","toUpperCase","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","l","_length","nativeBind","Function","toArray","start","ret","extend","to","_from","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keys","keysB","looseIndexOf","once","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","charCodeAt","def","enumerable","writable","bailRE","parsePath","path","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","addEventListener","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Symbol","Reflect","ownKeys","Set","set","clear","warn","uid","Dep","id","subs","addSub","sub","removeSub","depend","addDep","notify","update","targetStack","pushTarget","popTarget","pop","VNode","tag","data","children","text","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","method","original","args","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","src","__proto__","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","property","getter","setter","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","type","key$1","props","methods","inject","computed","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","default","_props","getType","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","console","timerFunc","isUsingMicroTask","pending","flushCallbacks","copies","Promise","resolve","setTimeout","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","event","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","attrs","altKey","checkProp","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","last","shift","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","values","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","_c","d","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","clone","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","insert","_isMounted","callHook","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","is","pre","applyNS","registerDeepBindings","force","style","class","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","Vue","$nextTick","_render","ref","ensureCtor","comp","base","__esModule","toStringTag","factory","errorComp","resolved","owner","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","clearTimeout","reject","reason","component","delay","timeout","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","cbs","$emit","setActiveInstance","prevActiveInstance","initLifecycle","$children","$refs","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","_data","mountComponent","el","updateComponent","Watcher","before","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","direct","j","queue","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","now","createEvent","timeStamp","flushSchedulerQueue","watcher","sort","run","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","emit","queueWatcher","uid$2","expOrFn","isRenderWatcher","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","tmp","oldValue","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","isRoot","getData","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_init","_uid","initInternalComponent","_self","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","modified","latest","sealed","sealedOptions","initUse","use","plugin","installedPlugins","_installedPlugins","unshift","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","matches","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","patternTypes","KeepAlive","include","exclude","Number","created","destroyed","mounted","ref$1","parseInt","builtInComponents","initGlobalAPI","configDef","util","defineReactive","delete","observable","version","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","query","selected","querySelector","createElement$1","tagName","multiple","setAttribute","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","transition","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","end","hydrate","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","innerHTML","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","nodeType","hasAttribute","removeAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","join","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","change","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","svgContainer","events","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","activeElement","_vModifiers","number","trim","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","s","enter","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","o","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","initEvent","dispatchEvent","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","platformDirectives","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","pos","getBoundingClientRect","updated","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","body","offsetHeight","moved","transform","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","oldPos","dx","left","dy","top","platformComponents","defer","channel","port","html","IS_IOS","IS_NODE","location","clearImmediate","process","MessageChannel","Dispatch","ONREADYSTATECHANGE","runner","listener","post","postMessage","protocol","host","port2","port1","onmessage","importScripts","versions","v8","PanZoomComponent","selector","$panZoomInstance","instanceId","defaultOptions","autocenter","bounds","transformOrigin","x","y","generateRandomId","scene","_options","assign","$panZoom","$panZoomInstanceId","attachEvents","chars","charsLength","random","isPaused","pause","resume","template","script","isFunctionalTemplate","createInjector","createInjectorSSR","createInjectorShadow","normalizeComponent_1","__vue_script__","__vue_render__","_vm","_h","__vue_staticRenderFns__","_withStripped","__vue_inject_styles__","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","PanZoomPlugin","_name","componentName","Iterators","objectKeys","Properties","proto","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","getInternalState","getterFor","iterated","point","state","Transform","scale","propertyIsEnumerable","UNSCOPABLES","ArrayPrototype","MATCH","defaultConstructor","getOwnPropertySymbols","$trim","forcedStringTrimMethod","createHTML","forcedStringHTMLMethod","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","includes","argument","getSubstitution","regExpExec","maybeToString","REPLACE","nativeReplace","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","groups","replacerArgs","_typeof","makeDomController","domElement","elementValid","isDomElement","parentElement","scrollTop","disableKeyboardInteraction","api","getBBox","getOwner","applyTransform","width","clientWidth","height","clientHeight","element","canAttach","IS_PURE","store","copyright","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","whitespaces","whitespace","ltrim","rtrim","TYPE","bitmap","IndexedObject","nativeAssign","B","alphabet","chr","T","argumentsLength","CONVERT_TO_STRING","first","second","size","codeAt","originalArray","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","WeakMap","enforce","wmget","wmhas","wmset","metadata","facade","STATE","log","LOG10E","log10","inspectSource","enforceInternalState","TEMPLATE","simple","setPrototypeOf","dummy","Wrapper","NewTarget","NewTargetPrototype","wrappedWellKnownSymbolModule","NAME","BezierEasing","animations","ease","easeIn","easeOut","easeInOut","linear","animate","diff","easing","scheduler","getScheduler","previousAnimationId","durationInMs","durationInFrames","frame","cancel","t","setValues","canRaf","rafScheduler","timeoutScheduler","cancelAnimationFrame","makeAggregateRaf","frontBuffer","backBuffer","frameToken","clearAll","renderNextFrame","renderFrame","sharedScheduler","activeXDocument","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","contentWindow","open","F","NullProtoObject","domain","ActiveXObject","wheel","eventify","kinetic","domTextSelectionInterceptor","fakeTextSelectorInterceptor","makeSvgController","defaultZoomSpeed","defaultDoubleTapZoomSpeed","doubleTapSpeedInMS","createPanZoom","panController","controller","storedCTMResult","isDirty","initTransform","frameAnimation","filterKey","pinchSpeed","maxZoom","POSITIVE_INFINITY","minZoom","boundsPadding","zoomDoubleClickSpeed","beforeWheel","beforeMouseDown","speed","zoomSpeed","parseTransformOrigin","textSelection","enableTextSelection","validateBounds","lastSingleFingerOffset","mouseX","mouseY","pinchZoomLength","smoothScroll","moveByAnimation","zoomToAnimation","multiTouch","lastTouchEndTime","touchInProgress","panstartFired","rigidScroll","getPoint","scroll","paused","listenForEvents","dispose","moveBy","internalMoveBy","moveTo","smoothMoveTo","centerOn","zoomTo","publicZoomTo","zoomAbs","smoothZoom","smoothZoomAbs","showRectangle","getTransform","getTransformModel","getMinZoom","setMinZoom","getMaxZoom","setMaxZoom","getTransformOrigin","setTransformOrigin","getZoomSpeed","setZoomSpeed","initialX","initialY","initialZoom","Scale","releaseEvents","rect","clientRect","transformToScreen","rectWidth","right","rectHeight","bottom","dw","dh","getScreenCTM","parentCTM","parentScaleX","parentScaleY","parentOffsetX","parentOffsetY","w","sceneBoundingBox","getBoundingBox","ownerRect","bbox","newMinZoom","newMaxZoom","newTransformOrigin","newSpeed","keepTransformInsideBounds","triggerEvent","makeDirty","boundingBox","adjusted","getClientRect","sceneWidth","sceneHeight","leftTop","client","zoomByRatio","clientX","clientY","ratio","newScale","transformAdjusted","zoomLevel","ui","ownerSVGElement","cx","cy","container","smooth","lastX","lastY","cancelZoomAnimation","onMouseDown","onDoubleClick","onTouch","onKeyDown","addWheelListener","onMouseWheel","removeWheelListener","releaseDocumentMouse","releaseTouches","triggerPanEnd","keyCode","preventDefault","offset","moveSpeedRatio","scaleMultiplier","getScaleMultiplier","getTransformOriginOffset","midPoint","beforeTouch","touches","handleSingleFingerTouch","getPinchZoomLength","startTouchListenerIfNeeded","beforeDoubleClick","touch","getOffsetXY","handleTouchMove","handleTouchEnd","triggerPanStart","t1","t2","currentPinchLength","firstTouchPoint","secondTouchPoint","finger1","finger2","sqrt","isLeftButton","button","onMouseMove","onMouseUp","srcElement","delta","deltaY","deltaMode","offsetX","offsetY","fromValue","triggerZoomEnd","toScaleValue","deltaAdjustedSpeed","abs","isNumber","failTransformOrigin","boundsType","validBounds","autoRun","scripts","getElementsByTagName","panzoomScript","globalName","started","tryAttach","elapsed","collectOptions","attributes","nameValue","getPanzoomAttributeNameValue","isPanZoomAttribute","substr","parse","useCapture","createIteratorConstructor","getPrototypeOf","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","ENTRIES","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","endPos","quot","attribute","p1","functionToString","LN2","log2","postfix","regexpFlags","stickyHelpers","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","re","charsAdded","strCopy","input","feature","detection","POLYFILL","NATIVE","nativeDefineProperty","Attributes","RE","div","className","elMatches","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","queryChildren","main","rtl","thumb","rail","consuming","focus","clicking","scrolling","scrollingClassTimeout","addScrollingClass","contains","removeScrollingClass","isAlive","settings","scrollingThreshold","setScrollingClassInstantly","EventElement","isEmpty","unbindAll","EventManager","eventElements","CustomEvent","evt","initCustomEvent","processScrollDiff","axis","useScrollingClass","forceFireReachEvent","fields","processScrollDiff$1","contentHeight","containerHeight","up","down","reach","toInt","isEditable","outerWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","eventElement","ee","isWebKit","documentElement","supportsTouch","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","updateGeometry","roundedScrollTop","containerWidth","ceil","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","updateCss","isRtl","thumbSize","minScrollbarLength","maxScrollbarLength","xRailOffset","isScrollbarXUsingBottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","clickRail","positionTop","pageY","pageYOffset","direction","positionLeft","pageX","pageXOffset","dragThumb","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","mouseUpHandler","bindMoves","touchMode","keyboard","elementHovered","scrollbarFocused","shouldPreventDefault","deltaX","wheelPropagation","isDefaultPrevented","defaultPrevented","contentDocument","which","metaKey","shiftKey","hitsBound","isTop","isBottom","isLeft","isRight","offsetWidth","getDeltaFromEvent","wheelDeltaX","wheelDeltaY","wheelDelta","shouldBeConsumedByChild","cursor","overflowY","maxScrollTop","overflowX","maxScrollLeft","mousewheelHandler","shouldPrevent","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","startOffset","startTime","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","magnitudeX","magnitudeY","scrollY","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","clearInterval","currentOffset","currentTime","timeGap","swipeEasing","setInterval","isInitialized","defaultSettings","PerfectScrollbar","userSettings","this$2","nodeName","blur","isNegativeScroll","originalScrollLeft","railXStyle","marginLeft","marginRight","railYStyle","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","removePsClasses","PerfectScrollbar$1","required","watchOptions","ps","shouldWatch","beforeDestroy","$isServer","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","nativeObjectCreate","getOwnPropertyNamesExternal","getOwnPropertyDescriptorModule","defineWellKnownSymbol","HIDDEN","SYMBOL","TO_PRIMITIVE","ObjectPrototype","$Symbol","$stringify","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","V","$getOwnPropertyDescriptor","$getOwnPropertyNames","names","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","FORCED_JSON_STRINGIFY","space","$replacer","valueOf","NativePromise","promiseResolve","NON_GENERIC","real","onFinally","isFunction","inheritIfRequired","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","third","radix","maxCode","digits","code","NaN","NumberWrapper","dotAll","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","TO_STRING_TAG_SUPPORT","HAS_INSTANCE","FunctionPrototype","flush","head","toggle","promise","macrotask","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","exit","task","createWellKnownSymbol","withoutSetter","trunc","thisNumberValue","nativeToFixed","toFixed","pow","acc","x2","multiply","c2","divide","dataToString","fractionDigits","k","fractDigits","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","specificCreate","self","boundFunction","find","findIndex","filterOut","toJSON","URL","PREFERRED_STRING","svgElement","isSVGElement","ctm","getCTM","screenCTM","createSVGMatrix","SHARED","g","non","fill","addToUnscopables","EXISTS","newPromiseCapability","promiseCapability","variable","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","LinearEasing","mY1","mY2","sampleValues","getTForX","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","NASHORN_BUG","1","aPossiblePrototype","CORRECT_SETTER","TAG","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","$map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","check","globalThis","ArrayIteratorMethods","ArrayValues","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","CORRECT_PROTOTYPE_GETTER","ARRAY_ITERATOR","kind","Arguments","globalIsFinite","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","setSpecies","anInstance","iterate","checkCorrectnessOfIteration","microtask","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","fail","rejection","onHandleUnhandled","onUnhandled","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","fetch","r","capability","$promiseResolve","remaining","alreadyCalled","race","lastPoint","timestamp","ticker","vx","targetX","ax","vy","targetY","ay","minVelocity","amplitude","getCancelAnimationFrame","getRequestAnimationFrame","timeConstant","track","currentPoint","dt","autoScroll","moving","exp","numberIsFinite","PromiseCapability","$$resolve","$$reject","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList"],"mappings":"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","file":"js/chunk-vendors.df7b93b3.js","sourcesContent":["module.exports = function eventify(subject) {\n validateSubject(subject);\n\n var eventsStorage = createEventsStorage(subject);\n subject.on = eventsStorage.on;\n subject.off = eventsStorage.off;\n subject.fire = eventsStorage.fire;\n return subject;\n};\n\nfunction createEventsStorage(subject) {\n // Store all event listeners to this hash. Key is event name, value is array\n // of callback records.\n //\n // A callback record consists of callback function and its optional context:\n // { 'eventName' => [{callback: function, ctx: object}] }\n var registeredEvents = Object.create(null);\n\n return {\n on: function (eventName, callback, ctx) {\n if (typeof callback !== 'function') {\n throw new Error('callback is expected to be a function');\n }\n var handlers = registeredEvents[eventName];\n if (!handlers) {\n handlers = registeredEvents[eventName] = [];\n }\n handlers.push({callback: callback, ctx: ctx});\n\n return subject;\n },\n\n off: function (eventName, callback) {\n var wantToRemoveAll = (typeof eventName === 'undefined');\n if (wantToRemoveAll) {\n // Killing old events storage should be enough in this case:\n registeredEvents = Object.create(null);\n return subject;\n }\n\n if (registeredEvents[eventName]) {\n var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n if (deleteAllCallbacksForEvent) {\n delete registeredEvents[eventName];\n } else {\n var callbacks = registeredEvents[eventName];\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].callback === callback) {\n callbacks.splice(i, 1);\n }\n }\n }\n }\n\n return subject;\n },\n\n fire: function (eventName) {\n var callbacks = registeredEvents[eventName];\n if (!callbacks) {\n return subject;\n }\n\n var fireArguments;\n if (arguments.length > 1) {\n fireArguments = Array.prototype.splice.call(arguments, 1);\n }\n for(var i = 0; i < callbacks.length; ++i) {\n var callbackInfo = callbacks[i];\n callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n }\n\n return subject;\n }\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('Eventify cannot use falsy object as events subject');\n }\n var reservedWords = ['on', 'fire', 'off'];\n for (var i = 0; i < reservedWords.length; ++i) {\n if (subject.hasOwnProperty(reservedWords[i])) {\n throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n }\n }\n}\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","/**\n * Disallows selecting text.\n */\nmodule.exports = createTextSelectionInterceptor;\n\nfunction createTextSelectionInterceptor(useFake) {\n if (useFake) {\n return {\n capture: noop,\n release: noop\n };\n }\n\n var dragObject;\n var prevSelectStart;\n var prevDragStart;\n var wasCaptured = false;\n\n return {\n capture: capture,\n release: release\n };\n\n function capture(domObject) {\n wasCaptured = true;\n prevSelectStart = window.document.onselectstart;\n prevDragStart = window.document.ondragstart;\n\n window.document.onselectstart = disabled;\n\n dragObject = domObject;\n dragObject.ondragstart = disabled;\n }\n\n function release() {\n if (!wasCaptured) return;\n \n wasCaptured = false;\n window.document.onselectstart = prevSelectStart;\n if (dragObject) dragObject.ondragstart = prevDragStart;\n }\n}\n\nfunction disabled(e) {\n e.stopPropagation();\n return false;\n}\n\nfunction noop() {}\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","/*!\n * Vue.js v2.6.12\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.

, or missing . Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. \n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for

This video shows a talker with WAVE sensors placed on the tongue hitting a virtual target sphere located at the alveolar ridge. When an alveolar consonant is hit (e.g., /s/, /n/, /d/) the sphere changes color from red to green.

This video shows an American talker learning a novel sound not found in English. When the post-alveolar consonant is hit, the target sphere changes color from red to green. Here, the NDI WAVE system serves as input.

The program is being updated by a team in the UT Dallas Speech Production Lab led by Anthony Lawn, so the program uses a more modern version of Unity, has an easier-to-use interface, can more easily support new features, and can connect to additional EMA systems, namely the Carstens AG501.

New Interface

In addition, the program now includes documentation and unit tests to improve program stability and maintainability going forward.

Documentation

Unit Tests

+ + + + \ No newline at end of file diff --git a/projects/vecs/index.html b/projects/vecs/index.html new file mode 100644 index 000000000..5af6ac126 --- /dev/null +++ b/projects/vecs/index.html @@ -0,0 +1,32 @@ + + + + + + V-ecs | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

V-ecs

V-ecs Screenshot

V-ecs (pronounced "Vex") is a Vulkan-based engine I made for making highly moddable games and tools in Lua centered around the ECS design pattern and a work-stealing job system.

The engine works with "worlds", which are collections of systems and renderers. The engine comes with several worlds using systems and renderers I made, including a voxel world, an incremental game, and some test scenes. All of these include systems to render the fps as well as show a debug console by typing the grave key (`). The default world is a title screen that detects any worlds in the "worlds" folder and displays a button for each of them.

Debug Menu

The original plans were to eventually put it on the steam workshop so people could more easily share their creations amongst each other, but I never became happy enough with the performance of the engine - the parallelization of the lua code involved a lot of overhead that severely limited performance.

Instead, I made a couple of worlds by myself - an infinite procedurally generated voxel world, a simple incremental game, and a more complex incremental game I call "Sands of Time".

Sands of Time

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/2.0-format-changes.html b/public/gamedevtree/2.0-format-changes.html new file mode 100644 index 000000000..9b2629acd --- /dev/null +++ b/public/gamedevtree/2.0-format-changes.html @@ -0,0 +1,32 @@ + + + + + + 2.0 format changes | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

2.0 format changes

  • Temp format is changed from temp.something[layer] to temp[layer].something, for consistency
  • Challenges are now saved as an object with the amount of completions in each spot. (This will break saves.)
  • effectDisplay in Challenges and Upgrades no longer takes an argument, and neither does effect for Buyables
  • Buyable cost can take an argument for amount of buyables, but it needs to function if no argument is supplied (it should do the cost for the next purchase).
  • Generation of Points now happens in the main game loop (not in a layer update function), enabled by canGenPoints in game.js.
  • Changed fullLayerReset to layerDataReset, which takes an array of names of values to keep

In addition, many names were changed, mostly expanding abbreviations:

All instances of:

  • chall -> challenge
  • unl -> unlocked
  • upg -> upgrade (besides CSS)
  • amt -> amount
  • desc -> description
  • resCeil -> roundUpCost
  • order -> unlockOrder
  • incr_order -> increaseUnlockOrder

Challenges:

  • desc -> challengeDescription
  • reward -> rewardDescription
  • effect -> rewardEffect
  • effectDisplay -> rewardDisplay
  • active -> challengeActive

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/README.html b/public/gamedevtree/README.html new file mode 100644 index 000000000..dbc5480a7 --- /dev/null +++ b/public/gamedevtree/README.html @@ -0,0 +1,32 @@ + + + + + + The-Modding-Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The-Modding-Tree

A modified version of The Prestige Tree that is much easier to mod. It still requires programming knowledge, but it's mostly pretty easy things and copy/pasting.

Look here for a tutorial on getting started with modding with TMT

You can look in the documentation for more information on how it all works, or look at the code in layers.js to see what it all looks like.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/changelog.html b/public/gamedevtree/changelog.html new file mode 100644 index 000000000..815588690 --- /dev/null +++ b/public/gamedevtree/changelog.html @@ -0,0 +1,32 @@ + + + + + + The Game Dev Tree changelog: | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The Game Dev Tree changelog:

v1.0.4 Version Bump [rebalanced,debuggedx3] - 2020-11-09

  • Fixed refactorings 2, 3, and 4 not actually affecting productivity

v1.0.3 Version Bump [rebalanced,debuggedx2] - 2020-11-08

  • Fixed API milestone 4 not working

v1.0.2 Version Bump [rebalanced,debugged] - 2020-11-08

  • Fixed tree lines being hidden after hitting "keepGoing" in the victory screen

v1.0.1 Version Bump [rebalanced] - 2020-11-08

  • Buffed several TAs

v1.0 Version Bump - 2020-11-08

  • Finished row 4
  • Added colored text to lore
  • Fixed some visual bugs with milestones
  • Probably other stuff lol its been a week

v0.2.3 Stylish - 2020-10-30

  • Re-styled basically everything
  • Added favicon
  • Added header bar
  • Added changelog

v0.2.2 Row 3 - 2020-10-22

  • Removed debug statement
  • Moved milestones in F layer beneath the buyables

v0.2.1 Row 3 - 2020-10-21

  • Fixed layers hiding
  • Fixed typos/minor issues
  • Fixed S layer being highlighted before you can unlock the layer

v0.2 Row 3 - 2020-10-21

  • Implemented row 3

v0.1.1 Cash Influx [rebalanced] - 2020-10-19

  • Fixed notification issue
  • Rebalanced to make early game faster and late game slower
  • Fixed other minor issues

v0.1 Cash Influx - 2020-10-19

  • Implemented row 2

v0.0 Initial Commit - 2020-10-18

  • Implemented row 1

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/!general-info.html b/public/gamedevtree/docs/!general-info.html new file mode 100644 index 000000000..26ac8bf57 --- /dev/null +++ b/public/gamedevtree/docs/!general-info.html @@ -0,0 +1,32 @@ + + + + + + The-Modding-Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The-Modding-Tree

The main way to add content is through creating layers. You can either add a layer directly in the layers object in layersSupportjs, or declare it in another file and then do "addLayer(layername, layerdata)" (good for breaking things up into smaller files). The existing layers are just examples and can be freely deleted. You can also use them as references and a base for your own layers.

The first thing you need to do is to edit the modInfo at the top of game.js to set your modID (a string). A unique modId will prevent your mod's saves from conflicting with other mods.

Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to.

The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects, and must be treated differently. For example, you have to use new Decimal(x) to create a Decimal value instead of a plain number, and perform operations on them by calling functions. e.g, instead of x = x + y, use x = x.add(y).

Almost all values can be either a constant value, or a dynamic value. Dynamic values are defined by putting a function that returns what the value should be at any given time.

All display text can be basic HTML instead (But you can't use most Vue features there).

Table of Contents:

General:

  • Getting Started: Getting your own copy of the code set up with Github Desktop.
  • Main mod info: How to set up general things for your mod in mod.js.
  • Basic layer breakdown: Breaking down the components of a layer with minimal features.
  • Layer features: Explanations of all of the different properties that you can give a layer.
  • Custom Tab Layouts: An optional way to give your tabs a different layout. You can even create entirely new components to use.
  • Updating TMT: Using Github Desktop to update your mod's version of TMT.

Common components

  • Upgrades: How to create upgrades for a layer.
  • Milestones: How to create milestones for a layer.
  • Buyables: Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings.
  • Clickables: A more generalized variant of buyables, for any kind of thing that is sometimes clickable. Between these and Buyables, you can do just about anything.

Other components

  • Challenges: How to create challenges for a layer.
  • Bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be horizontal and vertical as well.
  • Subtabs and Microtabs: Create subtabs for your tabs, as well as "microtab" components that you can put inside the tabs.
  • Achievements: How to create achievements for a layer (or for the whole game).
  • Infoboxes: Boxes containing text that can be shown or hidden.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/achievements.html b/public/gamedevtree/docs/achievements.html new file mode 100644 index 000000000..00f9709b2 --- /dev/null +++ b/public/gamedevtree/docs/achievements.html @@ -0,0 +1,48 @@ + + + + + + Achievements | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Achievements

Achievements are awarded to the player when they meet a certain goal, and give some benefit. Currently, they are pretty basic, but additional features will be added later to help.

You can make global achievements by putting them in a side layer (make its row "side" instead of a number)

Useful functions for dealing with achievements and implementing their effects:

  • hasAchievement(layer, id): determine if the player has the Achievement
  • achievementEffect(layer, id): Returns the current effects of the achievement, if any

Achievements should be formatted like this:

js
    achievements: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Blah",
+            more features
+        }
+        etc
+    }
    achievements: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Blah",
+            more features
+        }
+        etc
+    }

Each achievement should have an id where the first digit is the row and the second digit is the column. Individual achievement can have these features:

  • name: optional, displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the achievement should be awarded.

  • tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional, A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.

  • unlocked(): optional, A function returning a bool to determine if the achievement is visible or not. Default is unlocked.

  • onComplete() - optional, this function will be called when the achievement is completed.

  • style: Optional, Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.

  • goalTooltip: optional, depracated Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.

  • doneTooltip: optional, depracated Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/bars.html b/public/gamedevtree/docs/bars.html new file mode 100644 index 000000000..973b2e026 --- /dev/null +++ b/public/gamedevtree/docs/bars.html @@ -0,0 +1,44 @@ + + + + + + Bars | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Bars

Bars let you display information in a more direct way. It can be a progress bar, health bar, capacity gague, or anything else.

Bars are defined like other Big Features:

js
    bars: {
+        bigBar: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    bars: {
+        bigBar: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • direction: UP, DOWN, LEFT, or RIGHT (not Strings). Determines the direction that the bar is filled as it progresses. RIGHT means from left to right.

  • width, height: The size in pixels of the bar, but as Numbers (no "px" at the end)

  • progress(): A function that returns the portion of the bar that is filled, from "empty" at 0 to "full" at 1. (Nothing bad happens if the value goes out of these bounds, and it can be a number or Decimal).

  • display(): optional, A function that returns text to be displayed on top of the bar, can use HTML.

  • unlocked(): optional, A function returning a bool to determine if the bar is visible or not. Default is unlocked.

  • baseStyle, fillStyle, borderStyle, textStyle: Optional, Apply CSS to the unfilled portion, filled portion, border, and display text on the bar, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/basic-layer-breakdown.html b/public/gamedevtree/docs/basic-layer-breakdown.html new file mode 100644 index 000000000..7e97cf363 --- /dev/null +++ b/public/gamedevtree/docs/basic-layer-breakdown.html @@ -0,0 +1,86 @@ + + + + + + Basic layer breakdown | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Basic layer breakdown

This is a very minimal layer with minimal features. Most things will require additional features.

js
    p: {
+        startData() { return {                  // startData is a function that returns default data for a layer. 
+            unlocked: false,                    // You can add more variables here to add them to your layer.
+            points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+        }},
+
+        color: "#FE0102",                       // The color for this layer, which affects many elements
+        resource: "prestige points",            // The name of this layer's main prestige resource
+        row: 0,                                 // The row this layer is on (0 is the first row)
+
+        baseResource: "points",                 // The name of the resource your prestige gain is based on
+        baseAmount() {return player.points},    // A function to return the current value of that resource
+
+        requires: new Decimal(200),            // The amount of the base needed to  gain 1 of the prestige currency.
+                                                // Also the amount required to unlock the layer.
+        
+        type: "normal",                         // Determines the formula used for calculating prestige currency.
+        exponent: 0.5,                          // "normal" prestige gain is (currency^exponent)
+
+        gainMult() {                            // Returns your multiplier to your gain of the prestige resource
+            return new Decimal(1)               // Factor in any bonuses multiplying gain here
+        },
+        gainExp() {                             // Returns your exponent to your gain of the prestige resource
+            return new Decimal(1)
+        },
+
+        layerShown() {return true},             // Returns a bool for if this layer's node should be visible in the tree.
+    },
    p: {
+        startData() { return {                  // startData is a function that returns default data for a layer. 
+            unlocked: false,                    // You can add more variables here to add them to your layer.
+            points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+        }},
+
+        color: "#FE0102",                       // The color for this layer, which affects many elements
+        resource: "prestige points",            // The name of this layer's main prestige resource
+        row: 0,                                 // The row this layer is on (0 is the first row)
+
+        baseResource: "points",                 // The name of the resource your prestige gain is based on
+        baseAmount() {return player.points},    // A function to return the current value of that resource
+
+        requires: new Decimal(200),            // The amount of the base needed to  gain 1 of the prestige currency.
+                                                // Also the amount required to unlock the layer.
+        
+        type: "normal",                         // Determines the formula used for calculating prestige currency.
+        exponent: 0.5,                          // "normal" prestige gain is (currency^exponent)
+
+        gainMult() {                            // Returns your multiplier to your gain of the prestige resource
+            return new Decimal(1)               // Factor in any bonuses multiplying gain here
+        },
+        gainExp() {                             // Returns your exponent to your gain of the prestige resource
+            return new Decimal(1)
+        },
+
+        layerShown() {return true},             // Returns a bool for if this layer's node should be visible in the tree.
+    },

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/buyables.html b/public/gamedevtree/docs/buyables.html new file mode 100644 index 000000000..266159602 --- /dev/null +++ b/public/gamedevtree/docs/buyables.html @@ -0,0 +1,58 @@ + + + + + + Buyables | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. If you set a respec function, the player can reset the purchases to get their currency back.

The amount of a buyable owned is a Decimal. You can get or set the amount of a buyable with getBuyableAmt(layer, id) and setBuyableAmt(layer, id, amt). You can use buyableEffect(layer, id) to get the current effects of a buyable.

Buyables should be formatted like this:

js
    buyables: {
+        rows: # of rows
+        cols: # of columns
+        respec() {}, //**optional**, implement it to reset things and give back your currency.
+                     // Having this function makes a respec button appear
+        respecText:// **optional**, text that appears on the respec button
+        showRespecButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        sellOneText, sellAllText:// **optional**, text that appears on the "sell one" and "sell all" buttons respectively (if you are using them)
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    buyables: {
+        rows: # of rows
+        cols: # of columns
+        respec() {}, //**optional**, implement it to reset things and give back your currency.
+                     // Having this function makes a respec button appear
+        respecText:// **optional**, text that appears on the respec button
+        showRespecButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        sellOneText, sellAllText:// **optional**, text that appears on the "sell one" and "sell all" buttons respectively (if you are using them)
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • title: optional, displayed at the top in a larger font It can also be a function that returns updating text.

  • cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th object, but needs to use "current amount" as a default value for x. (x is a Decimal). Can return an object if there are multiple currencies.

  • effect(): optional, A function that calculates and returns the current values of bonuses of this buyable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.

  • unlocked(): optional, A function returning a bool to determine if the buyable is visible or not. Default is unlocked.

  • canAfford(): A function returning a bool to determine if you can buy one of the buyables.

  • buy(): A function that implements buying one of the buyable, including spending the currency.

  • buyMax(): optional, A function that implements buying as many of the buyable as possible.

  • style: Optional, Applies CSS to this buyable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the buyable was stored under, for convenient access. The buyable in the example's id is 11.

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

sellOne/sellAll(): optional, Called when the button is pressed. The standard use would be to decrease/reset the amount of the buyable, And possibly return some currency to the player.

canSellOne/canSellAll(): optional, booleans determining whether or not to show the buttons. If "canSellOne/All" is absent but "sellOne/All" is present, the appropriate button will always show.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/challenges.html b/public/gamedevtree/docs/challenges.html new file mode 100644 index 000000000..b14cf9fdc --- /dev/null +++ b/public/gamedevtree/docs/challenges.html @@ -0,0 +1,48 @@ + + + + + + Challenges | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Challenges

Useful functions for dealing with Challenges and implementing their effects:

  • inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one)
  • hasChallenge(layer, id): determine if the player has completed the challenge
  • challengeCompletions(layer, id): determine how many times the player completed the challenge
  • challEffect(layer, id): Returns the current effects of the challenge, if any

Challenges are stored in the following format:

js
    challenges: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Ouch",
+            etc
+        }
+        etc
+    }
    challenges: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            name: "Ouch",
+            etc
+        }
+        etc
+    }

Each challenge should have an id where the first digit is the row and the second digit is the column. Individual Challenges can have these features:

  • name: Name of the challenge, can be a string or a function. Can use basic HTML.

  • challengeDescription: A description of what makes the challenge a challenge. You will need to implement these elsewhere It can also be a function that returns updating text. Can use basic HTML.

  • rewardDescription: A description of the reward's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • rewardEffect(): optional, A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.

  • rewardDisplay(): optional, A function that returns a display of the current effects of the reward with formatting. Default behavior is to just display the a number appropriately formatted.

  • goal: A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.

  • unlocked(): optional, A function returning a bool to determine if the challenge is visible or not. Default is unlocked.

  • onComplete() - optional, this function will be called when the challenge is completed when previously incomplete.

  • countsAs: optional, If a challenge combines the effects of other challenges in this layer, you can use this. An array of challenge ids. The player is effectively in all of those challenges when in the current one.

By default, challenges use basic Points for the goal. You can change that using these features.

  • currencyDisplayName: optional, the name to display for the currency for the goal

  • currencyInternalName: optional, the internal name for that currency

  • currencyLayer: optional, the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional, if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

  • completionLimit: optional, the amount of times you can complete this challenge. Default is 1 completion.

  • style: Optional, Applies CSS to this challenge, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/clickables.html b/public/gamedevtree/docs/clickables.html new file mode 100644 index 000000000..ec9007441 --- /dev/null +++ b/public/gamedevtree/docs/clickables.html @@ -0,0 +1,56 @@ + + + + + + Clickables | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Clickables

Clickables are any kind of thing that you can click for an effect. They're a more generalized version of Buyables.

DO NOT USE THESE TO MAKE THINGS THAT YOU CLICK REPEATEDLY FOR A BONUS BECAUSE THOSE ARE AWFUL.

There are several differences between the two. One is that a buyable's saved data is its amount as a Decimal, while Clickables store a "state" which can be a number or string, but not Decimal, array, or object). Buyables have a number of extra features which you can see on their page. Clickables also have a smaller default size.

You can get and set a clickable's state with getClickableState(layer, id) and setClickableState(layer, id, state). You can use clickableEffect(layer, id) to get the current effects of a clickable.

Clickables should be formatted like this:

js
    clickables: {
+        rows: # of rows
+        cols: # of columns
+        masterButtonPress() // **optional** If this is present, an additional button will appear above the clickables.
+                            // pressing it will call the function.
+        masterButtonText: "Press me!" // **optional** text to display on the Master Button
+        showMasterButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    clickables: {
+        rows: # of rows
+        cols: # of columns
+        masterButtonPress() // **optional** If this is present, an additional button will appear above the clickables.
+                            // pressing it will call the function.
+        masterButtonText: "Press me!" // **optional** text to display on the Master Button
+        showMasterButton(){} //**optional**, a function determining whether or not to show the button. Defaults to true if absent.
+        11: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • title: optional, displayed at the top in a larger font It can also be a function that returns updating text.

  • effect(): optional, A function that calculates and returns the current values of bonuses of this clickable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the clickable after the title, likely changing based on its state. Can use basic HTML.

  • unlocked(): optional, A function returning a bool to determine if the clickable is visible or not. Default is unlocked.

  • canClick(): A function returning a bool to determine if you can click the clickable.

  • onClick(): A function that implements clicking one of the clickable.

  • style: Optional, Applies CSS to this clickable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: Assigned automagically. It's the "key" which the clickable was stored under, for convenient access. The clickable in the example's id is 11.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/custom-tab-layouts.html b/public/gamedevtree/docs/custom-tab-layouts.html new file mode 100644 index 000000000..37a954966 --- /dev/null +++ b/public/gamedevtree/docs/custom-tab-layouts.html @@ -0,0 +1,48 @@ + + + + + + Custom tab layouts | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Custom tab layouts

Note: If you are using subtabs, tabFormat is used differently, but you still use the same format within each subtabs. See here for more on subtabs

Custom tab layouts can be used to do basically anything in a tab window, especially combined with the "style" layer feature. The tabFormat feature is an array of things, like this:

js
    tabFormat: ["main-display",
+            ["prestige-button", function(){return "Melt your points into "}],
+            "blank",
+            ["display-text",
+                function() {return 'I have ' + format(player.points) + ' pointy points!'},
+                {"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}],
+            "blank",
+            ["toggle", ["c", "beep"]],
+            "milestones", "blank", "blank", "upgrades"]
    tabFormat: ["main-display",
+            ["prestige-button", function(){return "Melt your points into "}],
+            "blank",
+            ["display-text",
+                function() {return 'I have ' + format(player.points) + ' pointy points!'},
+                {"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}],
+            "blank",
+            ["toggle", ["c", "beep"]],
+            "milestones", "blank", "blank", "upgrades"]

It is a list of components, which can be either just a name, or an array with arguments. If it's an array, the first item is the name of the component, the second is the data passed into it, and the third (optional) applies a CSS style to it with a "CSS object", where the keys are CSS attributes.

These are the existing components, but you can create more in v.js:

  • display-text: Displays some text (can use basic HTML). The argument is the text to display. It can also be a function that returns updating text.

  • raw-html: Displays some basic HTML, can also be a function.

  • blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions. If it's a single value (e.g. "20px"), that determines the height. If you have a pair of arguments, the first is width and the second is height.

  • row: Display a list of components horizontally. The argument is an array of components in the tab layout format.

  • column: Display a list of components vertically. The argument is an array of components in the tab layout format. This is useful to display columns within a row.

  • main-display: The text that displays the main currency for the layer and its effects.

  • resource-display: The text that displays the currency that this layer is based on, as well as the best and/or total values for this layer's prestige currency (if they are put in startData for this layer)

  • prestige-button: The argument is a string that the prestige button should say before the amount of currency you will gain. It can also be a function that returns updating text.

  • upgrades, milestones, challs, achievements: Display the upgrades, milestones, and challenges for a layer, as appropriate.

  • buyables, clickables: Display all of the buyables/clickables for this layer, as appropriate. The argument optional, and is the size of the boxes in pixels.

  • microtabs: Display a set of subtabs for an area. The argument is the name of the set of microtabs in the "microtabs" feature.

  • bar: Display a bar. The argument is the id of the bar to display.

  • infobox: Display an infobox. The argument is the id of the infobox to display.

  • toggle: A toggle button that toggles a bool value. The data is a pair that identifies what bool to toggle, [layer, id]

The rest of the components are sub-components. They can be used just like other components, but are typically part of another component.

  • upgrade, milestone, chall, buyable, clickable, achievement: An individual upgrade, challenge, etc. The argument is the id. This can be used if you want to have upgrades split up across multiple subtabs, for example.

  • respec-button, master-button: The respec and master buttons for buyables and clickables, respectively.

  • sell-one, sell-all: The "sell one" and "sell all" for buyables, respectively. The argument is the id of the buyable.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/getting-started.html b/public/gamedevtree/docs/getting-started.html new file mode 100644 index 000000000..d5209368a --- /dev/null +++ b/public/gamedevtree/docs/getting-started.html @@ -0,0 +1,32 @@ + + + + + + Getting started | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Getting started

Welcome to The Modding Tree!

Using the Modding Tree, at its simplest level, just requires getting a copy of it onto your computer. However, if you do it the right way, it will help in many ways.

Don't let the word "Github" scare you away. It's actually much easier to use than most people think, especially because most people use it the hard way. The key is Github Desktop, which lets you do everything you need to, without even touching the command line.

The benefits of using Github:

  • It makes it much, much easier to update The Modding Tree.
  • You can share your work without any extra effort using githack, or with a bit more effort, set up a github.io site.
  • It lets you undo changes to your code, and to have multiple versions of it.
  • It lets you collaborate with other people, if you want to.

Getting set up with Github and The Modding Tree:

  1. Install Github Desktop and Visual Studio Code.

  2. Make a Github account. You can handle this on your own.

  3. Log in on your browser, and go back to The Modding Tree page. At the top right, there should be a button that says "fork". Click on it, and then on your username. You now have your own fork, or copy, of The Modding Tree.

  4. Open Github Desktop and log in. Ignore everything else and choose "clone a repository". A "repository" is basically a "Github project", like The Modding Tree. "Cloning" is downloading a copy of the repository to your computer.

  5. Look for The Modding Tree in the list of repositiories (it should be the only one) and click "clone".

  6. Select that you're using it for your own purposes, and click continue. It will download the files and handle everything.

Using your repository

  1. Click on "show in finder" to the right, and then open index.html. This will let you view and test your project!

  2. To edit your project, click "open in VSCode" in Github Desktop.

  3. Open mod.js in VSCode, and look at the top part where it says "modInfo". On the lines below that, change the mod's name to whatever you want, and change the id as well. (It can be any string value, and it's used to determine where the savefile is. Make it something that's probably unique, and don't change it again later.)

  4. Save game.js, and then reload index.html. The title on the tab, as well as on the info page, will now be the new ones!

  5. Go back to Github Desktop. It's time to save your changes into the git system by making a "commit".

  6. At the bottom right corner, add a summary of your changes, and then click "commit to master".

  7. Finally, at the top middle, click "push origin" to push your changes out onto the online repository.

  8. You can view your project on line, or share it with others, by going to https://raw.githack.com/[YOUR-GITHUB-USERNAME]/The-Modding-Tree/master/index.html

And now, you have successfully used Github! You can look at the documentation to see how The Modding Tree's system works and to make your mod a reality.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/infoboxes.html b/public/gamedevtree/docs/infoboxes.html new file mode 100644 index 000000000..60d7eb80c --- /dev/null +++ b/public/gamedevtree/docs/infoboxes.html @@ -0,0 +1,44 @@ + + + + + + Infoboxes | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Infoboxes

Infoboxes are good for displaying "lore", or story elements, as well as for explaining complicated things.

In the default tab layout, the first infobox will be displayed at the very top of the tab.

Infoboxes are defined like other Big Features:

js
    infoboxes: {
+        infobox: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }
    infoboxes: {
+        infobox: {
+            display() {return "Blah"},
+            etc
+        }
+        etc
+    }

Features:

  • title: The text displayed above the main box. Can be a function to be dynamic, and can use basic HTML.

  • body: The text displayed inside the box. Can be a function to be dynamic, and can use basic HTML.

  • style, titleStyle, bodyStyle: Optional, Apply CSS to the infobox, or to the title button or body of the infobox, in the form of an object where the keys are CSS attributes, and the values are the Values for those attributes (both as strings).

  • unlocked(): optional, A function returning a bool to determine if the infobox is visible or not. Default is unlocked.

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/layer-features.html b/public/gamedevtree/docs/layer-features.html new file mode 100644 index 000000000..a564f6a18 --- /dev/null +++ b/public/gamedevtree/docs/layer-features.html @@ -0,0 +1,54 @@ + + + + + + Layer Features | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Layer Features

This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.

You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.

Key:

  • No label: This is required and the game will crash if it isn't included.
  • sometimes required: This is may be required, depending on other things in the layer.
  • optional: You can leave this out if you don't intend to use that feature for the layer.

Layer Definition features

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar to access the save value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.

  • name: Optional, used in reset confirmations (and maybe other places). If absent, it just uses the layer's id.

  • startData(): A function to return the default save data for this layer. Add any variables you have to it. Any nonstandard Decimal variables need to be added to convertToDecimal as well. Standard values: Required: unlocked: a bool determining if this layer is unlocked or not points: a Decimal, the main currency for the layer Optional: total: A Decimal, tracks total amount of main prestige currency best: A Decimal, tracks highest amount of main prestige currency unlockOrder: used to keep track of relevant layers unlocked before this one.

  • color: A color associated with this layer, used in many places. (A string in hex format with a #)

  • row: The row of the layer, starting at 0. This affects where the node appears on the tree, and which resets affect the layer.

     Using "side" instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements
    + and statistics). Side layers are not affected by resets unless you add a doReset to them.
    +
  • resource: Name of the main currency you gain by resetting on this layer.

  • effect(): optional, A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. You will also have to implement the effect where it is applied.

  • effectDescription: optional, A function that returns a description of this effect. If the text stays constant, it can just be a string.

  • layerShown(): A function returning a bool which determines if this layer's node should be visible on the tree. It can also return "ghost", which will hide the layer, but its node will still take up space in the tree.

  • hotkeys: optional, An array containing information on any hotkeys associated with this layer:

    js
    hotkeys: [
    +    {key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" if ctrl is.
    +    desc: "p: reset your points for prestige points", // The description of the hotkey used in the How To Play
    +    onPress(){if (player.p.unlocked) doReset("p")}}, // This function is called when the hotkey is pressed.
    +],
    hotkeys: [
    +    {key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" if ctrl is.
    +    desc: "p: reset your points for prestige points", // The description of the hotkey used in the How To Play
    +    onPress(){if (player.p.unlocked) doReset("p")}}, // This function is called when the hotkey is pressed.
    +],
  • style: optional, a "CSS object" where the keys are CSS attributes ,containing any CSS that should affect this layer's entire tab.

  • tabFormat: optional, use this if you want to add extra things to your tab or change the layout. See here for more info.

  • midsection: optional, an alternative to tabFormat, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)

Big features (all optional)

Prestige formula features

  • type: optional, Determines which prestige formula you use. Defaults to "none". "normal": The amount of currency you gain is independent of its current amount (like Prestige). formula before bonuses is based on baseResource^exponent "static": The cost is dependent on your total after reset. formula before bonuses is based on base^(x^exponent) "custom": You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom) "none": This layer does not prestige, and therefore does not need any of the other features in this section.

  • baseResource: The name of the resource that determines how much of the main currency you gain on reset.

  • baseAmount(): A function that gets the current value of the base resource.

  • requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).

  • exponent: Used as described above.

  • base: sometimes required, required for "static" layers, used as described above. If absent, defaults to 2. Must be greater than 1.

  • roundUpCost: optional, a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a "static" currency.)

  • canBuyMax(): sometimes required, required for static layers, function used to determine if buying max is permitted.

  • gainMult(), gainExp(): optional, Functions that calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in any bonuses here.

  • onPrestige(gain): optional, A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.

  • resetDesc: optional, use this to replace "Reset for " on the Prestige button with something else.

  • prestigeButtonText(): Sometimes required, Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.

Tree/node features

  • symbol: optional, the text that appears on this layer's node. Default is the layer id with the first letter capitalized

  • position: optional, Determines the horizontal position of the layer in its row. By default, it uses the layer id, and layers are sorted in alphabetical order.

  • branches: optional, an array of layer ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors)

  • nodeStyle: optional, a CSS object, where the keys are CSS attributes, which styles this layer's node on the tree

  • tooltip() / tooltipLocked(): optional Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree.

Other features

  • doReset(resettingLayer): optional, is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. (doReset is always called for side layers, but for these the default behavior is to reset nothing.)

              If you want to keep things, determine what to keep based on the resettingLayer, milestones, and such, then call
    +          resetLayerData(layer, keep), where layer is this layer, and keep is an array of the names of things to keep.
    +          It can include things like "points", "best", "total" (for this layer's prestige currency), "upgrades", 
    +          any unique variables like "generatorPower", etc.
    +          If you want to only keep specific upgrades or something like that, save them in a separate variable, then
    +          call layerDataReset, and then set player[layer].upgrades to the saved upgrades.
    +
  • update(diff): optional, this function is called every game tick. Use it for any passive resource production or time-based things. diff is the time since the last tick. Suggestion: use addPoints(layer, gain) when generating points to automatically update the best and total amounts.

  • automate(): optional, this function is called every game tick, after production. Use it to activate any autobuyers or auto-resets or similar on this layer, if appropriate.

  • resetsNothing: optional, returns true if this layer shouldn't trigger any resets when you prestige.

  • increaseUnlockOrder: optional, an array of layer ids. When this layer is unlocked for the first time, the unlockOrder value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.

  • shouldNotify: optional, a function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.

  • componentStyles: optional, An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:

js
        componentStyles: {
+            "challenge"() {return {'height': '200px'}},
+            "prestige-button"() {return {'color': '#AA66AA'}},
+        },
        componentStyles: {
+            "challenge"() {return {'height': '200px'}},
+            "prestige-button"() {return {'color': '#AA66AA'}},
+        },

Custom Prestige type

  • getResetGain(): For custom prestige type, Returns how many points you should get if you reset now. You can call getResetGain(this.layer, useType = "static") or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer.)

  • getNextAt(canMax=false): For custom prestige type, Returns how many of the base currency you need to get to the next point. canMax is an optional variable used with Static-ish layers to differentiate between if it's looking for the first point you can reset at, or the requirement for any gain at all. (Supporting both is good). You can also call getNextAt(this.layer, canMax=false, useType = "static") or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer.)

  • canReset(): For custom prestige type, return true only if you have the resources required to do a prestige here.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/main-mod-info.html b/public/gamedevtree/docs/main-mod-info.html new file mode 100644 index 000000000..7f754fd99 --- /dev/null +++ b/public/gamedevtree/docs/main-mod-info.html @@ -0,0 +1,40 @@ + + + + + + mod.js | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

mod.js

All of the code and data that you're likely to edit is here in mod.js! Everything in mod.js will not be altered by updates, besides the addition of new things.

Here's a breakdown of what's in it:

  • modInfo is where most of the basic configuration for the mod is. It contains:

    • name: The name of your mod. (a string)
    • id: The id for your mod, a unique string that is used to determine savefile location. Setting it is important!
    • author: The name of the author, displayed in the info tab.
    • pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)
    • discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it. "discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.
    • changelogLink: You can use this to set a link to a page where your changelog for the game is displayed.
    • offlineLimit: The maximum amount of offline time that the player can accumulate, in hours. Any extra time is lost. (a number) This is useful because most of these mods are fast-paced enough that too much offline time ruins the balance, such as the time in between updates. That is why I suggest developers disable offline time on their own savefile.
    • initialStartPoints: A Decimal for the amount of points a new player should start with.
  • VERSION is used to describe the current version of your mod. It contains: num: The mod's version number, displayed at the top right of the tree tab. name: The version's name, displayed alongside the number in the info tab.

  • doNotCallTheseFunctionsEveryTick is very important. TMT calls every function anywhere in "layers" every tick to store the result, unless specifically told not to. Functions that have are used to do an action need to be identified. "Official" functions (those in the documentation) are all fine, but if you make any new ones, add their names to this array.

js
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
  • getStartPoints(): A function to determine the amount of points the player starts with after a reset. (returns a Decimal value)

  • canGenPoints(): A function returning a boolean for if points should be generated. Use this if you want an upgrade to unlock generating points.

  • getPointGen(): A function that calculates your points per second. Anything that affects your point gain should go into the calculation here.

  • addedPlayerData(): A function that returns any non-layer-related data that you want to be added to the save data and "player" object.

js
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
  • displayThings: An array of functions used to display extra things at the top of the tree tab. Each function returns a string, which is a line to display (with basic HTML support). If a function returns nothing, nothing is displayed (and it doesn't take up a line).

  • isEndgame(): A function to determine if the player has reached the end of the game, at which point the "you win!" screen appears.

Less important things beyond this point!

  • maxTickLength(): Returns the maximum tick length, in milliseconds. Only really useful if you have something that reduces over time, which long ticks mess up (usually a challenge).

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/milestones.html b/public/gamedevtree/docs/milestones.html new file mode 100644 index 000000000..c94ebad94 --- /dev/null +++ b/public/gamedevtree/docs/milestones.html @@ -0,0 +1,43 @@ + + + + + + Milestones | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Milestones

Milestones are awarded to the player when they meet a certain goal, and give some benefit. Milestones should be formatted like this:

js
    milestones: {
+        0: {
+            requirementDesc: "123 waffles",
+        }
+        etc
+    }
    milestones: {
+        0: {
+            requirementDesc: "123 waffles",
+        }
+        etc
+    }

You can use hasMilestone(layer, id) to determine if the player has a given milestone

Milestone features:

  • requirementDesc: A string describing the requirement for unlocking this milestone. Suggestion: Use a "total". It can also be a function that returns updating text. Can use basic HTML.

  • effectDesc: A string describing the reward for having the milestone. You will have to implement the reward elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the milestone should be awarded.

  • toggles: optional, Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

         **Tip:** Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.
    +
  • style: Optional, Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • unlocked(): Optional A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the milestone was stored under, for convenient access. The milestone in the example's id is 0.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/subtabs-and-microtabs.html b/public/gamedevtree/docs/subtabs-and-microtabs.html new file mode 100644 index 000000000..dde878335 --- /dev/null +++ b/public/gamedevtree/docs/subtabs-and-microtabs.html @@ -0,0 +1,76 @@ + + + + + + Subtabs and Microtabs | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Subtabs and Microtabs

Subtabs are separate sections of a tab that you can view by selecting one at the top of the tab. Microtabs are smaller areas that function in much the same way.

Subtabs are defined by using the tab format like this, where each element of tabFormat is given the name of that subtab:

js
    tabFormat: {
+        "Main tab": {
+            *subtab features*
+        },
+        "Other tab": {
+            *subtab features*
+        },
+
+        etc
+    },
    tabFormat: {
+        "Main tab": {
+            *subtab features*
+        },
+        "Other tab": {
+            *subtab features*
+        },
+
+        etc
+    },

Microtabs are defined similarly, and use the same features, but are defined in the "microtabs" feature. Each entry is a group of tabs which will appear in a microtabs component. The first set, "stuff", has 2 tabs, and the second, "otherStuff", has none.

js
    microtabs: {
+        stuff: {
+            first: {
+            *subtab features*
+            },
+            second: {
+            *subtab features*
+            },
+        },
+
+        otherStuff: {
+            // There could be another set of microtabs here
+        }
+    },
    microtabs: {
+        stuff: {
+            first: {
+            *subtab features*
+            },
+            second: {
+            *subtab features*
+            },
+        },
+
+        otherStuff: {
+            // There could be another set of microtabs here
+        }
+    },

Normal subtabs and microtab subtabs both use the same features:

Features:

  • content: The tab layout code for the subtab, in the tab layout format

  • style: Optional, Applies CSS to the whole subtab when switched to, in the form of an "CSS Object", where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • buttonStyle: Optional, A CSS object, which affects the appearance of the button for that subtab.

  • unlocked(): Optional, a function to determine if the button for this subtab should be visible. By default, a subtab is always unlocked. (You can't use the "this" keyword in this function.)

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/updating-tmt.html b/public/gamedevtree/docs/updating-tmt.html new file mode 100644 index 000000000..e1c5456b7 --- /dev/null +++ b/public/gamedevtree/docs/updating-tmt.html @@ -0,0 +1,32 @@ + + + + + + Updating The Modding Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Updating The Modding Tree

This tutorial assumes that you have used the Getting Started Tutorial, and are using Github Desktop and VSCode for your mod.

Here's what you have to do when there's a TMT update:

  1. Look at the changelog. It will warn you if the update will break anything or require any changes. Decide if you want to try to update.

  2. Open Github Desktop, and at the top middle, click "fetch origin". This will make Github Desktop get information about the update.

  3. Click where it says "current branch: master" at the top middle, and at the bottom of the thing that appears, click "choose a branch to merge into master.

  4. Select upstream/master. It will likely say there are conflicts, but you have tools to resolve them. Click "Merge upstream/master into master".

  5. A conflict happens when the things you're trying to merge have both made changes in the same place. Click "open in Visual Studio Code" next to the first file.

  6. Scroll down through the file, and look for the parts highlighted in red and green. One of these is your code, and the other is some code that will be modified by the update. Do your best to try to edit things to keep the updated changes, but keep your content.

  7. Continue to do this for all remaining challenges.

  8. Do any other changes required by the update, run the game, fix issues, etc.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/gamedevtree/docs/upgrades.html b/public/gamedevtree/docs/upgrades.html new file mode 100644 index 000000000..e8eb6de50 --- /dev/null +++ b/public/gamedevtree/docs/upgrades.html @@ -0,0 +1,48 @@ + + + + + + Upgrades | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Upgrades

Useful functions for dealing with Upgrades and implementing their effects:

  • hasUpgrade(layer, id): determine if the player has the upgrade
  • upgradeEffect(layer, id): Returns the current effects of the upgrade, if any
  • buyUpgrade(layer, id): Buys an upgrade directly (if affordable)

Hint: Basic point gain is calculated in mod.js's "getPointGen".

Upgrades are stored in the following format:

js
    upgrades: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            description: "Blah",
+            more features
+        }
+        etc
+    }
    upgrades: {
+        rows: # of rows
+        cols: # of columns
+        11: {
+            description: "Blah",
+            more features
+        }
+        etc
+    }

Each upgrade should have an id where the first digit is the row and the second digit is the column. Individual upgrades can have these features:

  • title: optional, displayed at the top in a larger font It can also be a function that returns updating text. Can use basic HTML.

  • description: A description of the upgrade's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional, A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.

  • effectDisplay(): optional, A function that returns a display of the current effects of the upgrade with formatting. Default behavior is to just display the a number appropriately formatted. Can use basic HTML.

  • cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.

  • unlocked(): optional, A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.

  • onPurchase() - optional, this function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".

By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):

  • currencyDisplayName: optional, the name to display for the currency for the upgrade

  • currencyInternalName: optional, the internal name for that currency

  • currencyLayer: optional, the internal name of the layer that currency is stored in. If it's not in a layer (like Points), omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional, if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

  • style: Optional, Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)

  • layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: Assigned automagically. It's the "key" which the upgrade was stored under, for convenient access. The upgrade in the example's id is 11.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/Old Things/2.0-format-changes.html b/public/kronos/Old Things/2.0-format-changes.html new file mode 100644 index 000000000..1e0fa4aff --- /dev/null +++ b/public/kronos/Old Things/2.0-format-changes.html @@ -0,0 +1,32 @@ + + + + + + 2.0 format changes | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

2.0 format changes

  • Temp format is changed from temp.something[layer] to temp[layer].something, for consistency
  • Challenges are now saved as an object with the amount of completions in each spot. (This will break saves.)
  • effectDisplay in Challenges and Upgrades no longer takes an argument, and neither does effect for Buyables
  • Buyable cost can take an argument for amount of buyables, but it needs to function if no argument is supplied (it should do the cost for the next purchase).
  • Generation of Points now happens in the main game loop (not in a layer update function), enabled by canGenPoints in game.js.
  • Changed fullLayerReset to layerDataReset, which takes an array of names of values to keep

In addition, many names were changed, mostly expanding abbreviations:

All instances of:

  • chall -> challenge
  • unl -> unlocked
  • upg -> upgrade (besides CSS)
  • amt -> amount
  • desc -> description
  • resCeil -> roundUpCost
  • order -> unlockOrder
  • incr_order -> increaseUnlockOrder

Challenges:

  • desc -> challengeDescription
  • reward -> rewardDescription
  • effect -> rewardEffect
  • effectDisplay -> rewardDisplay
  • active -> challengeActive

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/README.html b/public/kronos/README.html new file mode 100644 index 000000000..5332b74cd --- /dev/null +++ b/public/kronos/README.html @@ -0,0 +1,32 @@ + + + + + + Kronos | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Kronos

Play here.

Updating the website:

  • git submodule update --remote
  • git add -A
  • git commit -m "Updated kronos"
  • git push

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/changelog.html b/public/kronos/changelog.html new file mode 100644 index 000000000..302115cfb --- /dev/null +++ b/public/kronos/changelog.html @@ -0,0 +1,32 @@ + + + + + + The Modding Tree changelog: | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The Modding Tree changelog:

v2.5.9.2 - 5/19/21

  • Fixed many issues with things not updating.

v2.5.9.1 - 5/18/21

  • Made text inputs never give NaNs.

v2.5.9 - 5/18/21

  • Fixed issue when using text inputs for Numbers.
  • Added particle color feature.
  • Particle speed and dir are updated as it moves.
  • Added setSpeed and setDir for particles.
  • Added more trig functions.

v2.5.8 - 5/17/21

  • Added makeShinies, which creates a stationary particle in a random spot.
  • Bars will visually update more quickly.
  • Fixed a major particle-related issue.
  • Fixed autoUpgrade.
  • Fixed a minor visual issue with tree nodes.

v2.5.7 - 5/15/21

  • Added a particle system! Not only can it be used for visual effects, but particles can interact with the mouse. They could be used to create golden cookies or collectables, for example.
  • Added marked feature to buyables, clickables, and challenges. By default, stars multi-completion challenges when maxed.
  • Added 'deactivated' feature to layers, which disables many features.
  • Improved number formatting slightly.

v2.5.6 - 5/14/21

  • You can now use non-numeric ids for upgrades, buyables, etc.
  • Fixed an exploit that let you buy an extra buyable.
  • Moved basic getter/setter functions to easyAccess.js.

v2.5.5.2 - 5/12/21

  • Fixed a major issue with buyables.
  • Fixed a variety of tabFormat-related issues.
  • Fixed commas appearing in decimal places (thanks to pg132!)

v2.5.5.1 - 5/12/21

  • Fixed clickables.

v2.5.5 - 5/12/21

  • Added grids! They are a grid of buttons which behave the same, but have their own data. Good for inventory grids, map tiles, and more!
  • Added "marked" feature to add a mark to a node. Can be an image instead of a star. (Originally by Jacorb)
  • Added "layer-proxy" component that lets you use components from another layer.
  • Added the ability to display non-whole numbers in main-display.

v2.5.4 - 5/10/21

  • Added a setting to always use single-tab mode.
  • Added directMult, which multiplies prestige gain after exponents and softcaps. It actually multiplies gain for static layers.
  • Added onEnter and onExit for challenges.
  • Improved displaying numbers between 0.0001 and 0.1.
  • Added documentation on how gainMult/Exp work for static layers.
  • Fixed a visual issue on mobile, thanks to thepaperpilot.
  • Improved documentation in general.

v2.5.3 - 5/8/21

  • Improved performance of tab formats and bars.
  • Respec confirmation settings are now kept on resets.
  • Improved compatibility with older browsers.
  • Fixed missing pixel on vertical bars.

v2.5.2.1 - 5/7/21

  • Fixed microtabs making layers highlight incorrectly.

v2.5.2 - 5/7/21

  • Added glowColor for subtabs.
  • Improved the display for extremely small numbers.
  • Fixed issues in the buyable docs.

v2.5.1 - 5/7/21

  • Fixed dynamic things in tabFormat not updating.

v2.5: Dreams Really Do Come True - 5/7/21

  • Optimizations, hopefully a significant amount.
  • Added OOM/s point gen display at high values (thanks to Ducdat!)
  • Only one tab will display if the window is not wide enough (also thanks to Ducdat!)
  • Holding down a buyable's button now buys it continuously.
  • New milestone setting will also show the most recently unlocked milestone. (Also renamed all settings to be clearer)
  • Added an onHold feature for clickables.
  • Layer nodes will be highlighted even if the player is on the same tab.
  • Added customizable node glowColor.
  • Added buyable purchaseLimit.
  • Amount is automatically supplied to buyable cost and effect functions.
  • Locked (not yet visible) milestones no longer take up space. Also fixed hidden milestones taking a tiny bit of space.
  • Re-centered respec buttons.
  • Force-displayed tooltips are not hidden by resets.
  • Added formatting support for very small numbers. Disabled in most places by default because rounding errors might cause issues. Access it with formatSmall, or enable it globally by adding "allowSmall: true" to modInfo.

v2.4.1 - 4/29/21

  • A number of minor fixes, many thanks to thepaperpilot.
  • The respec confirmation checkbox is now part of the respec-button component. (This also fixes the checkbox appearing when there is no respec button)
  • Added a few undocumented changes to the 2.4 changelog (the two at the bottom)

v2.4: Rationalized Edition - 4/29/21

  • Completely reworked tooltips. Shift-click a node to force its tooltip to stay displayed. (And hopefully finally fixed flickering!)

  • Added text-input and slider components.

  • Added the ability to toggle respec confirmations.

  • Added custom respec confirmation messages.

  • The red layer highlight will not appear before a layer is unlocked.

  • Added unlocking hotkeys.

  • You no longer need to supply 'rows' and 'cols' for any Big Features.

  • Node symbols can use HTML.

  • Added documentation for the respec button.

  • Added prestigeNotify to subtabs, and prestigeNotify in subtabs also highlights the layer node.

  • The version number no longer contains special characters or irrational numbers.

  • Added ctrlDown and shiftDown variables.

  • Tooltips now use HTML (this means you need to replace any newlines with
    )

v2.π.1 - 4/7/21

  • Fixed formatting for some larger numbers.
  • Upgrades will expand if there is too much text to display.
  • Fixed styling challenges.
  • No longer attempts to display a base currency when there is none.

v2.π: Incrementally Updated - 2/5/21

  • Performance improvements.
  • Fixed tooltips overlapping with the top display.
  • Clicking a popup dismisses it immediately.
  • Added support for bulk challenge completions.
  • "Best" is updated automatically.
  • Fixed keeping Decimal values on reset.
  • Code reorganization and style improvements by fudo.

v2.3.5 - 12/21/20

  • Added resetTime, which tracks the time since a layer prestiged or was reset.
  • A layer node will be highlighted red if one of its subtabs is highlighted red.
  • Fixed issues with keeping challenges, buyables, and clickables on reset.
  • Improved the unlocking of custom layers.
  • Other minor fixes.

v2.3.4 - 12/16/20

  • Added a node image feature.
  • Resource display now always shows the amount of the currency the layer's gain is based on.
  • Added spacing between tree nodes.
  • Another attempt to fix tooltip flickering.

v2.3.3 - 12/13/20

  • Fixed the first node in a row always taking up space.
  • layerShown is now optional.
  • All prestige types can now use features for custom prestige types.

v2.3.2 - 12/13/20

  • Fixed achievement/milestone popups.

v2.3.1 - 12/12/20

  • Another attempt to fix flickering tooltips.
  • The "this" keyword should work everywhere except tabFormat arrays (although I may have missed some things).
  • Fixed tree branches not updating when scrolling on the right-side tab.
  • Fixed a spacing issue when a node's symbol is ""
  • Removed some old, unneeded files.

v2.3: Cooler and Newer Edition - 12/10/20

  • Added achievement/milestone popups (thank you to Jacorb for this contribution!)
  • The changelog tab is back, and can be set in mod.js.
  • Layer nodes and respec buttons will not be clicked by pressing "enter".
  • Possible fix for flickering tooltips and strange transitions.
  • The victory screen text is configurable.
  • Added image and textStyle features to achievements.
  • Added an argument to use specific rows in an "upgrades" component.
  • Fixed the comma appearing in the main display when there was no effectDescription
  • Added the ability to easily make a tab that is a collection of layers in subtabs.
  • Improved spacing for embedding layers with subtabs into subtabs.

v2.2.8 - 12/03/20

  • Double-clicking a layer node brings you to the main subtab for that layer.
  • Attempted to fix challenges visually updating a different way.
  • Added a softcap function for use in formulas.
  • Added displayRow feature, which lets layers be shown somewhere separate from where they are in the reset order (e.g. side layers)
  • Fixed autoupgrade issue.

v2.2.7 - 11/30/20

  • Added autoUpgrade feature.
  • resource-display now shows resource gain per second if passiveGain is active.
  • Fixed formatting issues on some large numbers.
  • Better support for using classed objects in player and in layers/tmp.
  • Made hard resetting more effective.
  • Removed Herobrine from getStartClickables.

v2.2.6 - 11/30/20

  • Added goalDescription for challenges and made the new "canComplete" system the standard.
  • Another attempt to fix challenges not visually updating.
  • Fixed side layers not appearing.
  • Fixed getStartClickables again.

v2.2.5 - 11/29/20

  • Added features for overriding the displays and costs/goals of upgrades and challenges to make them fully custom.
  • best, total, and unlocked are always automatically added to layerData (but best and total will only display if you add them yourself).
  • Fixed getStartClickables.

v2.2.4 - 11/28/20

  • Added softcap and softcapPower features (for Normal layers)
  • Offline time limit and default max tick length were fixed (previously the limits were 1000x too large)
  • Added fixOldSaves.
  • You can use HTML in main-display.
  • Fixed a number of minor oddities.

v2.2.3 - 11/28/20

  • Layers will be highlighted if you can finish a challenge.
  • The "can complete challenge" color now overrides the "already completed" color.
  • Button nodes now work as side "layers".
  • Setting a tooltip to "" hides it entirely.

v2.2.2 - 11/22/20

  • Fixed right half of the screen being unclickable in some circumstances.
  • Fixed tree branches being offset.
  • Fix to lastSafeTab.

v2.2.1 - 11/7/20

  • Added a small highlight to layers you can meaningfully prestige on.
  • Added passiveGeneration and autoPrestige features to standardize prestige automation. (The old ways still work, but the new ones work better with other things)
  • Improved milestones visually a bit.
  • "best" and "total" are now only displayed if present in startData.
  • Fixed issues with things not updating visually. (Thank you to to Jacorb!)
  • Side layers and button nodes can now be highlighted.
  • Updated docs on the new tree-related features.

v2.2: Uprooted - 11/7/20

  • You can now embed a layer inside of a subtab or microtab!
  • Added support for hiding or reformatting the tree tab
  • Added non-layer button nodes
  • Added shouldNotify to subtab/microtab buttons. (You can make them highlighted)
  • Added commas to large exponents.
  • Upgrades now only show "currently" if they have an effectDisplay (so not for constant effects).
  • Achievements are part of the default tab format.
  • NaN is now handled more intelligently.
  • Renamed files, and moved less relevant ones to another folder.
  • The "hide completed challenges" setting now only hides challenges at max completions.
  • Thank you to thepaperpilot for fixing errors in docs and improving the infobox appearance!
  • Many other minor fixes.

v2.1.4 - 10/25/20

  • Added an infobox component. Thank you to thepaperpilot for this contribution!
  • Layer type is now optional, and defaults to "none".
  • Improved the look of bars and tab buttons.
  • Improved spacing between layer nodes (also thanks to thepaperpilot!)
  • Fixed the "blank" component breaking if only specifying the height.
  • Fixed some numbers not displaying with enough digits.
  • Made a few more things able to be functions.
  • A few other minor fixes.

v2.1.3.1 - 10/21/20

  • Fixed the update function.

v2.1.3 - 10/21/20

  • gainMult and gainExp are now optional.
  • Layer unlocking is now kept on reset.
  • Game should start up faster.
  • Layer updates now have a determined order and starts with earlier-rowed layers.
  • Automation now has a determined order and starts with later-rowed layers.
  • Fixed issues with resetting clickables and challenges.
  • Commas should no longer appear in the decimal places of a number.
  • Fixed potential issue in displaying the tree.

v2.1.2 - 10/19/20

  • Added buyUpgrade function (buyUpg still works though)
  • Added author name to modInfo.
  • Fix to crash caused when the name of a subtab or microtab is changed.
  • Fixes to outdated information in docs.
  • Improvements to Discord links.
  • Thank you to thepaperpilot for contributing to this update!

v2.1.1 - 10/17/20

  • Added resource-display component, which displays the base currency for the prestige layer, as well as the best and/or total of this layer's prestige currency.
  • Fixed the value for the base currency not updating in resource-display.

v2.1: We should have thought of this sooner! - 10/17/20

  • Moved most of the code users will want to edit to mod.js, added documentation for it.
    • Specifically, modInfo, VERSION, canGenPoints, getPointGen, and maxTickLength
  • Added getStartPoints()
  • Added the ability to store non-layer-related data
  • Added the ability to display more things at the top of the tree tab below points.
  • Made the endgame condition customizable
  • Added "sell one" and "sell all" buttons for buyables.
  • Moved the old "game" to demo.js, and replaced it with a minimal game that won't cause issues when edited.
  • Fixed issues with version number
  • Fixed number formatting issue making things like "10e9" appear.

v2.0.5 - 10/16/20

  • Made more features (including prestige parameters) able to be dynamic.
  • Layer nodes can be hidden but still take up space with "ghost" visibility
  • Added clickableEffect for real.
  • Fixed some visual issues with bars.
  • A few other minor tweaks and improvements.

v2.0.4 - 10/16/20

  • Fixed HTML on buttons interfering with clicking on them.

v2.0.3 - 10/16/20

  • Fixed hotkeys not displaying in info.
  • Fixed the game supressing all external hotkeys.
  • You can use more things as currencies for upgrade costs and challenge goals using currencyLocation.
  • Added maxTickLength, which can be used to prevent offline time or tab-switching from breaking time-limit based mechanics.
  • Made buyable respec buttons and clickable "master" buttons their own components, and gave them a hide/show feature.
  • Added a general "tooltip" feature for achievements.

v2.0.2 - 10/15/20

  • Branches are now dynamic (they can be functions).
  • Fixed a crash related to offline time.
  • Fixed links being too wide.

v2.0.1 - 10/15/20

  • Fixed side layers appearing multiple times.

v2.0: The Pinnacle of Achievement Mountain - 10/15/20

  • Added progress bars, which are highly customizable and can be horizontal or vertical!
  • Added "side layers", displayed smaller and off to the side, and don't get reset by default. They can be used for global achievements and statistics. Speaking of which...
  • Added achievements!
  • Added clickables, a more generalized variant of buyables.
  • Almost every value in layer data can be either a function or a constant value!
  • Added support for multiple completions of challenges.
  • Added "none" prestige type, which removes the need for any other prestige-related features.
  • The points display and other gui elements stay at the top of the screen when the tree scrolls.
  • Added getter/setter functions for the amounts and effects of most Big Features
  • Moved modInfo to game.js, added a spot in modInfo for a Discord link, changelog link. Also added a separate mod version from the TMT version in VERSION.
  • Tree structure is based on layer data, no index.html editing is needed.
  • Tmp does not need to be manually updated.
  • You don't have to have the same amount of upgrades in every row (and challs and buyables)
  • "unlocked" is optional for all Big Components (defaults to true).
  • All displays will update correctly.
  • Changelog is no longer in index.html at all.
  • Generation of Points now happens in the main game loop
  • Changed the reset functions to make keeping things easier
  • Renamed many things to increase readability (see the list in the link below)
  • Improved documentation based on feedback

v1.3.5:

  • Completely automated convertToDecimal, now you never have to worry about it again.
  • Branches can be defined without a color id. But they can also use hex values for color ids!
  • Created a tutorial for getting started with TMT and Github.
  • Page title is now automatically taken from mod name.

v1.3.4 - 10/8/20

  • Added "midsection" feature to add things to a tab's layout while still keeping the standard layout.
  • Fix for being able to buy more buyables than you should.

v1.3.3 - 10/7/20

  • Fix for the "order of operations" issue in temp.

v1.3.1 - 10/7/20

  • Added custom CSS and tooltips for Layer Nodes.
  • Added custom CSS for upgrades, buyables, milestones, and challenges, both individually and layer-wide.
  • You can now use HTML in most display text!
  • You can now make milestones unlockable and not display immediately.
  • Fixed importing saves, and issue with upgrades not appearing, and probably more.
  • Optional "name" layer feature, used in confirmation messages.

v1.3: Tabception... ception! - 10/7/20

  • Added subtabs! And also a Micro-tab component to let you make smaller subtab-esque areas anywhere.
  • Added a "custom" prestige formula type, and a number of features to support it.
  • Added points/sec display (can be disabled).
  • Added h-line, v-line and image-display components, plus components for individual upgrades, challenges, and milestones.
  • Added upgEffect, buyableEffect, and challEffect functions.
  • Added "hide completed challenges" setting.
  • Moved old changelogs to a separate place.
  • Fixed hasMilestone and incr_order.
  • Static layers now show the currency amount needed for the next one if you can buy max.

v1.2.4 - 10/4/20

  • Layers are now highlighted if you can buy an upgrade, and a new feature, shouldNotify, lets you make it highlight other ways.
  • Fixed bugs with hasUpg, hasChall, hasMilestone, and inChallenge.
  • Changed the sample code to use the above functions for convenience.

v1.2.3 - 10/3/20

  • Added a row component, which displays a list of objects in a row.
  • Added a column component, which displays a list of objects in a column (useful within a row).
  • Changed blanks to have a customizable width and height.

v1.2: This Changes Everything! - 10/3/20

  • Many layer features can now be static values or functions. (This made some formats change, which will break old things)
  • You can now use the "this" keyword, to make code easier to transfer when making new layers.
  • Also added "this.layer", which is the current layer's name, and works on existing subfeatures (e.g. individual upgrades) as well! Subfeatures also have "this.id".
  • Fixed a big save issue. If you use a unique mod id, your save will never conflict with other mods.
  • Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)
  • Added a few minor features, and updated the docs with new information.

v1.1.1 - 9/30/20

  • You can define hotkeys directly from layer config.

v1.1: Enhanced Edition - 9/30/20

  • Added "Buyables", which can function like Space Buildings or Enhancers.
  • Custom CSS can now be used on any component! Make the third argument an object with CSS parameters.
  • Lots of minor good things.

v1.0 - 9/27/20

  • First release.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/!general-info.html b/public/kronos/docs/!general-info.html new file mode 100644 index 000000000..8a97b9ad0 --- /dev/null +++ b/public/kronos/docs/!general-info.html @@ -0,0 +1,32 @@ + + + + + + The-Modding-Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The-Modding-Tree

Making a game in The Modding Tree mostly involves defining parameters or functions on objects. If you aren't following the getting started guide, you should start by setting up your basic mod info in mod.js. It's important to set a mod id to ensure saving works properly.

Beyond that, the main way to add content is through creating layers, often in layers.js. You can add new layers by calling addLayer(layername, layerdata). There is an example of a basic layer in layers.js showing the recommended method. It is just an example and can be freely deleted. You can also use it as a reference or a base for your own layers.

Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to, for example to add new Vue components in components.js.

The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects, and must be treated differently. For example, you have to use new Decimal(x) to create a Decimal value instead of a plain number, and perform operations on them by calling functions. e.g, instead of x = x + y, use x = x.add(y). Keep in mind this also applies to comparison operators, which should be replaced with calling the .gt, .gte, .lt, .lte, .eq, and .neq functions. See the break_eternity.js docs for more details on working with Decimal values.

Almost all values can be either a constant value, or a dynamic value. Dynamic values are defined by putting a function that returns what the value should be at any given time.

All display text can use basic HTML elements (But you can't use most Vue features there).

While reading this documentation, the following key will be used when describing features:

  • No label: This is required and the game may crash if it isn't included.
  • sometimes required: This is may be required, depending on other things in the layer.
  • optional: You can leave this out if you don't intend to use that feature for the layer.
  • assigned automagically: This value will be set automatically and override any value you set.
  • deprecated: This feature is not recommended to be used, because newer features are able to achieve the same thing in a better, easier way.

Table of Contents

General

  • Getting Started: Getting your own copy of the code set up with Github Desktop.
  • Main mod info: How to set up general things for your mod in mod.js.
  • Basic layer breakdown: Breaking down the components of a layer with minimal features.
  • Layer features: Explanations of all of the different properties that you can give a layer.
  • Custom Tab Layouts: An optional way to give your tabs a different layout. You can even create entirely new components to use.
  • Custom game layouts: You can get rid of the tree tab, add buttons and other things to the tree, or even customize the tab's layout like a layer tab.
  • Updating TMT: Using Github Desktop to update your mod's version of TMT.

Common components

  • Upgrades: How to create upgrades for a layer.
  • Milestones: How to create milestones for a layer.
  • Buyables: Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings, for example.
  • Clickables: A more generalized variant of buyables, for any kind of thing that is sometimes clickable. Between these and Buyables, you can do just about anything.
  • Achievements: How to create achievements for a layer (or for the whole game).

Other components and features

  • Challenges: How to create challenges for a layer.
  • Bars: Display some information as a progress bar, gauge, or similar. They are highly customizable, and can be horizontal and vertical as well.
  • Subtabs and Microtabs: Create subtabs for your tabs, as well as "microtab" components that you can put inside the tabs. You can even use them to embed a layer inside another layer!
  • [Grids][grids.md]: Create a group buttons that behave the same, but have their own data. Good for map tiles, an inventory grid, and more!
  • Infoboxes: Boxes containing text that can be shown or hidden.
  • Trees: Make your own trees. You can make non-layer button nodes too!
  • Particle system: Can be used to create particles for visual effects, but also interactable things like golden cookies or collectables.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/achievements.html b/public/kronos/docs/achievements.html new file mode 100644 index 000000000..aa4c2a1c2 --- /dev/null +++ b/public/kronos/docs/achievements.html @@ -0,0 +1,44 @@ + + + + + + Achievements | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Achievements

Achievements are awarded to the player when they meet a certain goal, and optionally give some benefit.

You can make global achievements by putting them in a side layer by making its row equal to "side" instead of a number.

Useful functions for dealing with achievements and implementing their effects:

  • hasAchievement(layer, id): determine if the player has the Achievement.
  • achievementEffect(layer, id): Returns the current effects of the achievement, if any.

Achievements should be formatted like this:

js
achievements: {
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}
achievements: {
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}

Usually, each achievement should have an id where the first digit is the row and the second digit is the column.

Individual achievement can have these features:

  • name: optional. displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the achievement should be awarded.

  • tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML. Setting this to "" disables the tooltip.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.

  • unlocked(): optional. A function returning a bool to determine if the achievement is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the achievement is completed.

  • image: optional, puts the image from the given URL (relative or absolute) in the achievement

  • style: optional. Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • textStyle: optional. Applies CSS to the text, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.

  • goalTooltip: optional, deprecated. Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.

  • doneTooltip: optional, deprecated. Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.

Disable achievement popups by adding achievementsPopups: false to the layer.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/bars.html b/public/kronos/docs/bars.html new file mode 100644 index 000000000..17957ff3a --- /dev/null +++ b/public/kronos/docs/bars.html @@ -0,0 +1,50 @@ + + + + + + Bars | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Bars

Bars let you display information in a more direct way. It can be a progress bar, health bar, capacity gauge, or anything else.

Bars are defined like other Big Features:

js
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}

Features:

  • direction: UP, DOWN, LEFT, or RIGHT (not strings). Determines the direction that the bar is filled as it progresses. RIGHT means from left to right.

  • width, height: The size in pixels of the bar, but as numbers (no "px" at the end).

  • progress(): A function that returns the portion of the bar that is filled, from "empty" at 0 to "full" at 1, updating automatically. (Nothing bad happens if the value goes out of these bounds, and it can be a number or Decimal)

  • display(): optional. A function that returns text to be displayed on top of the bar, can use HTML.

  • unlocked(): optional. A function returning a bool to determine if the bar is visible or not. Default is unlocked.

  • baseStyle, fillStyle, borderStyle, textStyle: Optional, Apply CSS to the unfilled portion, filled portion, border, and display text on the bar, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/basic-layer-breakdown.html b/public/kronos/docs/basic-layer-breakdown.html new file mode 100644 index 000000000..7db591bd0 --- /dev/null +++ b/public/kronos/docs/basic-layer-breakdown.html @@ -0,0 +1,94 @@ + + + + + + Basic layer breakdown | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Basic layer breakdown

This is a very minimal layer with minimal features. Most things will require additional features.

js
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true },          // Returns a bool for if this layer's node should be visible in the tree.
+
+    upgrades: {
+        // Look in the upgrades docs to see what goes here!
+    },
+})
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true },          // Returns a bool for if this layer's node should be visible in the tree.
+
+    upgrades: {
+        // Look in the upgrades docs to see what goes here!
+    },
+})

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/buyables.html b/public/kronos/docs/buyables.html new file mode 100644 index 000000000..149e58105 --- /dev/null +++ b/public/kronos/docs/buyables.html @@ -0,0 +1,56 @@ + + + + + + Buyables | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. They come with optional buttons that can be used for respeccing or selling buyables, among other things.

The amount of a buyable owned is a Decimal.

Useful functions for dealing with buyables and implementing their effects:

  • getBuyableAmount(layer, id): get the amount of the buyable the player has
  • setBuyableAmount(layer, id, amount): set the amount of the buyable the player has
  • buyableEffect(layer, id): Returns the current effects of the buyable, if any.

Buyables should be formatted like this:

js
buyables: {
+    11: {
+        cost(x) { return new Decimal(1).mul(x) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}
buyables: {
+    11: {
+        cost(x) { return new Decimal(1).mul(x) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmount(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th purchase. (x is a Decimal). Can return an object if there are multiple currencies.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this buyable. Can have an optional argument "x" to calculate the effect of having x of the buyable.. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the buyable is visible or not. Default is unlocked.

  • canAfford(): A function returning a bool to determine if you can buy one of the buyables.

  • buy(): A function that implements buying one of the buyable, including spending the currency.

  • buyMax(): optional. A function that implements buying as many of the buyable as possible.

  • style: optional. Applies CSS to this buyable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • purchaseLimit: optional. The limit on how many of the buyable can be bought. The default is no limit.

  • marked: optional Adds a mark to the corner of the buyable. If it's "true" it will be a star, but it can also be an image URL.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the buyable was stored under, for convenient access. The buyable in the example's id is 11.

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

  • sellOne/sellAll(): optional. Called when the button is pressed. The standard use would be to decrease/reset the amount of the buyable, and possibly return some currency to the player.

  • canSellOne/canSellAll(): optional. booleans determining whether or not to show the buttons. If "canSellOne/All" is absent but "sellOne/All" is present, the appropriate button will always show.

To add a respec button, or something similar, add the respecBuyables function to the main buyables object (not individual buyables). You can use these features along with it:

  • respec(): optional. This is called when the button is pressed (after a toggleable confirmation message).

  • respecText: optional. Text to display on the respec Button.

  • showRespec(): optional. A function determining whether or not to show the button, if respecBuyables is defined. Defaults to true if absent.

  • respecMessage: optional. A custom confirmation message on respec, in place of the default one.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/challenges.html b/public/kronos/docs/challenges.html new file mode 100644 index 000000000..ba29f912b --- /dev/null +++ b/public/kronos/docs/challenges.html @@ -0,0 +1,48 @@ + + + + + + Challenges | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Challenges

Challenges can have fully customizable win conditions. Useful functions for dealing with Challenges and implementing their effects:

  • inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one).
  • hasChallenge(layer, id): determine if the player has completed the challenge.
  • challengeCompletions(layer, id): determine how many times the player completed the challenge.
  • maxedChallenge(layer, id): determines if the player has reached the maximum completions.
  • challengeEffect(layer, id): Returns the current effects of the challenge, if any.

Challenges are stored in the following format:

js
challenges: {
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        canComplete: function() {return player.points.gte(100)},
+        etc
+    },
+    etc
+}
challenges: {
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        canComplete: function() {return player.points.gte(100)},
+        etc
+    },
+    etc
+}

Usually, each challenge should have an id where the first digit is the row and the second digit is the column.

Individual Challenges can have these features:

  • name: Name of the challenge, can be a string or a function. Can use basic HTML.

  • challengeDescription: A description of what makes the challenge a challenge. You will need to implement these elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • goalDescription: A description of the win condition for the challenge. It can also be a function that returns updating text. Can use basic HTML. (Optional if using the old goal system)

  • canComplete(): A function that returns true if you meet the win condition for the challenge. Returning a number will allow bulk completing the challenge. (Optional if using the old goal system)

  • rewardDescription: A description of the reward's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • rewardEffect(): optional. A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.

  • rewardDisplay(): optional. A function that returns a display of the current effects of the reward with formatting. Default behavior is to just display the a number appropriately formatted.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the challenge. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the challenge is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the challenge is completed when previously incomplete.

  • onEnter() - optional. this function will be called when entering the challenge

  • onExit() - optional. this function will be called when exiting the challenge in any way

  • countsAs: optional. If a challenge combines the effects of other challenges in this layer, you can use this. An array of challenge ids. The player is effectively in all of those challenges when in the current one.

  • completionLimit: optional. the amount of times you can complete this challenge. Default is 1 completion.

  • style: optional. Applies CSS to this challenge, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • marked: optional Adds a mark to the corner of the challenge. If it's "true" it will be a star, but it can also be an image URL. By default, if the challenge has multiple completions, it will be starred at max completions.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.

The old goal system uses these features:

  • goal: deprecated, A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.

  • currencyDisplayName: deprecated. the name to display for the currency for the goal

  • currencyInternalName: deprecated. the internal name for that currency

  • currencyLayer: deprecated. the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation(): deprecated. if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/clickables.html b/public/kronos/docs/clickables.html new file mode 100644 index 000000000..a85a73553 --- /dev/null +++ b/public/kronos/docs/clickables.html @@ -0,0 +1,44 @@ + + + + + + Clickables | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Clickables

Clickables are any kind of thing that you can click for an effect. They're a more generalized version of Buyables.

DO NOT USE THESE TO MAKE THINGS THAT YOU CLICK REPEATEDLY FOR A BONUS BECAUSE THOSE ARE AWFUL.

There are several differences between the two. One is that a buyable's saved data is its amount as a Decimal, while Clickables store a "state" which can be a number or string, but not Decimal, array, or object). Buyables have a number of extra features which you can see on their page. Clickables also have a smaller default size.

Useful functions for dealing with clickables and implementing their effects:

  • getClickableState(layer, id): get the state of the clickable the player has
  • setClickableState(layer, id, state): set the state of the clickable the player has
  • clickableEffect(layer, id): Returns the current effects of the clickable, if any.

Clickables should be formatted like this:

js
clickables: {
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}
clickables: {
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this clickable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the clickable after the title, likely changing based on its state. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the clickable is visible or not. Default is unlocked.

  • canClick(): A function returning a bool to determine if you can click the clickable.

  • onClick(): A function that implements clicking the clickable.

  • onHold(): optional A function that is called 20x/sec when the button is held for at least 0.25 seconds.

  • style: optional. Applies CSS to this clickable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • marked: optional Adds a mark to the corner of the clickable. If it's "true" it will be a star, but it can also be an image URL.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the clickable was stored under, for convenient access. The clickable in the example's id is 11.

You can also use these features on the clickables object to add a button above all the clickables, for implementing a respec button or similar.

  • masterButtonPress(): optional. If present, an additional button will appear above the clickables. Pressing it will call this function.

  • masterButtonText: optional. Text to display on the Master Button.

  • showMasterButton(): optional. A function determining whether or not to show the button, if masterButtonPress is defined. Defaults to true if absent.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/custom-tab-layouts.html b/public/kronos/docs/custom-tab-layouts.html new file mode 100644 index 000000000..44f843bbc --- /dev/null +++ b/public/kronos/docs/custom-tab-layouts.html @@ -0,0 +1,58 @@ + + + + + + Custom tab layouts | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Custom tab layouts

Note: If you are using subtabs, tabFormat is used differently, but the same format is used for defining their layouts. See here for more on subtabs.

Custom tab layouts can be used to do basically anything in a tab window, especially combined with the "style" layer feature. The tabFormat feature is an array of things, like this:

js
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]

It is a list of components, which can be either just a name, or an array with arguments. If it's an array, the first item is the name of the component, the second is the data passed into it, and the third (optional) applies a CSS style to it with a "CSS object", where the keys are CSS attributes.

These are the existing components, but you can create more in components.js:

  • display-text: Displays some text (can use basic HTML). The argument is the text to display. It can also be a function that returns updating text.

  • raw-html: Displays some basic HTML, can also be a function.

  • blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions. If it's a single value (e.g. "20px"), that determines the height. If you have a pair of arguments, the first is width and the second is height.

  • row: Display a list of components horizontally. The argument is an array of components in the tab layout format.

  • column: Display a list of components vertically. The argument is an array of components in the tab layout format. This is useful to display columns within a row.

  • main-display: The text that displays the main currency for the layer and its effects. The argument is the amount of precision to use, allowing it to display non-whole numbers.

  • resource-display: The text that displays the currency that this layer is based on, as well as the best and/or total values for this layer's prestige currency (if they are put in startData for this layer).

  • prestige-button: The argument is a string that the prestige button should say before the amount of currency you will gain. It can also be a function that returns updating text.

  • text-input: A text input box. The argument is the name of the variable in player[layer] that the input is for, player[layer][argument] (Works with strings, numbers, and Decimals!)

  • slider: Lets the user input a value with a slider. The argument a 3-element array: [name, min, max]. The name is the name of the variable in player[layer] that the input that the input is for, and min and max are the limits of the slider. (Does not work for Decimal values)

  • upgrades: The layer's upgrades. The argument is optional, and is a the list of rows this component should include, if it doesn't have all of them.

  • milestones, challenges, achievements: Display the upgrades, milestones, and challenges for a layer, as appropriate.

  • buyables, clickables: Display all of the buyables/clickables for this layer, as appropriate. The argument is optional and is the size of the boxes in pixels.

  • microtabs: Display a set of subtabs for an area. The argument is the name of the set of microtabs in the "microtabs" feature.

  • bar: Display a bar. The argument is the id of the bar to display.

  • infobox: Display an infobox. The argument is the id of the infobox to display.

  • tree: Displays a tree. The argument is an array of arrays containing the names of the nodes in the tree (first by row, then by column) See here for more information on tree layouts and nodes!

  • toggle: A toggle button that toggles a bool value. The argument is a pair that identifies the location in player of the bool to toggle, e.g. [layer, id]. 'layer' also affects the color of the toggle.

  • grid: Displays the gridable grid for the layer. If you need more than one grid, use a layer proxy.

  • layer-proxy: Lets you use components from another layer. The argument is a pair, [layer, data], consisting of the id of the layer to proxy from, and the tabFormat for the components to show. (Note: you cannot use a microtab within a layer proxy)

The rest of the components are sub-components. They can be used just like other components, but are typically part of another component.

  • upgrade, milestone, challenge, buyable, clickable, achievement, gridable: An individual upgrade, challenge, etc. The argument is the id. This can be used if you want to have upgrades split up across multiple subtabs, for example.

  • respec-button, master-button: The respec and master buttons for buyables and clickables, respectively.

  • sell-one, sell-all: The "sell one" and "sell all" for buyables, respectively. The argument is the id of the buyable.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/getting-started.html b/public/kronos/docs/getting-started.html new file mode 100644 index 000000000..20b18ca4a --- /dev/null +++ b/public/kronos/docs/getting-started.html @@ -0,0 +1,32 @@ + + + + + + Getting started | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Getting started

Welcome to The Modding Tree!

Using the Modding Tree, at its simplest level, just requires getting a copy of it onto your computer. However, if you do it the right way, it will help in many ways.

Don't let the word "Github" scare you away. It's actually much easier to use than most people think, especially because most people use it the hard way. The key is Github Desktop, which lets you do everything you need to, without even touching the command line.

The benefits of using Github:

  • It makes it much, much easier to update The Modding Tree.
  • You can share your work without any extra effort using githack, or with a bit more effort, set up a github.io site.
  • It lets you undo changes to your code, and to have multiple versions of it.
  • It lets you collaborate with other people, if you want to.

Getting set up with Github Desktop, Visual Studio Code, and The Modding Tree:

  1. Install Github Desktop and Visual Studio Code.

  2. Make a Github account. You can handle this on your own.

  3. Log in on your browser, and go back to The Modding Tree page. At the top right, there should be a button that says "fork". Click on it, and then on your username. You now have your own fork, or copy, of The Modding Tree.

  4. Open Github Desktop and log in. Ignore everything else and choose "clone a repository". A "repository" is basically a "Github project", like The Modding Tree. "Cloning" is downloading a copy of the repository to your computer.

  5. Look for The Modding Tree in the list of repositiories (it should be the only one) and click "clone".

  6. Select that you're using it for your own purposes, and click continue. It will download the files and handle everything.

Using your repository

  1. Click on "show in explorer/finder" to the right, and then open the index.html file in the folder. The page should open up on your browser. This will let you view and test your project locally!

  2. To edit your project, click "open in VSCode" in Github Desktop.

  3. Open mod.js in VSCode, and look at the top part where it has a "modInfo" object. Fill in your mod's name to whatever you want, and change the id as well. (It can be any string value, and it's used to determine where the savefile is. Make it something that's probably unique, and don't change it again later or else it'll effectively wipe existing saves)

  4. Save mod.js, and then reload index.html in your browser. The title on the tab, as well as on the info page, will now be updated! You can reload the page every time you change the code to test it quickly and easily.

  5. Go back to Github Desktop. It's time to save your changes into the git system by making a "commit". This basically saves your work and creates a snapshot of what your code looks like at this moment, allowing you to look back at it later.

  6. At the bottom right corner, add a summary of your changes, and then click "commit to master".

  7. Finally, at the top middle, click "push origin" to push your changes out onto the online repository.

  8. You can view your project on line, or share it with others, by going to https://raw.githack.com/[YOUR-GITHUB-USERNAME]/The-Modding-Tree/master/index.html

And now, you have successfully used Github! You can look at the documentation to see how The Modding Tree's system works and to make your mod a reality.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/grids.html b/public/kronos/docs/grids.html new file mode 100644 index 000000000..fa8d0116b --- /dev/null +++ b/public/kronos/docs/grids.html @@ -0,0 +1,72 @@ + + + + + + Grids | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Grids

Grids are an easier way of making a group of similar clickables. They all have the same behavior, but are different based on their data.

NOTE: Gridables are similar to clickables in some respects, but are fundamentally different from normal TMT components in quite a few ways. Be sure to keep these in mind:

  • Gridable ids use base 100 instead of base 10, so you can have more than 10 tiles in a row. This means that a grid might look like this: 101 102 201 202
  • Individual gridables are not defined individually. All properties go directly into the "grid" object. Functions are called with arguments for the id of the gridables and its associated data, so you can give them the appropriate appearance and properties based on that.
  • If you need two unrelated grids in a layer, you'll need to use a layer proxy component.

Useful functions for dealing with grids:

  • getGridData(layer, id): get the data for the chosen gridable
  • setGridData(layer, id, state): set the data for the chosen gridable
  • gridEffect(layer, id): get the effect for the chosen gridable

The grid should be formatted like this:

js
grid: {
+    rows: 4, // If these are dynamic make sure to have a max value as well!
+    cols: 5,
+    getStartData(id) {
+        return 0
+    },
+    getUnlocked(id) { // Default
+        return true
+    },
+    getCanClick(data, id) {
+        return true
+    },
+    onClick(data, id) { 
+        player[this.layer].grid[id]++
+    },
+    getDisplay(data, id) {
+        return data 
+    },
+
+    etc
+}
grid: {
+    rows: 4, // If these are dynamic make sure to have a max value as well!
+    cols: 5,
+    getStartData(id) {
+        return 0
+    },
+    getUnlocked(id) { // Default
+        return true
+    },
+    getCanClick(data, id) {
+        return true
+    },
+    onClick(data, id) { 
+        player[this.layer].grid[id]++
+    },
+    getDisplay(data, id) {
+        return data 
+    },
+
+    etc
+}

Features:

  • rows, cols: The amount of rows and columns of gridable to display.

  • maxRows, maxCols: sometimes needed. If rows or cols are dynamic, you need to define the maximum amount that there can be (you can increase it when you update the game though). These CANNOT be dynamic.

  • getStartData(id): Creates the default data for the gridable at this position. This can be an object, or a regular value.

  • getUnlocked(id): optional. Returns true if the gridable at this position should be visible.

  • getTitle(data, id): optional. Returns text that should displayed at the top in a larger font, based on the position and data of the gridable.

  • getDisplay(data, id): optional. Returns everything that should be displayed on the gridable after the title, based on the position and data of the gridable.

  • getStyle(data, id): optional. Returns CSS to apply to this gridable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • getCanClick(data, id): optional. A function returning a bool to determine if you can click a gridable, based on its data and position. If absent, you can always click it.

  • onClick(data, id): A function that implements clicking on the gridable, based on its position and data.

  • onHold(data, id): optional A function that is called 20x/sec when the button is held for at least 0.25 seconds.

  • getEffect(data, id): optional. A function that calculates and returns a gridable's effect, based on its position and data. (Whatever that means for a gridable)

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/infoboxes.html b/public/kronos/docs/infoboxes.html new file mode 100644 index 000000000..1e789ed24 --- /dev/null +++ b/public/kronos/docs/infoboxes.html @@ -0,0 +1,46 @@ + + + + + + Infoboxes | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Infoboxes

Infoboxes are good for displaying "lore", or story elements, as well as for explaining complicated things.

In the default tab layout, the first infobox will be displayed at the very top of the tab.

Infoboxes are defined like other Big Features:

js
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}

Features:

  • title: The text displayed above the main box. Can be a function to be dynamic, and can use basic HTML.

  • body: The text displayed inside the box. Can be a function to be dynamic, and can use basic HTML.

  • style, titleStyle, bodyStyle: optional. Apply CSS to the infobox, or to the title button or body of the infobox, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a bool to determine if the infobox is visible or not. Default is unlocked.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The infobox in the example's id is "lore".

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/layer-features.html b/public/kronos/docs/layer-features.html new file mode 100644 index 000000000..3d8528c04 --- /dev/null +++ b/public/kronos/docs/layer-features.html @@ -0,0 +1,52 @@ + + + + + + Layer Features | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Layer Features

This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.

You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.

Layer Definition features

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar to access the saved value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.

  • name: optional. used in reset confirmations (and the default infobox title). If absent, it just uses the layer's id.

  • startData(): A function to return the default save data for this layer. Add any variables you have to it. Make sure to use Decimal values rather than normal numbers.

    Standard values: - Required: - unlocked: a bool determining if this layer is unlocked or not - points: a Decimal, the main currency for the layer - Optional: - total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here. - best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here. - unlockOrder: used to keep track of relevant layers unlocked before this one. - resetTime: A number, time since this layer was last prestiged (or reset by another layer)

  • color: A color associated with this layer, used in many places. (A string in hex format with a #)

  • row: The row of the layer, starting at 0. This affects where the node appears on the standard tree, and which resets affect the layer.

    Using "side" instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements and statistics). Side layers are not affected by resets unless you add a doReset to them.

  • displayRow: OVERRIDE Changes where the layer node appears without changing where it is in the reset order.

  • resource: Name of the main currency you gain by resetting on this layer.

  • effect(): optional. A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. You will also have to implement the effect where it is applied.

  • effectDescription: optional. A function that returns a description of this effect. If the text stays constant, it can just be a string.

  • layerShown(): optional, A function returning a bool which determines if this layer's node should be visible on the tree. It can also return "ghost", which will hide the layer, but its node will still take up space in the tree. Defaults to true.

  • hotkeys: optional. An array containing information on any hotkeys associated with this layer:

    js
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") },
    +        unlocked() {return hasMilestone('p', 3)} // Determines if you can use the hotkey, optional
    +    }
    +]
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") },
    +        unlocked() {return hasMilestone('p', 3)} // Determines if you can use the hotkey, optional
    +    }
    +]
  • style: optional. a "CSS object" where the keys are CSS attributes, containing any CSS that should affect this layer's entire tab.

  • tabFormat: optional. use this if you want to add extra things to your tab or change the layout. See here for more info.

  • midsection: optional, an alternative to tabFormat, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)

Big features (all optional)

  • upgrades: A set of one-time purchases which can have unique upgrade conditions, currency costs, and bonuses. See here for more info.

  • milestones: A list of bonuses gained upon reaching certain thresholds of a resource. Often used for automation/QOL. See here for more info.

  • challenges: The player can enter challenges, which make the game harder. If they reach a goal and beat the challenge, they recieve a bonus. See here for more info.

  • buyables: Effectively upgrades that can be bought multiple times, and are optionally respeccable. Many uses. See here for more info.

  • clickables: Extremely versatile and generalized buttons which can only be clicked sometimes. See here for more info.

  • microtabs: An area that functions like a set of subtabs, with buttons at the top changing the content within. (Advanced) See here for more info.

  • bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be vertical as well. See here for more info.

  • achievements: Kind of like milestones, but with a different display style and some other differences. Extra features are on the way at a later date! See here for more info.

  • achievementPopups, milestonePopups: optional, If false, disables popup message when you get the achievement/milestone. True by default.

  • infoboxes: Displays some text in a box that can be shown or hidden. See here for more info.

  • grid: A grid of buttons that behave the same, but have their own data.See here for more info.

Prestige formula features

  • type: optional. Determines which prestige formula you use. Defaults to "none".

    • "normal": The amount of currency you gain is independent of its current amount (like Prestige). The formula before bonuses is based on baseResource^exponent
    • "static": The cost is dependent on your total after reset. The formula before bonuses is based on base^(x^exponent)
    • "custom": You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom)
    • "none": This layer does not prestige, and therefore does not need any of the other features in this section.
  • baseResource: The name of the resource that determines how much of the main currency you gain on reset.

  • baseAmount(): A function that gets the current value of the base resource.

  • requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).

  • exponent: Used as described above.

  • base: sometimes required. required for "static" layers, used as described above. If absent, defaults to 2. Must be greater than 1.

  • roundUpCost: optional. a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a "static" currency.)

  • gainMult(), gainExp(): optional. For normal layers, these functions calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in most bonuses here. For static layers, they instead divide and root the cost of the resource.

  • directMult(): optional. Directly multiplies the resource gain, after exponents and softcaps. For static layers, actually multiplies resource gain instead of reducing the cost.

  • softcap, softcapPower: optional. For normal layers, gain beyond [softcap] points is put to the [softcapPower]th power Default for softcap is e1e7, and for power is 0.5.

  • canBuyMax(): sometimes required. required for static layers, function used to determine if buying max is permitted.

  • onPrestige(gain): optional. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.

  • resetDescription: optional. Use this to replace "Reset for " on the Prestige button with something else.

  • prestigeButtonText(): sometimes required. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.

  • passiveGeneration(): optional, returns a regular number. You automatically generate your gain times this number every second (does nothing if absent) This is good for automating Normal layers.

  • autoPrestige(): optional, returns a boolean, if true, the layer will always automatically do a prestige if it can. This is good for automating Static layers.

Tree/node features

  • symbol: optional. The text that appears on this layer's node. Default is the layer id with the first letter capitalized.

  • image: override. The url (local or global) of an image that goes on the node. (Overrides symbol)

  • position: optional. Determines the horizontal position of the layer in its row in a standard tree. By default, it uses the layer id, and layers are sorted in alphabetical order.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this layer's node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree. If the value is "", the tooltip will be disabled.

  • marked: optional Adds a mark to the corner of the node. If it's "true" it will be a star, but it can also be an image URL.

Other features

  • doReset(resettingLayer): optional. Is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. doReset is always called for side layers, but for these the default behavior is to reset nothing.

    If you want to keep things, determine what to keep based on resettingLayer, milestones, and such, then call layerDataReset(layer, keep), where layer is this layer, and keep is an array of the names of things to keep. It can include things like "points", "best", "total" (for this layer's prestige currency), "upgrades", any unique variables like "generatorPower", etc. If you want to only keep specific upgrades or something like that, save them in a separate variable, then call layerDataReset, and then set player[this.layer].upgrades to the saved upgrades.

  • update(diff): optional. This function is called every game tick. Use it for any passive resource production or time-based things. diff is the time since the last tick.

  • autoUpgrade: optional, a boolean value, if true, the game will attempt to buy this layer's upgrades every tick. Defaults to false.

  • automate(): optional. This function is called every game tick, after production. Use it to activate automation things that aren't otherwise supported.

  • resetsNothing: optional. Returns true if this layer shouldn't trigger any resets when you prestige.

  • increaseUnlockOrder: optional. An array of layer ids. When this layer is unlocked for the first time, the unlockOrder value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.

  • shouldNotify: optional. A function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.

  • glowColor: optional. The color that this layer will be highlighted if it should notify. The default is red. You can use this if you want several different notification types!

  • componentStyles: optional. An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:

js
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}
  • deactivated: optional, if this is true, hasUpgrade, hasChallenge, hasAchievement, and hasMilestone will return false for things in the layer, and you will be unable to buy or click things on the layer. You will have to disable effects of buyables, the innate layer effect, and possibly other things yourself.

Custom Prestige type

(All of these can also be used by other prestige types)

  • getResetGain(): mostly for custom prestige type. Returns how many points you should get if you reset now. You can call getResetGain(this.layer, useType = "static") or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer).

  • getNextAt(canMax=false): mostly for custom prestige type. Returns how many of the base currency you need to get to the next point. canMax is an optional variable used with Static-ish layers to differentiate between if it's looking for the first point you can reset at, or the requirement for any gain at all (Supporting both is good). You can also call getNextAt(this.layer, canMax=false, useType = "static") or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer).

  • canReset(): mostly for custom prestige type. Return true only if you have the resources required to do a prestige here.

  • prestigeNotify(): mostly for custom prestige types, returns true if this layer should be subtly highlighted to indicate you can prestige for a meaningful gain.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/main-mod-info.html b/public/kronos/docs/main-mod-info.html new file mode 100644 index 000000000..cf53a578b --- /dev/null +++ b/public/kronos/docs/main-mod-info.html @@ -0,0 +1,40 @@ + + + + + + mod.js | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

mod.js

Most of the non-layer code and data that you're likely to edit is here in mod.js. Everything in mod.js will not be altered by updates, besides the addition of new things.

Here's a breakdown of what's in it:

  • modInfo is where most of the basic configuration for the mod is. It contains:

    • name: The name of your mod. (a string)

    • id: The id for your mod, a unique string that is used to determine savefile location. Be sure to set it when you start making a mod, and don't change it later because it will erase all saves.

    • author: The name of the author, displayed in the info tab.

    • pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)

    • discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it.

      "discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.

    • offlineLimit: The maximum amount of offline time that the player can accumulate, in hours. Any extra time is lost. (a number)

      This is useful because most of these mods are fast-paced enough that too much offline time ruins the balance, such as the time in between updates. That is why I suggest developers disable offline time on their own savefile.

    • initialStartPoints: A Decimal for the amount of points a new player should start with.

  • VERSION is used to describe the current version of your mod. It contains:

    • num: The mod's version number, displayed at the top right of the tree tab.
    • name: The version's name, displayed alongside the number in the info tab.
  • changelog is the HTML displayed in the changelog tab. If this gets particularly long, it might be good to put in a separate file (be sure to add the file to index.html)

  • doNotCallTheseFunctionsEveryTick is very important, if you are adding non-standard functions. TMT calls every function anywhere in "layers" every tick to store the result, unless specifically told not to. Functions that have are used to do an action need to be identified. "Official" functions (those in the documentation) are all fine, but if you make any new ones, add their names to this array.

js
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
  • getStartPoints(): A function to determine the amount of points the player starts with after a reset. (returns a Decimal value)

  • canGenPoints(): A function returning a boolean for if points should be generated. Use this if you want an upgrade to unlock generating points.

  • getPointGen(): A function that calculates your points per second. Anything that affects your point gain should go into the calculation here.

  • addedPlayerData(): A function that returns any non-layer-related data that you want to be added to the save data and "player" object.

js
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
  • displayThings: An array of functions used to display extra things at the top of the tree tab. Each function returns a string, which is a line to display (with basic HTML support). If a function returns nothing, nothing is displayed (and it doesn't take up a line).

  • isEndgame(): A function to determine if the player has reached the end of the game, at which point the "you win!" screen appears.

Less important things beyond this point!

  • maxTickLength(): Returns the maximum tick length, in milliseconds. Only really useful if you have something that reduces over time, which long ticks mess up (usually a challenge).

  • fixOldSave(): Can be used to modify a save file when loading into a new version of the game. Use this to undo inflation, never forcibly hard reset your players.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/milestones.html b/public/kronos/docs/milestones.html new file mode 100644 index 000000000..c5c89f62d --- /dev/null +++ b/public/kronos/docs/milestones.html @@ -0,0 +1,46 @@ + + + + + + Milestones | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Milestones

Milestones are awarded to the player when they meet a certain goal, and give some benefit. Milestones should be formatted like this:

js
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}

You can use hasMilestone(layer, id) to determine if the player has a given milestone

Milestone features:

  • requirementDescription: A string describing the requirement for unlocking this milestone. Suggestion: Use a "total". It can also be a function that returns updating text. Can use basic HTML.

  • effectDescription: A string describing the reward for having the milestone. You will have to implement the reward elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the milestone should be awarded.

  • toggles: optional. Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

    Tip: Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.

  • style: optional. Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the milestone was stored under, for convenient access. The milestone in the example's id is 0.

Disaable milestone popups by adding milestonePopups: false to the layer.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/particles.html b/public/kronos/docs/particles.html new file mode 100644 index 000000000..f45277b84 --- /dev/null +++ b/public/kronos/docs/particles.html @@ -0,0 +1,52 @@ + + + + + + Particles | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Particles

Particles are free-floating elements that can move and have many different behaviors. They can also interact with the mouse.

To make particles, use makeParticles(particle, amount). particle is a particle-defining object, with features as explained below. There is also makeShinies, which uses different defaults and creates stationary particles at a random location. There are also a few other useful things listed at the end.

js

+const myParticle {
+    image:"options_wheel.png",
+    spread: 20,
+    gravity: 2,
+    time: 3,
+    speed() { // Randomize speed a bit
+        return (Math.random() + 1.2) * 8 
+    },
+    etc...
+}

+const myParticle {
+    image:"options_wheel.png",
+    spread: 20,
+    gravity: 2,
+    time: 3,
+    speed() { // Randomize speed a bit
+        return (Math.random() + 1.2) * 8 
+    },
+    etc...
+}

Features can be functions or constant. These features will be called when each particle is made, with an id argument, which is assigned based on which of the amount particles being spawned this is. All of these are optional, with a default value.

All distances are in pixels and angles are in degrees, with 0 being up and going clockwise.

  • time: The amount of time, in seconds, that the particle will last. Default is 3.

  • fadeOutTime: The amount of seconds that fading out at the end should take (part of the total lifetime). Default is 1.

  • fadeInTime: The amount of seconds that fading in should take (part of the total lifetime). Default is 0.

  • image: The image the particle should display. "" will display no image. Default is a generic particle.

  • text: Displays text on the particle. Can use basic HTML.

  • style: Lets you apply other CSS styling to the particle.

  • width, height: The dimensions of the particle. Default is 35 and 35.

  • color: Sets the color of the image to this color.

  • angle: The angle that the particle should face. Default is 0.

  • dir: The initial angle that the particles should move in, before spread is factored in. Default is whatever angle is.

  • spread: If there are several particles, they will be spread out by this many degrees, centered on dir. Default is 30.

  • rotation: The amount that the (visual) angle of the particle should change by. Default is 0.

  • speed: The starting speed of the particle. Default is 15.

  • gravity: The amount the particle should accelerate downwards. Default is 0.

  • x, y: The starting coordinates of the particle. Default is at the mouse position.

  • offset: How far from the start each particle should appear. Default is 10.

  • xVel, yVel: Set initially based on other properties, then used to update movement.

  • layer: When changing tabs, if leaving the layer tab, this particle will be erased.

  • You can add other features to particles, but you must impliment their effects yourself.

Function features: These stay as functions and are for more advanced things. They are optional.

  • update(): Called each tick. Lets you do more advanced visual and movement behaviors by changing other properties.
  • onClick(), onMouseOver(), onMouseLeave(): Called when the particle is interacted with.

Other useful things that are not features of the particle object:

  • setDir(particle, dir), setSpeed(particle, speed): Set the speed/direction on a particle.
  • clearParticles(check): Function to delete particles. With no check, it deletes all particles. Check is a function that takes a particle, and returns true if that particle should be deleted.
  • You can use Vue.delete(particles, this.id) to make a particle delete itself.
  • mouseX and mouseY are variables that track the mouse position.
  • sin(x), cos(x), tan(x): functions that do these operations, with x in degrees. (Instead of radians).
  • asin(x), acos(x), atan(x): functions that do these operations, with the returned value in degrees. (instead of radians).

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/subtabs-and-microtabs.html b/public/kronos/docs/subtabs-and-microtabs.html new file mode 100644 index 000000000..79d8661f0 --- /dev/null +++ b/public/kronos/docs/subtabs-and-microtabs.html @@ -0,0 +1,80 @@ + + + + + + Subtabs and Microtabs | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Subtabs and Microtabs

Subtabs are separate sections of a tab that you can view by selecting one at the top of the tab. Microtabs are smaller areas that function in much the same way. You can also embed layers inside of subtabs/microtabs.

Subtabs are defined by using the tab format like this, where each element of tabFormat is given the name of that subtab:

js
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}

Microtabs are defined similarly, and use the same features, but are defined in the "microtabs" feature. Each entry is a group of tabs which will appear in a microtabs component. The first set, "stuff", has 2 tabs, and the second, "otherStuff", has none.

js
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}

Normal subtabs and microtab subtabs both use the same features:

Features:

  • content: The tab layout code for the subtab, in the tab layout format.

  • style: optional. Applies CSS to the whole subtab when switched to, in the form of an "CSS Object", where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • buttonStyle: optional. A CSS object, which affects the appearance of the button for that subtab.

  • unlocked(): optional. a function to determine if the button for this subtab should be visible. By default, a subtab is always unlocked. You can't use the "this" keyword in this function.

  • shouldNotify()/prestigeNotify(): optional, if true, the tab button will be highlighted to notify the player that there is something there.

  • glowColor: optional, specifies the color that the subtab glows. If this subtab is causing the main layer to node glow (and it would't otherwise) the node also glows this color. Is NOT overridden by embedding a layer.

  • embedLayer: SIGNIFICANT, the id of another layer. If you have this, it will override "content", "style" and "shouldNotify", instead displaying the entire layer in the subtab.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/trees-and-tree-customization.html b/public/kronos/docs/trees-and-tree-customization.html new file mode 100644 index 000000000..0506e5f81 --- /dev/null +++ b/public/kronos/docs/trees-and-tree-customization.html @@ -0,0 +1,36 @@ + + + + + + Trees and tree customization | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Trees and tree customization

If you want to have something beyond the standard tree on the left tab, you can do that in tree.js. You can change the layout of the tree, including making non-layer nodes, change it into something other than a tree, or hide the left tab altogether. This also introduces the "tree" component, which can be used in your layers as well.

layoutInfo

The most important part is layoutInfo, containing:

  • startTab: The id of the default tab to show on the left at the start.
  • showTree: True if the tree tab should be shown at the start of the game. (The other tab will fill the whole page)
  • treeLayout: If present, overrides the tree layout and places nodes as you describe instead (explained in the next section).

Additionally, if you want the main layout to not be a tree, you can edit the "tree-tab" layer at the bottom of tree.js to modify it just like a normal layer's tab. You can even switch between left tabs, using showNavTab(layer) to make that layer appear on the left.

Trees

The tree component is defined as an array of arrays of names of layers or nodes to show in the tree. They work just like layers/ nodes in the main tree (but branches between nodes will only work on the first node if you have duplicates.)

Here is an example tree:

js
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]

Nodes

Nodes are non-layer buttons that can go in trees. They are defined similarly to layers, but with addNode instead of addLayer.

Features:

  • color: optional, The node's color. (A string in hex format with a #)

  • symbol: optional The text on the button (The id capitalized by default)

  • canClick(): Returns true if the player can click the node. ()

  • onClick(): The function called when the node is clicked.

  • layerShown(): optional, A function returning a bool which determines if this node should be visible. It can also return "ghost", which will hide the layer, but its node will still take up space in its tree.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this node to all of the nodes in the list. Alternatively, an entry in the array can be a 2-element array consisting of the id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree.

  • row: optional, the row that this node appears in (for the default tree).

  • position: optional, Determines the horizontal position of the layer in its row in a default tree. By default, it uses the id, and layers/nodes are sorted in alphabetical order.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/updating-tmt.html b/public/kronos/docs/updating-tmt.html new file mode 100644 index 000000000..22816d65a --- /dev/null +++ b/public/kronos/docs/updating-tmt.html @@ -0,0 +1,32 @@ + + + + + + Updating The Modding Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Updating The Modding Tree

This tutorial assumes that you have used the Getting Started Tutorial, and are using Github Desktop and VSCode for your mod.

Here's what you have to do when there's a TMT update:

  1. Look at the changelog. It will warn you if the update will break anything or require any changes. Decide if you want to try to update.

  2. Open Github Desktop, and at the top middle, click "fetch origin". This will make Github Desktop get information about the update.

  3. Click where it says "current branch: master" at the top middle, and at the bottom of the thing that appears, click "choose a branch to merge into master".

  4. Select upstream/master. It will likely say there are conflicts, but you have tools to resolve them. Click "Merge upstream/master into master".

  5. A conflict happens when the things you're trying to merge have both made changes in the same place. Click "open in Visual Studio Code" next to the first file.

  6. Scroll down through the file, and look for the parts highlighted in red and green. One of these is your code, and the other is some code that will be modified by the update. Do your best to try to edit things to keep the updated changes, but keep your content.

  7. Continue to do this for all remaining changes.

  8. Do any other changes required by the update, run the game, fix issues, etc.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/kronos/docs/upgrades.html b/public/kronos/docs/upgrades.html new file mode 100644 index 000000000..be8da3bc4 --- /dev/null +++ b/public/kronos/docs/upgrades.html @@ -0,0 +1,46 @@ + + + + + + Upgrades | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Upgrades

Useful functions for dealing with Upgrades and implementing their effects:

  • hasUpgrade(layer, id): determine if the player has the upgrade
  • upgradeEffect(layer, id): Returns the current effects of the upgrade, if any
  • buyUpgrade(layer, id): Buys an upgrade directly (if affordable)

Hint: Basic point gain is calculated in mod.js's "getPointGen" function.

Upgrades are stored in the following format:

js
upgrades: {
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}
upgrades: {
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}

Usually, upgrades should have an id where the first digit is the row and the second digit is the column.

Individual upgrades can have these features:

  • title: optional. Displayed at the top in a larger font. It can also be a function that returns updating text. Can use basic HTML.

  • description: A description of the upgrade's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.

  • effectDisplay(): optional. A function that returns a display of the current effects of the upgrade with formatting. Default displays nothing. Can use basic HTML.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the upgrade. Can use basic HTML.

  • cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.

  • unlocked(): optional. A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.

  • onPurchase(): optional. This function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".

  • style: optional. Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the upgrade was stored under, for convenient access. The upgrade in the example's id is 11.

By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):

  • currencyDisplayName: optional. The name to display for the currency for the upgrade.

  • currencyInternalName: optional. The internal name for that currency.

  • currencyLayer: optional. The internal name of the layer that currency is stored in. If it's not in a layer (like Points), omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional. If your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)

  • canAfford(): OVERRIDE, a function determining if you are able to buy the upgrade

  • pay(): OVERRIDE, a function that reduces your currencies when you buy the upgrade

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/Old Things/2.0-format-changes.html b/public/lit/Old Things/2.0-format-changes.html new file mode 100644 index 000000000..128059826 --- /dev/null +++ b/public/lit/Old Things/2.0-format-changes.html @@ -0,0 +1,32 @@ + + + + + + 2.0 format changes | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

2.0 format changes

  • Temp format is changed from temp.something[layer] to temp[layer].something, for consistency
  • Challenges are now saved as an object with the amount of completions in each spot. (This will break saves.)
  • effectDisplay in Challenges and Upgrades no longer takes an argument, and neither does effect for Buyables
  • Buyable cost can take an argument for amount of buyables, but it needs to function if no argument is supplied (it should do the cost for the next purchase).
  • Generation of Points now happens in the main game loop (not in a layer update function), enabled by canGenPoints in game.js.
  • Changed fullLayerReset to layerDataReset, which takes an array of names of values to keep

In addition, many names were changed, mostly expanding abbreviations:

All instances of:

  • chall -> challenge
  • unl -> unlocked
  • upg -> upgrade (besides CSS)
  • amt -> amount
  • desc -> description
  • resCeil -> roundUpCost
  • order -> unlockOrder
  • incr_order -> increaseUnlockOrder

Challenges:

  • desc -> challengeDescription
  • reward -> rewardDescription
  • effect -> rewardEffect
  • effectDisplay -> rewardDisplay
  • active -> challengeActive

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/README.html b/public/lit/README.html new file mode 100644 index 000000000..5543032eb --- /dev/null +++ b/public/lit/README.html @@ -0,0 +1,32 @@ + + + + + + Kronos | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Kronos

Play here.

Updating the website:

  • git submodule update --remote
  • git add -A
  • git commit -m "Updated kronos"
  • git push

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/changelog.html b/public/lit/changelog.html new file mode 100644 index 000000000..7c0cf9c11 --- /dev/null +++ b/public/lit/changelog.html @@ -0,0 +1,32 @@ + + + + + + The Modding Tree changelog: | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The Modding Tree changelog:

v2.π: Incrementally Updated - 2/5/21

  • Performance improvements.
  • Fixed tooltips overlapping with the top display.
  • Clicking a popup dismisses it immediately.
  • Added support for bulk challenge completions.
  • "Best" is updated automatically.
  • Fixed keeping Decimal values on reset.
  • Code reorganization and style improvements by fudo.

v2.3.5 - 12/21/20

  • Added resetTime, which tracks the time since a layer prestiged or was reset.
  • A layer node will be highlighted red if one of its subtabs is highlighted red.
  • Fixed issues with keeping challenges, buyables, and clickables on reset.
  • Improved the unlocking of custom layers.
  • Other minor fixes.

v2.3.4 - 12/16/20

  • Added a node image feature.
  • Resource display now always shows the amount of the currency the layer's gain is based on.
  • Added spacing between tree nodes.
  • Another attempt to fix tooltip flickering.

v2.3.3 - 12/13/20

  • Fixed the first node in a row always taking up space.
  • layerShown is now optional.
  • All prestige types can now use features for custom prestige types.

v2.3.2 - 12/13/20

  • Fixed achievement/milestone popups.

v2.3.1 - 12/12/20

  • Another attempt to fix flickering tooltips.
  • The "this" keyword should work everywhere except tabFormat arrays (although I may have missed some things).
  • Fixed tree branches not updating when scrolling on the right-side tab.
  • Fixed a spacing issue when a node's symbol is ""
  • Removed some old, unneeded files.

v2.3: Cooler and Newer Edition - 12/10/20

  • Added achievement/milestone popups (thank you to Jacorb for this contribution!)
  • The changelog tab is back, and can be set in mod.js.
  • Layer nodes and respec buttons will not be clicked by pressing "enter".
  • Possible fix for flickering tooltips and strange transitions.
  • The victory screen text is configurable.
  • Added image and textStyle features to achievements.
  • Added an argument to use specific rows in an "upgrades" component.
  • Fixed the comma appearing in the main display when there was no effectDescription
  • Added the ability to easily make a tab that is a collection of layers in subtabs.
  • Improved spacing for embedding layers with subtabs into subtabs.

v2.2.8 - 12/03/20

  • Double-clicking a layer node brings you to the main subtab for that layer.
  • Attempted to fix challenges visually updating a different way.
  • Added a softcap function for use in formulas.
  • Added displayRow feature, which lets layers be shown somewhere separate from where they are in the reset order (e.g. side layers)
  • Fixed autoupgrade issue.

v2.2.7 - 11/30/20

  • Added autoUpgrade feature.
  • resource-display now shows resource gain per second if passiveGain is active.
  • Fixed formatting issues on some large numbers.
  • Better support for using classed objects in player and in layers/tmp.
  • Made hard resetting more effective.
  • Removed Herobrine from getStartClickables.

v2.2.6 - 11/30/20

  • Added goalDescription for challenges and made the new "canComplete" system the standard.
  • Another attempt to fix challenges not visually updating.
  • Fixed side layers not appearing.
  • Fixed getStartClickables again.

v2.2.5 - 11/29/20

  • Added features for overriding the displays and costs/goals of upgrades and challenges to make them fully custom.
  • best, total, and unlocked are always automatically added to layerData (but best and total will only display if you add them yourself).
  • Fixed getStartClickables.

v2.2.4 - 11/28/20

  • Added softcap and softcapPower features (for Normal layers)
  • Offline time limit and default max tick length were fixed (previously the limits were 1000x too large)
  • Added fixOldSaves.
  • You can use HTML in main-display.
  • Fixed a number of minor oddities.

v2.2.3 - 11/28/20

  • Layers will be highlighted if you can finish a challenge.
  • The "can complete challenge" color now overrides the "already completed" color.
  • Button nodes now work as side "layers".
  • Setting a tooltip to "" hides it entirely.

v2.2.2 - 11/22/20

  • Fixed right half of the screen being unclickable in some circumstances.
  • Fixed tree branches being offset.
  • Fix to lastSafeTab.

v2.2.1 - 11/7/20

  • Added a small highlight to layers you can meaningfully prestige on.
  • Added passiveGeneration and autoPrestige features to standardize prestige automation. (The old ways still work, but the new ones work better with other things)
  • Improved milestones visually a bit.
  • "best" and "total" are now only displayed if present in startData.
  • Fixed issues with things not updating visually. (Thank you to to Jacorb!)
  • Side layers and button nodes can now be highlighted.
  • Updated docs on the new tree-related features.

v2.2: Uprooted - 11/7/20

  • You can now embed a layer inside of a subtab or microtab!
  • Added support for hiding or reformatting the tree tab
  • Added non-layer button nodes
  • Added shouldNotify to subtab/microtab buttons. (You can make them highlighted)
  • Added commas to large exponents.
  • Upgrades now only show "currently" if they have an effectDisplay (so not for constant effects).
  • Achievements are part of the default tab format.
  • NaN is now handled more intelligently.
  • Renamed files, and moved less relevant ones to another folder.
  • The "hide completed challenges" setting now only hides challenges at max completions.
  • Thank you to thepaperpilot for fixing errors in docs and improving the infobox appearance!
  • Many other minor fixes.

v2.1.4 - 10/25/20

  • Added an infobox component. Thank you to thepaperpilot for this contribution!
  • Layer type is now optional, and defaults to "none".
  • Improved the look of bars and tab buttons.
  • Improved spacing between layer nodes (also thanks to thepaperpilot!)
  • Fixed the "blank" component breaking if only specifying the height.
  • Fixed some numbers not displaying with enough digits.
  • Made a few more things able to be functions.
  • A few other minor fixes.

v2.1.3.1 - 10/21/20

  • Fixed the update function.

v2.1.3 - 10/21/20

  • gainMult and gainExp are now optional.
  • Layer unlocking is now kept on reset.
  • Game should start up faster.
  • Layer updates now have a determined order and starts with earlier-rowed layers.
  • Automation now has a determined order and starts with later-rowed layers.
  • Fixed issues with resetting clickables and challenges.
  • Commas should no longer appear in the decimal places of a number.
  • Fixed potential issue in displaying the tree.

v2.1.2 - 10/19/20

  • Added buyUpgrade function (buyUpg still works though)
  • Added author name to modInfo.
  • Fix to crash caused when the name of a subtab or microtab is changed.
  • Fixes to outdated information in docs.
  • Improvements to Discord links.
  • Thank you to thepaperpilot for contributing to this update!

v2.1.1 - 10/17/20

  • Added resource-display component, which displays the base currency for the prestige layer, as well as the best and/or total of this layer's prestige currency.
  • Fixed the value for the base currency not updating in resource-display.

v2.1: We should have thought of this sooner! - 10/17/20

  • Moved most of the code users will want to edit to mod.js, added documentation for it.
    • Specifically, modInfo, VERSION, canGenPoints, getPointGen, and maxTickLength
  • Added getStartPoints()
  • Added the ability to store non-layer-related data
  • Added the ability to display more things at the top of the tree tab below points.
  • Made the endgame condition customizable
  • Added "sell one" and "sell all" buttons for buyables.
  • Moved the old "game" to demo.js, and replaced it with a minimal game that won't cause issues when edited.
  • Fixed issues with version number
  • Fixed number formatting issue making things like "10e9" appear.

v2.0.5 - 10/16/20

  • Made more features (including prestige parameters) able to be dynamic.
  • Layer nodes can be hidden but still take up space with "ghost" visibility
  • Added clickableEffect for real.
  • Fixed some visual issues with bars.
  • A few other minor tweaks and improvements.

v2.0.4 - 10/16/20

  • Fixed HTML on buttons interfering with clicking on them.

v2.0.3 - 10/16/20

  • Fixed hotkeys not displaying in info.
  • Fixed the game supressing all external hotkeys.
  • You can use more things as currencies for upgrade costs and challenge goals using currencyLocation.
  • Added maxTickLength, which can be used to prevent offline time or tab-switching from breaking time-limit based mechanics.
  • Made buyable respec buttons and clickable "master" buttons their own components, and gave them a hide/show feature.
  • Added a general "tooltip" feature for achievements.

v2.0.2 - 10/15/20

  • Branches are now dynamic (they can be functions).
  • Fixed a crash related to offline time.
  • Fixed links being too wide.

v2.0.1 - 10/15/20

  • Fixed side layers appearing multiple times.

v2.0: The Pinnacle of Achievement Mountain - 10/15/20

  • Added progress bars, which are highly customizable and can be horizontal or vertical!
  • Added "side layers", displayed smaller and off to the side, and don't get reset by default. They can be used for global achievements and statistics. Speaking of which...
  • Added achievements!
  • Added clickables, a more generalized variant of buyables.
  • Almost every value in layer data can be either a function or a constant value!
  • Added support for multiple completions of challenges.
  • Added "none" prestige type, which removes the need for any other prestige-related features.
  • The points display and other gui elements stay at the top of the screen when the tree scrolls.
  • Added getter/setter functions for the amounts and effects of most Big Features
  • Moved modInfo to game.js, added a spot in modInfo for a Discord link, changelog link. Also added a separate mod version from the TMT version in VERSION.
  • Tree structure is based on layer data, no index.html editing is needed.
  • Tmp does not need to be manually updated.
  • You don't have to have the same amount of upgrades in every row (and challs and buyables)
  • "unlocked" is optional for all Big Components (defaults to true).
  • All displays will update correctly.
  • Changelog is no longer in index.html at all.
  • Generation of Points now happens in the main game loop
  • Changed the reset functions to make keeping things easier
  • Renamed many things to increase readability (see the list in the link below)
  • Improved documentation based on feedback

v1.3.5:

  • Completely automated convertToDecimal, now you never have to worry about it again.
  • Branches can be defined without a color id. But they can also use hex values for color ids!
  • Created a tutorial for getting started with TMT and Github.
  • Page title is now automatically taken from mod name.

v1.3.4 - 10/8/20

  • Added "midsection" feature to add things to a tab's layout while still keeping the standard layout.
  • Fix for being able to buy more buyables than you should.

v1.3.3 - 10/7/20

  • Fix for the "order of operations" issue in temp.

v1.3.1 - 10/7/20

  • Added custom CSS and tooltips for Layer Nodes.
  • Added custom CSS for upgrades, buyables, milestones, and challenges, both individually and layer-wide.
  • You can now use HTML in most display text!
  • You can now make milestones unlockable and not display immediately.
  • Fixed importing saves, and issue with upgrades not appearing, and probably more.
  • Optional "name" layer feature, used in confirmation messages.

v1.3: Tabception... ception! - 10/7/20

  • Added subtabs! And also a Micro-tab component to let you make smaller subtab-esque areas anywhere.
  • Added a "custom" prestige formula type, and a number of features to support it.
  • Added points/sec display (can be disabled).
  • Added h-line, v-line and image-display components, plus components for individual upgrades, challenges, and milestones.
  • Added upgEffect, buyableEffect, and challEffect functions.
  • Added "hide completed challenges" setting.
  • Moved old changelogs to a separate place.
  • Fixed hasMilestone and incr_order.
  • Static layers now show the currency amount needed for the next one if you can buy max.

v1.2.4 - 10/4/20

  • Layers are now highlighted if you can buy an upgrade, and a new feature, shouldNotify, lets you make it highlight other ways.
  • Fixed bugs with hasUpg, hasChall, hasMilestone, and inChallenge.
  • Changed the sample code to use the above functions for convenience.

v1.2.3 - 10/3/20

  • Added a row component, which displays a list of objects in a row.
  • Added a column component, which displays a list of objects in a column (useful within a row).
  • Changed blanks to have a customizable width and height.

v1.2: This Changes Everything! - 10/3/20

  • Many layer features can now be static values or functions. (This made some formats change, which will break old things)
  • You can now use the "this" keyword, to make code easier to transfer when making new layers.
  • Also added "this.layer", which is the current layer's name, and works on existing subfeatures (e.g. individual upgrades) as well! Subfeatures also have "this.id".
  • Fixed a big save issue. If you use a unique mod id, your save will never conflict with other mods.
  • Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)
  • Added a few minor features, and updated the docs with new information.

v1.1.1:

  • You can define hotkeys directly from layer config.

v1.1: Enhanced Edition

  • Added "Buyables", which can function like Space Buildings or Enhancers.
  • Custom CSS can now be used on any component! Make the third argument an object with CSS parameters.
  • Lots of minor good things.

v1.0:

  • First release.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/!general-info.html b/public/lit/docs/!general-info.html new file mode 100644 index 000000000..3c223f414 --- /dev/null +++ b/public/lit/docs/!general-info.html @@ -0,0 +1,32 @@ + + + + + + The-Modding-Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

The-Modding-Tree

The main way to add content is through creating layers. You can either add a layer directly in the layers object in layerSupport.js, or declare it in another file and register it by calling addLayer(layername, layerdata). There is an example layer registration in layers.js showing the recommended method. It is just an example and can be freely deleted. You can also use it as a reference or a base for your own layers.

The first thing you need to do is fill out the modInfo object at the top of mod.js to set your mod's name, ID (a string), and other information. A unique modId will prevent your mod's saves from conflicting with other mods. Note that changing this after people have started playing will reset their saves.

Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to, for example to add new Vue components in v.js.

The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects, and must be treated differently. For example, you have to use new Decimal(x) to create a Decimal value instead of a plain number, and perform operations on them by calling functions. e.g, instead of x = x + y, use x = x.add(y). Keep in mind this also applies to comparison operators, which should be replaced with calling the .gt, .gte, .lt, .lte, .eq, and .neq functions. See the break_eternity.js docs for more details on working with Decimal values.

Almost all values can be either a constant value, or a dynamic value. Dynamic values are defined by putting a function that returns what the value should be at any given time.

All display text can use basic HTML elements (But you can't use most Vue features there).

While reading this documentation, the following key will be used when describing features:

  • No label: This is required and the game may crash if it isn't included.
  • sometimes required: This is may be required, depending on other things in the layer.
  • optional: You can leave this out if you don't intend to use that feature for the layer.
  • assigned automagically: This value will be set automatically and override any value you set.
  • deprecated: This feature is not recommended to be used anymore, and may be removed in future versions of TMT.

Table of Contents

General

  • Getting Started: Getting your own copy of the code set up with Github Desktop.
  • Main mod info: How to set up general things for your mod in mod.js.
  • Basic layer breakdown: Breaking down the components of a layer with minimal features.
  • Layer features: Explanations of all of the different properties that you can give a layer.
  • Custom Tab Layouts: An optional way to give your tabs a different layout. You can even create entirely new components to use.
  • Custom game layouts: You can get rid of the tree tab, add buttons and other things to the tree, or even customize the tab's layout like a layer tab.
  • Updating TMT: Using Github Desktop to update your mod's version of TMT.

Common components

  • Upgrades: How to create upgrades for a layer.
  • Milestones: How to create milestones for a layer.
  • Buyables: Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings.
  • Clickables: A more generalized variant of buyables, for any kind of thing that is sometimes clickable. Between these and Buyables, you can do just about anything.

Other components and features

  • Challenges: How to create challenges for a layer.
  • Bars: Display some information as a progress bar, gauge, or similar. They are highly customizable, and can be horizontal and vertical as well.
  • Subtabs and Microtabs: Create subtabs for your tabs, as well as "microtab" components that you can put inside the tabs. You can even use them to embed a layer inside another layer!
  • Achievements: How to create achievements for a layer (or for the whole game).
  • Infoboxes: Boxes containing text that can be shown or hidden.
  • Trees: Make your own trees. You can make non-layer button nodes too!

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/achievements.html b/public/lit/docs/achievements.html new file mode 100644 index 000000000..4c1709791 --- /dev/null +++ b/public/lit/docs/achievements.html @@ -0,0 +1,48 @@ + + + + + + Achievements | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Achievements

Achievements are awarded to the player when they meet a certain goal, and optionally give some benefit. Currently they are pretty basic, but additional features will be added later to help.

You can make global achievements by putting them in a side layer by making its row equal to "side" instead of a number.

Useful functions for dealing with achievements and implementing their effects:

  • hasAchievement(layer, id): determine if the player has the Achievement.
  • achievementEffect(layer, id): Returns the current effects of the achievement, if any.

Achievements should be formatted like this:

js
achievements: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}
achievements: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Blah",
+        more features
+    },
+    etc
+}

Each achievement should have an id where the first digit is the row and the second digit is the column.

Individual achievement can have these features:

  • name: optional. displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the achievement should be awarded.

  • tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML. Setting this to "" disables the tooltip.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.

  • unlocked(): optional. A function returning a bool to determine if the achievement is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the achievement is completed.

  • image: optional, puts the image from the given URL (relative or absolute) in the achievement

  • style: optional. Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • textStyle: optional. Applies CSS to the text, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.

  • goalTooltip: optional, deprecated. Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.

  • doneTooltip: optional, deprecated. Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.

Disable achievement popups by adding achievementsPopups: false to the layer.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/bars.html b/public/lit/docs/bars.html new file mode 100644 index 000000000..359803201 --- /dev/null +++ b/public/lit/docs/bars.html @@ -0,0 +1,50 @@ + + + + + + Bars | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Bars

Bars let you display information in a more direct way. It can be a progress bar, health bar, capacity gauge, or anything else.

Bars are defined like other Big Features:

js
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}
bars: {
+    bigBar: {
+        direction: RIGHT,
+        width: 200,
+        height: 50,
+        progress() { return 0 },
+        etc
+    },
+    etc
+}

Features:

  • direction: UP, DOWN, LEFT, or RIGHT (not strings). Determines the direction that the bar is filled as it progresses. RIGHT means from left to right.

  • width, height: The size in pixels of the bar, but as numbers (no "px" at the end).

  • progress(): A function that returns the portion of the bar that is filled, from "empty" at 0 to "full" at 1, updating automatically. (Nothing bad happens if the value goes out of these bounds, and it can be a number or Decimal)

  • display(): optional. A function that returns text to be displayed on top of the bar, can use HTML.

  • unlocked(): optional. A function returning a bool to determine if the bar is visible or not. Default is unlocked.

  • baseStyle, fillStyle, borderStyle, textStyle: Optional, Apply CSS to the unfilled portion, filled portion, border, and display text on the bar, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The bar in the example's id is "bigBar".

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/basic-layer-breakdown.html b/public/lit/docs/basic-layer-breakdown.html new file mode 100644 index 000000000..3a9a5a2cf --- /dev/null +++ b/public/lit/docs/basic-layer-breakdown.html @@ -0,0 +1,86 @@ + + + + + + Basic layer breakdown | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Basic layer breakdown

This is a very minimal layer with minimal features. Most things will require additional features.

js
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true }            // Returns a bool for if this layer's node should be visible in the tree.
+})
addLayer("p", {
+    startData() { return {                  // startData is a function that returns default data for a layer. 
+        unlocked: true,                     // You can add more variables here to add them to your layer.
+        points: new Decimal(0),             // "points" is the internal name for the main resource of the layer.
+    }},
+
+    color: "#4BDC13",                       // The color for this layer, which affects many elements.
+    resource: "prestige points",            // The name of this layer's main prestige resource.
+    row: 0,                                 // The row this layer is on (0 is the first row).
+
+    baseResource: "points",                 // The name of the resource your prestige gain is based on.
+    baseAmount() { return player.points },  // A function to return the current amount of baseResource.
+
+    requires: new Decimal(10),              // The amount of the base needed to  gain 1 of the prestige currency.
+                                            // Also the amount required to unlock the layer.
+
+    type: "normal",                         // Determines the formula used for calculating prestige currency.
+    exponent: 0.5,                          // "normal" prestige gain is (currency^exponent).
+
+    gainMult() {                            // Returns your multiplier to your gain of the prestige resource.
+        return new Decimal(1)               // Factor in any bonuses multiplying gain here.
+    },
+    gainExp() {                             // Returns your exponent to your gain of the prestige resource.
+        return new Decimal(1)
+    },
+
+    layerShown() { return true }            // Returns a bool for if this layer's node should be visible in the tree.
+})

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/buyables.html b/public/lit/docs/buyables.html new file mode 100644 index 000000000..2b4100798 --- /dev/null +++ b/public/lit/docs/buyables.html @@ -0,0 +1,60 @@ + + + + + + Buyables | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Buyables

Buyables are usually things that can be bought multiple times with scaling costs. If you set a respec function, the player can reset the purchases to get their currency back.

The amount of a buyable owned is a Decimal.

Useful functions for dealing with buyables and implementing their effects:

  • getBuyableAmount(layer, id): get the amount of the buyable the player has
  • setBuyableAmount(layer, id, amount): set the amount of the buyable the player has
  • buyableEffect(layer, id): Returns the current effects of the buyable, if any.

Buyables should be formatted like this:

js
buyables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        cost(x) { return new Decimal(1).mul(x || getBuyableAmt(this.layer, this.id)) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmt(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}
buyables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        cost(x) { return new Decimal(1).mul(x || getBuyableAmt(this.layer, this.id)) },
+        display() { return "Blah" },
+        canAfford() { return player[this.layer].points.gte(this.cost()) },
+        buy() {
+            player[this.layer].points = player[this.layer].points.sub(this.cost())
+            setBuyableAmount(this.layer, this.id, getBuyableAmt(this.layer, this.id).add(1))
+        },
+        etc
+    },
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th object, but needs to use "current amount" as a default value for x. (x is a Decimal). Can return an object if there are multiple currencies.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this buyable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the buyable is visible or not. Default is unlocked.

  • canAfford(): A function returning a bool to determine if you can buy one of the buyables.

  • buy(): A function that implements buying one of the buyable, including spending the currency.

  • buyMax(): optional. A function that implements buying as many of the buyable as possible.

  • style: optional. Applies CSS to this buyable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the buyable was stored under, for convenient access. The buyable in the example's id is 11.

Sell One/Sell All:

Including a sellOne or sellAll function will cause an additional button to appear beneath the buyable. They are functionally identical, but "sell one" appears above "sell all". You can also use them for other things.

  • sellOne/sellAll(): optional. Called when the button is pressed. The standard use would be to decrease/reset the amount of the buyable, and possibly return some currency to the player.

  • canSellOne/canSellAll(): optional. booleans determining whether or not to show the buttons. If "canSellOne/All" is absent but "sellOne/All" is present, the appropriate button will always show.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/challenges.html b/public/lit/docs/challenges.html new file mode 100644 index 000000000..a3ba689c7 --- /dev/null +++ b/public/lit/docs/challenges.html @@ -0,0 +1,52 @@ + + + + + + Challenges | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Challenges

Challenges can have fully customizable win conditions. Useful functions for dealing with Challenges and implementing their effects:

  • inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one).
  • hasChallenge(layer, id): determine if the player has completed the challenge.
  • challengeCompletions(layer, id): determine how many times the player completed the challenge.
  • challengeEffect(layer, id): Returns the current effects of the challenge, if any.

Challenges are stored in the following format:

js
challenges: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        goal: new Decimal(100),
+        etc
+    },
+    etc
+}
challenges: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        name: "Ouch",
+        challengeDescription: "description of ouchie",
+        goal: new Decimal(100),
+        etc
+    },
+    etc
+}

Each challenge should have an id where the first digit is the row and the second digit is the column.

Individual Challenges can have these features:

  • name: Name of the challenge, can be a string or a function. Can use basic HTML.

  • challengeDescription: A description of what makes the challenge a challenge. You will need to implement these elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • goalDescription: A description of the win condition for the challenge. It can also be a function that returns updating text. Can use basic HTML. (Optional if using the old goal system)

  • canComplete(): A function that returns true if you meet the win condition for the challenge. Returning a number will allow bulk completing the challenge. (Optional if using the old goal system)

  • rewardDescription: A description of the reward's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • rewardEffect(): optional. A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.

  • rewardDisplay(): optional. A function that returns a display of the current effects of the reward with formatting. Default behavior is to just display the a number appropriately formatted.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the challenge. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the challenge is visible or not. Default is unlocked.

  • onComplete() - optional. this function will be called when the challenge is completed when previously incomplete.

  • countsAs: optional. If a challenge combines the effects of other challenges in this layer, you can use this. An array of challenge ids. The player is effectively in all of those challenges when in the current one.

  • completionLimit: optional. the amount of times you can complete this challenge. Default is 1 completion.

  • style: optional. Applies CSS to this challenge, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.

The old goal system uses these features:

  • goal: deprecated, A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.

  • currencyDisplayName: deprecated. the name to display for the currency for the goal

  • currencyInternalName: deprecated. the internal name for that currency

  • currencyLayer: deprecated. the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation(): deprecated. if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/clickables.html b/public/lit/docs/clickables.html new file mode 100644 index 000000000..1105db50b --- /dev/null +++ b/public/lit/docs/clickables.html @@ -0,0 +1,48 @@ + + + + + + Clickables | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Clickables

Clickables are any kind of thing that you can click for an effect. They're a more generalized version of Buyables.

DO NOT USE THESE TO MAKE THINGS THAT YOU CLICK REPEATEDLY FOR A BONUS BECAUSE THOSE ARE AWFUL.

There are several differences between the two. One is that a buyable's saved data is its amount as a Decimal, while Clickables store a "state" which can be a number or string, but not Decimal, array, or object). Buyables have a number of extra features which you can see on their page. Clickables also have a smaller default size.

Useful functions for dealing with achievements and implementing their effects:

  • getClickableState(layer, id): get the state of the clickable the player has
  • setClickableState(layer, id, state): set the state of the buyable the player has
  • clickableEffect(layer, id): Returns the current effects of the clickable, if any.

Clickables should be formatted like this:

js
clickables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}
clickables: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        display() {return "Blah"},
+        etc
+    }
+    etc
+}

Features:

  • title: optional. displayed at the top in a larger font. It can also be a function that returns updating text.

  • effect(): optional. A function that calculates and returns the current values of bonuses of this clickable. Can return a value or an object containing multiple values.

  • display(): A function returning everything that should be displayed on the clickable after the title, likely changing based on its state. Can use basic HTML.

  • unlocked(): optional. A function returning a bool to determine if the clickable is visible or not. Default is unlocked.

  • canClick(): A function returning a bool to determine if you can click the clickable.

  • onClick(): A function that implements clicking one of the clickable.

  • style: optional. Applies CSS to this clickable, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the clickable was stored under, for convenient access. The clickable in the example's id is 11.

You can also use these features on the clickables object to add a button above all the clickables, for implementing a respec button or similar.

  • masterButtonPress(): optional. If present, an additional button will appear above the clickables. Pressing it will call this function.

  • masterButtonText: optional. Text to display on the Master Button.

  • showMasterButton(): optional. A function determining whether or not to show the button. Defaults to true if absent.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/custom-tab-layouts.html b/public/lit/docs/custom-tab-layouts.html new file mode 100644 index 000000000..8e5e7656d --- /dev/null +++ b/public/lit/docs/custom-tab-layouts.html @@ -0,0 +1,58 @@ + + + + + + Custom tab layouts | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Custom tab layouts

Note: If you are using subtabs, tabFormat is used differently, but you still use the same format within each subtabs. See here for more on subtabs.

Custom tab layouts can be used to do basically anything in a tab window, especially combined with the "style" layer feature. The tabFormat feature is an array of things, like this:

js
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]
tabFormat: [
+    "main-display",
+    ["prestige-button", function() { return "Melt your points into " }],
+    "blank",
+    ["display-text",
+        function() { return 'I have ' + format(player.points) + ' pointy points!' },
+        { "color": "red", "font-size": "32px", "font-family": "Comic Sans MS" }],
+    "blank",
+    ["toggle", ["c", "beep"]],
+    "milestones",
+    "blank",
+    "blank",
+    "upgrades"
+]

It is a list of components, which can be either just a name, or an array with arguments. If it's an array, the first item is the name of the component, the second is the data passed into it, and the third (optional) applies a CSS style to it with a "CSS object", where the keys are CSS attributes.

These are the existing components, but you can create more in components.js:

  • display-text: Displays some text (can use basic HTML). The argument is the text to display. It can also be a function that returns updating text.

  • raw-html: Displays some basic HTML, can also be a function.

  • blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions. If it's a single value (e.g. "20px"), that determines the height. If you have a pair of arguments, the first is width and the second is height.

  • row: Display a list of components horizontally. The argument is an array of components in the tab layout format.

  • column: Display a list of components vertically. The argument is an array of components in the tab layout format. This is useful to display columns within a row.

  • main-display: The text that displays the main currency for the layer and its effects.

  • resource-display: The text that displays the currency that this layer is based on, as well as the best and/or total values for this layer's prestige currency (if they are put in startData for this layer).

  • prestige-button: The argument is a string that the prestige button should say before the amount of currency you will gain. It can also be a function that returns updating text.

  • upgrades: The layer's upgrades. The argument is optional, and is a the list of rows this component should include, if it doesn't have all of them.

  • milestones, challenges, achievements: Display the upgrades, milestones, and challenges for a layer, as appropriate.

  • buyables, clickables: Display all of the buyables/clickables for this layer, as appropriate. The argument is optional and is the size of the boxes in pixels.

  • microtabs: Display a set of subtabs for an area. The argument is the name of the set of microtabs in the "microtabs" feature.

  • bar: Display a bar. The argument is the id of the bar to display.

  • infobox: Display an infobox. The argument is the id of the infobox to display.

  • tree: Displays a tree. The argument is an array of arrays containing the names of the nodes in the tree (first by row, then by column) See here for more information on tree layouts and nodes!

  • toggle: A toggle button that toggles a bool value. The data is a pair that identifies what bool to toggle, e.g. [layer, id]

The rest of the components are sub-components. They can be used just like other components, but are typically part of another component.

  • upgrade, milestone, challenge, buyable, clickable, achievement: An individual upgrade, challenge, etc. The argument is the id. This can be used if you want to have upgrades split up across multiple subtabs, for example.

  • respec-button, master-button: The respec and master buttons for buyables and clickables, respectively.

  • sell-one, sell-all: The "sell one" and "sell all" for buyables, respectively. The argument is the id of the buyable.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/getting-started.html b/public/lit/docs/getting-started.html new file mode 100644 index 000000000..73cad8842 --- /dev/null +++ b/public/lit/docs/getting-started.html @@ -0,0 +1,32 @@ + + + + + + Getting started | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Getting started

Welcome to The Modding Tree!

Using the Modding Tree, at its simplest level, just requires getting a copy of it onto your computer. However, if you do it the right way, it will help in many ways.

Don't let the word "Github" scare you away. It's actually much easier to use than most people think, especially because most people use it the hard way. The key is Github Desktop, which lets you do everything you need to, without even touching the command line.

The benefits of using Github:

  • It makes it much, much easier to update The Modding Tree.
  • You can share your work without any extra effort using githack, or with a bit more effort, set up a github.io site.
  • It lets you undo changes to your code, and to have multiple versions of it.
  • It lets you collaborate with other people, if you want to.

Getting set up with Github Desktop, Visual Studio Code, and The Modding Tree:

  1. Install Github Desktop and Visual Studio Code.

  2. Make a Github account. You can handle this on your own.

  3. Log in on your browser, and go back to The Modding Tree page. At the top right, there should be a button that says "fork". Click on it, and then on your username. You now have your own fork, or copy, of The Modding Tree.

  4. Open Github Desktop and log in. Ignore everything else and choose "clone a repository". A "repository" is basically a "Github project", like The Modding Tree. "Cloning" is downloading a copy of the repository to your computer.

  5. Look for The Modding Tree in the list of repositiories (it should be the only one) and click "clone".

  6. Select that you're using it for your own purposes, and click continue. It will download the files and handle everything.

Using your repository

  1. Click on "show in explorer/finder" to the right, and then open the index.html file in the folder. The page should open up on your browser. This will let you view and test your project locally!

  2. To edit your project, click "open in VSCode" in Github Desktop.

  3. Open mod.js in VSCode, and look at the top part where it has a "modInfo" object. Fill in your mod's name to whatever you want, and change the id as well. (It can be any string value, and it's used to determine where the savefile is. Make it something that's probably unique, and don't change it again later or else it'll effectively wipe existing saves)

  4. Save mod.js, and then reload index.html in your browser. The title on the tab, as well as on the info page, will now be updated! You can reload the page every time you change the code to test it quickly and easily.

  5. Go back to Github Desktop. It's time to save your changes into the git system by making a "commit". This basically saves your work and creates a snapshot of what your code looks like at this moment, allowing you to look back at it later.

  6. At the bottom right corner, add a summary of your changes, and then click "commit to master".

  7. Finally, at the top middle, click "push origin" to push your changes out onto the online repository.

  8. You can view your project on line, or share it with others, by going to https://raw.githack.com/[YOUR-GITHUB-USERNAME]/The-Modding-Tree/master/index.html

And now, you have successfully used Github! You can look at the documentation to see how The Modding Tree's system works and to make your mod a reality.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/infoboxes.html b/public/lit/docs/infoboxes.html new file mode 100644 index 000000000..5f84d25e5 --- /dev/null +++ b/public/lit/docs/infoboxes.html @@ -0,0 +1,46 @@ + + + + + + Infoboxes | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Infoboxes

Infoboxes are good for displaying "lore", or story elements, as well as for explaining complicated things.

In the default tab layout, the first infobox will be displayed at the very top of the tab.

Infoboxes are defined like other Big Features:

js
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}
infoboxes: {
+    lore: {
+        title: "foo",
+        body() { return "bar" },
+        etc
+    },
+    etc
+}

Features:

  • title: The text displayed above the main box. Can be a function to be dynamic, and can use basic HTML.

  • body: The text displayed inside the box. Can be a function to be dynamic, and can use basic HTML.

  • style, titleStyle, bodyStyle: optional. Apply CSS to the infobox, or to the title button or body of the infobox, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a bool to determine if the infobox is visible or not. Default is unlocked.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar

  • id: assigned automagically. It's the "key" which the bar was stored under, for convenient access. The infobox in the example's id is "lore".

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/layer-features.html b/public/lit/docs/layer-features.html new file mode 100644 index 000000000..e3338cd91 --- /dev/null +++ b/public/lit/docs/layer-features.html @@ -0,0 +1,50 @@ + + + + + + Layer Features | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Layer Features

This is a more comprehensive list of established features to add to layers. You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.

You can make almost any value dynamic by using a function in its place, including all display strings and styling/color features.

Layer Definition features

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar to access the saved value. It makes copying code to new layers easier. It is also assigned to all upgrades and buyables and such.

  • name: optional. used in reset confirmations (and the default infobox title). If absent, it just uses the layer's id.

  • startData(): A function to return the default save data for this layer. Add any variables you have to it. Make sure to use Decimal values rather than normal numbers.

    Standard values: - Required: - unlocked: a bool determining if this layer is unlocked or not - points: a Decimal, the main currency for the layer - Optional: - total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here. - best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here. - unlockOrder: used to keep track of relevant layers unlocked before this one. - resetTime: A number, time since this layer was last prestiged (or reset by another layer)

  • color: A color associated with this layer, used in many places. (A string in hex format with a #)

  • row: The row of the layer, starting at 0. This affects where the node appears on the standard tree, and which resets affect the layer.

    Using "side" instead of a number will cause the layer to appear off to the side as a smaller node (useful for achievements and statistics). Side layers are not affected by resets unless you add a doReset to them.

  • displayRow: OVERRIDE Changes where the layer node appears without changing where it is in the reset order.

  • resource: Name of the main currency you gain by resetting on this layer.

  • effect(): optional. A function that calculates and returns the current values of any bonuses inherent to the main currency. Can return a value or an object containing multiple values. You will also have to implement the effect where it is applied.

  • effectDescription: optional. A function that returns a description of this effect. If the text stays constant, it can just be a string.

  • layerShown(): optional, A function returning a bool which determines if this layer's node should be visible on the tree. It can also return "ghost", which will hide the layer, but its node will still take up space in the tree. Defaults to true.

  • hotkeys: optional. An array containing information on any hotkeys associated with this layer:

    js
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") }
    +    }
    +]
    hotkeys: [
    +    {
    +        key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
    +        description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
    +        onPress() { if (player.p.unlocked) doReset("p") }
    +    }
    +]
  • style: optional. a "CSS object" where the keys are CSS attributes, containing any CSS that should affect this layer's entire tab.

  • tabFormat: optional. use this if you want to add extra things to your tab or change the layout. See here for more info.

  • midsection: optional, an alternative to tabFormat, which is inserted in between Milestones and Buyables in the standard tab layout. (cannot do subtabs)

Big features (all optional)

  • upgrades: A grid of one-time purchases which can have unique upgrade conditions, currency costs, and bonuses. See here for more info.

  • milestones: A list of bonuses gained upon reaching certain thresholds of a resource. Often used for automation/QOL. See here for more info.

  • challenges: The player can enter challenges, which make the game harder. If they reach a goal and beat the challenge, they recieve a bonus. See here for more info.

  • buyables: Effectively upgrades that can be bought multiple times, and are optionally respeccable. Many uses. See here for more info.

  • clickables: Extremely versatile and generalized buttons which can only be clicked sometimes. See here for more info.

  • microtabs: An area that functions like a set of subtabs, with buttons at the top changing the content within. (Advanced) See here for more info.

  • bars: Display some information as a progress bar, gague, or similar. They are highly customizable, and can be vertical as well. See here for more info.

  • achievements: Kind of like milestones, but with a different display style and some other differences. Extra features are on the way at a later date! See here for more info.

  • infoboxes: Displays some text in a box that can be shown or hidden. See here for more info.

  • achievementPopups, milestonePopups: optional, If false, disables popup message when you get the achievement/milestone. True by default.

Prestige formula features

  • type: optional. Determines which prestige formula you use. Defaults to "none".

    • "normal": The amount of currency you gain is independent of its current amount (like Prestige). The formula before bonuses is based on baseResource^exponent
    • "static": The cost is dependent on your total after reset. The formula before bonuses is based on base^(x^exponent)
    • "custom": You can define everything, from the calculations to the text on the button, yourself. (See more at the bottom)
    • "none": This layer does not prestige, and therefore does not need any of the other features in this section.
  • baseResource: The name of the resource that determines how much of the main currency you gain on reset.

  • baseAmount(): A function that gets the current value of the base resource.

  • requires: A Decimal, the amount of the base needed to gain 1 of the prestige currency. Also the amount required to unlock the layer. You can instead make this a function, to make it harder if another layer was unlocked first (based on unlockOrder).

  • exponent: Used as described above.

  • base: sometimes required. required for "static" layers, used as described above. If absent, defaults to 2. Must be greater than 1.

  • roundUpCost: optional. a bool, which is true if the resource cost needs to be rounded up. (use if the base resource is a "static" currency.)

  • gainMult(), gainExp(): optional. Functions that calculate the multiplier and exponent on resource gain from upgrades and boosts and such. Plug in any bonuses here.

  • softcap, softcapPower: optional. For normal layers, gain beyond [softcap] points is put to the [softcapPower]th power Default for softcap is e1e7, and for power is 0.5.

  • canBuyMax(): sometimes required. required for static layers, function used to determine if buying max is permitted.

  • onPrestige(gain): optional. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.

  • resetDescription: optional. Use this to replace "Reset for " on the Prestige button with something else.

  • prestigeButtonText(): sometimes required. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.

  • passiveGeneration(): optional, returns a regular number. You automatically generate your gain times this number every second (does nothing if absent) This is good for automating Normal layers.

  • autoPrestige(): optional, returns a boolean, if true, the layer will always automatically do a prestige if it can. This is good for automating Static layers.

Tree/node features

  • symbol: optional. The text that appears on this layer's node. Default is the layer id with the first letter capitalized.

  • image: override. The url (local or global) of an image that goes on the node. (Overrides symbol)

  • position: optional. Determines the horizontal position of the layer in its row in a standard tree. By default, it uses the layer id, and layers are sorted in alphabetical order.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this layer to all of the layers in the list. Alternatively, an entry in the array can be a 2-element array consisting of the layer id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this layer's node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree. If the value is "", the tooltip will be disabled.

Other features

  • doReset(resettingLayer): optional. Is triggered when a layer on a row greater than or equal to this one does a reset. The default behavior is to reset everything on the row, but only if it was triggered by a layer in a higher row. doReset is always called for side layers, but for these the default behavior is to reset nothing.

    If you want to keep things, determine what to keep based on resettingLayer, milestones, and such, then call layerDataReset(layer, keep), where layer is this layer, and keep is an array of the names of things to keep. It can include things like "points", "best", "total" (for this layer's prestige currency), "upgrades", any unique variables like "generatorPower", etc. If you want to only keep specific upgrades or something like that, save them in a separate variable, then call layerDataReset, and then set player[this.layer].upgrades to the saved upgrades.

  • update(diff): optional. This function is called every game tick. Use it for any passive resource production or time-based things. diff is the time since the last tick.

  • autoUpgrade: optional, a boolean value, if true, the game will attempt to buy this layer's upgrades every tick. Defaults to false.

  • automate(): optional. This function is called every game tick, after production. Use it to activate automation things that aren't otherwise supported.

  • resetsNothing: optional. Returns true if this layer shouldn't trigger any resets when you prestige.

  • increaseUnlockOrder: optional. An array of layer ids. When this layer is unlocked for the first time, the unlockOrder value for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.

  • shouldNotify: optional. A function to return true if this layer should be highlighted in the tree. The layer will automatically be highlighted if you can buy an upgrade whether you have this or not.

  • componentStyles: optional. An object that contains a set of functions returning CSS objects. Each of these will be applied to any components on the layer with the type of its id. Example:

js
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}
componentStyles: {
+    "challenge"() { return {'height': '200px'} },
+    "prestige-button"() { return {'color': '#AA66AA'} }
+}

Custom Prestige type

(All of these can also be used by other prestige types)

  • getResetGain(): mostly for custom prestige type. Returns how many points you should get if you reset now. You can call getResetGain(this.layer, useType = "static") or similar to calculate what your gain would be under another prestige type (provided you have all of the required features in the layer).

  • getNextAt(canMax=false): mostly for custom prestige type. Returns how many of the base currency you need to get to the next point. canMax is an optional variable used with Static-ish layers to differentiate between if it's looking for the first point you can reset at, or the requirement for any gain at all (Supporting both is good). You can also call getNextAt(this.layer, canMax=false, useType = "static") or similar to calculate what your next at would be under another prestige type (provided you have all of the required features in the layer).

  • canReset(): mostly for custom prestige type. Return true only if you have the resources required to do a prestige here.

  • prestigeNotify(): mostly for custom prestige types, returns true if this layer should be subtly highlighted to indicate you can prestige for a meaningful gain.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/main-mod-info.html b/public/lit/docs/main-mod-info.html new file mode 100644 index 000000000..30bc8e782 --- /dev/null +++ b/public/lit/docs/main-mod-info.html @@ -0,0 +1,40 @@ + + + + + + mod.js | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

mod.js

All of the non-layer code and data that you're likely to edit is here in mod.js! Everything in mod.js will not be altered by updates, besides the addition of new things.

Here's a breakdown of what's in it:

  • modInfo is where most of the basic configuration for the mod is. It contains:

    • name: The name of your mod. (a string)

    • id: The id for your mod, a unique string that is used to determine savefile location. Setting it is important!

    • author: The name of the author, displayed in the info tab.

    • pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)

    • discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it.

      "discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.

    • offlineLimit: The maximum amount of offline time that the player can accumulate, in hours. Any extra time is lost. (a number)

      This is useful because most of these mods are fast-paced enough that too much offline time ruins the balance, such as the time in between updates. That is why I suggest developers disable offline time on their own savefile.

    • initialStartPoints: A Decimal for the amount of points a new player should start with.

  • VERSION is used to describe the current version of your mod. It contains:

    • num: The mod's version number, displayed at the top right of the tree tab.
    • name: The version's name, displayed alongside the number in the info tab.
  • changelog is the HTML displayed in the changelog tab.

  • doNotCallTheseFunctionsEveryTick is very important. TMT calls every function anywhere in "layers" every tick to store the result, unless specifically told not to. Functions that have are used to do an action need to be identified. "Official" functions (those in the documentation) are all fine, but if you make any new ones, add their names to this array.

js
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
// (The ones here are examples, all official functions are already taken care of)
+var doNotCallTheseFunctionsEveryTick = ["doReset", "buy", "onPurchase", "blowUpEverything"]
  • getStartPoints(): A function to determine the amount of points the player starts with after a reset. (returns a Decimal value)

  • canGenPoints(): A function returning a boolean for if points should be generated. Use this if you want an upgrade to unlock generating points.

  • getPointGen(): A function that calculates your points per second. Anything that affects your point gain should go into the calculation here.

  • addedPlayerData(): A function that returns any non-layer-related data that you want to be added to the save data and "player" object.

js
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
function addedPlayerData() { return {
+	weather: "Yes",
+	happiness: new Decimal(72),
+}}
  • displayThings: An array of functions used to display extra things at the top of the tree tab. Each function returns a string, which is a line to display (with basic HTML support). If a function returns nothing, nothing is displayed (and it doesn't take up a line).

  • isEndgame(): A function to determine if the player has reached the end of the game, at which point the "you win!" screen appears.

Less important things beyond this point!

  • maxTickLength(): Returns the maximum tick length, in milliseconds. Only really useful if you have something that reduces over time, which long ticks mess up (usually a challenge).

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/milestones.html b/public/lit/docs/milestones.html new file mode 100644 index 000000000..f6fffcbd0 --- /dev/null +++ b/public/lit/docs/milestones.html @@ -0,0 +1,46 @@ + + + + + + Milestones | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Milestones

Milestones are awarded to the player when they meet a certain goal, and give some benefit. Milestones should be formatted like this:

js
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}
milestones: {
+    0: {
+        requirementDescription: "123 waffles",
+        effectDescription: "blah",
+        done() { return player.w.points.gte(123) }
+    }
+    etc
+}

You can use hasMilestone(layer, id) to determine if the player has a given milestone

Milestone features:

  • requirementDescription: A string describing the requirement for unlocking this milestone. Suggestion: Use a "total". It can also be a function that returns updating text. Can use basic HTML.

  • effectDescription: A string describing the reward for having the milestone. You will have to implement the reward elsewhere. It can also be a function that returns updating text. Can use basic HTML.

  • done(): A function returning a boolean to determine if the milestone should be awarded.

  • toggles: optional. Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

    Tip: Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.

  • style: optional. Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • unlocked(): optional. A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the milestone was stored under, for convenient access. The milestone in the example's id is 0.

Disaable milestone popups by adding milestonePopups: false to the layer.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/subtabs-and-microtabs.html b/public/lit/docs/subtabs-and-microtabs.html new file mode 100644 index 000000000..d88d7f7a7 --- /dev/null +++ b/public/lit/docs/subtabs-and-microtabs.html @@ -0,0 +1,80 @@ + + + + + + Subtabs and Microtabs | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Subtabs and Microtabs

Subtabs are separate sections of a tab that you can view by selecting one at the top of the tab. Microtabs are smaller areas that function in much the same way. You can also embed layers inside of subtabs/microtabs.

Subtabs are defined by using the tab format like this, where each element of tabFormat is given the name of that subtab:

js
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}
tabFormat: {
+    "Main tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    "Other tab": {
+        content: [tab format things],
+        *subtab features*
+    },
+    etc
+}

Microtabs are defined similarly, and use the same features, but are defined in the "microtabs" feature. Each entry is a group of tabs which will appear in a microtabs component. The first set, "stuff", has 2 tabs, and the second, "otherStuff", has none.

js
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}
microtabs: {
+    stuff: {
+        first: {
+            content: [tab format things],
+            *subtab features*
+        },
+        second: {
+            content: [tab format things],
+            *subtab features*
+        }
+    },
+    otherStuff: {
+        // There could be another set of microtabs here
+    }
+}

Normal subtabs and microtab subtabs both use the same features:

Features:

  • content: The tab layout code for the subtab, in the tab layout format.

  • style: optional. Applies CSS to the whole subtab when switched to, in the form of an "CSS Object", where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • buttonStyle: optional. A CSS object, which affects the appearance of the button for that subtab.

  • unlocked(): optional. a function to determine if the button for this subtab should be visible. By default, a subtab is always unlocked. You can't use the "this" keyword in this function.

  • shouldNotify(): optional, if true, the tab button will be highlighted to notify the player that there is something there.

  • embedLayer: SIGNIFICANT, the id of another layer. If you have this, it will override "content", "style" and "shouldNotify", instead displaying the entire layer in the subtab.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/trees-and-tree-customization.html b/public/lit/docs/trees-and-tree-customization.html new file mode 100644 index 000000000..4a3b3f48a --- /dev/null +++ b/public/lit/docs/trees-and-tree-customization.html @@ -0,0 +1,36 @@ + + + + + + Trees and tree customization | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Trees and tree customization

If you want to have something beyond the standard tree on the left tab, you can do that in tree.js. You can change the layout of the tree, including making non-layer nodes, change it into something other than a tree, or hide the left tab altogether. This also introduces the "tree" component, which can be used in your layers as well.

layoutInfo

The most important part is layoutInfo, containing:

  • startTab: The id of the default tab to show on the left at the start.
  • showTree: True if the tree tab should be shown at the start of the game. (The other tab will fill the whole page)
  • treeLayout: If present, overrides the tree layout and places nodes as you describe instead (explained in the next section).

Additionally, if you want the main layout to not be a tree, you can edit the "tree-tab" layer at the bottom of tree.js to modify it just like a normal layer's tab. You can even switch between left tabs, using showNavTab(layer) to make that layer appear on the left.

Trees

The tree component is defined as an array of arrays of names of layers or nodes to show in the tree. They work just like layers/ nodes in the main tree (but branches between nodes will only work on the first node if you have duplicates.)

Here is an example tree:

js
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]
[["p"],
+ ["left", "blank", "right", "blank"]
+ ["a", "b", "blank", "c", "weirdButton"]]

Nodes

Nodes are non-layer buttons that can go in trees. They are defined similarly to layers, but with addNode instead of addLayer.

Features:

  • color: optional, The node's color. (A string in hex format with a #)

  • symbol: optional The text on the button (The id capitalized by default)

  • canClick(): Returns true if the player can click the node. ()

  • onClick(): The function called when the node is clicked.

  • layerShown(): optional, A function returning a bool which determines if this node should be visible. It can also return "ghost", which will hide the layer, but its node will still take up space in its tree.

  • branches: optional. An array of layer/node ids. On a tree, a line will appear from this node to all of the nodes in the list. Alternatively, an entry in the array can be a 2-element array consisting of the id and a color value. The color value can either be a string with a hex color code, or a number from 1-3 (theme-affected colors).

  • nodeStyle: optional. A CSS object, where the keys are CSS attributes, which styles this node on the tree.

  • tooltip() / tooltipLocked(): optional. Functions that return text, which is the tooltip for the node when the layer is unlocked or locked, respectively. By default the tooltips behave the same as in the original Prestige Tree.

  • row: optional, the row that this node appears in (for the default tree).

  • position: optional, Determines the horizontal position of the layer in its row in a default tree. By default, it uses the id, and layers/nodes are sorted in alphabetical order.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/updating-tmt.html b/public/lit/docs/updating-tmt.html new file mode 100644 index 000000000..11cdeef70 --- /dev/null +++ b/public/lit/docs/updating-tmt.html @@ -0,0 +1,32 @@ + + + + + + Updating The Modding Tree | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Updating The Modding Tree

This tutorial assumes that you have used the Getting Started Tutorial, and are using Github Desktop and VSCode for your mod.

Here's what you have to do when there's a TMT update:

  1. Look at the changelog. It will warn you if the update will break anything or require any changes. Decide if you want to try to update.

  2. Open Github Desktop, and at the top middle, click "fetch origin". This will make Github Desktop get information about the update.

  3. Click where it says "current branch: master" at the top middle, and at the bottom of the thing that appears, click "choose a branch to merge into master".

  4. Select upstream/master. It will likely say there are conflicts, but you have tools to resolve them. Click "Merge upstream/master into master".

  5. A conflict happens when the things you're trying to merge have both made changes in the same place. Click "open in Visual Studio Code" next to the first file.

  6. Scroll down through the file, and look for the parts highlighted in red and green. One of these is your code, and the other is some code that will be modified by the update. Do your best to try to edit things to keep the updated changes, but keep your content.

  7. Continue to do this for all remaining changes.

  8. Do any other changes required by the update, run the game, fix issues, etc.

Last updated:

+ + + + \ No newline at end of file diff --git a/public/lit/docs/upgrades.html b/public/lit/docs/upgrades.html new file mode 100644 index 000000000..cb4b6300a --- /dev/null +++ b/public/lit/docs/upgrades.html @@ -0,0 +1,50 @@ + + + + + + Upgrades | The Paper Pilot + + + + + + + + + + + + + + + + + +
Skip to content

Upgrades

Useful functions for dealing with Upgrades and implementing their effects:

  • hasUpgrade(layer, id): determine if the player has the upgrade
  • upgradeEffect(layer, id): Returns the current effects of the upgrade, if any
  • buyUpgrade(layer, id): Buys an upgrade directly (if affordable)

Hint: Basic point gain is calculated in mod.js's "getPointGen" function.

Upgrades are stored in the following format:

js
upgrades: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}
upgrades: {
+    rows: # of rows,
+    cols: # of columns,
+    11: {
+        description: "Blah",
+        cost: new Decimal(100),
+        etc
+    },
+    etc
+}

Each upgrade should have an id where the first digit is the row and the second digit is the column.

Individual upgrades can have these features:

  • title: optional. Displayed at the top in a larger font. It can also be a function that returns updating text. Can use basic HTML.

  • description: A description of the upgrade's effect. You will also have to implement the effect where it is applied. It can also be a function that returns updating text. Can use basic HTML.

  • effect(): optional. A function that calculates and returns the current values of any bonuses from the upgrade. Can return a value or an object containing multiple values.

  • effectDisplay(): optional. A function that returns a display of the current effects of the upgrade with formatting. Default displays nothing. Can use basic HTML.

  • fullDisplay(): OVERRIDE. Overrides the other displays and descriptions, and lets you set the full text for the upgrade. Can use basic HTML.

  • cost: A Decimal for the cost of the upgrade. By default, upgrades cost the main prestige currency for the layer.

  • unlocked(): optional. A function returning a bool to determine if the upgrade is visible or not. Default is unlocked.

  • onPurchase(): optional. This function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".

  • style: optional. Applies CSS to this upgrade, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).

  • layer: assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar.

  • id: assigned automagically. It's the "key" which the upgrade was stored under, for convenient access. The upgrade in the example's id is 11.

By default, upgrades use the main prestige currency for the layer. You can include these to change them (but it needs to be a Decimal):

  • currencyDisplayName: optional. The name to display for the currency for the upgrade.

  • currencyInternalName: optional. The internal name for that currency.

  • currencyLayer: optional. The internal name of the layer that currency is stored in. If it's not in a layer (like Points), omit. If it's not stored directly in a layer, instead use the next feature.

  • currencyLocation: optional. If your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like player[this.layer].buyables)

If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)

  • canAfford(): OVERRIDE, a function determining if you are able to buy the upgrade

  • pay(): OVERRIDE, a function that reduces your currencies when you buy the upgrade

Last updated:

+ + + + \ No newline at end of file diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 000000000..667bfa32b --- /dev/null +++ b/site.webmanifest @@ -0,0 +1 @@ +{"name":"Guide to Incrementals","short_name":"Incrementals","icons":[],"theme_color":"#2E3440","background_color":"#2E3440","display":"standalone"} \ No newline at end of file diff --git a/the_ascension_tree/.gitattributes b/the_ascension_tree/.gitattributes new file mode 100644 index 000000000..dfe077042 --- /dev/null +++ b/the_ascension_tree/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/the_ascension_tree/LICENSE b/the_ascension_tree/LICENSE new file mode 100644 index 000000000..e62ec04cd --- /dev/null +++ b/the_ascension_tree/LICENSE @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/the_ascension_tree/browserconfig.xml b/the_ascension_tree/browserconfig.xml new file mode 100644 index 000000000..77feb332a --- /dev/null +++ b/the_ascension_tree/browserconfig.xml @@ -0,0 +1,2 @@ + +#74658b \ No newline at end of file diff --git a/the_ascension_tree/css/layer.css b/the_ascension_tree/css/layer.css new file mode 100644 index 000000000..c8803bb44 --- /dev/null +++ b/the_ascension_tree/css/layer.css @@ -0,0 +1,110 @@ +#layer_info { + border-radius: 1em; + padding: 1em; + background-color: #00000080; + + display: flex; + flex-direction: column; + align-items: center; +} + +#layer_info .layer-header { + display: grid; + grid-template-columns: 1fr 2fr 1fr; + gap: 0.5em; + align-self: stretch; +} + +#layer_info .title { + font-size: 1.5em; +} + +#layer_info .type { + font-size: 0.8em; +} + +#layer_info .boost-from { + margin-top: 0.5em; + font-size: 0.9em; +} + +#layer_info .boost-to { + font-size: 0.9em; +} + +#layer_info .points { + margin-top: 0.5em; + font-size: 1em; +} + +#layer_info .point-amount { + color: var(--color-layer); +} + +#layer_info .prestige { + margin-top: 0.5em; + margin-bottom: 0.5em; + width: 50%; + height: 5em; +} + +#layer_info .upgrade-container { + margin-top: 0.5em; + flex-grow: 1; + align-self: stretch; + overflow-y: scroll; + + position: relative; +} + +#layer_info .upgrades-list { + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-auto-rows: 1fr; + gap: 1em; + + position: absolute; + top: 0; + left: 0; + right: 0; +} + +.upgrade { + position: relative; +} + +.upgrade.complete { + background-color: var(--color-layer); +} + +.upgrade .content { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: 0.5em; + + display: flex; + flex-direction: column; +} + +.upgrades-list .upgrade::before { + content: ""; + padding-bottom: 100%; + display: inline-block; + vertical-align: top; +} + +#layer_info .upgrade-name { + font-size: 1.2em; + font-weight: bold; +} + +#layer_info .upgrade-desc { + font-size: 0.8em; +} + +#layer_info .upgrade-cost { + font-size: 0.8em; +} \ No newline at end of file diff --git a/the_ascension_tree/css/main.css b/the_ascension_tree/css/main.css new file mode 100644 index 000000000..940168694 --- /dev/null +++ b/the_ascension_tree/css/main.css @@ -0,0 +1,147 @@ +body.dark { + --color-background: #13262fff; + --color-text: #fffcffff; + --color-left: #489fb5ff; + --color-right: #d62828ff; + --color-upgrade: hsla(264, 16%, 47%, 1); + --color-upgrade-disabled: hsla(264, 16%, 27%, 1); + --color-upgrade-hovered: hsla(264, 16%, 57%, 1); + --color-info: #3E6990FF; + --color-settings-background: #213a50; + --color-modal-container: #00000060; +} + +* { + font-family: 'Recursive', monospace; + color: var(--color-text); + text-align: center; + + text-size-adjust: none; + -moz-text-size-adjust: none; + -webkit-text-size-adjust: none; + -ms-text-size-adjust: none; + + user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + -moz-user-select: none; +} + +body { + margin: 0px; + background-color: var(--color-background); +} + +.app { + padding: 1em; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + + display: flex; + flex-direction: column; +} + +.main-container { + align-self: stretch; + flex-grow: 1; + margin-top: 1em; + + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr; + gap: 0.5em; +} + +p { + margin: 0px; +} + +button { + background-color: var(--color-upgrade); + border-radius: 1em; + padding: 0.5em 1em; + border: 0; + font-size: 1em; + cursor: pointer; +} +button:hover { + background-color: var(--color-upgrade-hovered); +} +button:disabled { + background-color: var(--color-upgrade-disabled); + cursor: auto; +} + +.divider { + flex-grow: 1; +} + +#settings-toggle { + position: absolute; + right: 1em; + top: 1em; + z-index: 11; + background-color: var(--color-info); +} +#settings-toggle:hover { + filter: brightness(1.3); +} +#settings-toggle img { + width: 2em; + height: 2em; +} +#settings-container { + position: absolute; + top: 1em; + right: 1em; + background: var(--color-settings-background); + padding: 1em; + border-radius: 1em; + z-index: 10; +} +.settings-title { + display: block; + text-align: left; + font-size: 2em; +} +.settings { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: .5em; +} +.settings button, +.settings input { + margin-left: 1em; +} +button.settings { + width: 100%; + justify-content: center; +} +.button-row { + display: flex; + align-items: row; +} +.button-row > * { + flex-basis: 0; + flex-grow: 1; + margin-left: .25em; + margin-right: .25em; +} +.button-row > *:first-child { + margin-left: 0; +} +.button-row > *:last-child { + margin-right: 0; +} +#seedDisplay { + user-select: text; +} +.incompleteSeed::after { + content: " (partial)"; + font-size: 0.75em; + color: lightgrey; +} diff --git a/the_ascension_tree/css/mobile.css b/the_ascension_tree/css/mobile.css new file mode 100644 index 000000000..ff5d40d45 --- /dev/null +++ b/the_ascension_tree/css/mobile.css @@ -0,0 +1,28 @@ +@media only screen and (max-width:1300px) { + #layer_info .upgrades-list { + grid-template-columns: repeat(2, 1fr); + } + + #layer_info .prestige { + width: 100%; + } +} + +@media only screen and (max-width:720px) { + body { + font-size: 0.6em; + } + + .main-container { + grid-template-columns: 1fr; + grid-template-rows: 2fr 3fr; + } + + #layer_info .upgrade::before { + padding-bottom: 50%; + } + + #layer_info .prestige { + width: 75%; + } +} \ No newline at end of file diff --git a/the_ascension_tree/css/modal.css b/the_ascension_tree/css/modal.css new file mode 100644 index 000000000..fcc22f3e7 --- /dev/null +++ b/the_ascension_tree/css/modal.css @@ -0,0 +1,64 @@ +.modal-container { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 20; + padding: 3em; + background: var(--color-modal-container); + display: grid; +} +.modal { + background: var(--color-settings-background); + border-radius: 1em; + padding: 1em; + display: flex; + flex-direction: column; + align-items: center; +} +.modal > * { + margin-top: .25em; + margin-bottom: .25em; +} +.modal > *:first-child { + margin-top: 0; +} +.modal > *:last-child { + margin-bottom: 0; +} +.modal > textarea { + flex-grow: 1; + align-self: stretch; + + user-select: text; + -ms-user-select: text; + -webkit-user-select: text; + -moz-user-select: text; + + background-color: var(--color-background); + + resize: none; + + border: 0; + + text-align: start; + font-size: 0.65em; +} +.modal-close { + position: absolute; + right: 3em; + top: 3em; + width: 2.4em; + height: 2.4em; + background-color: var(--color-info); + border-radius: 1em; + padding: 0; +} +.modal-close:hover { + background-color: var(--color-info); + filter: brightness(1.3); +} +.modal-close > p { + font-size: 1.5em; +} \ No newline at end of file diff --git a/the_ascension_tree/css/text.css b/the_ascension_tree/css/text.css new file mode 100644 index 000000000..013324400 --- /dev/null +++ b/the_ascension_tree/css/text.css @@ -0,0 +1,18 @@ +.points { + font-size: 1.5em; +} + +.big-number { + font-size: 1.5em; + font-weight: bold; +} + +.point-gain { + font-size: 0.8em; +} + +.credits { + font-size: 0.8em; + margin-top: 1em; + text-align: left; +} \ No newline at end of file diff --git a/the_ascension_tree/css/tree.css b/the_ascension_tree/css/tree.css new file mode 100644 index 000000000..95a48341b --- /dev/null +++ b/the_ascension_tree/css/tree.css @@ -0,0 +1,73 @@ +.tree { + position: relative; +} + +.tree-node-container { + position: absolute; + transform: scale(0.5); +} +.tree-node-container::before { + content: ""; + width: 1em; + height: 18em; + position: absolute; + top: -13.5em; + background: white; + z-index: -1; + transform-origin: bottom; + transform: rotate(215deg); + border-radius: 10px; +} +.tree-node-container::after { + content: ""; + width: 1em; + height: 18em; + position: absolute; + top: -13.5em; + background: white; + z-index: -1; + transform-origin: bottom; + transform: rotate(147deg); + border-radius: 10px; +} + +.tree-node { + width: 9em; + height: 9em; + border-radius: 9em; + cursor: pointer; + background-color: var(--color-upgrade); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.tree-node:hover { + filter: brightness(1.3); +} +.tree-node.disabled { + background-color: var(--color-upgrade-disabled) !important; + filter: none; + cursor: auto; +} +.tree-node.ascensionAvailable { + box-shadow: 0 0 10px 5px lime; +} +.tree-node.purchaseAvailable { + box-shadow: 0 0 10px 5px red; +} + +.node-text { + font-size: 3em; +} + +.unlock-req { + position: absolute; + top: 200%; + left: 50%; + width: 300%; + transform: translate(-50%, 0); + padding: 0.5em 1em; + background-color: var(--color-info); + z-index: 1; +} \ No newline at end of file diff --git a/the_ascension_tree/favicon.ico b/the_ascension_tree/favicon.ico new file mode 100644 index 000000000..0d95ea9f7 Binary files /dev/null and b/the_ascension_tree/favicon.ico differ diff --git a/the_ascension_tree/images/android-icon-144x144.png b/the_ascension_tree/images/android-icon-144x144.png new file mode 100644 index 000000000..9e593f53f Binary files /dev/null and b/the_ascension_tree/images/android-icon-144x144.png differ diff --git a/the_ascension_tree/images/android-icon-192x192.png b/the_ascension_tree/images/android-icon-192x192.png new file mode 100644 index 000000000..5e7b5883f Binary files /dev/null and b/the_ascension_tree/images/android-icon-192x192.png differ diff --git a/the_ascension_tree/images/android-icon-36x36.png b/the_ascension_tree/images/android-icon-36x36.png new file mode 100644 index 000000000..a5e294778 Binary files /dev/null and b/the_ascension_tree/images/android-icon-36x36.png differ diff --git a/the_ascension_tree/images/android-icon-48x48.png b/the_ascension_tree/images/android-icon-48x48.png new file mode 100644 index 000000000..fa9438dc6 Binary files /dev/null and b/the_ascension_tree/images/android-icon-48x48.png differ diff --git a/the_ascension_tree/images/android-icon-72x72.png b/the_ascension_tree/images/android-icon-72x72.png new file mode 100644 index 000000000..025c8429f Binary files /dev/null and b/the_ascension_tree/images/android-icon-72x72.png differ diff --git a/the_ascension_tree/images/android-icon-96x96.png b/the_ascension_tree/images/android-icon-96x96.png new file mode 100644 index 000000000..85e08b11d Binary files /dev/null and b/the_ascension_tree/images/android-icon-96x96.png differ diff --git a/the_ascension_tree/images/apple-icon-114x114.png b/the_ascension_tree/images/apple-icon-114x114.png new file mode 100644 index 000000000..56a108802 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-114x114.png differ diff --git a/the_ascension_tree/images/apple-icon-120x120.png b/the_ascension_tree/images/apple-icon-120x120.png new file mode 100644 index 000000000..c95a2bae0 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-120x120.png differ diff --git a/the_ascension_tree/images/apple-icon-144x144.png b/the_ascension_tree/images/apple-icon-144x144.png new file mode 100644 index 000000000..9e593f53f Binary files /dev/null and b/the_ascension_tree/images/apple-icon-144x144.png differ diff --git a/the_ascension_tree/images/apple-icon-152x152.png b/the_ascension_tree/images/apple-icon-152x152.png new file mode 100644 index 000000000..bbd6dbbe1 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-152x152.png differ diff --git a/the_ascension_tree/images/apple-icon-180x180.png b/the_ascension_tree/images/apple-icon-180x180.png new file mode 100644 index 000000000..672dcff08 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-180x180.png differ diff --git a/the_ascension_tree/images/apple-icon-57x57.png b/the_ascension_tree/images/apple-icon-57x57.png new file mode 100644 index 000000000..f0bbd6927 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-57x57.png differ diff --git a/the_ascension_tree/images/apple-icon-60x60.png b/the_ascension_tree/images/apple-icon-60x60.png new file mode 100644 index 000000000..0ceb7b881 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-60x60.png differ diff --git a/the_ascension_tree/images/apple-icon-72x72.png b/the_ascension_tree/images/apple-icon-72x72.png new file mode 100644 index 000000000..025c8429f Binary files /dev/null and b/the_ascension_tree/images/apple-icon-72x72.png differ diff --git a/the_ascension_tree/images/apple-icon-76x76.png b/the_ascension_tree/images/apple-icon-76x76.png new file mode 100644 index 000000000..2633274a5 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-76x76.png differ diff --git a/the_ascension_tree/images/apple-icon-precomposed.png b/the_ascension_tree/images/apple-icon-precomposed.png new file mode 100644 index 000000000..2b4455424 Binary files /dev/null and b/the_ascension_tree/images/apple-icon-precomposed.png differ diff --git a/the_ascension_tree/images/apple-icon.png b/the_ascension_tree/images/apple-icon.png new file mode 100644 index 000000000..2b4455424 Binary files /dev/null and b/the_ascension_tree/images/apple-icon.png differ diff --git a/the_ascension_tree/images/favicon-16x16.png b/the_ascension_tree/images/favicon-16x16.png new file mode 100644 index 000000000..1c97127ce Binary files /dev/null and b/the_ascension_tree/images/favicon-16x16.png differ diff --git a/the_ascension_tree/images/favicon-32x32.png b/the_ascension_tree/images/favicon-32x32.png new file mode 100644 index 000000000..a06493cdd Binary files /dev/null and b/the_ascension_tree/images/favicon-32x32.png differ diff --git a/the_ascension_tree/images/favicon-96x96.png b/the_ascension_tree/images/favicon-96x96.png new file mode 100644 index 000000000..85e08b11d Binary files /dev/null and b/the_ascension_tree/images/favicon-96x96.png differ diff --git a/the_ascension_tree/images/ms-icon-144x144.png b/the_ascension_tree/images/ms-icon-144x144.png new file mode 100644 index 000000000..9e593f53f Binary files /dev/null and b/the_ascension_tree/images/ms-icon-144x144.png differ diff --git a/the_ascension_tree/images/ms-icon-150x150.png b/the_ascension_tree/images/ms-icon-150x150.png new file mode 100644 index 000000000..8e4106a8a Binary files /dev/null and b/the_ascension_tree/images/ms-icon-150x150.png differ diff --git a/the_ascension_tree/images/ms-icon-310x310.png b/the_ascension_tree/images/ms-icon-310x310.png new file mode 100644 index 000000000..ebf28b86e Binary files /dev/null and b/the_ascension_tree/images/ms-icon-310x310.png differ diff --git a/the_ascension_tree/images/ms-icon-70x70.png b/the_ascension_tree/images/ms-icon-70x70.png new file mode 100644 index 000000000..eb395e9e5 Binary files /dev/null and b/the_ascension_tree/images/ms-icon-70x70.png differ diff --git a/the_ascension_tree/images/options_wheel.png b/the_ascension_tree/images/options_wheel.png new file mode 100644 index 000000000..9a60fff4c Binary files /dev/null and b/the_ascension_tree/images/options_wheel.png differ diff --git a/the_ascension_tree/index.html b/the_ascension_tree/index.html new file mode 100644 index 000000000..71446478d --- /dev/null +++ b/the_ascension_tree/index.html @@ -0,0 +1,149 @@ + + + + The Ascension Tree + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

You have 0 points

+

(+1.000/s)

+ + +
+
+
+
+
+
+ +
+

The Ascension Tree

+

 

+

You have 0

+

(+/s)

+

× from lower layers

+

× to higher layers

+
+ +
+ +

Upgrades

+
+
+
+
+
+
+ + Want a game with human-generated layers? Check out Matter Dimensions by Semenar or Game Dev Tree by thepaperpilot. + + + +
+ + diff --git a/the_ascension_tree/js/break_eternity.min.js b/the_ascension_tree/js/break_eternity.min.js new file mode 100644 index 000000000..748a0bfe8 --- /dev/null +++ b/the_ascension_tree/js/break_eternity.min.js @@ -0,0 +1 @@ +"use strict";function _instanceof(t,r){return null!=r&&"undefined"!=typeof Symbol&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](t):t instanceof r}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t,r){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(t=t||self).Decimal=r()}(void 0,function(){var t=Math.log10(9e15),r=function(){for(var t=[],r=-323;r<=308;r++)t.push(Number("1e"+r));return function(r){return t[r+323]}}(),i=function(t){return h.fromValue_noAlloc(t)},e=function(t,r,i){return h.fromComponents(t,r,i)},n=function(t,r,i){return h.fromComponents_noNormalize(t,r,i)},a=function(t,r){var i=r+1,e=Math.ceil(Math.log10(Math.abs(t))),n=Math.round(t*Math.pow(10,i-e))*Math.pow(10,e-i);return parseFloat(n.toFixed(Math.max(i-e,0)))},s=function(t){return Math.sign(t)*Math.log10(Math.abs(t))},o=function(t){var r,i,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;if(!Number.isFinite(t))return t;if(0===t)return t;if(1===t)return.5671432904097838;r=t<10?0:Math.log(t)-Math.log(Math.log(t));for(var n=0;n<100;++n){if(i=(t*Math.exp(-r)+r*r)/(r+1),Math.abs(i-r)1&&void 0!==arguments[1]?arguments[1]:2,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(1,0,1);return i(t).tetrate(r,e)},h.iteratedexp=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(1,0,1);return i(t).iteratedexp(r,e)},h.iteratedlog=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return i(t).iteratedlog(r,e)},h.layeradd10=function(t,r){return i(t).layeradd10(r)},h.layeradd=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10;return i(t).layeradd(r,e)},h.slog=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;return i(t).slog(r)},h.lambertw=function(t){return i(t).lambertw()},h.ssqrt=function(t){return i(t).ssqrt()},h.pentate=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(1,0,1);return i(t).pentate(r,e)},h.affordGeometricSeries=function(t,r,e,n){return this.affordGeometricSeries_core(i(t),i(r),i(e),n)},h.sumGeometricSeries=function(t,r,e,n){return this.sumGeometricSeries_core(t,i(r),i(e),n)},h.affordArithmeticSeries=function(t,r,e,n){return this.affordArithmeticSeries_core(i(t),i(r),i(e),i(n))},h.sumArithmeticSeries=function(t,r,e,n){return this.sumArithmeticSeries_core(i(t),i(r),i(e),i(n))},h.efficiencyOfPurchase=function(t,r,e){return this.efficiencyOfPurchase_core(i(t),i(r),i(e))},h.randomDecimalForTesting=function(t){if(20*Math.random()<1)return n(0,0,0);var r=Math.random()>.5?1:-1;if(20*Math.random()<1)return n(r,0,1);var i=Math.floor(Math.random()*(t+1)),a=0===i?616*Math.random()-308:16*Math.random();Math.random()>.9&&(a=Math.trunc(a));var s=Math.pow(10,a);return Math.random()>.9&&(s=Math.trunc(s)),e(r,i,s)},h.affordGeometricSeries_core=function(t,r,i,e){var n=r.mul(i.pow(e));return h.floor(t.div(n).mul(i.sub(1)).add(1).log10().div(i.log10()))},h.sumGeometricSeries_core=function(t,r,i,e){return r.mul(i.pow(e)).mul(h.sub(1,i.pow(t))).div(h.sub(1,i))},h.affordArithmeticSeries_core=function(t,r,i,e){var n=r.add(e.mul(i)).sub(i.div(2)),a=n.pow(2);return n.neg().add(a.add(i.mul(t).mul(2)).sqrt()).div(i).floor()},h.sumArithmeticSeries_core=function(t,r,i,e){var n=r.add(e.mul(i));return t.div(2).mul(n.mul(2).plus(t.sub(1).mul(i)))},h.efficiencyOfPurchase_core=function(t,r,i){return t.div(r).add(t.div(i))},h.prototype.normalize=function(){if(0===this.sign||0===this.mag&&0===this.layer)return this.sign=0,this.mag=0,this.layer=0,this;if(0===this.layer&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),0===this.layer&&this.mag<1/9e15)return this.layer+=1,this.mag=Math.log10(this.mag),this;var r=Math.abs(this.mag),i=Math.sign(this.mag);if(r>=9e15)return this.layer+=1,this.mag=i*Math.log10(r),this;for(;r0;)this.layer-=1,0===this.layer?this.mag=Math.pow(10,this.mag):(this.mag=i*Math.pow(10,r),r=Math.abs(this.mag),i=Math.sign(this.mag));return 0===this.layer&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):0===this.mag&&(this.sign=0)),this},h.prototype.fromComponents=function(t,r,i){return this.sign=t,this.layer=r,this.mag=i,this.normalize(),this},h.prototype.fromComponents_noNormalize=function(t,r,i){return this.sign=t,this.layer=r,this.mag=i,this},h.prototype.fromMantissaExponent=function(t,r){return this.layer=1,this.sign=Math.sign(t),t=Math.abs(t),this.mag=r+Math.log10(t),this.normalize(),this},h.prototype.fromMantissaExponent_noNormalize=function(t,r){return this.fromMantissaExponent(t,r),this},h.prototype.fromDecimal=function(t){return this.sign=t.sign,this.layer=t.layer,this.mag=t.mag,this},h.prototype.fromNumber=function(t){return this.mag=Math.abs(t),this.sign=Math.sign(t),this.layer=0,this.normalize(),this};h.prototype.fromString=function(t){var r=(t=t.replace(",","")).split("^^^");if(2===r.length){var n=parseFloat(r[0]),a=parseFloat(r[1]),o=1;if(2===(l=r[1].split(";")).length){o=parseFloat(l[1]);isFinite(o)||(o=1)}if(isFinite(n)&&isFinite(a)){var u=h.pentate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var g=t.split("^^");if(2===g.length){var l;n=parseFloat(g[0]),a=parseFloat(g[1]);if(2===(l=g[1].split(";")).length){o=parseFloat(l[1]);isFinite(o)||(o=1)}if(isFinite(n)&&isFinite(a)){u=h.tetrate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var m,f=t.split("^");if(2===f.length){n=parseFloat(f[0]);var c=parseFloat(f[1]);if(isFinite(n)&&isFinite(c)){u=h.pow(n,c);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}if(2===(m=(t=t.trim().toLowerCase()).split("pt")).length){n=10,a=parseFloat(m[0]),m[1]=m[1].replace("(",""),m[1]=m[1].replace(")","");o=parseFloat(m[1]);if(isFinite(o)||(o=1),isFinite(n)&&isFinite(a)){u=h.tetrate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}if(2===(m=t.split("p")).length){n=10,a=parseFloat(m[0]),m[1]=m[1].replace("(",""),m[1]=m[1].replace(")","");o=parseFloat(m[1]);if(isFinite(o)||(o=1),isFinite(n)&&isFinite(a)){u=h.tetrate(n,a,o);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}}var p=t.split("e"),y=p.length-1;if(0===y){var d=parseFloat(t);if(isFinite(d))return this.fromNumber(d)}else if(1===y){d=parseFloat(t);if(isFinite(d)&&0!==d)return this.fromNumber(d)}var M=t.split("e^");if(2===M.length){this.sign=1,"-"==M[0].charAt(0)&&(this.sign=-1);for(var b="",N=0;N=43&&v<=57||101===v))return this.layer=parseFloat(b),this.mag=parseFloat(M[1].substr(N+1)),this.normalize(),this;b+=M[1].charAt(N)}}if(y<1)return this.sign=0,this.layer=0,this.mag=0,this;var _=parseFloat(p[0]);if(0===_)return this.sign=0,this.layer=0,this.mag=0,this;c=parseFloat(p[p.length-1]);if(y>=2){var F=parseFloat(p[p.length-2]);isFinite(F)&&(c*=Math.sign(F),c+=s(F))}if(isFinite(_))if(1===y)this.sign=Math.sign(_),this.layer=1,this.mag=c+Math.log10(Math.abs(_));else{if(this.sign=Math.sign(_),this.layer=y,2===y){u=h.mul(e(1,2,c),i(_));return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,this}this.mag=c}else this.sign="-"===p[0]?-1:1,this.layer=y,this.mag=c;return this.normalize(),this},h.prototype.fromValue=function(t){return _instanceof(t,h)?this.fromDecimal(t):"number"==typeof t?this.fromNumber(t):"string"==typeof t?this.fromString(t):(this.sign=0,this.layer=0,this.mag=0,this)},h.prototype.toNumber=function(){return Number.isFinite(this.layer)?0===this.layer?this.sign*this.mag:1===this.layer?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN},h.prototype.mantissaWithDecimalPlaces=function(t){return isNaN(this.m)?Number.NaN:0===this.m?0:a(this.m,t)},h.prototype.magnitudeWithDecimalPlaces=function(t){return isNaN(this.mag)?Number.NaN:0===this.mag?0:a(this.mag,t)},h.prototype.toString=function(){return 0===this.layer?this.mag<1e21&&this.mag>1e-7||0===this.mag?(this.sign*this.mag).toString():this.m+"e"+this.e:1===this.layer?this.m+"e"+this.e:this.layer<=5?(-1===this.sign?"-":"")+"e".repeat(this.layer)+this.mag:(-1===this.sign?"-":"")+"(e^"+this.layer+")"+this.mag},h.prototype.toExponential=function(t){return 0===this.layer?(this.sign*this.mag).toExponential(t):this.toStringWithDecimalPlaces(t)},h.prototype.toFixed=function(t){return 0===this.layer?(this.sign*this.mag).toFixed(t):this.toStringWithDecimalPlaces(t)},h.prototype.toPrecision=function(t){return this.e<=-7?this.toExponential(t-1):t>this.e?this.toFixed(t-this.exponent-1):this.toExponential(t-1)},h.prototype.valueOf=function(){return this.toString()},h.prototype.toJSON=function(){return this.toString()},h.prototype.toStringWithDecimalPlaces=function(t){return 0===this.layer?this.mag<1e21&&this.mag>1e-7||0===this.mag?(this.sign*this.mag).toFixed(t):a(this.m,t)+"e"+a(this.e,t):1===this.layer?a(this.m,t)+"e"+a(this.e,t):this.layer<=5?(-1===this.sign?"-":"")+"e".repeat(this.layer)+a(this.mag,t):(-1===this.sign?"-":"")+"(e^"+this.layer+")"+a(this.mag,t)},h.prototype.abs=function(){return n(0===this.sign?0:1,this.layer,this.mag)},h.prototype.neg=function(){return n(-this.sign,this.layer,this.mag)},h.prototype.negate=function(){return this.neg()},h.prototype.negated=function(){return this.neg()},h.prototype.sign=function(){return this.sign},h.prototype.sgn=function(){return this.sign},h.prototype.round=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.round(this.mag)):this},h.prototype.floor=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.floor(this.mag)):this},h.prototype.ceil=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.ceil(this.mag)):this},h.prototype.trunc=function(){return this.mag<0?h.dZero:0===this.layer?e(this.sign,0,Math.trunc(this.mag)):this},h.prototype.add=function(t){var r,a,s=i(t);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(s.layer))return s;if(0===this.sign)return s;if(0===s.sign)return this;if(this.sign===-s.sign&&this.layer===s.layer&&this.mag===s.mag)return n(0,0,0);if(this.layer>=2||s.layer>=2)return this.maxabs(s);if(h.cmpabs(this,s)>0?(r=this,a=s):(r=s,a=this),0===r.layer&&0===a.layer)return i(r.sign*r.mag+a.sign*a.mag);var o=r.layer*Math.sign(r.mag),u=a.layer*Math.sign(a.mag);if(o-u>=2)return r;if(0===o&&-1===u){if(Math.abs(a.mag-Math.log10(r.mag))>17)return r;var g=Math.pow(10,Math.log10(r.mag)-a.mag),l=a.sign+r.sign*g;return e(Math.sign(l),1,a.mag+Math.log10(Math.abs(l)))}if(1===o&&0===u){if(Math.abs(r.mag-Math.log10(a.mag))>17)return r;g=Math.pow(10,r.mag-Math.log10(a.mag)),l=a.sign+r.sign*g;return e(Math.sign(l),1,Math.log10(a.mag)+Math.log10(Math.abs(l)))}if(Math.abs(r.mag-a.mag)>17)return r;g=Math.pow(10,r.mag-a.mag),l=a.sign+r.sign*g;return e(Math.sign(l),1,a.mag+Math.log10(Math.abs(l)))},h.prototype.plus=function(t){return this.add(t)},h.prototype.sub=function(t){return this.add(i(t).neg())},h.prototype.subtract=function(t){return this.sub(t)},h.prototype.minus=function(t){return this.sub(t)},h.prototype.mul=function(t){var r,a,s=i(t);if(!Number.isFinite(this.layer))return this;if(!Number.isFinite(s.layer))return s;if(0===this.sign||0===s.sign)return n(0,0,0);if(this.layer===s.layer&&this.mag===-s.mag)return n(this.sign*s.sign,0,1);if(this.layer>s.layer||this.layer==s.layer&&Math.abs(this.mag)>Math.abs(s.mag)?(r=this,a=s):(r=s,a=this),0===r.layer&&0===a.layer)return i(r.sign*a.sign*r.mag*a.mag);if(r.layer>=3||r.layer-a.layer>=2)return e(r.sign*a.sign,r.layer,r.mag);if(1===r.layer&&0===a.layer)return e(r.sign*a.sign,1,r.mag+Math.log10(a.mag));if(1===r.layer&&1===a.layer)return e(r.sign*a.sign,1,r.mag+a.mag);if(2===r.layer&&1===a.layer){var o=e(Math.sign(r.mag),r.layer-1,Math.abs(r.mag)).add(e(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return e(r.sign*a.sign,o.layer+1,o.sign*o.mag)}if(2===r.layer&&2===a.layer){o=e(Math.sign(r.mag),r.layer-1,Math.abs(r.mag)).add(e(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return e(r.sign*a.sign,o.layer+1,o.sign*o.mag)}throw Error("Bad arguments to mul: "+this+", "+t)},h.prototype.multiply=function(t){return this.mul(t)},h.prototype.times=function(t){return this.mul(t)},h.prototype.div=function(t){var r=i(t);return this.mul(r.recip())},h.prototype.divide=function(t){return this.div(t)},h.prototype.divideBy=function(t){return this.div(t)},h.prototype.dividedBy=function(t){return this.div(t)},h.prototype.recip=function(){return 0===this.mag?h.dNaN:0===this.layer?e(this.sign,0,1/this.mag):e(this.sign,this.layer,-this.mag)},h.prototype.reciprocal=function(){return this.recip()},h.prototype.reciprocate=function(){return this.recip()},h.prototype.cmp=function(t){var r=i(t);return this.sign>r.sign?1:this.sign0?this.layer:-this.layer,n=r.mag>0?r.layer:-r.layer;return e>n?1:er.mag?1:this.mag0?r:this},h.prototype.clamp=function(t,r){return this.max(t).min(r)},h.prototype.clampMin=function(t){return this.max(t)},h.prototype.clampMax=function(t){return this.min(t)},h.prototype.cmp_tolerance=function(t,r){var e=i(t);return this.eq_tolerance(e,r)?0:this.cmp(e)},h.prototype.compare_tolerance=function(t,r){return this.cmp_tolerance(t,r)},h.prototype.eq_tolerance=function(t,r){var e=i(t);if(null==r&&(r=1e-7),this.sign!==e.sign)return!1;if(Math.abs(this.layer-e.layer)>1)return!1;var n=this.mag,a=e.mag;return this.layer>e.layer&&(a=s(a)),this.layer0?e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):e(1,0,Math.log10(this.mag))},h.prototype.log10=function(){return this.sign<=0?h.dNaN:this.layer>0?e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):e(this.sign,0,Math.log10(this.mag))},h.prototype.log=function(t){return t=i(t),this.sign<=0?h.dNaN:t.sign<=0?h.dNaN:1===t.sign&&0===t.layer&&1===t.mag?h.dNaN:0===this.layer&&0===t.layer?e(this.sign,0,Math.log(this.mag)/Math.log(t.mag)):h.div(this.log10(),t.log10())},h.prototype.log2=function(){return this.sign<=0?h.dNaN:0===this.layer?e(this.sign,0,Math.log2(this.mag)):1===this.layer?e(Math.sign(this.mag),0,3.321928094887362*Math.abs(this.mag)):2===this.layer?e(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))},h.prototype.ln=function(){return this.sign<=0?h.dNaN:0===this.layer?e(this.sign,0,Math.log(this.mag)):1===this.layer?e(Math.sign(this.mag),0,2.302585092994046*Math.abs(this.mag)):2===this.layer?e(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):e(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))},h.prototype.logarithm=function(t){return this.log(t)},h.prototype.pow=function(t){var r=this,e=i(t);if(0===r.sign)return r;if(1===r.sign&&0===r.layer&&1===r.mag)return r;if(0===e.sign)return n(1,0,1);if(1===e.sign&&0===e.layer&&1===e.mag)return r;var a=r.absLog10().mul(e).pow10();return-1===this.sign&&e.toNumber()%2==1?a.neg():a},h.prototype.pow10=function(){if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return h.dNaN;var t=this;if(0===t.layer){var r=Math.pow(10,t.sign*t.mag);if(Number.isFinite(r)&&Math.abs(r)>.1)return e(1,0,r);if(0===t.sign)return h.dOne;t=n(t.sign,t.layer+1,Math.log10(t.mag))}return t.sign>0&&t.mag>0?e(t.sign,t.layer+1,t.mag):t.sign<0&&t.mag>0?e(-t.sign,t.layer+1,-t.mag):h.dOne},h.prototype.pow_base=function(t){return i(t).pow(this)},h.prototype.root=function(t){var r=i(t);return this.pow(r.recip())},h.prototype.factorial=function(){return this.mag<0?this.toNumber().add(1).gamma():0===this.layer?this.add(1).gamma():1===this.layer?h.exp(h.mul(this,h.ln(this).sub(1))):h.exp(this)},h.prototype.gamma=function(){if(this.mag<0)return this.recip();if(0===this.layer){if(this.lt(n(1,0,24)))return i(function(t){if(!isFinite(t))return t;if(t<-50)return t===Math.trunc(t)?Number.NEGATIVE_INFINITY:0;for(var r=1;t<10;)r*=t,++t;var i=.9189385332046727;i+=(.5+(t-=1))*Math.log(t),i-=t;var e=t*t,n=t;return i+=1/(12*n),i+=1/(360*(n*=e)),i+=1/(1260*(n*=e)),i+=1/(1680*(n*=e)),i+=1/(1188*(n*=e)),i+=691/(360360*(n*=e)),i+=7/(1092*(n*=e)),i+=3617/(122400*(n*=e)),Math.exp(i)/r}(this.sign*this.mag));var t=this.mag-1,r=.9189385332046727;r+=(t+.5)*Math.log(t);var e=t*t,a=t,s=12*a,o=1/s,u=(r-=t)+o;if(u===r)return h.exp(r);if((u=(r=u)-(o=1/(s=360*(a*=e))))===r)return h.exp(r);r=u;var g=1/(s=1260*(a*=e));return r+=g,r-=g=1/(s=1680*(a*=e)),h.exp(r)}return 1===this.layer?h.exp(h.mul(this,h.ln(this).sub(1))):h.exp(this)},h.prototype.lngamma=function(){return this.gamma().ln()},h.prototype.exp=function(){return this.mag<0?h.dOne:0===this.layer&&this.mag<=709.7?i(Math.exp(this.sign*this.mag)):0===this.layer?e(1,1,this.sign*Math.log10(Math.E)*this.mag):1===this.layer?e(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):e(1,this.layer+1,this.sign*this.mag)},h.prototype.sqr=function(){return this.pow(2)},h.prototype.sqrt=function(){if(0===this.layer)return i(Math.sqrt(this.sign*this.mag));if(1===this.layer)return e(1,2,Math.log10(this.mag)-.3010299956639812);var t=h.div(n(this.sign,this.layer-1,this.mag),n(1,0,2));return t.layer+=1,t.normalize(),t},h.prototype.cube=function(){return this.pow(3)},h.prototype.cbrt=function(){return this.pow(1/3)},h.prototype.tetrate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(1,0,1);if(t===Number.POSITIVE_INFINITY){var e=h.ln(this).neg();return e.lambertw().div(e)}if(t<0)return h.iteratedlog(r,this,-t);r=i(r);var a=t-(t=Math.trunc(t));0!==a&&(r.eq(h.dOne)?(++t,r=new h(a)):r=this.eq(10)?r.layeradd10(a):r.layeradd(a,this));for(var s=0;s3)return n(r.sign,r.layer+(t-s-1),r.mag);if(s>100)return r}return r},h.prototype.iteratedexp=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(1,0,1);return this.tetrate(t,r)},h.prototype.iteratedlog=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(r<0)return h.tetrate(t,-r,this);t=i(t);var e=i(this),n=r-(r=Math.trunc(r));if(e.layer-t.layer>3){var a=Math.min(r,e.layer-t.layer-3);r-=a,e.layer-=a}for(var s=0;s100)return e}return n>0&&n<1&&(e=t.eq(10)?e.layeradd10(-n):e.layeradd(-n,t)),e},h.prototype.slog=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;if(this.mag<0)return h.dNegOne;t=i(t);var r=0,e=i(this);if(e.layer-t.layer>3){var n=e.layer-t.layer-3;r+=n,e.layer-=n}for(var a=0;a<100;++a)if(e.lt(h.dZero))e=h.pow(t,e),r-=1;else{if(e.lte(h.dOne))return i(r+e.toNumber()-1);r+=1,e=h.log(e,t)}return i(r)},h.prototype.layeradd10=function(t){t=h.fromValue_noAlloc(t).toNumber();var r,e=i(this);t>=1&&(t-=r=Math.trunc(t),e.layer+=r);if(t<=-1&&(t-=r=Math.trunc(t),e.layer+=r,e.layer<0))for(var n=0;n<100;++n){if(e.layer++,e.mag=Math.log10(e.mag),!isFinite(e.mag))return e;if(e.layer>=0)break}if(t>0){for(var a=0;Number.isFinite(e.mag)&&e.mag<10;)e.mag=Math.pow(10,e.mag),++a;for(e.mag>1e10&&(e.mag=Math.log10(e.mag),e.layer++),(s=Math.log10(Math.log(1e10)/Math.log(e.mag),10))0;)e.mag=Math.log10(e.mag),--a}else if(t<0){for(a=0;Number.isFinite(e.mag)&&e.mag<10;)e.mag=Math.pow(10,e.mag),++a;var s;for(e.mag>1e10&&(e.mag=Math.log10(e.mag),e.layer++),(s=Math.log10(1/Math.log10(e.mag)))>t&&(e.mag=1e10,e.layer--,t-=s),e.mag=Math.pow(e.mag,Math.pow(10,t));a>0;)e.mag=Math.log10(e.mag),--a}for(;e.layer<0;)e.layer++,e.mag=Math.log10(e.mag);return e.normalize(),e},h.prototype.layeradd=function(t,r){var i=this.slog(r).toNumber()+t;return i>=0?h.tetrate(r,i):Number.isFinite(i)?i>=-1?h.log(h.tetrate(r,i+1),r):void h.log(h.log(h.tetrate(r,i+2),r),r):h.dNaN},h.prototype.lambertw=function(){if(this.lt(-.3678794411710499))throw Error("lambertw is unimplemented for results less than -1, sorry!");return this.mag<0?i(o(this.toNumber())):0===this.layer?i(o(this.sign*this.mag)):1===this.layer?u(this):2===this.layer?u(this):this.layer>=3?n(this.sign,this.layer-1,this.mag):void 0};var u=function(t){var r,i,e,n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10;if(!Number.isFinite(t.mag))return t;if(0===t)return t;if(1===t)return.5671432904097838;h.abs(t);r=h.ln(t);for(var s=0;s<100;++s){if(i=h.exp(-r),e=r.sub(t.mul(i)),n=r.sub(e.div(r.add(1).sub(r.add(2).mul(e).div(h.mul(2,r).add(2))))),h.abs(n.sub(r)).lt(h.abs(n).mul(a)))return n;r=n}throw Error("Iteration failed to converge: "+t)};return h.prototype.ssqrt=function(){if(1==this.sign&&this.layer>=3)return n(this.sign,this.layer-1,this.mag);var t=this.ln();return t.div(t.lambertw())},h.prototype.pentate=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(1,0,1);r=i(r);var e=t-(t=Math.trunc(t));0!==e&&(r.eq(h.dOne)?(++t,r=new h(e)):r=this.eq(10)?r.layeradd10(e):r.layeradd(e,this));for(var a=0;a10)return r}return r},h.prototype.sin=function(){return this.mag<0?this:0===this.layer?i(Math.sin(this.sign*this.mag)):n(0,0,0)},h.prototype.cos=function(){return this.mag<0?h.dOne:0===this.layer?i(Math.cos(this.sign*this.mag)):n(0,0,0)},h.prototype.tan=function(){return this.mag<0?this:0===this.layer?i(Math.tan(this.sign*this.mag)):n(0,0,0)},h.prototype.asin=function(){return this.mag<0?this:0===this.layer?i(Math.asin(this.sign*this.mag)):n(Number.NaN,Number.NaN,Number.NaN)},h.prototype.acos=function(){return this.mag<0?i(Math.acos(this.toNumber())):0===this.layer?i(Math.acos(this.sign*this.mag)):n(Number.NaN,Number.NaN,Number.NaN)},h.prototype.atan=function(){return this.mag<0?this:0===this.layer?i(Math.atan(this.sign*this.mag)):i(Math.atan(Infinity*this.sign))},h.prototype.sinh=function(){return this.exp().sub(this.negate().exp()).div(2)},h.prototype.cosh=function(){return this.exp().add(this.negate().exp()).div(2)},h.prototype.tanh=function(){return this.sinh().div(this.cosh())},h.prototype.asinh=function(){return h.ln(this.add(this.sqr().add(1).sqrt()))},h.prototype.acosh=function(){return h.ln(this.add(this.sqr().sub(1).sqrt()))},h.prototype.atanh=function(){return this.abs().gte(1)?n(Number.NaN,Number.NaN,Number.NaN):h.ln(this.add(1).div(i(1).sub(this))).div(2)},h.prototype.ascensionPenalty=function(t){return 0===t?this:this.root(h.pow(10,t))},h.prototype.egg=function(){return this.add(9)},h.prototype.lessThanOrEqualTo=function(t){return this.cmp(t)<1},h.prototype.lessThan=function(t){return this.cmp(t)<0},h.prototype.greaterThanOrEqualTo=function(t){return this.cmp(t)>-1},h.prototype.greaterThan=function(t){return this.cmp(t)>0},h}();return h.dZero=n(0,0,0),h.dOne=n(1,0,1),h.dNegOne=n(-1,0,1),h.dTwo=n(1,0,2),h.dTen=n(1,0,10),h.dNaN=n(Number.NaN,Number.NaN,Number.NaN),h.dInf=n(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h.dNegInf=n(-1,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),h.dNumberMax=e(1,0,Number.MAX_VALUE),h.dNumberMin=e(1,0,Number.MIN_VALUE),h}); diff --git a/the_ascension_tree/js/classes/layer.js b/the_ascension_tree/js/classes/layer.js new file mode 100644 index 000000000..be928f2d7 --- /dev/null +++ b/the_ascension_tree/js/classes/layer.js @@ -0,0 +1,509 @@ +class Layer { + constructor(seed, id=0, parent_layer=undefined, is_ngminus=false) { + this.parent_layer = parent_layer; + this.is_ngminus = is_ngminus; + + this.id = id; + + this.points = new Decimal(0); + + this.upgrades = {}; + + this.child_left = undefined; + this.child_right = undefined; + + this.boost = new Decimal(1); + + this.points_name = ""; + + if (parent_layer !== undefined) { + if (this.is_ngminus) parent_layer.child_left = this; + else parent_layer.child_right = this; + + if (this.is_ngminus) { + this.upgrade_time = parent_layer.upgrade_time.mul(2); + this.final_goal = parent_layer.final_goal.pow(1.2); + } + else { + this.upgrade_time = parent_layer.upgrade_time.mul(1.5); + this.final_goal = parent_layer.final_goal.pow(3); + } + + this.name = parent_layer.name; + if (this.name == "Original") this.name = "NG"; + if (this.is_ngminus) this.name += "-"; + else this.name += "+"; + + this.depth = parent_layer.depth + 1; + + this.coord = 2 * parent_layer.coord; + if (!this.is_ngminus) this.coord += 1; + this.coord = this.coord % (2 ** 32); + + if (this.is_ngminus) this.color = mixColors(parent_layer.color, [72, 159, 181]); + else this.color = mixColors(parent_layer.color, [214, 40, 40]); + } + else { + this.upgrade_time = new Decimal(10); + this.final_goal = new Decimal(1e10); + this.name = "Original"; + this.depth = 0; + this.coord = 0; + this.color = [19, 138, 54]; + } + + this.left_branch = false; + this.right_branch = false; + + this.rng = sfc32(this.depth, this.coord, seed, 0xDEADBEEF); + for (let i = 0; i < 15; i++) this.rng(); + + if (parent_layer != undefined) this.points_name = choose(ITY_WORDS, this.rng); + + this.el = document.createElement("div"); + this.el.className = "tree-node-container"; + if (parent_layer === undefined) { + this.el.style.top = "0px"; + this.el.style.left = "0px"; + this.el.style.transform = "translate(-50%, -50%)"; + document.getElementById("tree").appendChild(this.el); + } else { + this.el.style.top = "15em"; + this.el.style.left = (this.is_ngminus ? "-" : "") + "10em"; + this.el.style.transform = ""; + parent_layer.el.appendChild(this.el); + } + + this.nodeEl = document.createElement("div"); + this.nodeEl.onclick = () => this.selectLayer(); + this.nodeEl.className = "tree-node"; + this.nodeEl.style.backgroundColor = formAsRGB(this.color); + this.el.appendChild(this.nodeEl); + + this.label = document.createElement("p"); + this.label.className = "node-text"; + this.label.innerText = parent_layer === undefined ? "OG" : this.points_name.slice(0, 3); + this.nodeEl.appendChild(this.label); + + this.unlockReq = document.createElement("p"); + this.unlockReq.className = "unlock-req"; + this.unlockReq.innerText = `Get ${formatNumber(this.final_goal)} ${this.points_name ? this.points_name + " points" : "points"} to unlock`; + this.el.appendChild(this.unlockReq); + + this.generateUpgrades(); + this.balanceUpgrades(); + this.screenUpdate(); + } + + generateUpgrade() { + let type_probs = { + "add": Object.keys(this.upgrades).length == 0 ? (this.depth == 0 ? 0 : 1) : 1 / Object.keys(this.upgrades).length, + "mul": 0.5, + "pow": Math.pow(Object.keys(this.upgrades).length, 2) / 100, + "mul_log": Math.pow(Object.keys(this.upgrades).length, 0.5) / 10, + "mul_pow": 0//Math.pow(Object.keys(this.upgrades).length, 1) / 50 + } + let type = chooseDict(type_probs, this.rng); + + let target_probs = { + "points": 10 + } + if (type != "mul_log" && type != "mul_pow") { + for (let key of Object.keys(this.upgrades)) { + if (this.upgrades[key].type == type) continue; + if (this.upgrades[key].type == "mul_log" || this.upgrades[key].type == "mul_pow" || this.upgrades[key].target != "points") continue; + if (type == "mul" && this.upgrades[key].type != "pow") target_probs[key] = 1; + if (type == "pow" && this.upgrades[key].type != "add") target_probs[key] = 2; + } + } + let target = chooseDict(target_probs, this.rng); + + let upgrade = new Upgrade(this, this.depth + "_" + Object.keys(this.upgrades).length, type, 0, target, 0, this.rng); + + this.upgrades[upgrade.id] = upgrade; + } + + generateUpgrades() { + if (this.is_ngminus) for (let i = 0; i < 4; i++) this.generateUpgrade(); + if (this.parent_layer == undefined) for (let i = 0; i < 8; i++) this.generateUpgrade(); + else { + for (let key of Object.keys(this.parent_layer.upgrades)) { + this.upgrades[key] = new Upgrade(this, key, 0, 0, "points", 0); + this.upgrades[key].copyUpgrade(this.parent_layer.upgrades[key]); + } + if (!this.is_ngminus) for (let i = 0; i < 4; i++) this.generateUpgrade(); + } + } + + balanceUpgrades() { + let upgrades_left = Object.keys(this.upgrades).length; + let last_target = new Decimal(1); + let inflation_precaution = 1; + for (let key of Object.keys(this.upgrades)) { + let separation_pow = upgrades_left; + if (this.upgrades[key].type == "add") separation_pow = Math.pow(separation_pow, 1.9 + 0.2 * this.rng()); + if (this.upgrades[key].type == "mul") separation_pow = Math.pow(separation_pow, 1.15 + 0.2 * this.rng()); + if (this.upgrades[key].type == "pow") separation_pow = Math.pow(separation_pow, 0.65 + 0.2 * this.rng()); + if (this.upgrades[key].type == "mul_log") separation_pow = Math.pow(separation_pow, 0.9 + 0.2 * this.rng()); + if (this.upgrades[key].type == "mul_pow") separation_pow = Math.pow(separation_pow, 0.6 + 0.2 * this.rng()); + + let base_production = this.calculateProduction(this.depth == 0 ? 1 : 0.1 / this.depth, last_target); + let base_last_target = last_target.max(base_production.mul(this.upgrade_time)).min(this.final_goal.div(last_target).pow(1 / Math.pow(separation_pow, 0.25)).mul(last_target)); + + let base_target = properPrecision(this.final_goal.div(base_last_target).pow(1 / separation_pow).mul(base_last_target).round().max(last_target.add(1)).min(this.final_goal), 1); + + let target_production = new Decimal(base_target); + target_production = target_production.div(this.upgrade_time).max(base_production); + + this.upgrades[key].cost = new Decimal(last_target); + + //console.log(key + ", base: " + formatNumber(base_production)); + //console.log(key + ", target: " + formatNumber(target_production)); + + if (this.upgrades[key].target != "points") { + let root_upgrade = this.upgrades[key].target; + while (this.upgrades[root_upgrade].target != "points") root_upgrade = this.upgrades[root_upgrade].target; + base_production = new Decimal(this.depth == 0 ? 1 : 0.1 / this.depth); + for (let key2 of Object.keys(this.upgrades)) { + if (this.upgrades[key2].target != "points") continue; + base_production = this.upgrades[key2].applyEffect(base_production, last_target); + if (key2 == root_upgrade) break; + } + for (let key2 of Object.keys(this.upgrades).reverse()) { + if (key2 == root_upgrade) break; + if (this.upgrades[key2].target != "points") continue; + target_production = this.upgrades[key2].applyReverseEffect(target_production, last_target); + } + if (this.upgrades[root_upgrade].type == "add") { + //console.log(key + " unraveling, base: " + formatNumber(base_production)); + //console.log(key + " unraveling, target: " + formatNumber(target_production)); + let other_prod = base_production.sub(this.upgrades[root_upgrade].applyEffect(1)); + //console.log("other_prod: " + formatNumber(other_prod)); + base_production = this.upgrades[root_upgrade].applyEffect(1); + target_production = target_production.sub(other_prod); + } + if (this.upgrades[root_upgrade].type == "mul") { + //console.log(key + " unraveling, base: " + formatNumber(base_production)); + //console.log(key + " unraveling, target: " + formatNumber(target_production)); + let other_prod = base_production.div(this.upgrades[root_upgrade].applyEffect(1)); + //console.log("other_prod: " + formatNumber(other_prod)); + base_production = this.upgrades[root_upgrade].applyEffect(1); + target_production = target_production.div(other_prod); + } + if (this.upgrades[root_upgrade].type == "pow") { + //console.log(key + " unraveling, base: " + formatNumber(base_production)); + //console.log(key + " unraveling, target: " + formatNumber(target_production)); + let other_prod = base_production.root(this.upgrades[root_upgrade].applyEffect(1)).max(2); + //console.log("other_prod: " + formatNumber(other_prod)); + base_production = this.upgrades[root_upgrade].applyEffect(1); + target_production = target_production.log(other_prod); + } + + //console.log(key + ", result base: " + formatNumber(base_production)); + //console.log(key + ", result target: " + formatNumber(target_production)); + } + + //if (this.upgrades[key].type == "add") console.log("base result: " + formatNumber(new Decimal(target_production.sub(base_production)))); + //if (this.upgrades[key].type == "mul") console.log("base result: " + formatNumber(new Decimal(target_production.div(base_production)))); + //if (this.upgrades[key].type == "pow") console.log("base result: " + formatNumber(new Decimal(target_production.log(base_production.max(2))))); + //if (this.upgrades[key].type == "mul_log") console.log("base result: " + formatNumber(new Decimal(target_production.div(base_production).log(last_target.max(1).log10().max(2))))); + + this.upgrades[key].bought = true; + + if (this.upgrades[key].type == "add") this.upgrades[key].effect = properPrecision(new Decimal(target_production.sub(base_production).max(this.upgrades[key].target == "points" ? 1 : 0.001)), 0); + if (this.upgrades[key].type == "mul") this.upgrades[key].effect = properPrecision(new Decimal(target_production.div(base_production).max(1.1)), 1); + if (this.upgrades[key].type == "pow") this.upgrades[key].effect = properPrecision(new Decimal(target_production.log(base_production.max(2)).max(1.001)), 3); + if (this.upgrades[key].type == "mul_log") this.upgrades[key].effect = new Decimal(target_production.div(base_production).log(last_target.max(1).log10().max(2)).max(0.1)); + if (this.upgrades[key].type == "mul_pow") { + this.upgrades[key].effect = new Decimal(target_production.div(base_production).log(last_target.max(2)).max(0.001).min(inflation_precaution * 0.3)); + inflation_precaution -= this.upgrades[key].effect.toNumber(); + } + + last_target = new Decimal(base_target); + upgrades_left -= 1; + } + + for (let key of Object.keys(this.upgrades)) this.upgrades[key].bought = false; + } + + calculateProduction(base=1, total=this.points, ignore_add=false) { + let production = new Decimal(base); + for (let key of Object.keys(this.upgrades)) { + if (this.upgrades[key].target == "points" && (!ignore_add || this.upgrades[key].type != "add")) production = this.upgrades[key].applyEffect(production, total); + } + production = production.mul(this.boost); + return production; + } + + calculateReverseProduction(base=1, total=this.points, ignore_add=false) { + let production = new Decimal(base); + production = production.div(this.boost); + for (let key of Object.keys(this.upgrades).reverse()) { + if (this.upgrades[key].target == "points" && (!ignore_add || this.upgrades[key].type != "add")) production = this.upgrades[key].applyReverseEffect(production, total); + } + return production; + } + + getBoostValue() { + let boost = this.points.add(1).log(this.final_goal).pow(0.5).mul(3).add(1); + // Softcaps + if (boost.gt(10)) boost = boost.div(10).log10().add(1).mul(10); + if (boost.gt(1000)) boost = boost.div(1000).log10().add(1).mul(1000); + if (boost.gt(1e10)) boost = boost.div(1e10).log10().add(1).mul(1e10); + + return boost; + } + + propagateBoost() { + this.boost = new Decimal(1); + if (this.child_left != undefined) this.child_left.propagateBoost(); + if (this.child_right != undefined) this.child_right.propagateBoost(); + if (this.parent_layer != undefined) this.parent_layer.boost = this.parent_layer.boost.mul(this.boost).mul(this.getBoostValue()); + } + + processTimedelta(delta) { + this.points = this.points.add(this.calculateProduction(this.depth == 0 ? 1 : 0).mul(delta / 1000)); + if (this.right_branch) this.points = this.points.add(this.prestigeGain().mul(delta / 1000)); + if ((this.child_left == undefined || this.child_right == undefined) && this.points.gt(this.final_goal)) { + player.layers.push(new Layer(player.seed, player.layers.length, this, true)); + player.layers.push(new Layer(player.seed, player.layers.length, this, false)); + } + } + + screenUpdate() { + this.unlockReq.style.visibility = this.child_left === undefined || this.child_right === undefined ? "" : "hidden"; + let purchaseAvailable = Object.values(this.upgrades).some(upg => !upg.bought && upg.canBuy()) || + (this.parent_layer != undefined && this.child_left != undefined && this.child_left.points.gte(this.child_left.final_goal) && !this.left_branch) || + (this.parent_layer != undefined && this.child_right != undefined && this.child_right.points.gte(this.child_right.final_goal) && !this.right_branch); + let ascensionAvailable = Object.values(this.upgrades).some(upg => !upg.bought && !upg.canBuy() && this.points.add(this.prestigeGain()).gte(upg.cost)); + this.nodeEl.className = `tree-node${ascensionAvailable ? ' ascensionAvailable' : ''}${purchaseAvailable ? ' purchaseAvailable' : ''}`; + } + + screenUpdateCurrent() { + let layer_container = document.getElementById('layer_info'); + + layer_container.style.setProperty("--color-layer", formAsRGB(this.color)); + + layer_container.getElementsByClassName('type')[0].textContent = this.name; + layer_container.getElementsByClassName('point-amount')[0].textContent = formatNumber(this.points, true, true); + layer_container.getElementsByClassName('gain-amount')[0].textContent = formatNumber(this.calculateProduction(this.depth == 0 ? 1 : 0), true); + + layer_container.getElementsByClassName('boost-from-value')[0].textContent = formatNumber(this.boost, true); + layer_container.getElementsByClassName('boost-to-value')[0].textContent = formatNumber(this.getBoostValue(), true); + + if (this.parent_layer == undefined) layer_container.getElementsByClassName('boost-to')[0].style.visibility = "hidden"; + else layer_container.getElementsByClassName('boost-to')[0].style.visibility = ""; + + for (let element of layer_container.getElementsByClassName('point-name')) { + if (this.points_name == "") element.textContent = "points"; + else element.textContent = this.points_name + " points"; + } + + for (let element of layer_container.getElementsByClassName('prev-point-name')) { + if (this.parent_layer == undefined) element.textContent = "April fools"; + else if (this.parent_layer.points_name == "") element.textContent = "points"; + else element.textContent = this.parent_layer.points_name + " points"; + } + + if (this.parent_layer == undefined) layer_container.getElementsByClassName('prestige')[0].style.visibility = "hidden"; + else layer_container.getElementsByClassName('prestige')[0].style.visibility = ""; + + if (this.parent_layer == undefined || this.child_left == undefined) document.getElementById("qol_left").style.visibility = "hidden"; + else { + document.getElementById("qol_left").style.visibility = ""; + document.getElementById("qol_left").disabled = this.child_left.points.lt(this.child_left.final_goal); + if (this.left_branch) document.getElementById("qol_left").classList.add("complete"); + else document.getElementById("qol_left").classList.remove("complete"); + layer_container.getElementsByClassName('left-child-req')[0].textContent = formatNumber(this.child_left.final_goal, true); + layer_container.getElementsByClassName('left-child-name')[0].textContent = this.child_left.points_name + " points"; + } + + if (this.parent_layer == undefined || this.child_right == undefined) document.getElementById("qol_right").style.visibility = "hidden"; + else { + document.getElementById("qol_right").style.visibility = ""; + document.getElementById("qol_right").disabled = this.child_right.points.lt(this.child_right.final_goal); + if (this.right_branch) document.getElementById("qol_right").classList.add("complete"); + else document.getElementById("qol_right").classList.remove("complete"); + layer_container.getElementsByClassName('right-child-req')[0].textContent = formatNumber(this.child_right.final_goal, true); + layer_container.getElementsByClassName('right-child-name')[0].textContent = this.child_right.points_name + " points"; + } + + if (this.canPrestige()) { + layer_container.getElementsByClassName('prestige')[0].disabled = false; + layer_container.getElementsByClassName('cannot-prestige')[0].style.display = "none"; + layer_container.getElementsByClassName('can-prestige')[0].style.display = ""; + } + else { + layer_container.getElementsByClassName('prestige')[0].disabled = true; + layer_container.getElementsByClassName('cannot-prestige')[0].style.display = ""; + layer_container.getElementsByClassName('can-prestige')[0].style.display = "none"; + } + + for (let element of layer_container.getElementsByClassName('prestige-need')) { + element.textContent = formatNumber(this.prestigeNeed().add(1), true, true); + } + + if (this.prestigeGain().gt(100)) layer_container.getElementsByClassName('next-at')[0].style.display = "none"; + else layer_container.getElementsByClassName('next-at')[0].style.display = ""; + + layer_container.getElementsByClassName('prestige-gain')[0].textContent = formatNumber(this.prestigeGain(), true, true); + + for (let key of Object.keys(this.upgrades)) { + this.upgrades[key].screenUpdate(); + } + } + + selectLayer(forceZoom, instant = false) { + let layer_container = document.getElementById('layer_info'); + let upgrade_container = layer_container.getElementsByClassName('upgrades-list')[0]; + + let upgrade_elements = ""; + for (let key of Object.keys(this.upgrades)) { + upgrade_elements += ''; + } + + upgrade_container.innerHTML = upgrade_elements; + + const shouldZoom = player.current_layer === this || player.singleclick; + player.current_layer = this; + + if (shouldZoom || forceZoom === true) { + const treeContainer = document.getElementById("tree-container").getBoundingClientRect(); + const zoom = Decimal.pow(2, this.depth).times(player.zoomModifier).toNumber(); + const nodeRect = this.el.getBoundingClientRect(); + const rootRect = player.layers[0].el.getBoundingClientRect(); + const x = (rootRect.x + rootRect.width / 2 - nodeRect.x - nodeRect.width / 2) / panzoom.getScale() + treeContainer.width / 2; + const y = (rootRect.y + rootRect.height / 2 - nodeRect.y - nodeRect.height / 2) / panzoom.getScale() + treeContainer.height / 2 / zoom; + panzoom.zoom(zoom, { animate: !instant && player.animations }); + panzoom.pan(x, y, { animate: !instant && player.animations }); + } + + screenUpdate(); + } + + canPrestige() { + return this.prestigeGain().gt(0); + } + + prestigeGain() { + if (this.parent_layer == undefined) return new Decimal(0); + + return this.calculateProduction(this.parent_layer.points.max(1).log(this.parent_layer.final_goal).pow(Math.log2(Math.max(1, this.depth) + 1)), this.points, true).floor(); + } + + prestigeNeed() { + if (this.parent_layer == undefined) return new Decimal(0); + + return this.parent_layer.final_goal.pow(this.calculateReverseProduction(this.prestigeGain().add(1), this.points, true).pow(1 / Math.log2(Math.max(1, this.depth) + 1))); + } + + prestige() { + this.points = this.points.add(this.prestigeGain()).round(); + + if (this.parent_layer != undefined) this.parent_layer.reset(); + screenUpdate(); + } + + reset() { + if (!this.left_branch) { + for (let key of Object.keys(this.upgrades)) { + this.upgrades[key].bought = false; + } + } + this.points = new Decimal(0); + //if (this.parent_layer != undefined) this.parent_layer.reset(); + } + + buyLeft() { + if (this.child_left == undefined) return; + if (this.child_left.points.lt(this.child_left.final_goal)) return; + if (this.left_branch) return; + this.left_branch = true; + this.child_left.points = this.child_left.points.sub(this.child_left.final_goal); + } + + buyRight() { + if (this.child_right == undefined) return; + if (this.child_right.points.lt(this.child_right.final_goal)) return; + if (this.right_branch) return; + this.right_branch = true; + this.child_right.points = this.child_right.points.sub(this.child_right.final_goal); + } + + save() { + let data = []; + data.push(this.id); + if (this.parent_layer != undefined) data.push(this.parent_layer.id); + else data.push(-1); + data.push(this.is_ngminus); + data.push([this.points.sign, this.points.layer, this.points.mag]); + data.push([this.upgrade_time.sign, this.upgrade_time.layer, this.upgrade_time.mag]); + data.push([this.final_goal.sign, this.final_goal.layer, this.final_goal.mag]); + data.push(this.name); + data.push(this.points_name); + data.push(this.depth); + data.push(this.color); + + let upgrade_data = []; + for (let key of Object.keys(this.upgrades)) upgrade_data.push(this.upgrades[key].save()); + + data.push(upgrade_data); + + data.push(this.left_branch); + data.push(this.right_branch); + return data; + } + + load(player, data) { + this.id = data[0]; + if (data[1] == -1) this.parent_layer = undefined; + else this.parent_layer = player.layers[data[1]]; + this.is_ngminus = data[2]; + this.points.fromComponents(data[3][0], data[3][1], data[3][2]); + this.upgrade_time.fromComponents(data[4][0], data[4][1], data[4][2]); + this.final_goal.fromComponents(data[5][0], data[5][1], data[5][2]); + this.name = data[6]; + this.points_name = data[7]; + this.depth = data[8]; + this.coord = 0; + this.color = data[9]; + + this.upgrades = {}; + for (let upg of data[10]) { + this.upgrades[upg[0]] = new Upgrade(); + this.upgrades[upg[0]].load(this, upg); + } + + if (data.length > 11) this.left_branch = data[11]; + if (data.length > 12) this.right_branch = data[12]; + + this.child_left = undefined; + this.child_right = undefined; + + if (this.parent_layer != undefined) { + if (this.is_ngminus) this.parent_layer.child_left = this; + else this.parent_layer.child_right = this; + + this.coord = 2 * this.parent_layer.coord; + if (!this.is_ngminus) this.coord += 1; + this.coord = this.coord % (2 ** 32); + } + + this.nodeEl.style.backgroundColor = formAsRGB(this.color); + if (this.parent_layer === undefined) { + this.el.style.top = "0px"; + this.el.style.left = "0px"; + this.el.style.transform = "translate(-50%, -50%)"; + document.getElementById("tree").appendChild(this.el); + } else { + this.el.style.top = "15em"; + this.el.style.left = (this.is_ngminus ? "-" : "") + "10em"; + this.el.style.transform = ""; + this.parent_layer.el.appendChild(this.el); + } + + this.label.innerText = this.parent_layer === undefined ? "OG" : this.points_name.slice(0, 3); + + this.unlockReq.innerText = `Get ${formatNumber(this.final_goal)} ${this.points_name ? this.points_name + " points" : "points"} to unlock`; + } +}; diff --git a/the_ascension_tree/js/classes/player.js b/the_ascension_tree/js/classes/player.js new file mode 100644 index 000000000..6aa26e125 --- /dev/null +++ b/the_ascension_tree/js/classes/player.js @@ -0,0 +1,89 @@ +class Player { + constructor() { + this.reset(); + // Explicitly don't reset settings in the reset() function + this.animations = true; + this.singleclick = false; + this.zoomModifier = 0.5; + } + + reset(seed) { + this.last_time_ts = Date.now(); + + this.seed = seed || Math.floor(Math.random() * 4294967296); + this.incompleteSeed = false; + document.getElementById("seedDisplay").innerText = `Seed: ${this.seed}`; + document.getElementById("seedDisplay").className = ''; + + if (this.layers) { + for (let layer of this.layers) { + layer.el.remove(); + } + } + this.layers = []; + this.layers.push(new Layer(this.seed)); + + this.current_layer = this.layers[0]; + } + + save() { + let data = []; + data.push(this.last_time_ts); + + let layer_data = []; + for (let layer of this.layers) { + layer_data.push(layer.save()); + } + data.push(layer_data); + + data.push(this.current_layer.id); + + data.push(this.animations); + data.push(this.singleclick); + data.push(this.zoomModifier); + data.push(this.seed); + data.push(this.incompleteSeed); + return data; + } + + load(data) { + this.last_time_ts = data[0]; + + if (data.length > 7) { + this.seed = data[6]; + this.incompleteSeed = data[7]; + } else if (data.length > 6) { + this.seed = data[6]; + this.incompleteSeed = true; + } else { + this.seed = Math.floor(Math.random() * 4294967296); + this.incompleteSeed = true; + } + + for (let layer of this.layers) { + layer.el.remove(); + } + this.layers = []; + for (let layer of data[1]) { + this.layers.push(new Layer(this.seed)); + this.layers[this.layers.length - 1].load(this, layer); + } + + this.current_layer = this.layers[data[2]]; + this.animations = data.length > 3 ? data[3] : true; + this.singleclick = data.length > 4 ? data[4] : false; + this.zoomModifier = data.length > 5 ? data[5] : 0.5; + document.getElementById("animations-toggle").innerText = this.animations ? "Enabled" : "Disabled"; + document.getElementById("singleclick-toggle").innerText = this.singleclick ? "Single Click" : "Double Click"; + if (Object.entries(zoomOptions).find(([key, value]) => value === this.zoomModifier) !== undefined) + document.getElementById("zoomModifier").value = + Object.entries(zoomOptions).find(([key, value]) => value === this.zoomModifier)[0]; + document.getElementById("seedDisplay").innerText = `Seed: ${this.seed}`; + document.getElementById("seedDisplay").className = this.incompleteSeed ? 'incompleteSeed' : ''; + + requestAnimationFrame(() => { + this.current_layer.selectLayer(true, true); + }); + } +}; + diff --git a/the_ascension_tree/js/classes/upgrade.js b/the_ascension_tree/js/classes/upgrade.js new file mode 100644 index 000000000..6eba38a67 --- /dev/null +++ b/the_ascension_tree/js/classes/upgrade.js @@ -0,0 +1,139 @@ +class Upgrade { + constructor(layer, id, type, effect=new Decimal(1), target="points", cost=new Decimal(1), rand=Math.random) { + this.layer = layer; + this.id = id; + this.type = type; // type: add, mul, pow, mul_log, mul_pow + this.effect = effect; + this.target = target; + this.cost = cost; + + this.name = choose(VERBS, rand); + + this.bought = false; + + this.depends_on = []; + // subscribe + if (this.target != "points") { + this.layer.upgrades[this.target].depends_on.push(this.id); + } + } + + copyUpgrade(other) { + this.id = other.id; + this.type = other.type; + this.effect = other.effect; + this.target = other.target; + this.cost = other.cost; + + this.name = other.name; + + this.depends_on = []; + // subscribe + if (this.target != "points") { + this.layer.upgrades[this.target].depends_on.push(this.id); + } + } + + buy() { + if (!this.canBuy()) return; + this.bought = true; + this.layer.points = this.layer.points.sub(this.cost); + } + + canBuy() { + return this.cost.lte(this.layer.points); + } + + getEffect() { + if (this.type == "add" || this.type == "mul" || this.type == "pow") return this.effect; + + let affected_number = this.layer.points; + if (this.target != "points") affected_number = this.layer.upgrades[this.target].getEffect(); + + if (this.type == "mul_log") return affected_number.max(1).log10().max(1).pow(this.effect); + if (this.type == "mul_pow") return affected_number.max(1).pow(this.effect); + } + + applyEffect(number, total=this.layer.points) { + if (!(number instanceof Decimal)) number = new Decimal(number); + if (!this.bought) return number; + + let effect = new Decimal(this.effect); + for (let dependency of this.depends_on) effect = this.layer.upgrades[dependency].applyEffect(effect); + + if (this.type == "add") return number.add(effect); + if (this.type == "mul") return number.mul(effect); + if (this.type == "pow") return number.pow(effect); + if (this.type == "mul_log") return number.mul(total.max(1).log10().max(1).pow(effect)); + if (this.type == "mul_pow") return number.mul(total.max(1).pow(effect)); + } + + applyReverseEffect(number, total=this.layer.points) { + if (!(number instanceof Decimal)) number = new Decimal(number); + if (!this.bought) return number; + + let effect = new Decimal(this.effect); + for (let dependency of this.depends_on) effect = this.layer.upgrades[dependency].applyEffect(effect, total); + + if (this.type == "add") return number.sub(effect); + if (this.type == "mul") return number.div(effect); + if (this.type == "pow") return number.root(effect); + if (this.type == "mul_log") return number.div(total.max(1).log10().max(1).pow(effect)); + if (this.type == "mul_pow") return number.div(total.max(1).pow(effect)); + } + + screenUpdate() { + let container = document.getElementById(this.id); + if (container !== null && container !== undefined) { + if (!this.canBuy() || this.bought) container.disabled = true; + else container.disabled = false; + if (this.bought) container.classList.add("complete"); + else container.classList.remove("complete"); + container.getElementsByClassName('upgrade-name')[0].textContent = this.name; + container.getElementsByClassName('effect')[0].textContent = formatNumber(this.getEffect(), !(this.type == "add" || this.type == "mul" || this.type == "pow")); + container.getElementsByClassName('cost')[0].textContent = formatNumber(this.cost, false, true); + } + } + + getDescCode() { + if (this.target == "points") { + if (this.type == "add") return 'Get per second'; + if (this.type == "mul") return 'Get × more '; + if (this.type == "pow") return 'Raise gain to the power of '; + if (this.type == "mul_log") return 'Boost gain based on them
Current: '; + if (this.type == "mul_pow") return 'Boost gain based on them
Current: '; + } + else { + if (this.type == "add") return 'Add to the power of "' + this.layer.upgrades[this.target].name + '" upgrade'; + if (this.type == "mul") return '"' + this.layer.upgrades[this.target].name + '" upgrade is × more powerful'; + if (this.type == "pow") return 'Raise the power of "' + this.layer.upgrades[this.target].name + '" upgrade to the power of '; + } + } + + save() { + let data = []; + data.push(this.id); + data.push(this.name); + data.push(this.type); + data.push([this.effect.sign, this.effect.layer, this.effect.mag]); + data.push(this.target); + data.push([this.cost.sign, this.cost.layer, this.cost.mag]); + data.push(this.bought); + return data; + } + + load(layer, data) { + this.layer = layer; + this.id = data[0]; + this.name = data[1]; + this.type = data[2]; + this.effect.fromComponents(data[3][0], data[3][1], data[3][2]); + this.target = data[4]; + this.cost.fromComponents(data[5][0], data[5][1], data[5][2]); + this.bought = data[6]; + // subscribe + if (this.target != "points") { + this.layer.upgrades[this.target].depends_on.push(this.id); + } + } +} diff --git a/the_ascension_tree/js/data/ity.js b/the_ascension_tree/js/data/ity.js new file mode 100644 index 000000000..c1ca3166a --- /dev/null +++ b/the_ascension_tree/js/data/ity.js @@ -0,0 +1,2 @@ +const ITY_WORDS = ["ability", "abmodality", "abnormality", "abnormity", "absorptivity", "abstrusity", "absurdity", "accentuality", "acclivity", "accomplicity", "acerbity", "acetosity", "acicularity", "acidity", "acinacity", "acridity", "acrity", "actability", "activity", "actuality", "acuity", "adaptability", "adaptivity", "addability", "addibility", "additivity", "adicity", "adiposity", "admirability", "adoptability", "adorability", "aduncity", "adverbiality", "adversity", "advisability", "aedility", "aeriality", "affability", "affectivity", "affinity", "aggressivity", "agility", "agitability", "agreeability", "alacrity", "alamodality", "alcoholicity", "aldermanity", "algidity", "alibility", "alienability", "ality", "alkalinity", "allocability", "allodiality", "allogeneity", "alodiality", "alterability", "alterity", "alternity", "aluminosity", "amability", "amarity", "ambagiosity", "ambiguity", "amenability", "amenity", "amiability", "amicability", "aminity", "amissibility", "amity", "amorality", "amorosity", "amovability", "amphoricity", "ampollosity", "ampullosity", "amurcosity", "anacidity", "anality", "analyticity", "analkalinity", "androgyneity", "anelasticity", "angularity", "angulosity", "anility", "animability", "animality", "animosity", "annuity", "annularity", "anonymity", "anormality", "anteriority", "anticity", "antigenicity", "antigravity", "antimorality", "antiquity", "antireality", "aperiodicity", "apolarity", "apostolicity", "appetibility", "apposability", "apriority", "aqueity", "aquilinity", "aquosity", "arability", "archcity", "areality", "arenosity", "aridity", "aromacity", "aromaticity", "aseismicity", "aseity", "asexuality", "asininity", "asperity", "assiduity", "astucity", "atypicality", "atomicity", "atomity", "atonality", "atonicity", "atrocity", "attensity", "attractivity", "audacity", "audibility", "aureity", "austerity", "authenticity", "authority", "autoimmunity", "automaticity", "automobility", "autopticity", "autotoxicity", "autumnity", "availability", "avidity", "axiality", "banality", "barbarity", "baroclinity", "basicity", "bearability", "bellicosity", "bendability", "beneplacity", "benignity", "bepity", "bestiality", "betweenity", "biaxiality", "bibacity", "biblicality", "bibulosity", "bicentricity", "biconcavity", "biconvexity", "biddability", "bifidity", "biformity", "biggity", "bilaterality", "bilinguality", "bimodality", "binocularity", "bioactivity", "bipedality", "biplicity", "bipolarity", "bisexuality", "bitonality", "biunity", "blamability", "bonity", "bority", "bovinity", "breakability", "brevity", "bribability", "bribeability", "browsability", "brushability", "brutality", "buffability", "bumpity", "burgality", "caducity", "caecity", "calamity", "calidity", "caliginosity", "callidity", "callosity", "caloricity", "calvity", "caninity", "cannibality", "canonicity", "capability", "capacity", "capernoity", "capillarity", "captivity", "cardinality", "cariosity", "carity", "carnality", "carnivority", "carnosity", "casuality", "catholicity", "causability", "causality", "causativity", "causticity", "cavity", "cecity", "celebrity", "celerity", "celestiality", "cellularity", "cellulosity", "cenosity", "centrality", "centricality", "centricity", "cerebricity", "charity", "chastity", "chirality", "chlorinity", "christianity", "chromaticity", "chronicity", "churchanity", "churchianity", "churnability", "cyclicality", "cyclicity", "cylindricity", "circuity", "circularity", "city", "cytotoxicity", "civility", "clarity", "classicality", "cleavability", "clericality", "clericity", "cleverality", "clonicity", "clubability", "clubbability", "coachability", "coactivity", "coauthority", "cobenignity", "cockneity", "coequality", "coercibility", "coercivity", "coetaneity", "coeternity", "coevality", "coevalneity", "cogitability", "cogitativity", "cognitivity", "cohesibility", "coidentity", "coilability", "coinfinity", "cointensity", "colinearity", "collectivity", "collegiality", "collinearity", "colloidality", "colorability", "colossality", "columnarity", "comatosity", "combativity", "comicality", "comity", "commensality", "commodity", "commonality", "communality", "community", "commutuality", "compassivity", "compaternity", "complexity", "complicity", "compulsivity", "concavity", "conceity", "concinnity", "concordity", "condensity", "condignity", "conductility", "conductivity", "confelicity", "confinity", "confirmity", "conformity", "congeniality", "congruity", "conicality", "conicity", "conjugality", "connectivity", "connexity", "connubiality", "conspectuity", "conspicuity", "consularity", "contagiosity", "contiguity", "continuality", "continuity", "contumacity", "convexity", "convicinity", "conviviality", "copiability", "copiosity", "coplanarity", "cordiality", "corporality", "corporeality", "corporeity", "corporosity", "correality", "corrivality", "corrosivity", "cosmicality", "countability", "coxcombity", "crackability", "creativity", "crebrity", "credibility", "credulity", "cribrosity", "criminality", "crinosity", "criticality", "crocodility", "crossability", "cruciality", "cruciformity", "crudelity", "crudity", "crushability", "cubicity", "cullibility", "culpability", "cupidity", "curability", "curiality", "curiosity", "curvity", "cutability", "dacoity", "dakoity", "damnability", "danceability", "debility", "debonairity", "deceptivity", "decidability", "deciduity", "declivity", "decorability", "decrepity", "deducibility", "definability", "deformity", "deiformity", "deity", "demideity", "deminudity", "demisability", "demurity", "deniability", "density", "dentality", "depravity", "derivability", "desirability", "deteriority", "detonability", "devexity", "deviability", "devility", "devisability", "dexterity", "dextrality", "diagonality", "diaphaneity", "diatomicity", "dibasicity", "dicacity", "didacticity", "dyeability", "diffinity", "difformity", "diffusivity", "dignity", "dilatability", "dimity", "dynamicity", "directivity", "dirigibility", "dirity", "disability", "disaffinity", "disamenity", "disassiduity", "discharity", "discommodity", "discommunity", "discongruity", "disensanity", "disequality", "disformity", "disingenuity", "disintegrity", "dismality", "disparity", "dispersity", "disputacity", "disquantity", "dissociality", "distinctity", "disunity", "disutility", "diuturnity", "diversity", "dividuity", "divinability", "divinity", "divisibility", "doability", "docibility", "docility", "docity", "doctrinality", "doctrinarity", "domesticity", "drapability", "drapeability", "drawability", "drillability", "drinkability", "duality", "dubiosity", "ductibility", "ductility", "dulcity", "dullity", "dumosity", "dupability", "duplexity", "duplicity", "durability", "durity", "dutiability", "eatability", "ebriosity", "eccentricity", "ecumenicity", "edacity", "edibility", "edility", "educability", "effectivity", "effectuality", "efficacity", "effumability", "egality", "egoity", "ejectivity", "elasticity", "elastivity", "electability", "electivity", "electricity", "elegibility", "elementality", "elementarity", "eligibility", "ellipticity", "emissivity", "emotionality", "emotivity", "emulsibility", "endemicity", "endogenicity", "endurability", "enmity", "enormity", "ensilability", "entity", "ephemerality", "epicenity", "epidemicity", "episcopality", "equability", "equality", "equanimity", "equatability", "equidensity", "equiformity", "equilibrity", "equinity", "equitability", "equity", "equivelocity", "equivocality", "erasability", "erectility", "ergodicity", "erodability", "erodibility", "erogeneity", "erosivity", "errability", "eruptivity", "essentiality", "estuosity", "eternality", "eternity", "ethereality", "ethicality", "ethnicity", "eupepticity", "eurytopicity", "evangelicity", "eventuality", "evolutility", "excentricity", "excitability", "exclusivity", "excusability", "exemplarity", "exhaustivity", "exiguity", "exility", "existability", "existibility", "exorability", "exoticity", "expansivity", "expressivity", "exsanguinity", "extensity", "extensivity", "exteriority", "externality", "externity", "extrality", "extraneity", "extremity", "exuviability", "fabulosity", "facility", "facticity", "factuality", "facundity", "fallibility", "falsity", "familarity", "familiarity", "farcicality", "fastidiosity", "fatality", "fatigability", "fatuity", "favorability", "feasibility", "febricity", "febrility", "fecundity", "fedity", "felicity", "felinity", "femality", "feminality", "femineity", "feminility", "femininity", "feminity", "feodality", "feracity", "ferity", "ferocity", "fertility", "fervidity", "fescenninity", "festivity", "fetidity", "feudality", "fibrosity", "fictility", "fidelity", "figurability", "filiality", "filtrability", "finality", "findability", "finicality", "finity", "firmity", "fiscality", "fishability", "fissility", "fissiparity", "fixidity", "fixity", "flaccidity", "flammability", "flatuosity", "flexibility", "flexility", "flexity", "flexuosity", "flyability", "floatability", "floridity", "fluctuosity", "fluidity", "fluxibility", "fluxility", "fogramity", "foliosity", "forcibility", "forgeability", "forlornity", "formability", "formality", "formity", "formosity", "fortuity", "fractuosity", "fragility", "frangibility", "frankability", "fraternality", "fraternity", "fratority", "freity", "friability", "frigidity", "frivolity", "frontality", "fructuosity", "frugality", "fruity", "fugacity", "fugitivity", "fulgidity", "fuliginosity", "fumidity", "fumosity", "funereality", "fungibility", "fungosity", "furacity", "furiosity", "furiousity", "furmity", "fusibility", "futility", "futurity", "garrulity", "gaseity", "gaseosity", "gelatinity", "geldability", "gelidity", "gemmiparity", "generability", "generality", "generosity", "geniality", "genotypicity", "gentility", "germanity", "germiparity", "getatability", "gibberosity", "gibbosity", "gigmanity", "glabreity", "glandulosity", "globality", "globosity", "globularity", "gloriosity", "glumosity", "glutinosity", "gnosticity", "gothicity", "gracility", "graciosity", "graduality", "grandevity", "grandiosity", "grandity", "granularity", "gratility", "gratillity", "gratuity", "gravidity", "gravity", "gullability", "gullibility", "gulosity", "gummosity", "gutturality", "hability", "habitability", "habituality", "haecceity", "halituosity", "hangability", "hatchability", "heavity", "helicity", "herbivority", "herbosity", "heredity", "hereditivity", "heritability", "heroicity", "hybridity", "hideosity", "hydraulicity", "hilarity", "hyperacidity", "hyperacuity", "hypoacidity", "hypoactivity", "hypomotility", "hypotonicity", "hypotoxicity", "hircosity", "hispidity", "historicity", "hoaxability", "homeoidality", "homogeneity", "homonymity", "homopolarity", "homozygosity", "honorability", "hoppity", "horribility", "horridity", "hospitality", "hostility", "humanity", "humidity", "humility", "iconicity", "ideality", "identity", "idiomaticity", "idoneity", "ignitability", "ignitibility", "ignobility", "illegality", "illegibility", "illiberality", "illiquidity", "illocality", "illogicality", "illogicity", "illustricity", "imbecility", "imbonity", "imitability", "immanity", "immaturity", "immeability", "immensity", "immobility", "immorality", "immortality", "immotility", "immovability", "immundicity", "immundity", "immunity", "immutability", "impacability", "imparity", "impartiality", "impartivity", "impassivity", "impavidity", "impedibility", "imperiality", "impetuosity", "implasticity", "impliability", "implicity", "imporosity", "importunity", "improbity", "improsperity", "impudicity", "impulsivity", "impunity", "impurity", "imputability", "inability", "inactivity", "inaffability", "inalacrity", "inanity", "inaudibility", "incapability", "incapacity", "incelebrity", "incendivity", "incharity", "inchastity", "incitability", "incivility", "incolumity", "incommodity", "inconcinnity", "inconformity", "incongruity", "incontinuity", "incorporeity", "incredulity", "incurability", "incuriosity", "incurvity", "indefinity", "indelibility", "indemnity", "indexterity", "indigeneity", "indigenity", "indignity", "individuity", "indivinity", "indocibility", "indocility", "inducibility", "inductility", "inductivity", "inedibility", "ineffability", "inefficacity", "inelasticity", "inemotivity", "inequality", "inequity", "inerrability", "infantility", "infectivity", "infecundity", "infelicity", "inferiority", "infernality", "infertility", "infestivity", "infidelity", "infinity", "infirmity", "informality", "informity", "infortunity", "infusibility", "ingeniosity", "ingenuity", "inhumanity", "inidoneity", "inimicality", "iniquity", "injucundity", "innaturality", "inneity", "innocuity", "inorganity", "inquilinity", "inreality", "insagacity", "insalubrity", "insanity", "insecurity", "insidiosity", "insimplicity", "insincerity", "insipidity", "insolidity", "insolubility", "instability", "insuavity", "insularity", "insulsity", "insurability", "integrality", "integrity", "intenability", "intensity", "intercity", "interiority", "internality", "internity", "interpolity", "intervarsity", "intimidity", "intimity", "intinctivity", "intracity", "intrepidity", "intuicity", "inunctuosity", "inurbanity", "inutility", "invalidity", "inveracity", "inverity", "inviability", "invirility", "inviscidity", "invisibility", "involatility", "ionicity", "youthfullity", "ipseity", "iracundity", "irascibility", "irreality", "irregularity", "irritability", "isogonality", "isoimmunity", "isolability", "isopolity", "isotonicity", "italianity", "iteroparity", "jejunity", "jequerity", "jequirity", "jocosity", "jocularity", "jocundity", "jocunoity", "jollity", "joviality", "jucundity", "judiciality", "juniority", "juvenility", "kissability", "klendusity", "kneadability", "knowability", "koreshanity", "labiality", "lability", "laborability", "lacerability", "lachrymosity", "lacunosity", "laicality", "laicity", "laity", "lamellosity", "laminability", "lanosity", "lapidity", "lapsability", "lapsibility", "laterality", "latinity", "laudability", "laughability", "laxity", "leachability", "lecithality", "legality", "legerity", "legibility", "legitimity", "lenity", "lepidity", "leprosity", "lethality", "levity", "leviticality", "lexicality", "liability", "liberality", "libidinosity", "lignosity", "likability", "likeability", "limitability", "limity", "limpidity", "lineality", "linearity", "linguality", "liquidity", "lysogenicity", "literality", "literosity", "lithotrity", "litigiosity", "livability", "liveability", "lividity", "locality", "locomobility", "locomotility", "locomotivity", "logicality", "logicity", "lognormality", "longanimity", "longevity", "longinquity", "loquacity", "lovability", "loveability", "lubricity", "lucidity", "ludicrosity", "lugubriosity", "luminosity", "luridity", "luxurity", "magistrality", "magnality", "magnanimity", "mailability", "mayorality", "majority", "maleability", "malignity", "malleability", "mammality", "marginality", "maritality", "martiality", "mascularity", "masculinity", "massivity", "materiality", "maternality", "maternity", "maturity", "mechanality", "medianimity", "medianity", "mediocrity", "megacity", "melanosity", "meliority", "meltability", "memorability", "mendacity", "mendicity", "meniality", "menstruosity", "mentality", "mercantility", "mercuriality", "mesnality", "metalleity", "metallicity", "meticulosity", "metricity", "minacity", "minority", "myogenicity", "miraculosity", "misceability", "miscibility", "miscredulity", "miserability", "misingenuity", "misquality", "mysticality", "mysticity", "mythicality", "mity", "mitogenicity", "mixability", "mobility", "modality", "modernity", "modicity", "modulability", "modularity", "moity", "molality", "molarity", "moldability", "molecularity", "momentaneity", "monatomicity", "mongrelity", "monobasicity", "monocularity", "monogeneity", "monopolarity", "monotonicity", "monstrosity", "morality", "morbidity", "morbility", "mordacity", "moribundity", "moronity", "morosity", "mortality", "mosaicity", "motility", "motivity", "motricity", "movability", "moveability", "mucidity", "mucosity", "muliebrity", "mulierosity", "multeity", "multiformity", "multiparity", "multiplicity", "multiversity", "mundanity", "municipality", "munity", "muscosity", "muscularity", "musicality", "mutability", "mutagenicity", "mutivity", "mutuality", "namability", "nameability", "nasality", "natability", "natality", "nationality", "nativity", "naturality", "nausity", "nauticality", "navigability", "nebulosity", "necessity", "negativity", "nervosity", "neurility", "neurocity", "neutrality", "nidorosity", "nihility", "nimbosity", "nivosity", "nobility", "nocturnality", "nocuity", "nodality", "nodosity", "nolleity", "nominality", "nonability", "nonacidity", "nonactivity", "nonactuality", "nonacuity", "nonaffinity", "nonambiguity", "nonanimality", "nonanonymity", "noncausality", "nonchastity", "noncongruity", "noncuriosity", "nondeformity", "nondensity", "nondepravity", "nondexterity", "nondisparity", "nondivinity", "nonduality", "nonductility", "nonduplicity", "nonedibility", "nonentity", "noneternity", "nonfacility", "nonfatality", "nonfecundity", "nonfelicity", "nonferocity", "nonfertility", "nonfidelity", "nonfissility", "nonfluidity", "nonfragility", "nonfrigidity", "nonfrugality", "nonfuturity", "nongarrulity", "nongravity", "nonhostility", "nonidentity", "nonimmunity", "nonintegrity", "nonliability", "nonlinearity", "nonlucidity", "nonmajority", "nonmalignity", "nonmaturity", "nonmobility", "nonmorality", "nonmotility", "nonmutuality", "nonnasality", "nonnecessity", "nonnobility", "nonnormality", "nonobscurity", "nonopacity", "nonparity", "nonplurality", "nonpolarity", "nonprivity", "nonprofanity", "nonprolixity", "nonproximity", "nonpublicity", "nonpuerility", "nonquality", "nonreality", "nonrigidity", "nonsalinity", "nonsanctity", "nonsanity", "nonscarcity", "nonsecurity", "nonsequacity", "nonseriality", "nonseverity", "nonsociality", "nonspinosity", "nonstability", "nonsterility", "nonsubtility", "nontactility", "nontensility", "nontonality", "nonunity", "nonutility", "nonvalidity", "nonveracity", "nonverbosity", "nonviability", "nonvinosity", "nonvirility", "nonviscidity", "nonvitality", "nonvocality", "nonvulgarity", "nordicity", "normality", "nostrility", "notability", "notionality", "noumenality", "novity", "nubility", "nudity", "nugacity", "nullibicity", "nullibility", "nulliparity", "nullity", "numerosity", "nuptiality", "obesity", "obfuscity", "objectivity", "obligability", "obliquity", "obliviality", "obscenity", "obscurity", "obsequiosity", "obsequity", "obtundity", "obtusity", "oceanicity", "oceanity", "oddity", "odorosity", "oecumenicity", "officiality", "oisivity", "oleosity", "omneity", "omniformity", "omnihumanity", "omniparity", "omnitonality", "omnivoracity", "oncogenicity", "onerosity", "onymity", "opacity", "openability", "operability", "operativity", "operosity", "ophelimity", "opinability", "opportunity", "opposability", "opticity", "optimality", "optimity", "optionality", "oracularity", "orality", "orbicularity", "orbity", "ordinability", "organicity", "organity", "orientality", "originality", "orinasality", "orotundity", "oscularity", "osmolality", "osmolarity", "otiosity", "outcity", "outpity", "ovality", "overability", "overacidity", "overactivity", "overcapacity", "overcharity", "overcivility", "overdignity", "overfacility", "overhumanity", "overmajority", "overmaturity", "overobesity", "overquantity", "overrigidity", "oversecurity", "overserenity", "overseverity", "overtenacity", "overtimidity", "oviparity", "oxidability", "oxygenicity", "pacificity", "packability", "paganity", "payability", "paintability", "palatability", "palatality", "pallidity", "palpability", "pandemicity", "paneity", "panimmunity", "pansexuality", "pantonality", "papability", "papality", "papillosity", "parentality", "parfocality", "parity", "parochiality", "parsonity", "partiality", "partibility", "partivity", "parvanimity", "passibility", "passivity", "pastorality", "pastosity", "patavinity", "paternality", "paternity", "patruity", "paucity", "paulinity", "pavidity", "peccability", "peculiarity", "pecuniosity", "pedality", "pejority", "pellucidity", "penality", "pendulosity", "pensility", "pentadicity", "pepticity", "peracidity", "perceptivity", "peregrinity", "perenniality", "perennity", "perfectivity", "perfervidity", "periodicity", "permeability", "permittivity", "pernickity", "perpensity", "perpetuality", "perpetuity", "perplexity", "perseity", "personality", "personeity", "perspicacity", "perspicuity", "pertinacity", "perversity", "perviability", "pervicacity", "petreity", "physicality", "phoenixity", "piacularity", "pilosity", "pinguidity", "piosity", "pyrogenicity", "piscinity", "pity", "pitiability", "placability", "placidity", "plagosity", "playability", "planarity", "planity", "plasticity", "plausibility", "plebeity", "plenity", "pliability", "plumosity", "plurality", "pluriparity", "pluviosity", "pneumaticity", "poeticality", "polarity", "polybasicity", "polity", "polytonality", "pomposity", "ponderosity", "poppability", "popularity", "porosity", "portability", "portentosity", "positivity", "possibility", "posteriority", "posterity", "posteternity", "postmaturity", "potability", "potentiality", "pourability", "practicality", "praediality", "pravity", "preacidity", "preactivity", "preantiquity", "precaptivity", "preciosity", "precocity", "predacity", "prediality", "predivinity", "preequity", "preeternity", "prefertility", "pregnability", "prehensility", "prehostility", "preindemnity", "prelateity", "preliability", "prematernity", "prematurity", "premorality", "presenility", "prestability", "prevalidity", "priestianity", "primality", "primevity", "primiparity", "primity", "primitivity", "primordality", "primosity", "principality", "printability", "priority", "privacity", "privity", "proauthority", "probability", "probity", "procacity", "procerity", "procharity", "procity", "proclivity", "procommunity", "prodigality", "prodigiosity", "productivity", "proequality", "profanity", "profundity", "progenity", "prohostility", "proimmunity", "proindemnity", "projectivity", "prolificity", "prolixity", "promajority", "prominority", "promiscuity", "pronity", "propensity", "propinquity", "propublicity", "propulsity", "proreality", "proseity", "prosperity", "protensity", "protervity", "protrusility", "provability", "proximity", "prudity", "prunability", "pseudonymity", "publicity", "pudibundity", "pudicity", "puerility", "pugnacity", "pulicosity", "pulsatility", "pumpkinity", "punctuality", "pupilability", "pupilarity", "pupillarity", "purity", "putridity", "quality", "quantity", "quaternity", "queerity", "querulity", "querulosity", "quiddity", "quillity", "quizzability", "quizzicality", "quizzity", "quoddity", "quotability", "quotity", "rabbity", "rabidity", "raciality", "radiability", "radiality", "radicality", "radiopacity", "ramosity", "rancidity", "rapacity", "rapidity", "rarity", "rascality", "ratability", "rateability", "rationality", "raucidity", "raucity", "reachability", "reactivity", "readability", "reality", "receptivity", "recidivity", "reciprocity", "recruity", "recurvity", "reducibility", "reflectivity", "reflexivity", "refractility", "refractivity", "refutability", "regality", "regressivity", "regularity", "reinability", "reinsanity", "relatability", "relativity", "reliability", "religiosity", "reluctivity", "removability", "rendibility", "renewability", "rentability", "reparability", "reptility", "reputability", "resistivity", "resolubility", "responsivity", "resumability", "retentivity", "retractility", "reusability", "revelability", "revivability", "revocability", "revolubility", "rhythmicity", "ridability", "ridiculosity", "rigidity", "rimosity", "risibility", "rituality", "rivality", "roadability", "robusticity", "robustity", "romanity", "romanticity", "rotundity", "rubedity", "rubicundity", "rubricality", "rubricity", "rudity", "rufosity", "rugosity", "rurality", "rusticity", "sabulosity", "saccharinity", "sagacity", "sayability", "salability", "salacity", "saleability", "salinity", "salubrity", "salvability", "sanability", "sanctanimity", "sanctity", "sanguinity", "sanguinuity", "sanity", "sapidity", "saponacity", "saporosity", "satanity", "satiability", "satinity", "saturability", "saturity", "saturninity", "saturnity", "scabiosity", "scabridity", "scantity", "scarcity", "schistosity", "scholarity", "scirrhosity", "scirrosity", "scissiparity", "scrupulosity", "scrutability", "scurrility", "seasonality", "secability", "sectility", "sectionality", "secularity", "security", "sedulity", "seigniority", "seismicity", "seity", "selectivity", "semelparity", "semiaridity", "semideity", "semifluidity", "semimaturity", "seminality", "seminasality", "seminudity", "semiopacity", "semiseverity", "sempiternity", "senility", "seniority", "sensibility", "sensitivity", "sensuality", "sensuosity", "separability", "septicity", "sequacity", "serendipity", "serenity", "seriality", "seriosity", "seroimmunity", "serosity", "servility", "sessility", "severability", "severality", "severity", "sexuality", "shareability", "shiftability", "shockability", "siccity", "signality", "syllabicity", "silvanity", "sylvanity", "simianity", "similarity", "simility", "simity", "simplexity", "simplicity", "sympolity", "simultaneity", "sincerity", "synchroneity", "synecticity", "singability", "singularity", "sinistrality", "synonymity", "syntality", "sinuosity", "sipidity", "skimmity", "slaggability", "soarability", "sociability", "sociality", "sodality", "solemnity", "solidarity", "solidity", "solubility", "solvability", "sonority", "sonorosity", "sorbability", "sordidity", "sorority", "spaciality", "spaciosity", "sparsity", "spasticity", "spatiality", "speciality", "specificity", "speciosity", "spectrality", "specularity", "speerity", "sperity", "spherality", "sphericality", "sphericity", "spheroidity", "spicosity", "spinnability", "spinosity", "spirality", "spirity", "spirituality", "spirituosity", "spongiosity", "sponsibility", "spontaneity", "sporadicity", "sporiparity", "sportability", "spuriosity", "squalidity", "squamosity", "stability", "stageability", "stainability", "stationarity", "stealability", "steerability", "sterility", "stickability", "stypticity", "stolidity", "stoppability", "storability", "strenuity", "strenuosity", "stupidity", "suability", "suasibility", "suavity", "subability", "subacidity", "subacridity", "subalternity", "subantiquity", "subcavity", "subcity", "subcommunity", "subconcavity", "subequality", "subglobosity", "subjectivity", "sublimity", "subnormality", "subpilosity", "subquality", "subrigidity", "subrotundity", "subsalinity", "subsecurity", "subtepidity", "subterranity", "subtility", "suburbanity", "successivity", "suggestivity", "suitability", "suity", "sulphureity", "sulphurity", "summability", "summity", "sumptuosity", "superability", "superacidity", "superannuity", "superbity", "supercity", "superdeity", "superdensity", "superfluity", "superiority", "supernuity", "superpurity", "supersanity", "superunity", "supinity", "supremity", "surdity", "susceptivity", "tableity", "taciturnity", "tactility", "tactuality", "talkability", "tamability", "tameability", "tangibility", "tardity", "taxability", "teachability", "technicality", "tediosity", "temerity", "temperality", "tempestivity", "temporality", "temptability", "tenability", "tenacity", "tenebrity", "tenebrosity", "tenerity", "tensegrity", "tensibility", "tensility", "tensity", "tentability", "tenuity", "tepidity", "terreity", "terribility", "testability", "tetricity", "teutonity", "textuality", "theopolity", "thermality", "thinkability", "thrangity", "threadbarity", "timerity", "timidity", "tympanicity", "tingibility", "typicality", "tithonicity", "titularity", "toity", "tolerability", "tonality", "tonicity", "topicality", "torosity", "torpidity", "torridity", "torsibility", "tortility", "tortuosity", "torvity", "totality", "touchability", "towability", "toxicity", "toxigenicity", "toxity", "traceability", "tractability", "tractility", "tragicality", "trainability", "tranquility", "tranquillity", "transitivity", "transpicuity", "trappability", "trawlability", "treatability", "trepidity", "triality", "triatomicity", "triaxiality", "tribasicity", "trienniality", "triformity", "trimodality", "trinality", "trinity", "trinomiality", "trinunity", "triplexity", "triplicity", "trisyllabity", "triticality", "tritonality", "triunity", "triviality", "trophicity", "tropicality", "trustability", "tuberosity", "tubularity", "tuckermanity", "tumidity", "tumulosity", "tunability", "turbidity", "turgidity", "twistability", "ubiquity", "ultimity", "umbrosity", "unability", "unactability", "unactivity", "unactuality", "unaffability", "unagility", "unambiguity", "unamiability", "unanimity", "unantiquity", "unbenignity", "uncanonicity", "uncatholcity", "uncentrality", "uncharity", "unchastity", "uncity", "uncivility", "unclarity", "uncomplexity", "unconformity", "uncordiality", "uncreativity", "uncrudity", "unctuosity", "undisparity", "undupability", "unduplicity", "undurability", "unelasticity", "unequability", "unequality", "unfalsity", "unfemininity", "unfertility", "unfidelity", "unfixity", "unformality", "unfrigidity", "unfrugality", "unfruity", "unfrutuosity", "unfusibility", "ungenerosity", "ungeniality", "ungentility", "unhostility", "unicity", "unicursality", "uniformity", "unimodality", "uningenuity", "unipolarity", "uniquity", "unisexuality", "uniteability", "unity", "universality", "university", "univocality", "univocity", "unliability", "unlivability", "unmaturity", "unmodernity", "unmorality", "unmovability", "unmusicality", "unnamability", "unnaturality", "unnecessity", "unneutrality", "unnobility", "unpartiality", "unpity", "unpliability", "unpopularity", "unpriority", "unprobity", "unprofundity", "unprosperity", "unproximity", "unpublicity", "unputridity", "unquality", "unreality", "unregality", "unsayability", "unsalability", "unsanctity", "unsanity", "unsecurity", "unsimilarity", "unsimplicity", "unsincerity", "unsociality", "unsolidarity", "unsolidity", "unsolubility", "unspatiality", "unstability", "untenability", "untenacity", "untirability", "untonality", "untorridity", "untumidity", "ununanimity", "ununiformity", "ununiversity", "unusability", "unusuality", "unvalidity", "unvaporosity", "unveniality", "unveracity", "unverity", "unvirility", "unvitreosity", "upcity", "uppity", "urbacity", "urbanity", "urotoxicity", "usability", "useability", "utility", "utterability", "uxoriality", "vacuity", "vagarity", "vagility", "vaguity", "validity", "vanity", "vapidity", "vaporability", "vaporosity", "variability", "varicosity", "variformity", "varsity", "vascularity", "vasoactivity", "vassality", "vastidity", "vastity", "vegetability", "vegetality", "velleity", "velocity", "venality", "vendibility", "venenosity", "venerability", "veniality", "venosity", "ventosity", "ventricosity", "ventrosity", "veracity", "verbality", "verbosity", "verecundity", "veridicality", "veridity", "verisimility", "veritability", "verity", "vermiformity", "vernality", "vernility", "verrucosity", "versability", "versatility", "vertibility", "verticality", "verticity", "vesicularity", "viability", "vibratility", "vicinity", "viciosity", "viduity", "vility", "villeity", "villosity", "vincibility", "vineity", "vinosity", "violability", "viraginity", "virginality", "virginity", "viridity", "virility", "virtuality", "virtuosity", "viscidity", "viscosity", "visibility", "visuality", "vitality", "vitiosity", "vitreosity", "vivacity", "vividity", "viviparity", "vocability", "vocality", "vociferosity", "volatility", "volcanicity", "volcanity", "voltivity", "volubility", "voluminosity", "voluntarity", "voluptuosity", "vomity", "voracity", "vorticity", "vulcanicity", "vulgarity", "washability", "wearability", "weldability", "wettability", "whimsicality", "whity", "wlity", "womanity", "workability", "woundability", "writability", "zygosity", "zonality"] + diff --git a/the_ascension_tree/js/data/verbs.js b/the_ascension_tree/js/data/verbs.js new file mode 100644 index 000000000..36c5a35a6 --- /dev/null +++ b/the_ascension_tree/js/data/verbs.js @@ -0,0 +1 @@ +const VERBS = ["Abandon", "Abase", "Abate", "Abbreviate", "Abdicate", "Abduct", "Abet", "Abhor", "Abide", "Abjure", "Abnegate", "Abolish", "Abominate", "Abort", "Abound", "Abrade", "Abridge", "Abrogate", "Abscond", "Abseil", "Absent", "Absolve", "Absorb", "Abstain", "Abstract", "Abuse", "Abut", "Accede", "Accelerate", "Accent", "Accentuate", "Accept", "Access", "Accessorise", "Accessorize", "Acclaim", "Acclimate", "Acclimatise", "Acclimatize", "Accommodate", "Accompany", "Accomplish", "Accord", "Accost", "Account", "Accouter", "Accoutre", "Accredit", "Accrue", "Acculturate", "Accumulate", "Accuse", "Accustom", "Ace", "Ache", "Achieve", "Acidify", "Acknowledge", "Acquaint", "Acquiesce", "Acquire", "Acquit", "Act", "Action", "Activate", "Actualise", "Actualize", "Actuate", "Adapt", "Add", "Addle", "Address", "Adduce", "Adhere", "Adjoin", "Adjourn", "Adjudge", "Adjudicate", "Adjure", "Adjust", "Administer", "Admire", "Admit", "Admonish", "Adopt", "Adore", "Adorn", "Adsorb", "Adulterate", "Adumbrate", "Advance", "Advantage", "Advertise", "Advise", "Advocate", "Aerate", "Affect", "Affiliate", "Affirm", "Affix", "Afflict", "Afford", "Afforest", "Affront", "Age", "Agglomerate", "Aggravate", "Aggregate", "Agitate", "Agonise", "Agonize", "Agree", "Aid", "Ail", "Aim", "Air", "Airbrush", "Airdrop", "Airfreight", "Airlift", "Alarm", "Alert", "Alienate", "Alight", "Align", "Allay", "Allege", "Alleviate", "Allocate", "Allot", "Allow", "Alloy", "Allude", "Ally", "Alphabetise", "Alphabetize", "Alter", "Alternate", "Amalgamate", "Amass", "Amaze", "Amble", "Ambush", "Ameliorate", "Amend", "Amortise", "Amortize", "Amount", "Amplify", "Amputate", "Amuse", "Anaesthetise", "Anaesthetize", "Analyse", "Anchor", "Anesthetize", "Anger", "Angle", "Anglicise", "Anglicize", "Animate", "Anneal", "Annex", "Annihilate", "Annotate", "Announce", "Annoy", "Annul", "Anodise", "Anodize", "Anoint", "Anonymise", "Anonymize", "Answer", "Antagonise", "Antagonize", "Antedate", "Anthologise", "Anthologize", "Anticipate", "Ape", "Apologise", "Apologize", "Apostrophise", "Apostrophize", "Appal", "Appall", "Appeal", "Appear", "Appease", "Append", "Appertain", "Applaud", "Apply", "Appoint", "Apportion", "Appraise", "Appreciate", "Apprehend", "Apprentice", "Apprise", "Approach", "Appropriate", "Approve", "Approximate", "Aquaplane", "Arbitrate", "Arc", "Arch", "Archive", "Argue", "Arise", "Arm", "Arouse", "Arraign", "Arrange", "Array", "Arrest", "Arrive", "Arrogate", "Arse", "Art", "Articulate", "Ascend", "Ascertain", "Ascribe", "Ask", "Asphyxiate", "Aspirate", "Aspire", "Assail", "Assassinate", "Assault", "Assay", "Assemble", "Assent", "Assert", "Assess", "Assign", "Assimilate", "Assist", "Associate", "Assuage", "Assume", "Assure", "Asterisk", "Astonish", "Astound", "Atomise", "Atomize", "Atone", "Atrophy", "Attach", "Attack", "Attain", "Attempt", "Attend", "Attenuate", "Attest", "Attract", "Attribute", "Auction", "Audit", "Audition", "Augment", "Augur", "Authenticate", "Author", "Authorise", "Authorize", "Autograph", "Automate", "Autosave", "Autowind", "Avail", "Avenge", "Aver", "Average", "Avert", "Avoid", "Avow", "Await", "Awake", "Awaken", "Award", "Awe", "Ax", "Axe", "Baa", "Babble", "Baby", "Babysit", "Back", "Backcomb", "Backdate", "Backfill", "Backfire", "Backlight", "Backpack", "Backspace", "Backtrack", "Badger", "Baffle", "Bag", "Bail", "Bait", "Bake", "Balance", "Bale", "Ball", "Balloon", "Ballot", "Balls", "Bamboozle", "Ban", "Band", "Bandage", "Bandy", "Bang", "Bangs", "Banish", "Bank", "Bankroll", "Bankrupt", "Banter", "Baptise", "Baptize", "Bar", "Barbecue", "Bare", "Barf", "Bargain", "Barge", "Bark", "Barnstorm", "Barrack", "Barrel", "Barricade", "Barter", "Base", "Bash", "Bask", "Bastardise", "Bastardize", "Baste", "Bat", "Batch", "Bath", "Bathe", "Batten", "Batter", "Battle", "Baulk", "Bawl", "Bay", "Bayonet", "Be", "Beach", "Beam", "Bean", "Bear", "Beard", "Beat", "Beatbox", "Beatboxer", "Beatify", "Beautify", "Beaver", "Beckon", "Become", "Bed", "Bedazzle", "Bedeck", "Bedevil", "Beef", "Beep", "Beetle", "Befall", "Befit", "Befog", "Befriend", "Beg", "Beget", "Beggar", "Begin", "Begrudge", "Beguile", "Behave", "Behead", "Behold", "Behoove", "Behove", "Belabor", "Belabour", "Belay", "Belch", "Belie", "Believe", "Belittle", "Bellow", "Belly", "Bellyache", "Belong", "Belt", "Bemoan", "Bemuse", "Benchmark", "Bend", "Benefit", "Bequeath", "Berate", "Bereave", "Berth", "Beseech", "Beset", "Besiege", "Besmirch", "Bespatter", "Bespeak", "Best", "Bestir", "Bestow", "Bestride", "Bet", "Betake", "Betide", "Betoken", "Betray", "Better", "Bewail", "Beware", "Bewilder", "Bewitch", "Bias", "Bicker", "Bicycle", "Bid", "Bide", "Biff", "Bifurcate", "Big", "Bike", "Bilk", "Bill", "Billet", "Billow", "Bin", "Bind", "Binge", "Biodegrade", "Bird", "Bisect", "Bitch", "Bite", "Bitmap", "Bivouac", "Bivvy", "Blab", "Blabber", "Black", "Blackball", "Blacken", "Blacklist", "Blackmail", "Blag", "Blame", "Blanch", "Blank", "Blanket", "Blare", "Blaspheme", "Blast", "Blather", "Blaze", "Blazon", "Bleach", "Bleat", "Bleed", "Bleep", "Blemish", "Blench", "Blend", "Bless", "Blight", "Blind", "Blindfold", "Blindfolded", "Blindside", "Blink", "Bliss", "Blister", "Blitz", "Bloat", "Block", "Blockade", "Blog", "Blood", "Bloom", "Bloop", "Blossom", "Blot", "Blow", "Blub", "Blubber", "Bludge", "Bludgeon", "Bluff", "Blunder", "Blunt", "Blur", "Blurt", "Blush", "Bluster", "Board", "Boast", "Bob", "Bobble", "Bode", "Bodge", "Bog", "Boggle", "Boil", "Bolster", "Bolt", "Bomb", "Bombard", "Bond", "Bone", "Bonk", "Boo", "Boob", "Boogie", "Book", "Bookmark", "Boom", "Boomerang", "Boost", "Boot", "Bootleg", "Booze", "Bop", "Border", "Bore", "Born", "Borrow", "Boss", "Botch", "Bother", "Bottle", "Bottleful", "Bottom", "Bounce", "Bound", "Bow", "Bowdlerise", "Bowdlerize", "Bowl", "Bowlful", "Box", "Boycott", "Braai", "Brace", "Braces", "Bracket", "Brag", "Braid", "Brain", "Brainstorm", "Brainwash", "Braise", "Brake", "Branch", "Brand", "Brandish", "Brave", "Brawl", "Bray", "Brazen", "Breach", "Break", "Breakfast", "Breast", "Breastfeed", "Breathalyse", "Breathalyze", "Breathe", "Breed", "Breeze", "Brew", "Bribe", "Brick", "Bridge", "Bridle", "Brief", "Brighten", "Brim", "Bring", "Bristle", "Broach", "Broadcast", "Broaden", "Broadside", "Broil", "Broker", "Brood", "Brook", "Browbeat", "Brown", "Browse", "Bruise", "Bruit", "Brush", "Brutalise", "Brutalize", "Bubble", "Buck", "Bucket", "Bucketful", "Buckle", "Bud", "Buddy", "Budge", "Budget", "Buff", "Buffer", "Buffet", "Bug", "Bugger", "Build", "Bulge", "Bulk", "Bulldoze", "Bullshit", "Bully", "Bum", "Bumble", "Bump", "Bunch", "Bundle", "Bung", "Bungle", "Bunk", "Bunker", "Bunt", "Buoy", "Burble", "Burden", "Burgeon", "Burglarize", "Burgle", "Burn", "Burnish", "Burp", "Burrow", "Burst", "Bury", "Bus", "Bushwhack", "Busk", "Bust", "Bustle", "Busy", "Butcher", "Butt", "Butter", "Button", "Buttonhole", "Buttress", "Buy", "Buzz", "Buzzing", "Bypass", "Cable", "Cache", "Cackle", "Caddie", "Cadge", "Cage", "Cajole", "Cake", "Calcify", "Calculate", "Calibrate", "Call", "Calm", "Calve", "Camouflage", "Camp", "Campaign", "Can", "Canalise", "Canalize", "Cancel", "Cane", "Cannibalise", "Cannibalize", "Cannon", "Cannulate", "Canoe", "Canonise", "Canonize", "Canoodle", "Canst", "Cant", "Canter", "Canvass", "Cap", "Caper", "Capitalise", "Capitalize", "Capitulate", "Capsize", "Captain", "Caption", "Captivate", "Capture", "Caramelise", "Caramelize", "Carbonise", "Carbonize", "Carburise", "Carburize", "Card", "Care", "Careen", "Career", "Caress", "Caricature", "Carjack", "Carol", "Carom", "Carouse", "Carp", "Carpet", "Carpool", "Carry", "Cart", "Cartwheel", "Carve", "Cascade", "Case", "Cash", "Cashier", "Casserole", "Cast", "Castigate", "Castrate", "Catalog", "Catalogue", "Catalyse", "Catalyze", "Catapult", "Catch", "Categorise", "Categorize", "Cater", "Caterwaul", "Catnap", "Caucus", "Caulk", "Cause", "Cauterise", "Cauterize", "Caution", "Cave", "Cavil", "Cavort", "Caw", "Cc", "Cease", "Cede", "Celebrate", "Cement", "Censor", "Censure", "Centralise", "Centralize", "Centre", "Certificate", "Certify", "Chafe", "Chaff", "Chain", "Chair", "Chalk", "Challenge", "Champ", "Champion", "Chance", "Change", "Channel", "Chant", "Chaperon", "Chaperone", "Char", "Characterise", "Characterize", "Charbroil", "Charge", "Chargesheet", "Chargrill", "Charm", "Chart", "Charter", "Chase", "Chasten", "Chastise", "Chat", "Chatter", "Chauffeur", "Cheapen", "Cheat", "Cheater", "Check", "Checkmate", "Cheek", "Cheep", "Cheer", "Cherish", "Chew", "Chicken", "Chide", "Chill", "Chillax", "Chime", "Chink", "Chip", "Chirp", "Chisel", "Chivvy", "Chlorinate", "Choke", "Chomp", "Choose", "Chop", "Choreograph", "Chortle", "Chorus", "Christen", "Chromakey", "Chronicle", "Chuck", "Chuckle", "Chug", "Chunder", "Chunter", "Churn", "Cinch", "Circle", "Circulate", "Circumcise", "Circumnavigate", "Circumscribe", "Circumvent", "Cite", "Civilise", "Civilize", "Clack", "Claim", "Clam", "Clamber", "Clamor", "Clamour", "Clamp", "Clang", "Clank", "Clap", "Clarify", "Clash", "Clasp", "Class", "Classify", "Clatter", "Claw", "Clean", "Cleanse", "Clear", "Cleave", "Clench", "Clerk", "Click", "Climax", "Climb", "Clinch", "Cling", "Clink", "Clinking", "Clip", "Cloak", "Clobber", "Clock", "Clog", "Clone", "Clonk", "Close", "Closet", "Clot", "Clothe", "Cloud", "Clout", "Clown", "Club", "Cluck", "Clue", "Clump", "Clunk", "Cluster", "Clutch", "Clutter", "Coach", "Coagulate", "Coalesce", "Coarsen", "Coast", "Coat", "Coax", "Cobble", "Cock", "Cocoon", "Coddle", "Code", "Codify", "Coerce", "Coexist", "Cogitate", "Cohabit", "Cohere", "Coil", "Coin", "Coincide", "Collaborate", "Collapse", "Collar", "Collate", "Collect", "Collectivise", "Collectivize", "Collide", "Colligate", "Collocate", "Collude", "Colonise", "Colonize", "Colorize", "Colour", "Comb", "Combat", "Combine", "Combust", "Come", "Comfort", "Command", "Commandeer", "Commemorate", "Commence", "Commend", "Comment", "Commentate", "Commercialise", "Commercialize", "Commingle", "Commiserate", "Commission", "Commit", "Commune", "Communicate", "Commute", "Compact", "Compare", "Compartmentalise", "Compartmentalize", "Compel", "Compensate", "Compete", "Compile", "Complain", "Complement", "Complete", "Complicate", "Compliment", "Comply", "Comport", "Compose", "Compost", "Compound", "Comprehend", "Compress", "Comprise", "Compromise", "Compute", "Computerise", "Computerize", "Con", "Conceal", "Concede", "Conceive", "Concentrate", "Conceptualise", "Conceptualize", "Concern", "Concertina", "Conciliate", "Conclude", "Concoct", "Concrete", "Concur", "Concuss", "Condemn", "Condense", "Condescend", "Condition", "Condone", "Conduct", "Cone", "Confer", "Confess", "Confide", "Configure", "Confine", "Confirm", "Confiscate", "Conflate", "Conflict", "Conform", "Confound", "Confront", "Confuse", "Confute", "Congeal", "Congratulate", "Congregate", "Conjecture", "Conjoin", "Conjugate", "Conjure", "Conk", "Connect", "Connive", "Connote", "Conquer", "Conscientise", "Conscientize", "Conscript", "Consecrate", "Consent", "Conserve", "Consider", "Consign", "Consist", "Console", "Consolidate", "Consort", "Conspire", "Constitute", "Constrain", "Constrict", "Construct", "Construe", "Consult", "Consume", "Consummate", "Contact", "Contain", "Contaminate", "Contemplate", "Contend", "Content", "Contest", "Contextualise", "Contextualize", "Continue", "Contort", "Contract", "Contradict", "Contraindicate", "Contrast", "Contravene", "Contribute", "Contrive", "Control", "Controvert", "Convalesce", "Convene", "Converge", "Converse", "Convert", "Convey", "Convict", "Convince", "Convoke", "Convulse", "Coo", "Cook", "Cool", "Coop", "Cooperate", "Coordinate", "Cop", "Cope", "Coppice", "Copulate", "Copy", "Copyright", "Cordon", "Core", "Cork", "Corkscrew", "Corner", "Corral", "Correct", "Correlate", "Correspond", "Corrode", "Corrupt", "Coruscate", "Cosh", "Cosset", "Cost", "Cosy", "Cotton", "Couch", "Cough", "Counsel", "Count", "Countenance", "Counter", "Counteract", "Counterbalance", "Counterfeit", "Countermand", "Counterpoint", "Countersign", "Couple", "Courier", "Course", "Court", "Covenant", "Cover", "Covet", "Cow", "Cower", "Cox", "Cozy", "Crack", "Crackle", "Cradle", "Craft", "Cram", "Cramp", "Crane", "Crank", "Crap", "Crash", "Crate", "Crave", "Crawl", "Crayon", "Creak", "Creaking", "Cream", "Crease", "Create", "Credential", "Credit", "Creep", "Cremate", "Creolise", "Creolize", "Creosote", "Crest", "Crew", "Crib", "Crick", "Criminalise", "Criminalize", "Crimp", "Cringe", "Crinkle", "Cripple", "Crisp", "Criticise", "Criticize", "Critique", "Croak", "Crochet", "Crook", "Croon", "Crop", "Cross", "Crouch", "Crow", "Crowd", "Crown", "Crucify", "Cruise", "Crumble", "Crumple", "Crunch", "Crusade", "Crush", "Cry", "Crystallise", "Crystallize", "Cube", "Cuckold", "Cuddle", "Cudgel", "Cue", "Cuff", "Cull", "Culminate", "Cultivate", "Culture", "Cup", "Curate", "Curb", "Curdle", "Cure", "Curl", "Curry", "Curse", "Curtail", "Curtain", "Curtsy", "Curve", "Cushion", "Cuss", "Customise", "Customize", "Cut", "Cwtch", "Cycle", "Dab", "Dabble", "Dally", "Dam", "Damage", "Dammit", "Damn", "Damp", "Dampen", "Dance", "Dandle", "Dangle", "Dare", "Darken", "Darn", "Dart", "Dash", "Date", "Daub", "Daunt", "Dawdle", "Dawn", "Daydream", "Dazzle", "Deactivate", "Deaden", "Deadhead", "Deafen", "Deal", "Debar", "Debase", "Debate", "Debilitate", "Debit", "Debrief", "Debug", "Debunk", "Debut", "Decamp", "Decant", "Decapitate", "Decay", "Deceive", "Decelerate", "Decentralise", "Decentralize", "Decide", "Decimalise", "Decimalize", "Decimate", "Decipher", "Deck", "Declaim", "Declare", "Declassify", "Decline", "Declutter", "Decode", "Decommission", "Decompose", "Decompress", "Deconsecrate", "Deconstruct", "Decontaminate", "Decontrol", "Decorate", "Decouple", "Decoy", "Decrease", "Decree", "Decriminalise", "Decriminalize", "Decry", "Decrypt", "Dedicate", "Deduce", "Deduct", "Deejay", "Deem", "Deepen", "Deface", "Defame", "Default", "Defeat", "Defecate", "Defect", "Defend", "Defer", "Defile", "Define", "Deflate", "Deflect", "Deflower", "Defog", "Defoliate", "Deforest", "Deform", "Defrag", "Defragment", "Defraud", "Defray", "Defrock", "Defrost", "Defuse", "Defy", "Degenerate", "Deglaze", "Degrade", "Degrease", "Dehumanise", "Dehumanize", "Dehydrate", "Deify", "Deign", "Delay", "Delegate", "Delete", "Deliberate", "Delight", "Delimit", "Delineate", "Deliquesce", "Deliver", "Delouse", "Delude", "Deluge", "Delve", "Demand", "Demarcate", "Demean", "Demerge", "Demilitarise", "Demilitarize", "Demineralise", "Demineralize", "Demist", "Demo", "Demob", "Demobilise", "Demobilize", "Democratise", "Democratize", "Demolish", "Demonise", "Demonize", "Demonstrate", "Demoralise", "Demoralize", "Demote", "Demotivate", "Demur", "Demystify", "Denationalise", "Denationalize", "Denigrate", "Denitrify", "Denominate", "Denote", "Denounce", "Dent", "Denude", "Deny", "Depart", "Depend", "Depersonalise", "Depersonalize", "Depict", "Deplane", "Deplete", "Deplore", "Deploy", "Depopulate", "Deport", "Depose", "Deposit", "Deprave", "Deprecate", "Depreciate", "Depress", "Depressurise", "Depressurize", "Deprive", "Depute", "Deputise", "Deputize", "Deracinate", "Derail", "Dereference", "Deregulate", "Deride", "Derive", "Derogate", "Descale", "Descend", "Describe", "Descry", "Desecrate", "Desegregate", "Deselect", "Desensitise", "Desensitize", "Desert", "Deserve", "Design", "Designate", "Desire", "Desist", "Deskill", "Desolate", "Despair", "Despise", "Despoil", "Destabilise", "Destabilize", "Destock", "Destroy", "Detach", "Detail", "Detain", "Detect", "Deter", "Deteriorate", "Determine", "Detest", "Dethrone", "Detonate", "Detour", "Detoxify", "Detract", "Detrain", "Devalue", "Devastate", "Develop", "Deviate", "Devise", "Devoice", "Devolve", "Devote", "Devour", "Diagnose", "Dial", "Dice", "Dicker", "Dictate", "Diddle", "Die", "Diet", "Differ", "Differentiate", "Diffract", "Diffuse", "Dig", "Digest", "Digitalise", "Digitalize", "Digitise", "Digitize", "Dignify", "Digress", "Dilate", "Dilute", "Diluted", "Dim", "Diminish", "Dimple", "Dine", "Ding", "Dink", "Dip", "Diphthongise", "Diphthongize", "Direct", "Dirty", "Dis", "Disable", "Disabuse", "Disadvantage", "Disaffiliate", "Disafforest", "Disagree", "Disallow", "Disambiguate", "Disappear", "Disappoint", "Disapprove", "Disarm", "Disarrange", "Disassemble", "Disassociate", "Disavow", "Disband", "Disbar", "Disbelieve", "Disburse", "Discard", "Discern", "Discharge", "Discipline", "Disclaim", "Disclose", "Discolor", "Discolour", "Discomfit", "Discomfort", "Discompose", "Disconcert", "Disconnect", "Discontinue", "Discount", "Discourage", "Discourse", "Discover", "Discredit", "Discriminate", "Discuss", "Disdain", "Disembark", "Disembowel", "Disenfranchise", "Disengage", "Disentangle", "Disestablish", "Disfigure", "Disgorge", "Disgrace", "Disguise", "Disgust", "Dish", "Dishearten", "Dishonor", "Dishonour", "Disillusion", "Disincentivise", "Disincentivize", "Disinfect", "Disinherit", "Disinhibit", "Disintegrate", "Disinter", "Disinvest", "Dislike", "Dislocate", "Dislodge", "Dismantle", "Dismay", "Dismember", "Dismiss", "Dismount", "Disobey", "Disorient", "Disorientate", "Disown", "Disparage", "Dispatch", "Dispel", "Dispense", "Disperse", "Displace", "Display", "Displease", "Disport", "Dispose", "Dispossess", "Disprove", "Dispute", "Disqualify", "Disregard", "Disrespect", "Disrobe", "Disrupt", "Dissect", "Dissemble", "Disseminate", "Dissent", "Dissimulate", "Dissipate", "Dissociate", "Dissolve", "Dissuade", "Distance", "Distend", "Distil", "Distill", "Distinguish", "Distort", "Distract", "Distress", "Distribute", "Distrust", "Disturb", "Disunite", "Ditch", "Dither", "Dive", "Diverge", "Diversify", "Divert", "Divest", "Divide", "Divine", "Divorce", "Divulge", "Divvy", "Do", "Dob", "Dock", "Doctor", "Document", "Dodge", "Doff", "Dog", "Dole", "Doll", "Dollarise", "Dollarize", "Domesticate", "Dominate", "Don", "Donate", "Doodle", "Doom", "Doorstep", "Dop", "Dope", "Dose", "Doss", "Dot", "Dote", "Double", "Doubt", "Douche", "Douse", "Dovetail", "Down", "Downchange", "Downgrade", "Downlink", "Download", "Downplay", "Downshift", "Downsize", "Dowse", "Doze", "Draft", "Drag", "Dragoon", "Drain", "Dramatise", "Dramatize", "Drape", "Draught", "Draw", "Drawl", "Dread", "Dream", "Dredge", "Drench", "Dress", "Dribble", "Drift", "Drill", "Drink", "Drip", "Drive", "Drivel", "Drizzle", "Drone", "Drool", "Droop", "Drop", "Drown", "Drowse", "Drug", "Drum", "Dry", "Dub", "Duck", "Duckie", "Ducks", "Duel", "Duff", "Dull", "Dumb", "Dumbfound", "Dummy", "Dump", "Dunk", "Dunt", "Dupe", "Duplicate", "Dust", "Dwarf", "Dwell", "Dwindle", "Dye", "Dynamite", "Earmark", "Earn", "Earth", "Ease", "Eat", "Eavesdrop", "Ebb", "Echo", "Eclipse", "Economise", "Economize", "Eddy", "Edge", "Edify", "Edit", "Editorialise", "Editorialize", "Educate", "Eff", "Efface", "Effect", "Effectuate", "Egg", "Ejaculate", "Eject", "Eke", "Elaborate", "Elapse", "Elbow", "Elect", "Electrify", "Electrocute", "Electroplate", "Elevate", "Elicit", "Elide", "Eliminate", "Elongate", "Elope", "Elucidate", "Elude", "Email", "Emanate", "Emancipate", "Emasculate", "Embalm", "Embargo", "Embark", "Embarrass", "Embed", "Embellish", "Embezzle", "Embitter", "Emblazon", "Embody", "Embolden", "Emboss", "Embrace", "Embroider", "Embroil", "Emcee", "Emend", "Emerge", "Emigrate", "Emit", "Emote", "Empathise", "Empathize", "Emphasise", "Emphasize", "Employ", "Empower", "Empty", "Emulate", "Emulsify", "Enable", "Enact", "Encamp", "Encapsulate", "Encase", "Encash", "Enchant", "Encircle", "Enclose", "Encode", "Encompass", "Encounter", "Encourage", "Encroach", "Encrypt", "Encumber", "End", "Endanger", "Endear", "Endeavor", "Endeavour", "Endorse", "Endow", "Endure", "Energise", "Energize", "Enervate", "Enfeeble", "Enfold", "Enforce", "Enfranchise", "Engage", "Engender", "Engineer", "Engorge", "Engrave", "Engross", "Engulf", "Enhance", "Enjoin", "Enjoy", "Enlarge", "Enlighten", "Enlist", "Enliven", "Enmesh", "Ennoble", "Enquire", "Enrage", "Enrapture", "Enrich", "Enrol", "Enroll", "Ensconce", "Enshrine", "Enshroud", "Enslave", "Ensnare", "Ensue", "Ensure", "Entail", "Entangle", "Enter", "Entertain", "Enthral", "Enthrall", "Enthrone", "Enthuse", "Entice", "Entitle", "Entomb", "Entrance", "Entrap", "Entreat", "Entrench", "Entrust", "Entwine", "Enumerate", "Enunciate", "Envelop", "Envisage", "Envision", "Envy", "Epitomise", "Epitomize", "Equal", "Equalise", "Equalize", "Equate", "Equip", "Equivocate", "Eradicate", "Erase", "Erect", "Erode", "Err", "Erupt", "Escalate", "Escape", "Eschew", "Escort", "Espouse", "Espy", "Essay", "Establish", "Esteem", "Estimate", "Etch", "Eulogise", "Eulogize", "Euthanise", "Euthanize", "Evacuate", "Evade", "Evaluate", "Evangelise", "Evangelize", "Evaporate", "Even", "Eventuate", "Evict", "Evidence", "Evince", "Eviscerate", "Evoke", "Evolve", "Exacerbate", "Exact", "Exaggerate", "Exalt", "Examine", "Exasperate", "Excavate", "Exceed", "Excel", "Except", "Excerpt", "Exchange", "Excise", "Excite", "Exclaim", "Exclude", "Excommunicate", "Excoriate", "Excrete", "Exculpate", "Excuse", "Execute", "Exemplify", "Exempt", "Exercise", "Exert", "Exeunt", "Exfoliate", "Exhale", "Exhaust", "Exhibit", "Exhilarate", "Exhort", "Exhume", "Exile", "Exist", "Exit", "Exonerate", "Exorcise", "Exorcize", "Expand", "Expatiate", "Expect", "Expectorate", "Expedite", "Expel", "Expend", "Experience", "Experiment", "Expiate", "Expire", "Explain", "Explicate", "Explode", "Exploit", "Explore", "Export", "Expose", "Expostulate", "Expound", "Express", "Expropriate", "Expunge", "Expurgate", "Extemporise", "Extemporize", "Extend", "Exterminate", "Externalise", "Externalize", "Extinguish", "Extirpate", "Extol", "Extort", "Extract", "Extradite", "Extrapolate", "Extricate", "Extrude", "Exude", "Exult", "Eye", "Eyeball", "Eyeglasses", "Fabricate", "Face", "Facilitate", "Factor", "Factorise", "Factorize", "Fade", "Faff", "Fail", "Faint", "Fake", "Fall", "Falsify", "Falter", "Familiarise", "Familiarize", "Fan", "Fancy", "Fantasise", "Fantasize", "Fare", "Farewell", "Farm", "Farrow", "Fart", "Fascinate", "Fashion", "Fast", "Fasten", "Father", "Fathom", "Fatten", "Fault", "Favor", "Favour", "Fawn", "Fax", "Faze", "Fear", "Feast", "Feather", "Feature", "Federate", "Feed", "Feel", "Feign", "Feint", "Fell", "Fellate", "Feminise", "Feminize", "Fence", "Fend", "Ferment", "Ferret", "Ferry", "Fertilise", "Fertilize", "Fess", "Fester", "Festoon", "Fetch", "Fete", "Fetishise", "Fetishize", "Fetter", "Feud", "Fib", "Fictionalise", "Fictionalize", "Fiddle", "Fidget", "Field", "Fight", "Figure", "Filch", "File", "Filibuster", "Fill", "Fillet", "Film", "Filter", "Finagle", "Finalise", "Finalize", "Finance", "Find", "Fine", "Finesse", "Finger", "Fingerprint", "Finish", "Fire", "Firebomb", "Firm", "Fish", "Fishtail", "Fit", "Fix", "Fizz", "Fizzle", "Flag", "Flagellate", "Flail", "Flake", "Flame", "Flank", "Flap", "Flare", "Flash", "Flat", "Flatline", "Flatten", "Flatter", "Flaunt", "Flavour", "Flay", "Fleck", "Flee", "Fleece", "Flesh", "Flex", "Flick", "Flicker", "Flight", "Flinch", "Fling", "Flip", "Flirt", "Flit", "Float", "Flock", "Flog", "Flood", "Floodlight", "Floor", "Flop", "Floss", "Flounce", "Flounder", "Flour", "Flourish", "Flout", "Flow", "Flower", "Flub", "Fluctuate", "Fluff", "Flummox", "Flunk", "Flush", "Fluster", "Flutter", "Fly", "Foal", "Foam", "Fob", "Focalise", "Focalize", "Focus", "Fog", "Foil", "Foist", "Fold", "Follow", "Foment", "Fondle", "Fool", "Foot", "Forage", "Forbear", "Forbid", "Force", "Ford", "Forearm", "Forecast", "Foreclose", "Foregather", "Foreground", "Foresee", "Foreshadow", "Foreshorten", "Forestall", "Foretell", "Forewarn", "Forfeit", "Forfend", "Forgather", "Forge", "Forget", "Forgive", "Forgo", "Fork", "Form", "Formalise", "Formalize", "Format", "Formulate", "Fornicate", "Forsake", "Forswear", "Fortify", "Forward", "Forwards", "Fossick", "Fossilise", "Fossilize", "Foster", "Foul", "Found", "Founder", "Fox", "Fracture", "Fragment", "Frame", "Franchise", "Frank", "Fraternise", "Fraternize", "Fray", "Freak", "Free", "Freelance", "Freeload", "Freestyle", "Freewheel", "Freeze", "Freight", "Frequent", "Freshen", "Fret", "Frighten", "Fringe", "Frisk", "Fritter", "Frizz", "Frizzle", "Frogmarch", "Frolic", "Front", "Frost", "Froth", "Frown", "Fruit", "Frustrate", "Fry", "Fuck", "Fudge", "Fuel", "Fulfil", "Fulfill", "Fulminate", "Fumble", "Fume", "Fumigate", "Function", "Fund", "Funk", "Funnel", "Furl", "Furlough", "Furnish", "Furrow", "Further", "Fuse", "Fuss", "Gab", "Gabble", "Gad", "Gag", "Gain", "Gainsay", "Gall", "Gallivant", "Gallop", "Galumph", "Galvanise", "Galvanize", "Gamble", "Gambol", "Gang", "Gape", "Garage", "Garden", "Gargle", "Garland", "Garner", "Garnish", "Garrison", "Garrote", "Garrotte", "Gas", "Gash", "Gasp", "Gatecrash", "Gather", "Gauge", "Gawk", "Gawp", "Gaze", "Gazump", "Gazunder", "Gear", "Gee", "Gel", "Geld", "Gen", "Generalise", "Generalize", "Generate", "Gentrify", "Genuflect", "Germinate", "Gerrymander", "Gestate", "Gesticulate", "Gesture", "Get", "Ghost", "Ghostwrite", "Gibber", "Gift", "Giggle", "Gild", "Ginger", "Gird", "Girdle", "Give", "Gladden", "Glamorise", "Glamorize", "Glance", "Glare", "Glass", "Glaze", "Gleam", "Glean", "Glide", "Glimmer", "Glimmering", "Glimpse", "Glint", "Glisten", "Glister", "Glitter", "Gloat", "Globalise", "Globalize", "Glom", "Glorify", "Glory", "Gloss", "Glow", "Glower", "Glue", "Glug", "Glut", "Gnash", "Gnaw", "Go", "Goad", "Gob", "Gobble", "Goggle", "Goldbrick", "Goof", "Google", "Goose", "Gore", "Gorge", "Gossip", "Gouge", "Govern", "Grab", "Grace", "Grade", "Graduate", "Graft", "Grant", "Grapple", "Grasp", "Grass", "Grate", "Gratify", "Gravitate", "Graze", "Grease", "Green", "Greet", "Grey", "Grieve", "Grill", "Grimace", "Grin", "Grind", "Grip", "Gripe", "Grit", "Grizzle", "Groan", "Grok", "Groom", "Grope", "Gross", "Grouch", "Ground", "Group", "Grouse", "Grout", "Grovel", "Grow", "Growl", "Grub", "Grudge", "Grumble", "Grunt", "Guarantee", "Guard", "Guess", "Guest", "Guffaw", "Guide", "Guillotine", "Guilt", "Gulp", "Gum", "Gun", "Gurgle", "Gurn", "Gush", "Gussy", "Gust", "Gut", "Gutter", "Guzzle", "Gybe", "Gyp", "Gyrate", "Hack", "Haemorrhage", "Haggle", "Hail", "Hallmark", "Halloo", "Hallucinate", "Halt", "Halve", "Ham", "Hammer", "Hamper", "Hamstring", "Hand", "Handcuff", "Handicap", "Handle", "Hang", "Hanker", "Happen", "Harangue", "Harass", "Harbor", "Harbour", "Harden", "Hare", "Hark", "Harm", "Harmonise", "Harmonize", "Harness", "Harp", "Harpoon", "Harrow", "Harrumph", "Harry", "Harvest", "Hash", "Hassle", "Hasten", "Hatch", "Hate", "Haul", "Haunt", "Have", "Haw", "Hawk", "Hazard", "Haze", "Head", "Headbutt", "Headhunt", "Headline", "Heal", "Heap", "Hear", "Hearken", "Hearten", "Heat", "Heave", "Heckle", "Hector", "Hedge", "Heed", "Heel", "Heft", "Heighten", "Heist", "Help", "Hem", "Hemorrhage", "Herald", "Herd", "Hesitate", "Hew", "Hex", "Hibernate", "Hiccough", "Hiccup", "Hide", "Hie", "Highball", "Highlight", "Hightail", "Hijack", "Hike", "Hinder", "Hinge", "Hint", "Hire", "Hiss", "Hit", "Hitch", "Hitchhike", "Hive", "Hoard", "Hoax", "Hobble", "Hobnob", "Hock", "Hoe", "Hog", "Hoick", "Hoist", "Hold", "Hole", "Holiday", "Holler", "Hollow", "Holster", "Home", "Homeschool", "Homestead", "Hone", "Honeymoon", "Honk", "Honour", "Hoodwink", "Hoof", "Hook", "Hoon", "Hoot", "Hoover", "Hop", "Hope", "Horn", "Horrify", "Horse", "Horsewhip", "Hose", "Hosepipe", "Hospitalise", "Hospitalize", "Host", "Hot", "Hotfoot", "Hound", "House", "Hover", "Howl", "Huddle", "Huff", "Hug", "Hull", "Hum", "Humanise", "Humanize", "Humble", "Humiliate", "Humour", "Hump", "Hunch", "Hunger", "Hunker", "Hunt", "Hurdle", "Hurl", "Hurry", "Hurt", "Hurtle", "Husband", "Hush", "Husk", "Hustle", "Hybridise", "Hybridize", "Hydrate", "Hydroplane", "Hype", "Hyperventilate", "Hyphenate", "Hypnotise", "Hypnotize", "Hypothesise", "Hypothesize", "Ice", "Iconify", "Idealise", "Idealize", "Ideate", "Identify", "Idle", "Idolise", "Idolize", "Ignite", "Ignore", "Illuminate", "Illumine", "Illustrate", "Imagine", "Imagineer", "Imbibe", "Imbue", "Imitate", "Immerse", "Immigrate", "Immobilise", "Immobilize", "Immolate", "Immortalise", "Immortalize", "Immunise", "Immunize", "Immure", "Impact", "Impair", "Impale", "Impanel", "Impart", "Impeach", "Impede", "Impel", "Imperil", "Impersonate", "Impinge", "Implant", "Implement", "Implicate", "Implode", "Implore", "Imply", "Import", "Importune", "Impose", "Impound", "Impoverish", "Impregnate", "Impress", "Imprint", "Imprison", "Improve", "Improvise", "Impugn", "Inactivate", "Inaugurate", "Incapacitate", "Incarcerate", "Incarnate", "Incense", "Incentivise", "Incentivize", "Inch", "Incinerate", "Incise", "Incite", "Incline", "Include", "Incommode", "Inconvenience", "Incorporate", "Increase", "Incriminate", "Incubate", "Inculcate", "Incur", "Indemnify", "Indent", "Index", "Indicate", "Indict", "Individualise", "Individualize", "Individuate", "Indoctrinate", "Induce", "Induct", "Indulge", "Industrialise", "Industrialize", "Infantilise", "Infantilize", "Infect", "Infer", "Infest", "Infill", "Infiltrate", "Inflame", "Inflate", "Inflect", "Inflict", "Influence", "Inform", "Infringe", "Infuriate", "Infuse", "Ingest", "Ingratiate", "Inhabit", "Inhale", "Inhere", "Inherit", "Inhibit", "Initial", "Initialise", "Initialize", "Initiate", "Inject", "Injure", "Ink", "Inlay", "Innovate", "Inoculate", "Input", "Inscribe", "Inseminate", "Insert", "Inset", "Insinuate", "Insist", "Inspect", "Inspire", "Install", "Instance", "Instigate", "Instil", "Instill", "Institute", "Institutionalise", "Institutionalize", "Instruct", "Insulate", "Insult", "Insure", "Integrate", "Intend", "Intensify", "Inter", "Interact", "Interbreed", "Intercede", "Intercept", "Interchange", "Interconnect", "Intercut", "Interest", "Interface", "Interfere", "Interject", "Interlace", "Interleave", "Interlink", "Interlock", "Intermarry", "Intermesh", "Intermingle", "Intermix", "Intern", "Internalise", "Internalize", "Internationalise", "Internationalize", "Interpenetrate", "Interpolate", "Interpose", "Interpret", "Interrelate", "Interrogate", "Interrupt", "Intersect", "Intersperse", "Intertwine", "Intervene", "Interview", "Interweave", "Interwork", "Intimate", "Intimidate", "Intone", "Intoxicate", "Intrigue", "Introduce", "Intrude", "Intubate", "Intuit", "Inundate", "Inure", "Invade", "Invalid", "Invalidate", "Inveigh", "Inveigle", "Invent", "Inventory", "Invert", "Invest", "Investigate", "Invigilate", "Invigorate", "Invite", "Invoice", "Invoke", "Involve", "Ionise", "Ionize", "Irk", "Iron", "Irradiate", "Irrigate", "Irritate", "Irrupt", "Isolate", "Issue", "Italicise", "Italicize", "Itch", "Itemise", "Itemize", "Iterate", "Jab", "Jabber", "Jack", "Jackknife", "Jail", "Jam", "Jangle", "Jar", "Jaw", "Jaywalk", "Jazz", "Jeer", "Jell", "Jeopardise", "Jeopardize", "Jerk", "Jest", "Jet", "Jettison", "Jib", "Jibe", "Jig", "Jiggle", "Jilt", "Jingle", "Jink", "Jinx", "Jive", "Jockey", "Jog", "Joggle", "Join", "Joint", "Joke", "Jol", "Jolly", "Jolt", "Josh", "Jostle", "Jot", "Journey", "Joust", "Judder", "Judge", "Juggle", "Juice", "Jumble", "Jump", "Junk", "Justify", "Jut", "Juxtapose", "Keel", "Keelhaul", "Keen", "Keep", "Ken", "Key", "Keyboard", "Kibitz", "Kick", "Kid", "Kidnap", "Kill", "Kindle", "Kink", "Kip", "Kiss", "Kit", "Kite", "Klap", "Kludge", "Knacker", "Knead", "Knee", "Kneecap", "Kneel", "Knife", "Knight", "Knit", "Knock", "Knot", "Know", "Knuckle", "Kowtow", "Kvetch", "Label", "Labour", "Lace", "Lacerate", "Lack", "Lacquer", "Lactate", "Ladder", "Ladle", "Lag", "Lam", "Lamb", "Lambast", "Lambaste", "Lament", "Lamp", "Lampoon", "Lance", "Land", "Lands", "Landscape", "Languish", "Lap", "Lapse", "Lard", "Large", "Lark", "Lash", "Lasso", "Last", "Latch", "Lather", "Laud", "Laugh", "Launch", "Launder", "Lavish", "Lay", "Layer", "Laze", "Leach", "Lead", "Leaf", "Leaflet", "Leak", "Lean", "Leap", "Leapfrog", "Learn", "Lease", "Leash", "Leave", "Leaven", "Lech", "Lecture", "Leer", "Leg", "Legalise", "Legalize", "Legislate", "Legitimise", "Legitimize", "Lend", "Lengthen", "Lessen", "Let", "Letter", "Letterbox", "Level", "Lever", "Leverage", "Levitate", "Levy", "Liaise", "Libel", "Liberalise", "Liberalize", "Liberate", "License", "Lick", "Lie", "Lift", "Ligate", "Light", "Lighten", "Like", "Liken", "Limber", "Lime", "Limit", "Limp", "Line", "Linger", "Link", "Lionise", "Lionize", "Liquefy", "Liquidate", "Liquidise", "Liquidize", "Lisp", "List", "Listen", "Litigate", "Litter", "Live", "Liven", "Load", "Loads", "Loaf", "Loan", "Loathe", "Lob", "Lobby", "Lobotomise", "Lobotomize", "Localise", "Localize", "Locate", "Lock", "Lodge", "Loft", "Log", "Loiter", "Loll", "Lollop", "Long", "Look", "Looks", "Loom", "Loop", "Loose", "Loosen", "Loot", "Lop", "Lope", "Lord", "Lose", "Lounge", "Lour", "Louse", "Love", "Low", "Lowball", "Lower", "Lubricate", "Luck", "Lug", "Lull", "Lumber", "Lump", "Lunch", "Lunge", "Lurch", "Lure", "Lurk", "Lust", "Luxuriate", "Lynch", "Macerate", "Machine", "Madden", "Magic", "Magnetise", "Magnetize", "Magnify", "Mail", "Maim", "Mainline", "Mainstream", "Maintain", "Major", "Make", "Malfunction", "Malign", "Malinger", "Maltreat", "Man", "Manacle", "Manage", "Mandate", "Mangle", "Manhandle", "Manicure", "Manifest", "Manipulate", "Manoeuvre", "Mantle", "Manufacture", "Manure", "Map", "Mar", "March", "Marginalise", "Marginalize", "Marinate", "Mark", "Market", "Maroon", "Marry", "Marshal", "Martyr", "Marvel", "Masculinise", "Masculinize", "Mash", "Mask", "Masquerade", "Mass", "Massacre", "Massage", "Master", "Mastermind", "Masticate", "Masturbate", "Match", "Mate", "Materialise", "Materialize", "Matriculate", "Matter", "Mature", "Maul", "Maunder", "Max", "Maximise", "Maximize", "Mean", "Meander", "Measure", "Mechanise", "Mechanize", "Medal", "Meddle", "Mediate", "Medicate", "Meditate", "Meet", "Meld", "Mellow", "Melt", "Memorialise", "Memorialize", "Memorise", "Memorize", "Menace", "Mend", "Menstruate", "Mention", "Meow", "Mercerise", "Mercerize", "Merchandise", "Merge", "Merit", "Mesh", "Mesmerise", "Mesmerize", "Mess", "Message", "Metabolise", "Metabolize", "Metamorphose", "Mete", "Meter", "Methinks", "Mew", "Mewl", "Miaow", "Microblog", "Microchip", "Micromanage", "Microwave", "Micturate", "Migrate", "Militarise", "Militarize", "Militate", "Milk", "Mill", "Mime", "Mimic", "Mince", "Mind", "Mine", "Mingle", "Miniaturise", "Miniaturize", "Minimise", "Minimize", "Minister", "Minor", "Mint", "Minute", "Mirror", "Misapply", "Misappropriate", "Misbehave", "Miscalculate", "Miscarry", "Miscast", "Misconceive", "Misconstrue", "Miscount", "Misdiagnose", "Misdial", "Misdirect", "Misfile", "Misfire", "Misgovern", "Mishandle", "Mishear", "Mishit", "Misinform", "Misinterpret", "Misjudge", "Miskey", "Mislay", "Mislead", "Mismanage", "Mismatch", "Misname", "Misplace", "Misplay", "Mispronounce", "Misquote", "Misread", "Misreport", "Misrepresent", "Miss", "Mission", "Misspell", "Misspend", "Mist", "Mistake", "Mistime", "Mistreat", "Mistrust", "Misunderstand", "Misuse", "Mitigate", "Mitre", "Mix", "Moan", "Mob", "Mobilise", "Mobilize", "Mock", "Mod", "Model", "Moderate", "Modernise", "Modernize", "Modify", "Modulate", "Moisten", "Moisturise", "Moisturize", "Mold", "Molder", "Molest", "Mollify", "Mollycoddle", "Molt", "Monitor", "Monopolise", "Monopolize", "Moo", "Mooch", "Moon", "Moonlight", "Moonwalk", "Moor", "Moot", "Mop", "Mope", "Moralise", "Moralize", "Morph", "Mortar", "Mortgage", "Mortify", "Mosey", "Mosh", "Mothball", "Mother", "Motion", "Motivate", "Motor", "Mould", "Moulder", "Moult", "Mount", "Mourn", "Mouse", "Mouth", "Move", "Movies", "Mow", "Muck", "Muddle", "Muddy", "Muff", "Muffle", "Mug", "Mulch", "Mull", "Multicast", "Multiply", "Multitask", "Mumble", "Mumbling", "Mummify", "Munch", "Murder", "Murmur", "Murmuring", "Murmurings", "Muscle", "Muse", "Mushroom", "Muss", "Muster", "Mutate", "Mute", "Mutilate", "Mutiny", "Mutter", "Muzzle", "Mystify", "Nab", "Nag", "Nail", "Name", "Namecheck", "Nap", "Narrate", "Narrow", "Narrowcast", "Nasalise", "Nasalize", "Nationalise", "Nationalize", "Natter", "Naturalise", "Naturalize", "Nauseate", "Navigate", "Near", "Nearer", "Nearest", "Neaten", "Necessitate", "Neck", "Necklace", "Need", "Needle", "Negate", "Negative", "Neglect", "Negotiate", "Neigh", "Nerve", "Nest", "Nestle", "Net", "Nettle", "Network", "Neuter", "Neutralise", "Neutralize", "Nibble", "Nick", "Nickname", "Niggle", "Nip", "Nitrify", "Nix", "Nobble", "Nod", "Nominalize", "Nominate", "Norm", "Normalise", "Normalize", "Nose", "Nosedive", "Nosh", "Notarise", "Notarize", "Notch", "Note", "Notice", "Notify", "Nourish", "Nudge", "Nuke", "Nullify", "Numb", "Number", "Nurse", "Nurture", "Nut", "Nuzzle", "Obey", "Obfuscate", "Object", "Objectify", "Oblige", "Obliterate", "Obscure", "Observe", "Obsess", "Obstruct", "Obtain", "Obtrude", "Obviate", "Occasion", "Occlude", "Occupy", "Occur", "Off", "Offend", "Offer", "Officiate", "Offload", "Offset", "Offshore", "Ogle", "Oil", "Okay", "Omit", "Ooze", "Open", "Operate", "Opine", "Oppose", "Oppress", "Opt", "Optimise", "Optimize", "Option", "Orbit", "Orchestrate", "Ordain", "Order", "Organise", "Organize", "Orient", "Orientate", "Originate", "Ornament", "Orphan", "Oscillate", "Ossify", "Ostracise", "Ostracize", "Oust", "Out", "Outbid", "Outclass", "Outdistance", "Outdo", "Outface", "Outfit", "Outflank", "Outfox", "Outgrow", "Outgun", "Outlast", "Outlaw", "Outline", "Outlive", "Outmaneuver", "Outmanoeuvre", "Outnumber", "Outpace", "Outperform", "Outplay", "Outpoint", "Output", "Outrage", "Outrank", "Outrun", "Outsell", "Outshine", "Outsmart", "Outsource", "Outstay", "Outstrip", "Outvote", "Outweigh", "Outwit", "Overachieve", "Overact", "Overawe", "Overbalance", "Overbook", "Overburden", "Overcharge", "Overcome", "Overcompensate", "Overcook", "Overdevelop", "Overdo", "Overdose", "Overdraw", "Overdub", "Overeat", "Overemphasize", "Overestimate", "Overexpose", "Overextend", "Overfeed", "Overflow", "Overfly", "Overgeneralise", "Overgeneralize", "Overgraze", "Overhang", "Overhaul", "Overhear", "Overheat", "Overindulge", "Overlap", "Overlay", "Overlie", "Overload", "Overlook", "Overpay", "Overplay", "Overpower", "Overprint", "Overproduce", "Overrate", "Overreach", "Overreact", "Override", "Overrule", "Overrun", "Oversee", "Oversell", "Overshadow", "Overshoot", "Oversimplify", "Oversleep", "Overspend", "Overstate", "Overstay", "Overstep", "Overstock", "Overstretch", "Overtake", "Overtax", "Overthrow", "Overtrain", "Overturn", "Overuse", "Overvalue", "Overwhelm", "Overwinter", "Overwork", "Overwrite", "Ovulate", "Owe", "Own", "Oxidise", "Oxidize", "Oxygenate", "Pace", "Pacify", "Pack", "Package", "Packetise", "Packetize", "Pad", "Paddle", "Padlock", "Page", "Paginate", "Pailful", "Pain", "Paint", "Pair", "Pal", "Palatalise", "Palatalize", "Pale", "Pall", "Palliate", "Palm", "Palpate", "Palpitate", "Pamper", "Pan", "Pander", "Panel", "Panhandle", "Panic", "Pant", "Paper", "Parachute", "Parade", "Parallel", "Paralyse", "Paralyze", "Paraphrase", "Parboil", "Parcel", "Parch", "Pardon", "Pare", "Park", "Parlay", "Parley", "Parody", "Parole", "Parrot", "Parry", "Parse", "Part", "Partake", "Participate", "Particularise", "Particularize", "Partition", "Partner", "Party", "Pass", "Passivise", "Passivize", "Paste", "Pasteurise", "Pasteurize", "Pasture", "Pat", "Patch", "Patent", "Patrol", "Patronise", "Patronize", "Patter", "Pattern", "Pause", "Pave", "Paw", "Pawn", "Pay", "Peak", "Peal", "Peck", "Pedal", "Peddle", "Pedestrianise", "Pedestrianize", "Pee", "Peek", "Peel", "Peep", "Peer", "Peg", "Pelt", "Pen", "Penalise", "Penalize", "Pencil", "Penetrate", "Pension", "People", "Pep", "Pepper", "Perambulate", "Perceive", "Perch", "Percolate", "Perfect", "Perforate", "Perform", "Perfume", "Perish", "Perjure", "Perk", "Perm", "Permeate", "Permit", "Perpetrate", "Perpetuate", "Perplex", "Persecute", "Persevere", "Persist", "Personalise", "Personalize", "Personify", "Perspire", "Persuade", "Pertain", "Perturb", "Peruse", "Pervade", "Pervert", "Pester", "Pet", "Peter", "Petition", "Petrify", "Phase", "Philosophise", "Philosophize", "Phone", "Photocopy", "Photograph", "Photoshop", "Photosynthesise", "Photosynthesize", "Phrase", "Pick", "Picket", "Pickle", "Picnic", "Picture", "Picturise", "Picturize", "Piddle", "Piece", "Pierce", "Pig", "Pigeonhole", "Piggyback", "Pike", "Pile", "Pilfer", "Pill", "Pillage", "Pillory", "Pillow", "Pilot", "Pimp", "Pin", "Pinch", "Pine", "Ping", "Pinion", "Pink", "Pinpoint", "Pioneer", "Pip", "Pipe", "Pique", "Pirate", "Pirouette", "Piss", "Pit", "Pitch", "Pity", "Pivot", "Pixelate", "Pixellate", "Placate", "Place", "Plagiarise", "Plagiarize", "Plague", "Plait", "Plan", "Plane", "Plant", "Plaster", "Plasticise", "Plasticize", "Plate", "Plateau", "Play", "Plead", "Please", "Pledge", "Plight", "Plod", "Plonk", "Plop", "Plot", "Plough", "Pluck", "Plug", "Plumb", "Plummet", "Plump", "Plunder", "Plunge", "Plunk", "Pluralise", "Pluralize", "Ply", "Poach", "Pocket", "Point", "Poise", "Poison", "Poke", "Polarise", "Polarize", "Pole", "Poleax", "Poleaxe", "Police", "Polish", "Politicise", "Politicize", "Poll", "Pollard", "Pollinate", "Pollute", "Polymerise", "Polymerize", "Ponce", "Ponder", "Pong", "Pontificate", "Pony", "Poo", "Pooh", "Pool", "Poop", "Pootle", "Pop", "Popularise", "Popularize", "Populate", "Pore", "Port", "Portend", "Portion", "Portray", "Pose", "Posit", "Position", "Possess", "Posset", "Post", "Postmark", "Postpone", "Postulate", "Posture", "Pot", "Potter", "Pounce", "Pound", "Pour", "Pout", "Powder", "Power", "Practice", "Practise", "Praise", "Praises", "Prance", "Prang", "Prate", "Prattle", "Pray", "Preach", "Precede", "Precipitate", "Precis", "Preclude", "Predate", "Predecease", "Predetermine", "Predicate", "Predict", "Predispose", "Predominate", "Preen", "Preface", "Prefer", "Prefigure", "Prefix", "Preheat", "Prejudge", "Prejudice", "Preload", "Premaster", "Premiere", "Preoccupy", "Prep", "Prepare", "Prepone", "Preregister", "Presage", "Prescind", "Prescribe", "Preselect", "Presell", "Present", "Preserve", "Preset", "Preside", "Press", "Pressure", "Pressurise", "Pressurize", "Presume", "Presuppose", "Pretend", "Pretest", "Prettify", "Prevail", "Prevaricate", "Prevent", "Preview", "Prey", "Price", "Prick", "Prickle", "Pride", "Prime", "Primp", "Print", "Prioritise", "Prioritize", "Prise", "Privatise", "Privatize", "Privilege", "Prize", "Probate", "Probe", "Proceed", "Process", "Proclaim", "Procrastinate", "Procreate", "Proctor", "Procure", "Prod", "Produce", "Profane", "Profess", "Professionalise", "Professionalize", "Proffer", "Profile", "Profit", "Program", "Programme", "Progress", "Prohibit", "Project", "Proliferate", "Prolong", "Promenade", "Promise", "Promote", "Prompt", "Promulgate", "Pronounce", "Proof", "Proofread", "Prop", "Propagandise", "Propagandize", "Propagate", "Propel", "Prophesy", "Propitiate", "Propose", "Proposition", "Propound", "Proscribe", "Prosecute", "Proselytise", "Proselytize", "Prospect", "Prosper", "Prostitute", "Prostrate", "Protect", "Protest", "Protrude", "Prove", "Provide", "Provision", "Provoke", "Prowl", "Prune", "Pry", "Psych", "Psychoanalyse", "Publicise", "Publicize", "Publish", "Pucker", "Puff", "Puke", "Pull", "Pullulate", "Pulp", "Pulsate", "Pulse", "Pulverise", "Pulverize", "Pummel", "Pump", "Pun", "Punch", "Punctuate", "Puncture", "Punish", "Punt", "Pupate", "Purchase", "Purge", "Purify", "Purl", "Purloin", "Purport", "Purr", "Purse", "Pursue", "Purvey", "Push", "Pussyfoot", "Put", "Putrefy", "Putt", "Putter", "Puzzle", "Quack", "Quadruple", "Quaff", "Quail", "Quake", "Qualify", "Quantify", "Quarantine", "Quarrel", "Quarry", "Quarter", "Quarterback", "Quash", "Quaver", "Queer", "Quell", "Quench", "Query", "Quest", "Question", "Queue", "Quibble", "Quicken", "Quiet", "Quieten", "Quintuple", "Quip", "Quirk", "Quit", "Quiver", "Quiz", "Quote", "Quoth", "Rabbit", "Race", "Rack", "Radiate", "Radicalise", "Radicalize", "Radio", "Raffle", "Rag", "Rage", "Raid", "Rail", "Railroad", "Rain", "Raise", "Rake", "Rally", "Ram", "Ramble", "Ramp", "Rampage", "Randomise", "Randomize", "Range", "Rank", "Rankle", "Ransack", "Ransom", "Rant", "Rap", "Rape", "Rappel", "Rasp", "Rasterise", "Rasterize", "Rat", "Ratchet", "Rate", "Ratify", "Ration", "Rationalise", "Rationalize", "Rattle", "Ravage", "Rave", "Ravel", "Ravish", "Raze", "Razz", "Reach", "Reacquaint", "React", "Reactivate", "Read", "Readdress", "Readies", "Readjust", "Readmit", "Ready", "Reaffirm", "Realign", "Realise", "Realize", "Reallocate", "Ream", "Reanimate", "Reap", "Reappear", "Reapply", "Reappoint", "Reappraise", "Rear", "Rearm", "Rearrange", "Reason", "Reassemble", "Reassert", "Reassess", "Reassign", "Reassure", "Reawaken", "Rebel", "Reboot", "Reborn", "Rebound", "Rebrand", "Rebuff", "Rebuild", "Rebuke", "Rebut", "Recall", "Recant", "Recap", "Recapitulate", "Recapture", "Recast", "Recede", "Receive", "Recess", "Recharge", "Reciprocate", "Recite", "Reckon", "Reclaim", "Reclassify", "Recline", "Recognise", "Recognize", "Recoil", "Recollect", "Recommence", "Recommend", "Recompense", "Reconcile", "Recondition", "Reconfigure", "Reconfirm", "Reconnect", "Reconnoitre", "Reconquer", "Reconsider", "Reconstitute", "Reconstruct", "Reconvene", "Record", "Recount", "Recoup", "Recover", "Recreate", "Recrudesce", "Recruit", "Rectify", "Recuperate", "Recur", "Recycle", "Redact", "Redden", "Redecorate", "Redeem", "Redefine", "Redeploy", "Redesign", "Redevelop", "Redial", "Redirect", "Rediscover", "Redistribute", "Redistrict", "Redo", "Redouble", "Redound", "Redraft", "Redraw", "Redress", "Reduce", "Reduplicate", "Reef", "Reek", "Reel", "Ref", "Refer", "Referee", "Reference", "Refill", "Refinance", "Refine", "Refit", "Reflate", "Reflect", "Refloat", "Refocus", "Reform", "Reformat", "Reformulate", "Refract", "Refrain", "Refresh", "Refrigerate", "Refuel", "Refund", "Refurbish", "Refuse", "Refute", "Regain", "Regale", "Regard", "Regenerate", "Register", "Regress", "Regret", "Regroup", "Regularise", "Regularize", "Regulate", "Regurgitate", "Rehabilitate", "Rehash", "Rehear", "Rehearse", "Reheat", "Rehome", "Rehouse", "Reign", "Reignite", "Reimburse", "Rein", "Reincarnate", "Reinforce", "Reinstate", "Reinterpret", "Reintroduce", "Reinvent", "Reinvest", "Reinvigorate", "Reissue", "Reiterate", "Reject", "Rejig", "Rejigger", "Rejoice", "Rejoin", "Rejuvenate", "Rekindle", "Relapse", "Relate", "Relaunch", "Relax", "Relay", "Release", "Relegate", "Relent", "Relieve", "Relinquish", "Relish", "Relive", "Reload", "Relocate", "Rely", "Remain", "Remainder", "Remake", "Remand", "Remap", "Remark", "Remarry", "Remaster", "Remediate", "Remedy", "Remember", "Remind", "Reminisce", "Remit", "Remix", "Remodel", "Remonstrate", "Remortgage", "Remould", "Remount", "Remove", "Remunerate", "Rename", "Rend", "Render", "Rendezvous", "Renege", "Renew", "Renounce", "Renovate", "Rent", "Reoccur", "Reoffend", "Reopen", "Reorder", "Reorganise", "Reorganize", "Reorient", "Repackage", "Repair", "Repatriate", "Repay", "Repeal", "Repeat", "Repel", "Repent", "Rephrase", "Replace", "Replay", "Replenish", "Replicate", "Reply", "Report", "Repose", "Repossess", "Represent", "Repress", "Reprieve", "Reprimand", "Reprint", "Reproach", "Reprocess", "Reproduce", "Reprove", "Repudiate", "Repulse", "Repurpose", "Request", "Require", "Requisition", "Requite", "Rerun", "Reschedule", "Rescind", "Rescue", "Research", "Researches", "Resect", "Resell", "Resemble", "Resent", "Reserve", "Reset", "Resettle", "Reshape", "Reshuffle", "Reside", "Resign", "Resist", "Resit", "Resize", "Reskill", "Resolve", "Resonate", "Resort", "Resound", "Resource", "Respect", "Respire", "Respond", "Respray", "Rest", "Restart", "Restate", "Restock", "Restore", "Restrain", "Restrict", "Restring", "Restructure", "Result", "Resume", "Resupply", "Resurface", "Resurrect", "Resuscitate", "Retail", "Retain", "Retake", "Retaliate", "Retard", "Retch", "Retell", "Retest", "Rethink", "Retire", "Retool", "Retort", "Retouch", "Retrace", "Retract", "Retrain", "Retreat", "Retrench", "Retrieve", "Retrofit", "Retry", "Return", "Reunify", "Reunite", "Reuse", "Rev", "Revalue", "Revamp", "Reveal", "Revel", "Revenge", "Reverberate", "Revere", "Reverse", "Revert", "Review", "Revile", "Revise", "Revisit", "Revitalise", "Revitalize", "Revive", "Revivify", "Revoke", "Revolt", "Revolutionise", "Revolutionize", "Revolve", "Reward", "Rewind", "Rewire", "Reword", "Rework", "Rewrite", "Rhapsodise", "Rhapsodize", "Rhyme", "Rib", "Rick", "Ricochet", "Rid", "Riddle", "Ride", "Ridge", "Ridicule", "Riffle", "Rifle", "Rig", "Right", "Rightsize", "Rile", "Rim", "Ring", "Rinse", "Riot", "Rip", "Ripen", "Riposte", "Ripple", "Rise", "Risk", "Ritualise", "Ritualize", "Rival", "Rivet", "Roam", "Roar", "Roast", "Rob", "Robe", "Rock", "Rocket", "Roger", "Roll", "Romance", "Romanticise", "Romanticize", "Romp", "Roof", "Room", "Roost", "Root", "Rope", "Rosin", "Roster", "Rot", "Rotate", "Rouge", "Rough", "Roughen", "Roughhouse", "Round", "Rouse", "Roust", "Rout", "Route", "Rove", "Row", "Rub", "Rubberneck", "Rubbish", "Ruck", "Rue", "Ruffle", "Ruin", "Ruins", "Rule", "Rumble", "Ruminate", "Rummage", "Rumor", "Rumour", "Rumple", "Run", "Rupture", "Rush", "Rust", "Rustle", "Sabotage", "Sack", "Sacrifice", "Sadden", "Saddle", "Safeguard", "Sag", "Sail", "Salaam", "Salivate", "Sally", "Salt", "Salute", "Salvage", "Salve", "Sample", "Sanctify", "Sanction", "Sand", "Sandbag", "Sandblast", "Sandpaper", "Sandwich", "Sanitise", "Sanitize", "Sap", "Sashay", "Sass", "Sate", "Satiate", "Satirise", "Satirize", "Satisfy", "Saturate", "Saunter", "Savage", "Save", "Savor", "Savour", "Saw", "Say", "Scald", "Scale", "Scallop", "Scalp", "Scamper", "Scan", "Scandalise", "Scandalize", "Scapegoat", "Scar", "Scare", "Scarf", "Scarify", "Scarper", "Scatter", "Scattering", "Scavenge", "Scent", "Schedule", "Schematise", "Schematize", "Scheme", "Schlep", "Schlepp", "Schmooze", "School", "Schtup", "Schuss", "Scoff", "Scold", "Scoop", "Scoot", "Scope", "Scorch", "Score", "Scorn", "Scotch", "Scour", "Scourge", "Scout", "Scowl", "Scrabble", "Scram", "Scramble", "Scrap", "Scrape", "Scratch", "Scrawl", "Scream", "Screech", "Screen", "Screw", "Scribble", "Scrimp", "Script", "Scroll", "Scrounge", "Scrub", "Scrummage", "Scrunch", "Scruple", "Scrutinise", "Scrutinize", "Scud", "Scuff", "Scuffle", "Scull", "Sculpt", "Scupper", "Scurry", "Scuttle", "Scythe", "Seal", "Sealift", "Sear", "Search", "Season", "Seat", "Secede", "Seclude", "Second", "Secrete", "Section", "Secularise", "Secularize", "Secure", "Sedate", "Seduce", "See", "Seed", "Seek", "Seep", "Seethe", "Segment", "Segregate", "Segue", "Seize", "Select", "Sell", "Sellotape", "Semaphore", "Send", "Sensationalise", "Sensationalize", "Sense", "Sensitise", "Sensitize", "Sentence", "Sentimentalise", "Sentimentalize", "Separate", "Sequence", "Sequester", "Sequestrate", "Serenade", "Serialise", "Serialize", "Sermonise", "Sermonize", "Serve", "Service", "Set", "Settle", "Sever", "Sew", "Sex", "Sexualise", "Sexualize", "Shack", "Shackle", "Shade", "Shadow", "Shaft", "Shag", "Shake", "Shalt", "Sham", "Shamble", "Shame", "Shampoo", "Shanghai", "Shape", "Share", "Sharpen", "Shatter", "Shave", "Shear", "Sheathe", "Shed", "Sheer", "Shell", "Shellac", "Shelter", "Shelve", "Shepherd", "Shield", "Shift", "Shimmer", "Shimmy", "Shin", "Shine", "Shinny", "Ship", "Shipwreck", "Shirk", "Shit", "Shiver", "Shock", "Shoe", "Shoehorn", "Shoo", "Shoot", "Shop", "Shoplift", "Shore", "Short", "Shorten", "Shortlist", "Shoulder", "Shout", "Shove", "Shovel", "Show", "Showboat", "Showcase", "Shower", "Shred", "Shriek", "Shrill", "Shrink", "Shrivel", "Shroom", "Shroud", "Shrug", "Shtup", "Shuck", "Shudder", "Shuffle", "Shun", "Shunt", "Shush", "Shut", "Shuttle", "Shy", "Sic", "Sick", "Sicken", "Side", "Sideline", "Sidestep", "Sideswipe", "Sidetrack", "Sidle", "Sieve", "Sift", "Sigh", "Sight", "Sightsee", "Sign", "Signal", "Signify", "Signpost", "Silence", "Silhouette", "Silt", "Silver", "Simmer", "Simper", "Simplify", "Simulate", "Simulcast", "Sin", "Sing", "Singe", "Single", "Sink", "Sip", "Siphon", "Sire", "Sit", "Site", "Situate", "Size", "Sizzle", "Skate", "Skateboard", "Skedaddle", "Sketch", "Skew", "Skewer", "Ski", "Skid", "Skim", "Skimp", "Skin", "Skip", "Skipper", "Skirmish", "Skirt", "Skitter", "Skive", "Skivvy", "Skulk", "Sky", "Skyjack", "Skyrocket", "Slack", "Slacken", "Slag", "Slake", "Slam", "Slander", "Slant", "Slap", "Slash", "Slate", "Slather", "Slaughter", "Slave", "Slaver", "Slay", "Sledge", "Sleek", "Sleep", "Sleepwalk", "Sleet", "Slew", "Slice", "Slick", "Slide", "Slight", "Slim", "Sling", "Slink", "Slip", "Slit", "Slither", "Slob", "Slobber", "Slog", "Slop", "Slope", "Slosh", "Slot", "Slouch", "Slough", "Slow", "Slug", "Sluice", "Slum", "Slumber", "Slump", "Slur", "Slurp", "Smack", "Smart", "Smarten", "Smash", "Smear", "Smell", "Smelt", "Smile", "Smirk", "Smite", "Smoke", "Smooch", "Smoodge", "Smooth", "Smother", "Smoulder", "Smudge", "Smuggle", "Snack", "Snaffle", "Snag", "Snaggle", "Snake", "Snap", "Snare", "Snarf", "Snarl", "Snatch", "Sneak", "Sneer", "Sneeze", "Snicker", "Sniff", "Sniffle", "Snigger", "Snip", "Snipe", "Snitch", "Snivel", "Snog", "Snooker", "Snoop", "Snooper", "Snooze", "Snore", "Snorkel", "Snort", "Snow", "Snowball", "Snowplough", "Snowplow", "Snub", "Snuff", "Snuffle", "Snuffling", "Snuggle", "Soak", "Soap", "Soar", "Sob", "Sober", "Socialise", "Socialize", "Sock", "Sod", "Sodomise", "Sodomize", "Soften", "Soil", "Sojourn", "Solace", "Solder", "Soldier", "Sole", "Solemnise", "Solemnize", "Solicit", "Solidify", "Soliloquize", "Solve", "Somersault", "Soothe", "Sorrow", "Sort", "Sough", "Sound", "Soundproof", "Soup", "Sour", "Source", "Souse", "Sow", "Space", "Span", "Spangle", "Spank", "Spar", "Spare", "Spark", "Sparkle", "Spatter", "Spattering", "Spawn", "Spay", "Speak", "Spear", "Spearhead", "Spec", "Specialise", "Specialize", "Specify", "Spectacles", "Spectate", "Speculate", "Speed", "Spell", "Spellcheck", "Spend", "Spew", "Spice", "Spiff", "Spike", "Spill", "Spin", "Spiral", "Spirit", "Spit", "Spite", "Splash", "Splatter", "Splay", "Splice", "Splinter", "Split", "Splosh", "Splurge", "Splutter", "Spoil", "Sponge", "Sponsor", "Spoof", "Spook", "Spool", "Spoon", "Sport", "Sports", "Spot", "Spotlight", "Spout", "Sprain", "Sprawl", "Spray", "Spread", "Spreadeagle", "Spring", "Springboard", "Sprinkle", "Sprint", "Spritz", "Sprout", "Spruce", "Spur", "Spurn", "Spurt", "Sputter", "Spy", "Squabble", "Squall", "Squander", "Square", "Squash", "Squat", "Squawk", "Squeak", "Squeal", "Squeeze", "Squelch", "Squint", "Squirm", "Squirrel", "Squirt", "Squish", "Stab", "Stabilise", "Stabilize", "Stable", "Stables", "Stack", "Staff", "Stage", "Stagger", "Stagnate", "Stain", "Stake", "Stalk", "Stall", "Stammer", "Stamp", "Stampede", "Stanch", "Stand", "Standardise", "Standardize", "Staple", "Star", "Starch", "Stare", "Start", "Startle", "Starve", "Stash", "State", "Statement", "Station", "Staunch", "Stave", "Stay", "Steady", "Steal", "Steam", "Steamroller", "Steel", "Steep", "Steepen", "Steer", "Stem", "Stencil", "Step", "Stereotype", "Sterilise", "Sterilize", "Stew", "Stick", "Stickybeak", "Stiff", "Stiffen", "Stifle", "Stigmatise", "Stigmatize", "Still", "Stimulate", "Sting", "Stinger", "Stink", "Stint", "Stipple", "Stipulate", "Stir", "Stitch", "Stock", "Stockpile", "Stoke", "Stomach", "Stomp", "Stone", "Stonewall", "Stoop", "Stop", "Stopper", "Store", "Storm", "Storyboard", "Stow", "Straddle", "Strafe", "Straggle", "Straighten", "Strain", "Strand", "Strangle", "Strap", "Stratify", "Stravage", "Stravaig", "Stray", "Streak", "Stream", "Streamline", "Strengthen", "Stress", "Stretch", "Stretcher", "Strew", "Stride", "Strike", "String", "Strip", "Strive", "Stroke", "Stroll", "Structure", "Struggle", "Strum", "Strut", "Stub", "Stud", "Study", "Stuff", "Stultify", "Stumble", "Stump", "Stun", "Stunt", "Stupefy", "Stutter", "Style", "Stymie", "Sub", "Subcontract", "Subdivide", "Subdue", "Subedit", "Subject", "Subjugate", "Sublet", "Sublimate", "Submerge", "Submit", "Subordinate", "Suborn", "Subpoena", "Subscribe", "Subside", "Subsidise", "Subsidize", "Subsist", "Substantiate", "Substitute", "Subsume", "Subtend", "Subtitle", "Subtract", "Subvert", "Succeed", "Succor", "Succour", "Succumb", "Suck", "Sucker", "Suckle", "Suction", "Sue", "Suffer", "Suffice", "Suffocate", "Suffuse", "Sugar", "Suggest", "Suit", "Sulk", "Sulks", "Sully", "Sum", "Summarise", "Summarize", "Summon", "Summons", "Sun", "Sunbathe", "Sunder", "Sunset", "Sup", "Superimpose", "Superintend", "Superpose", "Supersede", "Supersize", "Supersized", "Supervene", "Supervise", "Supplant", "Supplement", "Supply", "Support", "Suppose", "Suppress", "Suppurate", "Surcharge", "Surf", "Surface", "Surge", "Surmise", "Surmount", "Surpass", "Surprise", "Surrender", "Surround", "Survey", "Survive", "Suspect", "Suspend", "Suspenders", "Suss", "Sustain", "Suture", "Swab", "Swaddle", "Swagger", "Swallow", "Swamp", "Swan", "Swank", "Swap", "Swarm", "Swat", "Swath", "Swathe", "Sway", "Swear", "Sweat", "Sweep", "Sweeps", "Sweeten", "Swell", "Swelter", "Swerve", "Swig", "Swill", "Swim", "Swindle", "Swing", "Swipe", "Swirl", "Swish", "Switch", "Swivel", "Swoon", "Swoop", "Swoosh", "Swot", "Symbolise", "Symbolize", "Sympathise", "Sympathize", "Symptomize", "Synchronise", "Synchronize", "Syndicate", "Synthesise", "Synthesize", "Syringe", "Systematise", "Systematize", "Tab", "Table", "Tabulate", "Tack", "Tackle", "Tag", "Tail", "Tailgate", "Tailor", "Taint", "Take", "Talk", "Tally", "Tame", "Tamp", "Tamper", "Tan", "Tangle", "Tango", "Tank", "Tankful", "Tantalise", "Tantalize", "Tap", "Tape", "Taper", "Tar", "Target", "Tarmac", "Tarnish", "Tarry", "Tart", "Task", "Taste", "Tattle", "Tattoo", "Taunt", "Tauten", "Tax", "Taxi", "Taxicab", "Teach", "Team", "Tear", "Tease", "Tee", "Teem", "Teeter", "Teethe", "Telecast", "Telecommute", "Teleconference", "Telegraph", "Telemeter", "Teleoperate", "Telephone", "Teleport", "Telescope", "Televise", "Telex", "Tell", "Telnet", "Temp", "Temper", "Temporise", "Temporize", "Tempt", "Tenant", "Tend", "Tender", "Tenderise", "Tenderize", "Tense", "Tension", "Tergiversate", "Term", "Terminate", "Terraform", "Terrify", "Terrorise", "Terrorize", "Test", "Testify", "Tether", "Text", "Thank", "Thatch", "Thaw", "Theorise", "Theorize", "Thicken", "Thin", "Think", "Thirst", "Thrash", "Thread", "Threaten", "Thresh", "Thrill", "Thrive", "Throb", "Throbbing", "Throng", "Throttle", "Throw", "Thrust", "Thud", "Thumb", "Thump", "Thunder", "Thwack", "Thwart", "Tick", "Ticket", "Tickle", "Tide", "Tidy", "Tie", "Tighten", "Tile", "Till", "Tilt", "Time", "Timetable", "Tinge", "Tingle", "Tingling", "Tinker", "Tinkle", "Tinkling", "Tint", "Tip", "Tippex", "Tipple", "Tiptoe", "Tire", "Titillate", "Titivate", "Title", "Titrate", "Titter", "Toady", "Toast", "Toboggan", "Toddle", "Toe", "Tog", "Toggle", "Toil", "Toke", "Tolerate", "Toll", "Tone", "Tongue", "Tonify", "Tool", "Toot", "Tootle", "Top", "Topple", "Torch", "Torment", "Torpedo", "Torture", "Toss", "Tot", "Total", "Tote", "Totter", "Touch", "Tough", "Toughen", "Tour", "Tousle", "Tout", "Tow", "Towel", "Tower", "Toy", "Trace", "Track", "Trade", "Traduce", "Traffic", "Trail", "Train", "Traipse", "Trammel", "Tramp", "Trample", "Trampoline", "Tranquilize", "Tranquillize", "Transact", "Transcend", "Transcribe", "Transfer", "Transfigure", "Transfix", "Transform", "Transfuse", "Transgress", "Transit", "Translate", "Transliterate", "Transmit", "Transmogrify", "Transmute", "Transpire", "Transplant", "Transport", "Transpose", "Trap", "Trash", "Traumatise", "Traumatize", "Travel", "Traverse", "Trawl", "Tread", "Treasure", "Treat", "Treble", "Trek", "Tremble", "Trembling", "Trepan", "Trespass", "Trial", "Trick", "Trickle", "Trifle", "Trigger", "Trill", "Trim", "Trip", "Triple", "Triumph", "Trivialise", "Trivialize", "Troll", "Tromp", "Troop", "Trot", "Trouble", "Troubleshoot", "Trounce", "Trouser", "Truant", "Truck", "Trudge", "Trump", "Trumpet", "Truncate", "Trundle", "Truss", "Trust", "Try", "Tuck", "Tug", "Tugboat", "Tumble", "Tune", "Tunnel", "Turbocharge", "Turf", "Turn", "Tussle", "Tut", "Tutor", "Twang", "Tweak", "Tweet", "Twiddle", "Twig", "Twin", "Twine", "Twinkle", "Twirl", "Twist", "Twitch", "Twitter", "Twittering", "Type", "Typecast", "Typeset", "Typify", "Tyrannise", "Tyrannize", "Ulcerate", "Ululate", "Ump", "Umpire", "Unbalance", "Unban", "Unbend", "Unblock", "Unbuckle", "Unburden", "Unbutton", "Uncoil", "Uncork", "Uncouple", "Uncover", "Uncurl", "Undelete", "Underachieve", "Underbid", "Undercharge", "Undercook", "Undercut", "Underestimate", "Underestimation", "Underexpose", "Undergo", "Underlie", "Underline", "Undermine", "Underpay", "Underperform", "Underpin", "Underplay", "Underrate", "Underscore", "Undersell", "Undershoot", "Underspend", "Understand", "Understate", "Understudy", "Undertake", "Undervalue", "Underwrite", "Undo", "Undock", "Undress", "Undulate", "Unearth", "Unfasten", "Unfold", "Unfreeze", "Unfurl", "Unhand", "Unhinge", "Unhitch", "Unhook", "Unify", "Uninstall", "Unionise", "Unionize", "Unite", "Unlace", "Unlearn", "Unleash", "Unload", "Unlock", "Unloose", "Unloosen", "Unmask", "Unnerve", "Unpack", "Unpick", "Unplug", "Unravel", "Unroll", "Unsaddle", "Unscramble", "Unscrew", "Unseat", "Unsettle", "Unsubscribe", "Untangle", "Untie", "Unveil", "Unwind", "Unwrap", "Unzip", "Up", "Upbraid", "Upchange", "Upchuck", "Update", "Upend", "Upgrade", "Uphold", "Upholster", "Uplift", "Upload", "Uproot", "Upsell", "Upset", "Upshift", "Upskill", "Upstage", "Urge", "Urinate", "Use", "Usher", "Usurp", "Utilise", "Utilize", "Utter", "Vacate", "Vacation", "Vaccinate", "Vacillate", "Vacuum", "Valet", "Validate", "Value", "Vamoose", "Vandalise", "Vandalize", "Vanish", "Vanquish", "Vaporise", "Vaporize", "Varnish", "Vary", "Vault", "Veer", "Veg", "Vegetate", "Veil", "Vend", "Veneer", "Venerate", "Vent", "Ventilate", "Venture", "Verbalise", "Verbalize", "Verge", "Verify", "Versify", "Vest", "Vet", "Veto", "Vex", "Vibrate", "Victimise", "Victimize", "Vide", "Video", "Videotape", "Vie", "View", "Viewing", "Vilify", "Vindicate", "Violate", "Visit", "Visualise", "Visualize", "Vitiate", "Vitrify", "Vocalize", "Voice", "Void", "Volley", "Volumise", "Volumize", "Volunteer", "Vomit", "Vote", "Vouch", "Vouchsafe", "Vow", "Voyage", "Vulgarise", "Vulgarize", "Wad", "Waddle", "Wade", "Waffle", "Waft", "Wag", "Wage", "Wager", "Waggle", "Wail", "Wait", "Waive", "Wake", "Wakeboard", "Waken", "Walk", "Wall", "Wallop", "Wallow", "Wallpaper", "Waltz", "Wander", "Wane", "Wangle", "Wank", "Want", "Warble", "Ward", "Warm", "Warn", "Warp", "Warrant", "Wash", "Wassail", "Waste", "Watch", "Water", "Waterproof", "Waterski", "Wave", "Waver", "Wax", "Waylay", "Weaken", "Wean", "Weaponise", "Weaponize", "Wear", "Weary", "Weasel", "Weather", "Weatherise", "Weatherize", "Weave", "Wed", "Wedge", "Wee", "Weed", "Weekend", "Weep", "Weigh", "Weight", "Weird", "Welch", "Welcome", "Weld", "Well", "Welly", "Welsh", "Wend", "Westernise", "Westernize", "Wet", "Whack", "Wheedle", "Wheel", "Wheeze", "Whelp", "Whet", "Whiff", "While", "Whilst", "Whimper", "Whine", "Whinge", "Whinny", "Whip", "Whirl", "Whirr", "Whirring", "Whisk", "Whisper", "Whispering", "Whistle", "Whiten", "Whitewash", "Whittle", "Whiz", "Whizz", "Whoop", "Whoosh", "Whup", "Wick", "Widen", "Widow", "Wield", "Wig", "Wiggle", "Wildcat", "Will", "Wilt", "Wimp", "Win", "Wince", "Winch", "Wind", "Winds", "Windsurf", "Wine", "Wing", "Wink", "Winkle", "Winnow", "Winter", "Wipe", "Wire", "Wiretap", "Wise", "Wisecrack", "Wish", "Withdraw", "Wither", "Withhold", "Withstand", "Witness", "Witter", "Wobble", "Wolf", "Wonder", "Woo", "Woof", "Word", "Work", "Worm", "Worry", "Worsen", "Worship", "Worst", "Wound", "Wow", "Wowee", "Wrangle", "Wrap", "Wreak", "Wreathe", "Wreck", "Wrench", "Wrest", "Wrestle", "Wriggle", "Wring", "Wrinkle", "Writ", "Write", "Writhe", "Wrong", "Wrought", "Xerox", "Yack", "Yak", "Yank", "Yap", "Yaw", "Yawn", "Yearn", "Yell", "Yellow", "Yelp", "Yield", "Yodel", "Yoke", "Yomp", "Yowl", "Yuppify", "Zap", "Zero", "Zigzag", "Zing", "Zip", "Zone", "Zoom"] diff --git a/the_ascension_tree/js/format_number.js b/the_ascension_tree/js/format_number.js new file mode 100644 index 000000000..2d2190ef0 --- /dev/null +++ b/the_ascension_tree/js/format_number.js @@ -0,0 +1,59 @@ +function formatNumber(number, fixed=false, integer=false) { + if (!(number instanceof Decimal)) number = new Decimal(number); + + let sign = number.sign; + + let result = ""; + if (sign < 0) result += "-"; + + let numlog = number.abs().max(1e-100).log10(); + if (numlog.gt(1e9)) { + result += "e"; + numlog = numlog.log10(); + } + numlog = numlog.toNumber(); + + // Non-exponential + if (numlog < 6) { + let extra_digits = 3; + if (numlog >= 1) extra_digits = 2; + if (numlog >= 3) extra_digits = 1; + if (numlog >= 5) extra_digits = 0; + + if (!integer) result += pad_number(Math.pow(10, numlog), extra_digits, fixed); + else result += prettify_integer(Math.floor(Math.pow(10, numlog) + 1e-6), ','); + } + // Exponential + else { + if (round_prec(Math.pow(10, numlog - Math.floor(numlog)), 100) == 10) numlog = Math.round(numlog); + + result += pad_number(Math.pow(10, numlog - Math.floor(numlog)), 2, fixed); + result += "e"; + result += prettify_integer(Math.floor(numlog), ','); + } + + return result; +} + +function round_prec(x, prec) { + return Math.round(x * prec) / prec; +} + +function pad_number(number, extra_digits, fixed=false) { + let num = String(round_prec(number, Math.pow(10, extra_digits))); + if (fixed && extra_digits > 0) { + if (!num.includes('.')) num += '.'; + for (let rem = extra_digits - num.length + num.indexOf('.') + 1; rem > 0; rem--) num += '0'; + } + return num; +} + +function prettify_integer(number, delimiter="'") { + let num = String(number); + let result = ""; + for (let i = 0; i < num.length; i++) { + result += num[i]; + if (i < num.length - 1 && (num.length - i) % 3 == 1) result += delimiter; + } + return result; +} \ No newline at end of file diff --git a/the_ascension_tree/js/helpers.js b/the_ascension_tree/js/helpers.js new file mode 100644 index 000000000..ba4599b41 --- /dev/null +++ b/the_ascension_tree/js/helpers.js @@ -0,0 +1,78 @@ +function chooseDict(dict, rand=Math.random) { + if (Object.keys(dict).length == 0) return undefined; + + let sum = 0; + for (let key of Object.keys(dict)) { + sum += dict[key]; + } + + sum *= rand(); + for (let key of Object.keys(dict)) { + sum -= dict[key]; + if (sum <= 0) return key; + } + + return Object.keys(dict)[0]; +} + +function mixColors(color_a, color_b) { + return [Math.round(Math.sqrt(color_a[0] * color_a[0] / 2 + color_b[0] * color_b[0] / 2)), + Math.round(Math.sqrt(color_a[1] * color_a[1] / 2 + color_b[1] * color_b[1] / 2)), + Math.round(Math.sqrt(color_a[2] * color_a[2] / 2 + color_b[2] * color_b[2] / 2))]; +} + +function formAsRGB(color) { + return "rgb(" + color[0] + "," + color[1] + "," + color[2] + ")"; +} + +function properPrecision(number, digits) { + let sign = number.sign; + + let result = ""; + if (sign < 0) result += "-"; + + let numlog = number.abs().max(1e-100).log10(); + if (numlog.gt(1e9)) { + result += "e"; + numlog = numlog.log10(); + } + numlog = numlog.toNumber(); + + if (round_prec(Math.pow(10, numlog - Math.floor(numlog)), Math.pow(10, digits)) == 10) numlog = Math.round(numlog); + + result += pad_number(Math.pow(10, numlog - Math.floor(numlog)), digits); + result += "e"; + result += Math.floor(numlog); + + return new Decimal(result); +} + +function choose(list, rand=Math.random) { + return list[Math.min(Math.floor(rand() * list.length), list.length - 1)]; +} + +function openModal(id) { + closeModal(); + document.getElementById(id).style.display = ""; +} +function closeModal() { + for (let element of document.getElementsByClassName('modal-container')) { + element.style.display = "none"; + } +} + +// Simple Fast Counter is a part of PractRand suite by Chris Doty-Humphrey. + +function sfc32(a, b, c, d) { + return function() { + a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0; + var t = (a + b) | 0; + a = b ^ b >>> 9; + b = c + (c << 3) | 0; + c = (c << 21 | c >>> 11); + d = d + 1 | 0; + t = t + d | 0; + c = c + t | 0; + return (t >>> 0) / 4294967296; + } +} \ No newline at end of file diff --git a/the_ascension_tree/js/main.js b/the_ascension_tree/js/main.js new file mode 100644 index 000000000..1ba57fd84 --- /dev/null +++ b/the_ascension_tree/js/main.js @@ -0,0 +1,98 @@ +var player = new Player(); + +let last_local_save = -1; + +function gameLoop() { + let current_time = Date.now(); + + if (last_local_save < current_time - 1000) { + if (last_local_save == -1) local_load(); + else local_save(); + last_local_save = current_time; + } + + let delta = current_time - player.last_time_ts; + player.last_time_ts = current_time; + + playerUpdate(delta); + screenUpdate(); + + setTimeout(gameLoop, 50); +} + +var tree = document.getElementById("tree"); +var panzoom = Panzoom(tree, { canvas: true, maxScale: 1e100, step: 1 }) +tree.parentElement.addEventListener('wheel', panzoom.zoomWithWheel); + +window.addEventListener("resize", () => player.current_layer.selectLayer(true, true)); + +var settingsContainer = document.getElementById("settings-container"); +var zoomOptions = { + "-3": .15, + "-2": .2, + "-1": .3, + "0": .5, + "1": 1, + "2": 2, + "3": 4 +} +document.getElementById("zoomModifier").addEventListener("input", e => { + player.zoomModifier = zoomOptions[e.currentTarget.value]; + player.current_layer.selectLayer(); +}); +document.getElementById("settings-toggle").addEventListener("click", () => { + settingsContainer.style.visibility = settingsContainer.style.visibility === 'hidden' ? '' : 'hidden'; +}); +document.getElementById("animations-toggle").addEventListener("click", () => { + player.animations = !player.animations; + document.getElementById("animations-toggle").innerText = player.animations ? "Enabled" : "Disabled"; +}); +document.getElementById("singleclick-toggle").addEventListener("click", () => { + player.singleclick = !player.singleclick; + document.getElementById("singleclick-toggle").innerText = player.singleclick ? "Single Click" : "Double Click"; +}); +document.getElementById("hard-reset").addEventListener("click", () => { + const input = window.prompt("Input a seed, or leave blank for a random one:"); + if (input === "") { + hard_reset(); + } else { + const inputNumber = parseInt(input); + if (inputNumber !== NaN && inputNumber >= 0 && inputNumber < 2 ** 32) { + hard_reset(Math.floor(inputNumber)); + } + } +}); + +document.addEventListener('keydown', e => { + if ((e.code === 'KeyW' || e.code === 'ArrowUp') && player.current_layer.parent_layer !== undefined) { + player.current_layer.parent_layer.selectLayer(true); + } + if ((e.code === 'KeyA' || e.code === 'ArrowLeft') && player.current_layer.child_left !== undefined) { + player.current_layer.child_left.selectLayer(true); + } + if ((e.code === 'KeyD' || e.code === 'ArrowRight') && player.current_layer.child_right !== undefined) { + player.current_layer.child_right.selectLayer(true); + } + if (e.code === 'KeyP' && player.current_layer.canPrestige()) { + player.current_layer.prestige(); + } + if (e.code === 'KeyM') { + for (let upgrade of Object.values(player.current_layer.upgrades)) { + if (upgrade.bought) { + continue; + } else if (upgrade.canBuy()) { + upgrade.buy(); + } else { + break; + } + } + } + if (e.code === 'Space' || e.code === 'ArrowDown') { + player.current_layer.selectLayer(true); + } +}); + +requestAnimationFrame(() => { + player.current_layer.selectLayer(true, true); + gameLoop(); +}); diff --git a/the_ascension_tree/js/panzoom.min.js b/the_ascension_tree/js/panzoom.min.js new file mode 100644 index 000000000..70904abaf --- /dev/null +++ b/the_ascension_tree/js/panzoom.min.js @@ -0,0 +1,6 @@ +/** +* Panzoom for panning and zooming elements using CSS transforms +* Copyright Timmy Willison and other contributors +* https://github.com/timmywil/panzoom/blob/master/MIT-License.txt +*/ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Panzoom=e()}(this,function(){"use strict";var N=function(){return(N=Object.assign||function(t){for(var e,n=1,o=arguments.length;n document.getElementById('import_save').value = clipText); +} + +function importSave() { + let backup = player.save(); + try { + player.load(JSON.parse(atob(document.getElementById('import_save').value))); + closeModal(); + } + catch (e) { + player.load(backup); + } +} diff --git a/the_ascension_tree/js/screen_update.js b/the_ascension_tree/js/screen_update.js new file mode 100644 index 000000000..5ab3d4140 --- /dev/null +++ b/the_ascension_tree/js/screen_update.js @@ -0,0 +1,10 @@ +function screenUpdate() { + document.getElementById("root_points").textContent = formatNumber(player.layers[0].points, true, true); + document.getElementById('root_gain').textContent = formatNumber(player.layers[0].calculateProduction(), true); + + player.current_layer.screenUpdateCurrent(); + + for (let layer of player.layers) { + layer.screenUpdate(); + } +} \ No newline at end of file diff --git a/the_ascension_tree/manifest.json b/the_ascension_tree/manifest.json new file mode 100644 index 000000000..717672c8e --- /dev/null +++ b/the_ascension_tree/manifest.json @@ -0,0 +1,46 @@ +{ + "name": "The Ascension Tree", + "short_name": "Ascension Tree", + "start_url": "index.html", + "background_color": "#13262f", + "orientation": "portrait-primary", + "icons": [ + { + "src": "images\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "images\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "images\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "images\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "images\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "images\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ], + "display": "fullscreen" +} \ No newline at end of file diff --git a/the_ascension_tree/pwabuilder-sw.js b/the_ascension_tree/pwabuilder-sw.js new file mode 100644 index 000000000..51db76b5d --- /dev/null +++ b/the_ascension_tree/pwabuilder-sw.js @@ -0,0 +1,48 @@ +// This is the "Offline page" service worker + +importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js'); + +const CACHE = "pwabuilder-page"; + +const offlineFallbackPage = "index.html"; + +self.addEventListener("message", (event) => { + if (event.data && event.data.type === "SKIP_WAITING") { + self.skipWaiting(); + } +}); + +self.addEventListener('install', async (event) => { + event.waitUntil( + caches.open(CACHE) + .then((cache) => cache.add(offlineFallbackPage)) + ); +}); + +if (workbox.navigationPreload.isSupported()) { + workbox.navigationPreload.enable(); +} + +self.addEventListener('fetch', (event) => { + if (event.request.mode === 'navigate') { + event.respondWith((async () => { + try { + const preloadResp = await event.preloadResponse; + + if (preloadResp) { + return preloadResp; + } + + const networkResp = await fetch(event.request); + return networkResp; + } catch (error) { + + const cache = await caches.open(CACHE); + const cachedResp = await cache.match(offlineFallbackPage); + return cachedResp; + } + })()); + } +}); + +workbox.googleAnalytics.initialize(); \ No newline at end of file