From b4b70c47858910710cd325b6d326663bd0d5e286 Mon Sep 17 00:00:00 2001 From: Andrew Ringler Date: Fri, 17 Apr 2020 09:56:58 -0400 Subject: [PATCH 1/6] excluding node_modules from git --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules From 2a2e035c8de12b3da8ba19c58e9aa3111fe97f45 Mon Sep 17 00:00:00 2001 From: Andrew Ringler Date: Fri, 17 Apr 2020 09:57:19 -0400 Subject: [PATCH 2/6] fixing sourcemaps --- rollup.config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rollup.config.js b/rollup.config.js index 6011950..30391b7 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,6 +3,7 @@ import resolve from 'rollup-plugin-node-resolve'; import commonjs from 'rollup-plugin-commonjs'; import livereload from 'rollup-plugin-livereload'; import { terser } from 'rollup-plugin-terser'; +import path from 'path'; const production = !process.env.ROLLUP_WATCH; @@ -10,6 +11,9 @@ export default { input: 'src/main.js', output: { sourcemap: true, + sourcemapPathTransform: relativePath => { + return path.relative('src', relativePath) + }, format: 'iife', name: 'app', file: 'docs/bundle.js' From db355dbd8af284b32a10a13edfbf930b7ffa95db Mon Sep 17 00:00:00 2001 From: Andrew Ringler Date: Fri, 17 Apr 2020 09:57:34 -0400 Subject: [PATCH 3/6] new build --- docs/bundle.css | 20 +- docs/bundle.css.map | 30 + docs/bundle.js | 10959 +++++++++++++++++++++++++++++++++++++++++- docs/bundle.js.map | 1 + 4 files changed, 10999 insertions(+), 11 deletions(-) create mode 100644 docs/bundle.css.map create mode 100644 docs/bundle.js.map diff --git a/docs/bundle.css b/docs/bundle.css index 0231cda..9108882 100644 --- a/docs/bundle.css +++ b/docs/bundle.css @@ -1,13 +1,13 @@ -.head.svelte-3uzbpv{margin:1em 0 1em}input[type=number].svelte-3uzbpv{width:4em;text-align:center;margin:0px 0.7ex 5px}.foot.svelte-3uzbpv{margin-bottom:1em}.fa-svelte{vertical-align:sub}kbd.svelte-3uzbpv{-moz-border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;-webkit-border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;background-color:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;color:#333;display:inline-block;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff} -.palette.svelte-iwtfhk{background:#eee;padding:10px;display:flex;height:100px}.step.svelte-iwtfhk{height:100%;display:block;flex-grow:1} -pre.svelte-1n20esm{padding:1ex;background:#eee;white-space:pre-wrap} -h4.svelte-1yea8y5{font-size:1rem}svg.svelte-1yea8y5{width:100%}path.svelte-1yea8y5{fill:none;stroke:black;stroke-width:2}text.svelte-1yea8y5{dominant-baseline:central;font-size:13px;text-anchor:end}line.svelte-1yea8y5{fill:none;stroke:#ddd}line.direct.svelte-1yea8y5{stroke-width:2;stroke:#ccc;stroke-dasharray:6,4} -.card.svelte-1jaw2bc{margin-bottom:20px}span.step.svelte-1jaw2bc{display:inline-block;background:#f3f3f3;border:1px solid #ddd;color:#bbb;width:1.5em;height:1.5em;line-height:1.5em;text-align:center;margin-right:1ex;font-size:1.35rem} -@media(min-width: 720px){.colorblind-sim.svelte-116gzwh{text-align:right;position:absolute;right:20px;top:-46px}.res.svelte-116gzwh{text-align:right}}.text-muted.svelte-116gzwh{padding-right:1em;font-size:0.85rem;display:inline-block;padding-top:6px}.c1.svelte-116gzwh{margin-top:-15px} +.head.svelte-1cvo05r{margin:1em 0 1em}h1.svelte-1cvo05r{}input[type=number].svelte-1cvo05r{width:4em;text-align:center;margin:0px 0.7ex 5px}.foot.svelte-1cvo05r{margin-bottom:1em}.fa-svelte{vertical-align:sub}kbd.svelte-1cvo05r{-moz-border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;-webkit-border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;background-color:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;color:#333;display:inline-block;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff} +.palette.svelte-qylrh0{background:#eee;padding:10px;display:flex;height:100px}.step.svelte-qylrh0{height:100%;display:block;flex-grow:1} +pre.svelte-1rj5ek4{padding:1ex;background:#eee;white-space:pre-wrap} +h4.svelte-1cvjt29{font-size:1rem}svg.svelte-1cvjt29{width:100%}path.svelte-1cvjt29{fill:none;stroke:black;stroke-width:2}text.svelte-1cvjt29{dominant-baseline:central;font-size:13px;text-anchor:end}line.svelte-1cvjt29{fill:none;stroke:#ddd}line.direct.svelte-1cvjt29{stroke-width:2;stroke:#ccc;stroke-dasharray:6,4} +.card.svelte-ruts6u{margin-bottom:20px}span.step.svelte-ruts6u{display:inline-block;background:#f3f3f3;border:1px solid #ddd;color:#bbb;width:1.5em;height:1.5em;line-height:1.5em;text-align:center;margin-right:1ex;font-size:1.35rem} +@media(min-width: 720px){.colorblind-sim.svelte-ylsdbc{text-align:right;position:absolute;right:20px;top:-46px}.res.svelte-ylsdbc{text-align:right}}.text-muted.svelte-ylsdbc{padding-right:1em;font-size:0.85rem;display:inline-block;padding-top:6px}.c1.svelte-ylsdbc{margin-top:-15px} .fa-svelte.svelte-p8vizn{width:1em;height:1em;overflow:visible;display:inline-block} -.btn-group.svelte-18fgzm7{position:relative;top:-4px;padding-left:1ex;padding-right:1ex} -div.form-control.svelte-zqagyi{cursor:text;height:auto}.hidden.svelte-zqagyi{position:absolute;opacity:0;left:-99999px}span.inv.svelte-zqagyi{display:inline-block;width:60px;background:white;height:100%;vertical-align:bottom} -span.badge.svelte-t530zu{font-weight:normal;font-size:100%;color:#000;position:relative}.badge+.badge.svelte-t530zu{margin-left:1ex}span.inverted.svelte-t530zu{color:white}.popover.svelte-t530zu{position:absolute;top:30px;left:-100px;width:300px}.color-row.svelte-t530zu{display:flex;margin-bottom:3px}span.lbl.svelte-t530zu{width:8.333% - }span.color.svelte-t530zu{display:inline-block;height:30px;width:8.333%;border-left:1px solid white;border-bottom:1px solid white}span.color.svelte-t530zu:nth-child(7){border:2px solid black;margin-top:-1px;margin-right:0px;height:31px}span.color.svelte-t530zu:nth-child(8){border-left:0}span.hex.svelte-t530zu{pointer-events:none} +.btn-group.svelte-t0e0bc{position:relative;top:-4px;padding-left:1ex;padding-right:1ex} +div.form-control.svelte-r8qk73{cursor:text;height:auto}.hidden.svelte-r8qk73{position:absolute;opacity:0;left:-99999px}span.inv.svelte-r8qk73{display:inline-block;width:60px;background:white;height:100%;vertical-align:bottom} +span.badge.svelte-fua55c{font-weight:normal;font-size:100%;color:#000;position:relative}.badge+.badge.svelte-fua55c{margin-left:1ex}span.inverted.svelte-fua55c{color:white}.popover.svelte-fua55c{position:absolute;top:30px;left:-100px;width:300px}.color-row.svelte-fua55c{display:flex;margin-bottom:3px}span.lbl.svelte-fua55c{width:8.333% + }span.color.svelte-fua55c{display:inline-block;height:30px;width:8.333%;border-left:1px solid white;border-bottom:1px solid white}span.color.svelte-fua55c:nth-child(7){border:2px solid black;margin-top:-1px;margin-right:0px;height:31px}span.color.svelte-fua55c:nth-child(8){border-left:0}span.hex.svelte-fua55c{pointer-events:none} /*# sourceMappingURL=bundle.css.map */ \ No newline at end of file diff --git a/docs/bundle.css.map b/docs/bundle.css.map new file mode 100644 index 0000000..f35c0fb --- /dev/null +++ b/docs/bundle.css.map @@ -0,0 +1,30 @@ +{ + "version": 3, + "file": "bundle.css", + "sources": [ + "..\\src\\App.svelte", + "..\\src\\PalettePreview.svelte", + "..\\src\\Export.svelte", + "..\\src\\StepChart.svelte", + "..\\src\\Card.svelte", + "..\\src\\ColorBlindCheck.svelte", + "..\\node_modules\\fa-svelte\\src\\Icon.html", + "..\\src\\ButtonGroup.svelte", + "..\\src\\ColorList.svelte", + "..\\src\\Color.svelte" + ], + "sourcesContent": [ + "\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
", + "\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
", + "\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
", + "\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
", + "\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n", + "\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n", + "\r\n \r\n\r\n\r\n\r\n", + "\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
", + "\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}", + "\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/docs/bundle.js b/docs/bundle.js index 3baefb5..7cc1c1d 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -1,2 +1,10959 @@ -var app=function(){"use strict";function t(){}function e(t,e){for(const n in e)t[n]=e[n];return t}function n(t){return t()}function r(){return Object.create(null)}function o(t){t.forEach(n)}function i(t){return"function"==typeof t}function a(t,e){return t!=t?e==e:t!==e||t&&"object"==typeof t||"function"==typeof t}function c(t,n,r){return t[1]?e({},e(n.$$scope.ctx,t[1](r?r(n):{}))):n.$$scope.ctx}function u(t){const e={};for(const n in t)"$"!==n[0]&&(e[n]=t[n]);return e}function l(t,e){t.appendChild(e)}function s(t,e,n){t.insertBefore(e,n||null)}function f(t){t.parentNode.removeChild(t)}function h(t,e){for(let n=0;nt.removeEventListener(e,n,r)}function m(t){return function(e){return e.preventDefault(),t.call(this,e)}}function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function _(t,e){e=""+e,t.data!==e&&(t.data=e)}function w(t,e,n){t.style.setProperty(e,n)}function $(t,e,n){t.classList[n?"add":"remove"](e)}let x;function M(t){x=t}function k(t){(function(){if(!x)throw new Error("Function called outside component initialization");return x})().$$.before_render.push(t)}const C=[],T=Promise.resolve();let N=!1;const S=[],z=[],D=[];function L(t){S.push(t)}function j(t){z.push(t)}function E(t){D.push(t)}function U(){const t=new Set;do{for(;C.length;){const t=C.shift();M(t),A(t.$$)}for(;S.length;)S.shift()();for(;z.length;){const e=z.pop();t.has(e)||(e(),t.add(e))}}while(C.length);for(;D.length;)D.pop()();N=!1}function A(t){t.fragment&&(t.update(t.dirty),o(t.before_render),t.fragment.p(t.dirty,t.ctx),t.dirty=null,t.after_render.forEach(j))}const F=new Set;let O;function P(){O={remaining:0,callbacks:[]}}function Y(){O.remaining||o(O.callbacks)}function q(t,e){t&&t.i&&(F.delete(t),t.i(e))}function H(t,e,n){if(t&&t.o){if(F.has(t))return;F.add(t),O.callbacks.push(()=>{F.delete(t),n&&(t.d(1),n())}),t.o(e)}}function B(t,e,n){-1!==t.$$.props.indexOf(e)&&(t.$$.bound[e]=n,n(t.$$.ctx[e]))}function R(t,e,r){const{fragment:a,on_mount:c,on_destroy:u,after_render:l}=t.$$;a.m(e,r),j(()=>{const e=c.map(n).filter(i);u?u.push(...e):o(e),t.$$.on_mount=[]}),l.forEach(j)}function I(t,e){t.$$.fragment&&(o(t.$$.on_destroy),e&&t.$$.fragment.d(1),t.$$.on_destroy=t.$$.fragment=null,t.$$.ctx={})}function G(t,e){t.$$.dirty||(C.push(t),N||(N=!0,T.then(U)),t.$$.dirty=r()),t.$$.dirty[e]=!0}function Z(e,n,i,a,c,u){const l=x;M(e);const s=n.props||{},f=e.$$={fragment:null,ctx:null,props:u,update:t,not_equal:c,bound:r(),on_mount:[],on_destroy:[],before_render:[],after_render:[],context:new Map(l?l.$$.context:[]),callbacks:r(),dirty:null};let h=!1;var d;f.ctx=i?i(e,s,(t,n)=>{f.ctx&&c(f.ctx[t],f.ctx[t]=n)&&(f.bound[t]&&f.bound[t](n),h&&G(e,t))}):s,f.update(),h=!0,o(f.before_render),f.fragment=a(f.ctx),n.target&&(n.hydrate?f.fragment.l((d=n.target,Array.from(d.childNodes))):f.fragment.c(),n.intro&&q(e.$$.fragment),R(e,n.target,n.anchor),U()),M(l)}class W{$destroy(){I(this,1),this.$destroy=t}$on(t,e){const n=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return n.push(e),()=>{const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}$set(){}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function V(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function X(t,e){return t(e={exports:{}},e.exports),e.exports}var Q=X(function(t,e){t.exports=function(){for(var t=function(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),tn?n:t},e={},n=0,r=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n255)&&(e._clipped=!0),e[n]=t(e[n],0,255)):3===n&&(e[n]=t(e[n],0,1));return e},limit:t,type:i,unpack:function(t,e){return void 0===e&&(e=null),t.length>=3?Array.prototype.slice.call(t):"object"==i(t[0])&&e?e.split("").filter(function(e){return void 0!==t[0][e]}).map(function(e){return t[0][e]}):t[0]},last:function(t){if(t.length<2)return null;var e=t.length-1;return"string"==i(t[e])?t[e].toLowerCase():null},PI:a,TWOPI:2*a,PITHIRD:a/3,DEG2RAD:a/180,RAD2DEG:180/a},u={format:{},autodetect:[]},l=c.last,s=c.clip_rgb,f=c.type,h=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if("object"===f(t[0])&&t[0].constructor&&t[0].constructor===this.constructor)return t[0];var n=l(t),r=!1;if(!n){r=!0,u.sorted||(u.autodetect=u.autodetect.sort(function(t,e){return e.p-t.p}),u.sorted=!0);for(var o=0,i=u.autodetect;o4?t[4]:1;return 1===i?[0,0,0,a]:[n>=1?0:255*(1-n)*(1-i),r>=1?0:255*(1-r)*(1-i),o>=1?0:255*(1-o)*(1-i),a]},w=c.unpack,$=c.type;d.prototype.cmyk=function(){return m(this._rgb)},g.cmyk=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["cmyk"])))},u.format.cmyk=_,u.autodetect.push({p:2,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=w(t,"cmyk"),"array"===$(t)&&4===t.length)return"cmyk"}});var x=c.unpack,M=c.last,k=function(t){return Math.round(100*t)/100},C=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=x(t,"hsla"),r=M(t)||"lsa";return n[0]=k(n[0]||0),n[1]=k(100*n[1])+"%",n[2]=k(100*n[2])+"%","hsla"===r||n.length>3&&n[3]<1?(n[3]=n.length>3?n[3]:1,r="hsla"):n.length=3,r+"("+n.join(",")+")"},T=c.unpack,N=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=(t=T(t,"rgba"))[0],r=t[1],o=t[2];n/=255,r/=255,o/=255;var i,a,c=Math.min(n,r,o),u=Math.max(n,r,o),l=(u+c)/2;return u===c?(i=0,a=Number.NaN):i=l<.5?(u-c)/(u+c):(u-c)/(2-u-c),n==u?a=(r-o)/(u-c):r==u?a=2+(o-n)/(u-c):o==u&&(a=4+(n-r)/(u-c)),(a*=60)<0&&(a+=360),t.length>3&&void 0!==t[3]?[a,i,l,t[3]]:[a,i,l]},S=c.unpack,z=c.last,D=Math.round,L=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=S(t,"rgba"),r=z(t)||"rgb";return"hsl"==r.substr(0,3)?C(N(n),r):(n[0]=D(n[0]),n[1]=D(n[1]),n[2]=D(n[2]),("rgba"===r||n.length>3&&n[3]<1)&&(n[3]=n.length>3?n[3]:1,r="rgba"),r+"("+n.slice(0,"rgb"===r?3:4).join(",")+")")},j=c.unpack,E=Math.round,U=function(){for(var t,e=[],n=arguments.length;n--;)e[n]=arguments[n];var r,o,i,a=(e=j(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)r=o=i=255*u;else{var l=[0,0,0],s=[0,0,0],f=u<.5?u*(1+c):u+c-u*c,h=2*u-f,d=a/360;l[0]=d+1/3,l[1]=d,l[2]=d-1/3;for(var p=0;p<3;p++)l[p]<0&&(l[p]+=1),l[p]>1&&(l[p]-=1),6*l[p]<1?s[p]=h+6*(f-h)*l[p]:2*l[p]<1?s[p]=f:3*l[p]<2?s[p]=h+(f-h)*(2/3-l[p])*6:s[p]=h;t=[E(255*s[0]),E(255*s[1]),E(255*s[2])],r=t[0],o=t[1],i=t[2]}return e.length>3?[r,o,i,e[3]]:[r,o,i,1]},A=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,F=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,O=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,P=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Y=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,q=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,H=Math.round,B=function(t){var e;if(t=t.toLowerCase().trim(),u.format.named)try{return u.format.named(t)}catch(t){}if(e=t.match(A)){for(var n=e.slice(1,4),r=0;r<3;r++)n[r]=+n[r];return n[3]=1,n}if(e=t.match(F)){for(var o=e.slice(1,5),i=0;i<4;i++)o[i]=+o[i];return o}if(e=t.match(O)){for(var a=e.slice(1,4),c=0;c<3;c++)a[c]=H(2.55*a[c]);return a[3]=1,a}if(e=t.match(P)){for(var l=e.slice(1,5),s=0;s<3;s++)l[s]=H(2.55*l[s]);return l[3]=+l[3],l}if(e=t.match(Y)){var f=e.slice(1,4);f[1]*=.01,f[2]*=.01;var h=U(f);return h[3]=1,h}if(e=t.match(q)){var d=e.slice(1,4);d[1]*=.01,d[2]*=.01;var p=U(d);return p[3]=+e[4],p}};B.test=function(t){return A.test(t)||F.test(t)||O.test(t)||P.test(t)||Y.test(t)||q.test(t)};var R=B,I=c.type;d.prototype.css=function(t){return L(this._rgb,t)},g.css=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["css"])))},u.format.css=R,u.autodetect.push({p:5,test:function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===I(t)&&R.test(t))return"css"}});var G=c.unpack;u.format.gl=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=G(t,"rgba");return n[0]*=255,n[1]*=255,n[2]*=255,n},g.gl=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["gl"])))},d.prototype.gl=function(){var t=this._rgb;return[t[0]/255,t[1]/255,t[2]/255,t[3]]};var Z=c.unpack,W=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n,r=Z(t,"rgb"),o=r[0],i=r[1],a=r[2],c=Math.min(o,i,a),u=Math.max(o,i,a),l=u-c,s=100*l/255,f=c/(255-l)*100;return 0===l?n=Number.NaN:(o===u&&(n=(i-a)/l),i===u&&(n=2+(a-o)/l),a===u&&(n=4+(o-i)/l),(n*=60)<0&&(n+=360)),[n,s,f]},V=c.unpack,X=Math.floor,Q=function(){for(var t,e,n,r,o,i,a=[],c=arguments.length;c--;)a[c]=arguments[c];var u,l,s,f=(a=V(a,"hcg"))[0],h=a[1],d=a[2];d*=255;var p=255*h;if(0===h)u=l=s=d;else{360===f&&(f=0),f>360&&(f-=360),f<0&&(f+=360);var g=X(f/=60),v=f-g,b=d*(1-h),m=b+p*(1-v),y=b+p*v,_=b+p;switch(g){case 0:u=(t=[_,y,b])[0],l=t[1],s=t[2];break;case 1:u=(e=[m,_,b])[0],l=e[1],s=e[2];break;case 2:u=(n=[b,_,y])[0],l=n[1],s=n[2];break;case 3:u=(r=[b,m,_])[0],l=r[1],s=r[2];break;case 4:u=(o=[y,b,_])[0],l=o[1],s=o[2];break;case 5:u=(i=[_,b,m])[0],l=i[1],s=i[2]}}return[u,l,s,a.length>3?a[3]:1]},J=c.unpack,K=c.type;d.prototype.hcg=function(){return W(this._rgb)},g.hcg=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["hcg"])))},u.format.hcg=Q,u.autodetect.push({p:1,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=J(t,"hcg"),"array"===K(t)&&3===t.length)return"hcg"}});var tt=c.unpack,et=c.last,nt=Math.round,rt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=tt(t,"rgba"),r=n[0],o=n[1],i=n[2],a=n[3],c=et(t)||"auto";void 0===a&&(a=1),"auto"===c&&(c=a<1?"rgba":"rgb"),r=nt(r),o=nt(o),i=nt(i);var u=r<<16|o<<8|i,l="000000"+u.toString(16);l=l.substr(l.length-6);var s="0"+nt(255*a).toString(16);switch(s=s.substr(s.length-2),c.toLowerCase()){case"rgba":return"#"+l+s;case"argb":return"#"+s+l;default:return"#"+l}},ot=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,it=/^#?([A-Fa-f0-9]{8})$/,at=function(t){if(t.match(ot)){4!==t.length&&7!==t.length||(t=t.substr(1)),3===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]);var e=parseInt(t,16),n=e>>16,r=e>>8&255,o=255&e;return[n,r,o,1]}if(t.match(it)){9===t.length&&(t=t.substr(1));var i=parseInt(t,16),a=i>>24&255,c=i>>16&255,u=i>>8&255,l=Math.round((255&i)/255*100)/100;return[a,c,u,l]}throw new Error("unknown hex color: "+t)},ct=c.type;d.prototype.hex=function(t){return rt(this._rgb,t)},g.hex=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["hex"])))},u.format.hex=at,u.autodetect.push({p:4,test:function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];if(!e.length&&"string"===ct(t)&&[3,4,6,7,8,9].includes(t.length))return"hex"}});var ut=c.unpack,lt=c.TWOPI,st=Math.min,ft=Math.sqrt,ht=Math.acos,dt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n,r=ut(t,"rgb"),o=r[0],i=r[1],a=r[2],c=st(o/=255,i/=255,a/=255),u=(o+i+a)/3,l=u>0?1-c/u:0;return 0===l?n=NaN:(n=(o-i+(o-a))/2,n/=ft((o-i)*(o-i)+(o-a)*(i-a)),n=ht(n),a>i&&(n=lt-n),n/=lt),[360*n,l,u]},pt=c.unpack,gt=c.limit,vt=c.TWOPI,bt=c.PITHIRD,mt=Math.cos,yt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n,r,o,i=(t=pt(t,"hsi"))[0],a=t[1],c=t[2];return isNaN(i)&&(i=0),isNaN(a)&&(a=0),i>360&&(i-=360),i<0&&(i+=360),(i/=360)<1/3?(o=(1-a)/3,n=(1+a*mt(vt*i)/mt(bt-vt*i))/3,r=1-(o+n)):i<2/3?(n=(1-a)/3,r=(1+a*mt(vt*(i-=1/3))/mt(bt-vt*i))/3,o=1-(n+r)):(r=(1-a)/3,o=(1+a*mt(vt*(i-=2/3))/mt(bt-vt*i))/3,n=1-(r+o)),n=gt(c*n*3),r=gt(c*r*3),o=gt(c*o*3),[255*n,255*r,255*o,t.length>3?t[3]:1]},_t=c.unpack,wt=c.type;d.prototype.hsi=function(){return dt(this._rgb)},g.hsi=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["hsi"])))},u.format.hsi=yt,u.autodetect.push({p:2,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=_t(t,"hsi"),"array"===wt(t)&&3===t.length)return"hsi"}});var $t=c.unpack,xt=c.type;d.prototype.hsl=function(){return N(this._rgb)},g.hsl=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["hsl"])))},u.format.hsl=U,u.autodetect.push({p:2,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=$t(t,"hsl"),"array"===xt(t)&&3===t.length)return"hsl"}});var Mt=c.unpack,kt=Math.min,Ct=Math.max,Tt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n,r,o,i=(t=Mt(t,"rgb"))[0],a=t[1],c=t[2],u=kt(i,a,c),l=Ct(i,a,c),s=l-u;return o=l/255,0===l?(n=Number.NaN,r=0):(r=s/l,i===l&&(n=(a-c)/s),a===l&&(n=2+(c-i)/s),c===l&&(n=4+(i-a)/s),(n*=60)<0&&(n+=360)),[n,r,o]},Nt=c.unpack,St=Math.floor,zt=function(){for(var t,e,n,r,o,i,a=[],c=arguments.length;c--;)a[c]=arguments[c];var u,l,s,f=(a=Nt(a,"hsv"))[0],h=a[1],d=a[2];if(d*=255,0===h)u=l=s=d;else{360===f&&(f=0),f>360&&(f-=360),f<0&&(f+=360);var p=St(f/=60),g=f-p,v=d*(1-h),b=d*(1-h*g),m=d*(1-h*(1-g));switch(p){case 0:u=(t=[d,m,v])[0],l=t[1],s=t[2];break;case 1:u=(e=[b,d,v])[0],l=e[1],s=e[2];break;case 2:u=(n=[v,d,m])[0],l=n[1],s=n[2];break;case 3:u=(r=[v,b,d])[0],l=r[1],s=r[2];break;case 4:u=(o=[m,v,d])[0],l=o[1],s=o[2];break;case 5:u=(i=[d,v,b])[0],l=i[1],s=i[2]}}return[u,l,s,a.length>3?a[3]:1]},Dt=c.unpack,Lt=c.type;d.prototype.hsv=function(){return Tt(this._rgb)},g.hsv=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["hsv"])))},u.format.hsv=zt,u.autodetect.push({p:2,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=Dt(t,"hsv"),"array"===Lt(t)&&3===t.length)return"hsv"}});var jt={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},Et=c.unpack,Ut=Math.pow,At=function(t){return(t/=255)<=.04045?t/12.92:Ut((t+.055)/1.055,2.4)},Ft=function(t){return t>jt.t3?Ut(t,1/3):t/jt.t2+jt.t0},Ot=function(t,e,n){t=At(t),e=At(e),n=At(n);var r=Ft((.4124564*t+.3575761*e+.1804375*n)/jt.Xn),o=Ft((.2126729*t+.7151522*e+.072175*n)/jt.Yn),i=Ft((.0193339*t+.119192*e+.9503041*n)/jt.Zn);return[r,o,i]},Pt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Et(t,"rgb"),r=n[0],o=n[1],i=n[2],a=Ot(r,o,i),c=a[0],u=a[1],l=a[2],s=116*u-16;return[s<0?0:s,500*(c-u),200*(u-l)]},Yt=c.unpack,qt=Math.pow,Ht=function(t){return 255*(t<=.00304?12.92*t:1.055*qt(t,1/2.4)-.055)},Bt=function(t){return t>jt.t1?t*t*t:jt.t2*(t-jt.t0)},Rt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n,r,o,i,a,c,u=(t=Yt(t,"lab"))[0],l=t[1],s=t[2];return r=(u+16)/116,n=isNaN(l)?r:r+l/500,o=isNaN(s)?r:r-s/200,r=jt.Yn*Bt(r),n=jt.Xn*Bt(n),o=jt.Zn*Bt(o),i=Ht(3.2404542*n-1.5371385*r-.4985314*o),a=Ht(-.969266*n+1.8760108*r+.041556*o),c=Ht(.0556434*n-.2040259*r+1.0572252*o),[i,a,c,t.length>3?t[3]:1]},It=c.unpack,Gt=c.type;d.prototype.lab=function(){return Pt(this._rgb)},g.lab=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["lab"])))},u.format.lab=Rt,u.autodetect.push({p:2,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=It(t,"lab"),"array"===Gt(t)&&3===t.length)return"lab"}});var Zt=c.unpack,Wt=c.RAD2DEG,Vt=Math.sqrt,Xt=Math.atan2,Qt=Math.round,Jt=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Zt(t,"lab"),r=n[0],o=n[1],i=n[2],a=Vt(o*o+i*i),c=(Xt(i,o)*Wt+360)%360;return 0===Qt(1e4*a)&&(c=Number.NaN),[r,a,c]},Kt=c.unpack,te=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Kt(t,"rgb"),r=n[0],o=n[1],i=n[2],a=Pt(r,o,i),c=a[0],u=a[1],l=a[2];return Jt(c,u,l)},ee=c.unpack,ne=c.DEG2RAD,re=Math.sin,oe=Math.cos,ie=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=ee(t,"lch"),r=n[0],o=n[1],i=n[2];return isNaN(i)&&(i=0),[r,oe(i*=ne)*o,re(i)*o]},ae=c.unpack,ce=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=(t=ae(t,"lch"))[0],r=t[1],o=t[2],i=ie(n,r,o),a=i[0],c=i[1],u=i[2],l=Rt(a,c,u),s=l[0],f=l[1],h=l[2];return[s,f,h,t.length>3?t[3]:1]},ue=c.unpack,le=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=ue(t,"hcl").reverse();return ce.apply(void 0,n)},se=c.unpack,fe=c.type;d.prototype.lch=function(){return te(this._rgb)},d.prototype.hcl=function(){return te(this._rgb).reverse()},g.lch=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["lch"])))},g.hcl=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["hcl"])))},u.format.lch=ce,u.format.hcl=le,["lch","hcl"].forEach(function(t){return u.autodetect.push({p:2,test:function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(e=se(e,t),"array"===fe(e)&&3===e.length)return t}})});var he={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},de=c.type;d.prototype.name=function(){for(var t=rt(this._rgb,"rgb"),e=0,n=Object.keys(he);e0;)e[n]=arguments[n+1];if(!e.length&&"string"===de(t)&&he[t.toLowerCase()])return"named"}});var pe=c.unpack,ge=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=pe(t,"rgb"),r=n[0],o=n[1],i=n[2];return(r<<16)+(o<<8)+i},ve=c.type,be=function(t){if("number"==ve(t)&&t>=0&&t<=16777215){var e=t>>16,n=t>>8&255,r=255&t;return[e,n,r,1]}throw new Error("unknown num color: "+t)},me=c.type;d.prototype.num=function(){return ge(this._rgb)},g.num=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["num"])))},u.format.num=be,u.autodetect.push({p:5,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(1===t.length&&"number"===me(t[0])&&t[0]>=0&&t[0]<=16777215)return"num"}});var ye=c.unpack,_e=c.type,we=Math.round;d.prototype.rgb=function(t){return void 0===t&&(t=!0),!1===t?this._rgb.slice(0,3):this._rgb.slice(0,3).map(we)},d.prototype.rgba=function(t){return void 0===t&&(t=!0),this._rgb.slice(0,4).map(function(e,n){return n<3?!1===t?e:we(e):e})},g.rgb=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["rgb"])))},u.format.rgb=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=ye(t,"rgba");return void 0===n[3]&&(n[3]=1),n},u.autodetect.push({p:3,test:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];if(t=ye(t,"rgba"),"array"===_e(t)&&(3===t.length||4===t.length&&"number"==_e(t[3])&&t[3]>=0&&t[3]<=1))return"rgb"}});var $e=Math.log,xe=function(t){var e,n,r,o=t/100;return o<66?(e=255,n=-155.25485562709179-.44596950469579133*(n=o-2)+104.49216199393888*$e(n),r=o<20?0:.8274096064007395*(r=o-10)-254.76935184120902+115.67994401066147*$e(r)):(e=351.97690566805693+.114206453784165*(e=o-55)-40.25366309332127*$e(e),n=325.4494125711974+.07943456536662342*(n=o-50)-28.0852963507957*$e(n),r=255),[e,n,r,1]},Me=c.unpack,ke=Math.round,Ce=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];for(var n,r=Me(t,"rgb"),o=r[0],i=r[2],a=1e3,c=4e4;c-a>.4;){var u=xe(n=.5*(c+a));u[2]/u[0]>=i/o?c=n:a=n}return ke(n)};d.prototype.temp=d.prototype.kelvin=d.prototype.temperature=function(){return Ce(this._rgb)},g.temp=g.kelvin=g.temperature=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];return new(Function.prototype.bind.apply(d,[null].concat(t,["temp"])))},u.format.temp=u.format.kelvin=u.format.temperature=xe;var Te=c.type;d.prototype.alpha=function(t,e){return void 0===e&&(e=!1),void 0!==t&&"number"===Te(t)?e?(this._rgb[3]=t,this):new d([this._rgb[0],this._rgb[1],this._rgb[2],t],"rgb"):this._rgb[3]},d.prototype.clipped=function(){return this._rgb._clipped||!1},d.prototype.darken=function(t){void 0===t&&(t=1);var e=this.lab();return e[0]-=jt.Kn*t,new d(e,"lab").alpha(this.alpha(),!0)},d.prototype.brighten=function(t){return void 0===t&&(t=1),this.darken(-t)},d.prototype.darker=d.prototype.darken,d.prototype.brighter=d.prototype.brighten,d.prototype.get=function(t){var e=t.split("."),n=e[0],r=e[1],o=this[n]();if(r){var i=n.indexOf(r);if(i>-1)return o[i];throw new Error("unknown channel "+r+" in mode "+n)}return o};var Ne=c.type,Se=Math.pow;d.prototype.luminance=function(t){if(void 0!==t&&"number"===Ne(t)){if(0===t)return new d([0,0,0,this._rgb[3]],"rgb");if(1===t)return new d([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),n=20,r=function(e,o){var i=e.interpolate(o,.5,"rgb"),a=i.luminance();return Math.abs(t-a)<1e-7||!n--?i:a>t?r(e,i):r(i,o)},o=(e>t?r(new d([0,0,0]),this):r(this,new d([255,255,255]))).rgb();return new d(o.concat([this._rgb[3]]))}return ze.apply(void 0,this._rgb.slice(0,3))};var ze=function(t,e,n){return t=De(t),e=De(e),n=De(n),.2126*t+.7152*e+.0722*n},De=function(t){return(t/=255)<=.03928?t/12.92:Se((t+.055)/1.055,2.4)},Le={},je=c.type,Ee=function(t,e,n){void 0===n&&(n=.5);for(var r=[],o=arguments.length-3;o-- >0;)r[o]=arguments[o+3];var i=r[0]||"lrgb";if(Le[i]||r.length||(i=Object.keys(Le)[0]),!Le[i])throw new Error("interpolation mode "+i+" is not defined");return"object"!==je(t)&&(t=new d(t)),"object"!==je(e)&&(e=new d(e)),Le[i](t,e,n).alpha(t.alpha()+n*(e.alpha()-t.alpha()))};d.prototype.mix=d.prototype.interpolate=function(t,e){void 0===e&&(e=.5);for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];return Ee.apply(void 0,[this,t,e].concat(n))},d.prototype.premultiply=function(t){void 0===t&&(t=!1);var e=this._rgb,n=e[3];return t?(this._rgb=[e[0]*n,e[1]*n,e[2]*n,n],this):new d([e[0]*n,e[1]*n,e[2]*n,n],"rgb")},d.prototype.saturate=function(t){void 0===t&&(t=1);var e=this.lch();return e[1]+=jt.Kn*t,e[1]<0&&(e[1]=0),new d(e,"lch").alpha(this.alpha(),!0)},d.prototype.desaturate=function(t){return void 0===t&&(t=1),this.saturate(-t)};var Ue=c.type;d.prototype.set=function(t,e,n){void 0===n&&(n=!1);var r=t.split("."),o=r[0],i=r[1],a=this[o]();if(i){var c=o.indexOf(i);if(c>-1){if("string"==Ue(e))switch(e.charAt(0)){case"+":case"-":a[c]+=+e;break;case"*":a[c]*=+e.substr(1);break;case"/":a[c]/=+e.substr(1);break;default:a[c]=+e}else{if("number"!==Ue(e))throw new Error("unsupported value for Color.set");a[c]=e}var u=new d(a,o);return n?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+i+" in mode "+o)}return a},Le.rgb=function(t,e,n){var r=t._rgb,o=e._rgb;return new d(r[0]+n*(o[0]-r[0]),r[1]+n*(o[1]-r[1]),r[2]+n*(o[2]-r[2]),"rgb")};var Ae=Math.sqrt,Fe=Math.pow;Le.lrgb=function(t,e,n){var r=t._rgb,o=r[0],i=r[1],a=r[2],c=e._rgb,u=c[0],l=c[1],s=c[2];return new d(Ae(Fe(o,2)*(1-n)+Fe(u,2)*n),Ae(Fe(i,2)*(1-n)+Fe(l,2)*n),Ae(Fe(a,2)*(1-n)+Fe(s,2)*n),"rgb")},Le.lab=function(t,e,n){var r=t.lab(),o=e.lab();return new d(r[0]+n*(o[0]-r[0]),r[1]+n*(o[1]-r[1]),r[2]+n*(o[2]-r[2]),"lab")};var Oe=function(t,e,n,r){var o,i,a,c,u,l,s,f,h,p,g,v;return"hsl"===r?(a=t.hsl(),c=e.hsl()):"hsv"===r?(a=t.hsv(),c=e.hsv()):"hcg"===r?(a=t.hcg(),c=e.hcg()):"hsi"===r?(a=t.hsi(),c=e.hsi()):"lch"!==r&&"hcl"!==r||(r="hcl",a=t.hcl(),c=e.hcl()),"h"===r.substr(0,1)&&(u=(o=a)[0],s=o[1],h=o[2],l=(i=c)[0],f=i[1],p=i[2]),isNaN(u)||isNaN(l)?isNaN(u)?isNaN(l)?v=Number.NaN:(v=l,1!=h&&0!=h||"hsv"==r||(g=f)):(v=u,1!=p&&0!=p||"hsv"==r||(g=s)):v=u+n*(l>u&&l-u>180?l-(u+360):l180?l+360-u:l-u),void 0===g&&(g=s+n*(f-s)),new d([v,g,h+n*(p-h)],r)},Pe=function(t,e,n){return Oe(t,e,n,"lch")};Le.lch=Pe,Le.hcl=Pe,Le.num=function(t,e,n){var r=t.num(),o=e.num();return new d(r+n*(o-r),"num")},Le.hcg=function(t,e,n){return Oe(t,e,n,"hcg")},Le.hsi=function(t,e,n){return Oe(t,e,n,"hsi")},Le.hsl=function(t,e,n){return Oe(t,e,n,"hsl")},Le.hsv=function(t,e,n){return Oe(t,e,n,"hsv")};var Ye=c.clip_rgb,qe=Math.pow,He=Math.sqrt,Be=Math.PI,Re=Math.cos,Ie=Math.sin,Ge=Math.atan2,Ze=function(t){for(var e=t.length,n=1/e,r=[0,0,0,0],o=0,i=t;o.9999999&&(r[3]=1),new d(Ye(r))},We=c.type,Ve=Math.pow,Xe=function(t){var e="rgb",n=g("#ccc"),r=0,o=[0,1],i=[],a=[0,0],c=!1,u=[],l=!1,s=0,f=1,h=!1,d={},p=!0,v=1,b=function(t){if((t=t||["#fff","#000"])&&"string"===We(t)&&g.brewer&&g.brewer[t.toLowerCase()]&&(t=g.brewer[t.toLowerCase()]),"array"===We(t)){1===t.length&&(t=[t[0],t[0]]),t=t.slice(0);for(var e=0;e2){var h=function(t){if(null!=c){for(var e=c.length-1,n=0;n=c[n];)n++;return n-1}return 0}(t);l=h/(c.length-2)}else l=f!==s?(t-s)/(f-s):1;r||(l=m(l)),1!==v&&(l=Ve(l,v)),l=a[0]+l*(1-a[0]-a[1]),l=Math.min(1,Math.max(0,l));var b=Math.floor(1e4*l);if(p&&d[b])o=d[b];else{if("array"===We(u))for(var y=0;y=_&&y===i.length-1){o=u[y];break}if(l>_&&ln,o=y(t,!0).lab()[0],i=e+(n-e)*t,a=o-i,c=0,u=1,l=20;Math.abs(a)>.01&&l-- >0;)r&&(a*=-1),a<0?(c=t,t+=.5*(u-t)):(u=t,t+=.5*(c-t)),o=y(t,!0).lab()[0],a=o-i;return t}:function(t){return t},w},w.padding=function(t){return null!=t?("number"===We(t)&&(t=[t,t]),a=t,w):a},w.colors=function(e,n){arguments.length<2&&(n="hex");var r=[];if(0===arguments.length)r=u.slice(0);else if(1===e)r=[w(.5)];else if(e>1){var i=o[0],a=o[1]-i;r=function(t,e,n){for(var r=[],o=ti;o?a++:a--)r.push(a);return r}(0,e,!1).map(function(t){return w(i+t/(e-1)*a)})}else{t=[];var l=[];if(c&&c.length>2)for(var s=1,f=c.length,h=1<=f;h?sf;h?s++:s--)l.push(.5*(c[s-1]+c[s]));else l=o;r=l.map(function(t){return w(t)})}return g[n]&&(r=r.map(function(t){return t[n]()})),r},w.cache=function(t){return null!=t?(p=t,w):p},w.gamma=function(t){return null!=t?(v=t,w):v},w.nodata=function(t){return null!=t?(n=g(t),w):n},w},Qe=function(t){var e,n,r,o,i,a,c;if(2===(t=t.map(function(t){return new d(t)})).length)e=t.map(function(t){return t.lab()}),i=e[0],a=e[1],o=function(t){var e=[0,1,2].map(function(e){return i[e]+t*(a[e]-i[e])});return new d(e,"lab")};else if(3===t.length)n=t.map(function(t){return t.lab()}),i=n[0],a=n[1],c=n[2],o=function(t){var e=[0,1,2].map(function(e){return(1-t)*(1-t)*i[e]+2*(1-t)*t*a[e]+t*t*c[e]});return new d(e,"lab")};else if(4===t.length){var u;r=t.map(function(t){return t.lab()}),i=r[0],a=r[1],c=r[2],u=r[3],o=function(t){var e=[0,1,2].map(function(e){return(1-t)*(1-t)*(1-t)*i[e]+3*(1-t)*(1-t)*t*a[e]+3*(1-t)*t*t*c[e]+t*t*t*u[e]});return new d(e,"lab")}}else if(5===t.length){var l=Qe(t.slice(0,3)),s=Qe(t.slice(2,5));o=function(t){return t<.5?l(2*t):s(2*(t-.5))}}return o},Je=function(t,e,n){if(!Je[n])throw new Error("unknown blend mode "+n);return Je[n](t,e)},Ke=function(t){return function(e,n){var r=g(n).rgb(),o=g(e).rgb();return g.rgb(t(r,o))}},tn=function(t){return function(e,n){var r=[];return r[0]=t(e[0],n[0]),r[1]=t(e[1],n[1]),r[2]=t(e[2],n[2]),r}};Je.normal=Ke(tn(function(t){return t})),Je.multiply=Ke(tn(function(t,e){return t*e/255})),Je.screen=Ke(tn(function(t,e){return 255*(1-(1-t/255)*(1-e/255))})),Je.overlay=Ke(tn(function(t,e){return e<128?2*t*e/255:255*(1-2*(1-t/255)*(1-e/255))})),Je.darken=Ke(tn(function(t,e){return t>e?e:t})),Je.lighten=Ke(tn(function(t,e){return t>e?t:e})),Je.dodge=Ke(tn(function(t,e){return 255===t?255:(t=e/255*255/(1-t/255))>255?255:t})),Je.burn=Ke(tn(function(t,e){return 255*(1-(1-e/255)/(t/255))}));for(var en=Je,nn=c.type,rn=c.clip_rgb,on=c.TWOPI,an=Math.pow,cn=Math.sin,un=Math.cos,ln=Math.floor,sn=Math.random,fn=Math.log,hn=Math.pow,dn=Math.floor,pn=Math.abs,gn=function(t,e){void 0===e&&(e=null);var n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0};return"object"===i(t)&&(t=Object.values(t)),t.forEach(function(t){e&&"object"===i(t)&&(t=t[e]),null==t||isNaN(t)||(n.values.push(t),n.sum+=t,tn.max&&(n.max=t),n.count+=1)}),n.domain=[n.min,n.max],n.limits=function(t,e){return vn(n,t,e)},n},vn=function(t,e,n){void 0===e&&(e="equal"),void 0===n&&(n=7),"array"==i(t)&&(t=gn(t));var r=t.min,o=t.max,a=t.values.sort(function(t,e){return t-e});if(1===n)return[r,o];var c=[];if("c"===e.substr(0,1)&&(c.push(r),c.push(o)),"e"===e.substr(0,1)){c.push(r);for(var u=1;u 0");var l=Math.LOG10E*fn(r),s=Math.LOG10E*fn(o);c.push(r);for(var f=1;f200&&(_=!1)}for(var A={},F=0;F=360;)h-=360;o[f]=h}else o[f]=o[f]/i[f];return s/=n,new d(o,e).alpha(s>.99999?1:s,!0)},g.bezier=function(t){var e=Qe(t);return e.scale=function(){return Xe(e)},e},g.blend=en,g.cubehelix=function(t,e,n,r,o){void 0===t&&(t=300),void 0===e&&(e=-1.5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===o&&(o=[0,1]);var i,a=0;"array"===nn(o)?i=o[1]-o[0]:(i=0,o=[o,o]);var c=function(c){var u=on*((t+120)/360+e*c),l=an(o[0]+i*c,r),s=0!==a?n[0]+c*a:n,f=s*l*(1-l)/2,h=un(u),d=cn(u),p=l+f*(-.14861*h+1.78277*d),v=l+f*(-.29227*h-.90649*d),b=l+f*(1.97294*h);return g(rn([255*p,255*v,255*b,1]))};return c.start=function(e){return null==e?t:(t=e,c)},c.rotations=function(t){return null==t?e:(e=t,c)},c.gamma=function(t){return null==t?r:(r=t,c)},c.hue=function(t){return null==t?n:("array"===nn(n=t)?0==(a=n[1]-n[0])&&(n=n[1]):a=0,c)},c.lightness=function(t){return null==t?o:("array"===nn(t)?(o=t,i=t[1]-t[0]):(o=[t,t],i=0),c)},c.scale=function(){return g.scale(c)},c.hue(n),c},g.mix=g.interpolate=Ee,g.random=function(){for(var t="#",e=0;e<6;e++)t+="0123456789abcdef".charAt(ln(16*sn()));return new d(t,"hex")},g.scale=Xe,g.analyze=bn.analyze,g.contrast=function(t,e){t=new d(t),e=new d(e);var n=t.luminance(),r=e.luminance();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)},g.deltaE=function(t,e,n,r){void 0===n&&(n=1),void 0===r&&(r=1),t=new d(t),e=new d(e);for(var o=Array.from(t.lab()),i=o[0],a=o[1],c=o[2],u=Array.from(e.lab()),l=u[0],s=u[1],f=u[2],h=mn(a*a+c*c),p=mn(s*s+f*f),g=i<16?.511:.040975*i/(1+.01765*i),v=.0638*h/(1+.0131*h)+.638,b=h<1e-6?0:180*yn(c,a)/$n;b<0;)b+=360;for(;b>=360;)b-=360;var m=b>=164&&b<=345?.56+_n(.2*wn($n*(b+168)/180)):.36+_n(.4*wn($n*(b+35)/180)),y=h*h*h*h,_=mn(y/(y+1900)),w=v*(_*m+1-_),$=h-p,x=a-s,M=c-f,k=(i-l)/(n*g),C=$/(r*v);return mn(k*k+C*C+(x*x+M*M-$*$)/(w*w))},g.distance=function(t,e,n){void 0===n&&(n="lab"),t=new d(t),e=new d(e);var r=t.get(n),o=e.get(n),i=0;for(var a in r){var c=(r[a]||0)-(o[a]||0);i+=c*c}return Math.sqrt(i)},g.limits=bn.limits,g.valid=function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];try{return new(Function.prototype.bind.apply(d,[null].concat(t))),!0}catch(t){return!1}},g.scales=xn,g.colors=he,g.brewer=Nn,g}()});function J(e){var n,r,o,i,a,c;return{c(){n=d("div"),r=d("input"),o=v(),i=d("label"),a=g(e.label),y(r,"type","checkbox"),y(r,"class","custom-control-input"),y(r,"id",e.id),y(i,"class","custom-control-label"),y(i,"for",e.id),y(n,"class","custom-control custom-checkbox"),$(n,"custom-control-inline",e.inline),c=b(r,"change",e.input_change_handler)},m(t,c){s(t,n,c),l(n,r),r.checked=e.value,l(n,o),l(n,i),l(i,a)},p(t,e){t.value&&(r.checked=e.value),t.label&&_(a,e.label),t.inline&&$(n,"custom-control-inline",e.inline)},i:t,o:t,d(t){t&&f(n),c()}}}function K(t,e,n){let{value:r=!1,inline:o=!0,label:i=""}=e;const a=Math.round(1e7*Math.random()).toString(36);return t.$set=(t=>{"value"in t&&n("value",r=t.value),"inline"in t&&n("inline",o=t.inline),"label"in t&&n("label",i=t.label)}),{value:r,inline:o,label:i,id:a,input_change_handler:function(){r=this.checked,n("value",r)}}}class tt extends W{constructor(t){super(),Z(this,t,K,J,a,["value","inline","label"])}}var et=Math.ceil,nt=Math.max;var rt="object"==typeof global&&global&&global.Object===Object&&global,ot="object"==typeof self&&self&&self.Object===Object&&self,it=(rt||ot||Function("return this")()).Symbol,at=Object.prototype,ct=at.hasOwnProperty,ut=at.toString,lt=it?it.toStringTag:void 0;var st=Object.prototype.toString;var ft="[object Null]",ht="[object Undefined]",dt=it?it.toStringTag:void 0;function pt(t){return null==t?void 0===t?ht:ft:dt&&dt in Object(t)?function(t){var e=ct.call(t,lt),n=t[lt];try{t[lt]=void 0;var r=!0}catch(t){}var o=ut.call(t);return r&&(e?t[lt]=n:delete t[lt]),o}(t):function(t){return st.call(t)}(t)}function gt(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}var vt="[object AsyncFunction]",bt="[object Function]",mt="[object GeneratorFunction]",yt="[object Proxy]";var _t=9007199254740991;function wt(t){return null!=t&&function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=_t}(t.length)&&!function(t){if(!gt(t))return!1;var e=pt(t);return e==bt||e==mt||e==vt||e==yt}(t)}var $t=9007199254740991,xt=/^(?:0|[1-9]\d*)$/;function Mt(t,e,n){if(!gt(n))return!1;var r=typeof e;return!!("number"==r?wt(n)&&function(t,e){var n=typeof t;return!!(e=null==e?$t:e)&&("number"==n||"symbol"!=n&&xt.test(t))&&t>-1&&t%1==0&&t{"value"in t&&n("value",c=t.value)}),t.$$.update=((t={value:1,lch:1})=>{t.value&&n("lch",r=c.lch()),t.lch&&n("lightness",o=Ft(-5,6).map(t=>r[0]+80*Math.pow(t/8,2)*(t<0?-1:1)).map(t=>Q.lch(t,r[1],r[2]))),t.lch&&n("saturation",i=Ft(-5,6).map(t=>Math.max(0,r[1]+80*Math.pow(t/5,2)*(t<0?-1:1))).map(t=>Q.lch(r[0],t,r[2]))),t.lch&&n("hue",a=Ft(-5,6).map(t=>r[2]+80*Math.pow(t/5,2)*(t<0?-1:1)).map(t=>Q.lch(r[0],r[1],t<0?t+360:t>360?t-360:t)))}),{value:c,open:u,dragging:l,toggleEditOpen:function(){n("open",u=!0)},toggleEditClose:function(){n("open",u=!1)},lightness:o,saturation:i,hue:a,dragstart_handler:function(e){!function(t,e){const n=t.$$.callbacks[e.type];n&&n.slice().forEach(t=>t(e))}(t,e)},click_handler:function({l:t}){const e=c=t;return n("value",c),e},click_handler_1:function({c:t}){const e=c=t;return n("value",c),e},click_handler_2:function({c:t}){const e=c=t;return n("value",c),e},dragstart_handler_1:function(t){const e=l=!0;return n("dragging",l),e},dragend_handler:function(t){const e=l=!1;return n("dragging",l),e}}}class Wt extends W{constructor(t){super(),Z(this,t,Zt,It,a,["value"])}}function Vt(t,e,n){const r=Object.create(t);return r.color=e[n],r.each_value=e,r.i=n,r}function Xt(t){for(var e,n,r,i,a,c=t.colors,u=[],p=0;pH(u[t],1,()=>{u[t]=null});return{c(){e=d("div");for(var o=0;oe=!1)}let o={};void 0!==t.color&&(o.value=t.color);var i=new Wt({props:o});return L(()=>B(i,"value",r)),i.$on("dragstart",function(...e){return t.dragstart_handler(t,...e)}),{c(){i.$$.fragment.c()},m(t,e){R(i,t,e),n=!0},p(n,r){t=r;var o={};!e&&n.colors&&(o.value=t.color),i.$set(o)},i(t){n||(q(i.$$.fragment,t),n=!0)},o(t){H(i.$$.fragment,t),n=!1},d(t){I(i,t)}}}function Jt(t){var e,n,r,i,a,c=!t.edit&&Xt(t);return{c(){e=d("input"),n=v(),c&&c.c(),r=g(""),y(e,"type","text"),y(e,"class","form-control svelte-zqagyi"),$(e,"hidden",!t.edit),a=[b(e,"input",t.input_1_input_handler),b(e,"blur",t.exitEditMode)]},m(o,a){s(o,e,a),e.value=t.colorString,L(()=>t.input_1_binding(e,null)),s(o,n,a),c&&c.m(o,a),s(o,r,a),i=!0},p(t,n){t.colorString&&e.value!==n.colorString&&(e.value=n.colorString),t.items&&(n.input_1_binding(null,e),n.input_1_binding(e,null)),t.edit&&$(e,"hidden",!n.edit),n.edit?c&&(P(),H(c,1,()=>{c=null}),Y()):c?(c.p(t,n),q(c,1)):((c=Xt(n)).c(),q(c,1),c.m(r.parentNode,r))},i(t){i||(q(c),i=!0)},o(t){H(c),i=!1},d(i){i&&f(e),t.input_1_binding(null,e),i&&f(n),c&&c.d(i),i&&f(r),o(a)}}}function Kt(t,e,n){let r,{colors:o}=e,i=!1,a="";function c(t){const e=t.dataTransfer.getData("index"),r=function(t){const e=t.parentNode.children;for(let n=0;nnull!==t))}return t.$set=(t=>{"colors"in t&&n("colors",o=t.colors)}),{colors:o,edit:i,input:r,colorString:a,enterEditMode:function(){n("edit",i=!0),n("colorString",a=o.map(t=>t.name()).join(", ")),r.focus()},exitEditMode:function(){n("edit",i=!1),n("colors",o=a.split(/\s*[,|\s]\s*/).filter(t=>Q.valid(t)).map(t=>Q(t)))},drop:c,input_1_input_handler:function(){a=this.value,n("colorString",a)},input_1_binding:function(t,e){n("input",r=t)},color_value_binding:function(t,{color:e,each_value:r,i:i}){r[i]=t,n("colors",o)},dragstart_handler:function({i:t},e){return function(t,e){t.dataTransfer.setData("index",e)}(e,t)},drop_handler:function(t){return c(t)},dragover_handler:function(t){return function(t){t.dataTransfer.dropEffect="move"}(t)}}}class te extends W{constructor(t){super(),Z(this,t,Kt,Jt,a,["colors"])}}function ee(t){var e,n,r;function o(e){t.colorlist_colors_binding_1.call(null,e),n=!0,E(()=>n=!1)}let i={};void 0!==t.colors2&&(i.colors=t.colors2);var a=new te({props:i});return L(()=>B(a,"colors",o)),{c(){e=d("div"),a.$$.fragment.c(),y(e,"class","col-md")},m(t,n){s(t,e,n),R(a,e,null),r=!0},p(t,e){var r={};!n&&t.colors2&&(r.colors=e.colors2),a.$set(r)},i(t){r||(q(a.$$.fragment,t),r=!0)},o(t){H(a.$$.fragment,t),r=!1},d(t){t&&f(e),I(a)}}}function ne(t){var e,n,r,o,i;function a(e){t.colorlist_colors_binding.call(null,e),r=!0,E(()=>r=!1)}let c={};void 0!==t.colors&&(c.colors=t.colors);var u=new te({props:c});L(()=>B(u,"colors",a));var h=t.diverging&&ee(t);return{c(){e=d("div"),n=d("div"),u.$$.fragment.c(),o=v(),h&&h.c(),y(n,"class","col-md"),y(e,"class","row")},m(t,r){s(t,e,r),l(e,n),R(u,n,null),l(e,o),h&&h.m(e,null),i=!0},p(t,n){var o={};!r&&t.colors&&(o.colors=n.colors),u.$set(o),n.diverging?h?(h.p(t,n),q(h,1)):((h=ee(n)).c(),q(h,1),h.m(e,null)):h&&(P(),H(h,1,()=>{h=null}),Y())},i(t){i||(q(u.$$.fragment,t),q(h),i=!0)},o(t){H(u.$$.fragment,t),H(h),i=!1},d(t){t&&f(e),I(u),h&&h.d()}}}function re(t,e,n){let{colors:r=[],colors2:o=[],diverging:i=!1}=e;return t.$set=(t=>{"colors"in t&&n("colors",r=t.colors),"colors2"in t&&n("colors2",o=t.colors2),"diverging"in t&&n("diverging",i=t.diverging)}),{colors:r,colors2:o,diverging:i,colorlist_colors_binding:function(t){n("colors",r=t)},colorlist_colors_binding_1:function(t){n("colors2",o=t)}}}class oe extends W{constructor(t){super(),Z(this,t,re,ne,a,["colors","colors2","diverging"])}}function ie(t,e){return blinder[e](Q(t).hex())}function ae(t,e){let n=0,r=t.length;if(!r)return!0;for(let o=0;o5&&u<9&&n++}return 0===n}function ce(t,e){return.5*(Q.deltaE(t,e)+Q.deltaE(e,t))}function ue(t,e,n){const r=Object.create(t);return r.step=e[n],r}function le(t){var e;return{c(){y(e=d("div"),"class","step svelte-iwtfhk"),w(e,"background","none"===t.simulate?t.step:ie(t.step,t.simulate))},m(t,n){s(t,e,n)},p(t,n){(t.simulate||t.steps||t.colorBlindSim)&&w(e,"background","none"===n.simulate?n.step:ie(n.step,n.simulate))},d(t){t&&f(e)}}}function se(e){for(var n,r=e.steps,o=[],i=0;iQ.lab([t+c,n[1],n[2]]))}function y(t,e,n=!1){if(d){const e=m(t,3).concat(Q("#f5f5f5"));return n&&e.reverse(),e}return m(t,e)}return t.$set=(t=>{"colors"in t&&n("colors",s=t.colors),"colors2"in t&&n("colors2",f=t.colors2),"numColors"in t&&n("numColors",h=t.numColors),"diverging"in t&&n("diverging",d=t.diverging),"bezier"in t&&n("bezier",p=t.bezier),"correctLightness"in t&&n("correctLightness",g=t.correctLightness),"simulate"in t&&n("simulate",v=t.simulate),"steps"in t&&n("steps",b=t.steps)}),t.$$.update=((t={numColors:1,diverging:1,even:1,colors:1,numColorsLeft:1,colors2:1,numColorsRight:1,bezier:1,genColors:1,correctLightness:1,genColors2:1,stepsLeft:1,stepsRight:1})=>{t.numColors&&n("even",r=h%2==0),(t.diverging||t.numColors||t.even)&&n("numColorsLeft",o=d?Math.ceil(h/2)+(r?1:0):h),(t.diverging||t.numColors||t.even)&&n("numColorsRight",i=d?Math.ceil(h/2)+(r?1:0):0),(t.colors||t.numColorsLeft)&&n("genColors",a=1!==s.length?s:y(s[0],o)),(t.colors2||t.numColorsRight)&&n("genColors2",c=1!==f.length?f:y(f[0],i,!0)),(t.colors||t.bezier||t.genColors||t.correctLightness||t.numColorsLeft)&&n("stepsLeft",u=s.length?Q.scale(p&&s.length>1?Q.bezier(a):a).correctLightness(g).colors(o):[]),(t.diverging||t.colors2||t.bezier||t.genColors2||t.correctLightness||t.numColorsRight)&&n("stepsRight",l=d&&f.length?Q.scale(p&&f.length>1?Q.bezier(c):c).correctLightness(g).colors(i):[]),(t.even||t.diverging||t.stepsLeft||t.stepsRight)&&n("steps",b=(r&&d?u.slice(0,u.length-1):u).concat(l.slice(1)))}),{colors:s,colors2:f,numColors:h,diverging:d,bezier:p,correctLightness:g,simulate:v,steps:b}}class he extends W{constructor(t){super(),Z(this,t,fe,se,a,["colors","colors2","numColors","diverging","bezier","correctLightness","simulate","steps"])}}function de(e){var n,r,o,i,a,c,u,h,p,b,m,w,$,x,M,k,C,T,N,S,z,D,L,j,E,U,A,F,O,P=e.steps.join("', '"),Y=e.steps.join("', '"),q=e.steps.join("\n"),H=e.steps.map(pe).join(","),B=e.steps.length,R=e.steps.join("', '"),I=e.steps.slice(1).map(ge);return{c(){n=d("pre"),r=g(e.steps),o=v(),i=d("pre"),a=g("'"),c=g(P),u=g("'"),h=v(),p=d("pre"),b=g("['"),m=g(Y),w=g("']"),$=v(),x=d("pre"),M=g(q),k=v(),C=d("pre"),T=g("["),N=g(H),S=g("]"),z=v(),D=d("pre"),L=g("import { scaleThreshold } from 'd3-scale';\n\nfunction palette(min, max) {\n const d = (max-min)/"),j=g(B),E=g(";\n return = scaleThreshold()\n .range(['"),U=g(R),A=g("'])\n .domain(["),F=g(I),O=g("]);\n}"),y(n,"class","svelte-1n20esm"),y(i,"class","svelte-1n20esm"),y(p,"class","svelte-1n20esm"),y(x,"class","svelte-1n20esm"),y(C,"class","svelte-1n20esm"),y(D,"class","svelte-1n20esm")},m(t,e){s(t,n,e),l(n,r),s(t,o,e),s(t,i,e),l(i,a),l(i,c),l(i,u),s(t,h,e),s(t,p,e),l(p,b),l(p,m),l(p,w),s(t,$,e),s(t,x,e),l(x,M),s(t,k,e),s(t,C,e),l(C,T),l(C,N),l(C,S),s(t,z,e),s(t,D,e),l(D,L),l(D,j),l(D,E),l(D,U),l(D,A),l(D,F),l(D,O)},p(t,e){t.steps&&_(r,e.steps),t.steps&&P!==(P=e.steps.join("', '"))&&_(c,P),t.steps&&Y!==(Y=e.steps.join("', '"))&&_(m,Y),t.steps&&q!==(q=e.steps.join("\n"))&&_(M,q),t.steps&&H!==(H=e.steps.map(pe).join(","))&&_(N,H),t.steps&&B!==(B=e.steps.length)&&_(j,B),t.steps&&R!==(R=e.steps.join("', '"))&&_(U,R),t.steps&&I!==(I=e.steps.slice(1).map(ge))&&_(F,I)},i:t,o:t,d(t){t&&(f(n),f(o),f(i),f(h),f(p),f($),f(x),f(k),f(C),f(z),f(D))}}}function pe(t){return"0x"+t.substr(1)}function ge(t,e){return`min + d*${e+1}`}function ve(t,e,n){let{steps:r=[]}=e;return t.$set=(t=>{"steps"in t&&n("steps",r=t.steps)}),{steps:r}}class be extends W{constructor(t){super(),Z(this,t,ve,de,a,["steps"])}}function me(t,e){return te?1:t>=e?0:NaN}var ye,_e,we=(1===(ye=me).length&&(_e=ye,ye=function(t,e){return me(_e(t),e)}),{left:function(t,e,n,r){for(null==n&&(n=0),null==r&&(r=t.length);n>>1;ye(t[o],e)<0?n=o+1:r=o}return n},right:function(t,e,n,r){for(null==n&&(n=0),null==r&&(r=t.length);n>>1;ye(t[o],e)>0?r=o:n=o+1}return n}}).right;var $e=Math.sqrt(50),xe=Math.sqrt(10),Me=Math.sqrt(2);function ke(t,e,n){var r=(e-t)/Math.max(0,n),o=Math.floor(Math.log(r)/Math.LN10),i=r/Math.pow(10,o);return o>=0?(i>=$e?10:i>=xe?5:i>=Me?2:1)*Math.pow(10,o):-Math.pow(10,-o)/(i>=$e?10:i>=xe?5:i>=Me?2:1)}function Ce(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Te(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Ne(){}var Se="\\s*([+-]?\\d+)\\s*",ze="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",De="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Le=/^#([0-9a-f]{3})$/,je=/^#([0-9a-f]{6})$/,Ee=new RegExp("^rgb\\("+[Se,Se,Se]+"\\)$"),Ue=new RegExp("^rgb\\("+[De,De,De]+"\\)$"),Ae=new RegExp("^rgba\\("+[Se,Se,Se,ze]+"\\)$"),Fe=new RegExp("^rgba\\("+[De,De,De,ze]+"\\)$"),Oe=new RegExp("^hsl\\("+[ze,De,De]+"\\)$"),Pe=new RegExp("^hsla\\("+[ze,De,De,ze]+"\\)$"),Ye={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function qe(t){var e;return t=(t+"").trim().toLowerCase(),(e=Le.exec(t))?new Ge((e=parseInt(e[1],16))>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=je.exec(t))?He(parseInt(e[1],16)):(e=Ee.exec(t))?new Ge(e[1],e[2],e[3],1):(e=Ue.exec(t))?new Ge(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Ae.exec(t))?Be(e[1],e[2],e[3],e[4]):(e=Fe.exec(t))?Be(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Oe.exec(t))?We(e[1],e[2]/100,e[3]/100,1):(e=Pe.exec(t))?We(e[1],e[2]/100,e[3]/100,e[4]):Ye.hasOwnProperty(t)?He(Ye[t]):"transparent"===t?new Ge(NaN,NaN,NaN,0):null}function He(t){return new Ge(t>>16&255,t>>8&255,255&t,1)}function Be(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ge(t,e,n,r)}function Re(t){return t instanceof Ne||(t=qe(t)),t?new Ge((t=t.rgb()).r,t.g,t.b,t.opacity):new Ge}function Ie(t,e,n,r){return 1===arguments.length?Re(t):new Ge(t,e,n,null==r?1:r)}function Ge(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Ze(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function We(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ve(t,e,n,r)}function Ve(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Xe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Ce(Ne,qe,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),Ce(Ge,Ie,Te(Ne,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ge(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ge(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+Ze(this.r)+Ze(this.g)+Ze(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Ce(Ve,function(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof Ve)return new Ve(t.h,t.s,t.l,t.opacity);if(t instanceof Ne||(t=qe(t)),!t)return new Ve;if(t instanceof Ve)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,o=Math.min(e,n,r),i=Math.max(e,n,r),a=NaN,c=i-o,u=(i+o)/2;return c?(a=e===i?(n-r)/c+6*(n0&&u<1?0:a,new Ve(a,c,u,t.opacity)}(t):new Ve(t,e,n,null==r?1:r)},Te(Ne,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ve(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ve(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,o=2*n-r;return new Ge(Xe(t>=240?t-240:t+120,o,r),Xe(t,o,r),Xe(t<120?t+240:t-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Qe=Math.PI/180,Je=180/Math.PI,Ke=.96422,tn=1,en=.82521,nn=4/29,rn=6/29,on=3*rn*rn,an=rn*rn*rn;function cn(t){if(t instanceof un)return new un(t.l,t.a,t.b,t.opacity);if(t instanceof dn){if(isNaN(t.h))return new un(t.l,0,0,t.opacity);var e=t.h*Qe;return new un(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof Ge||(t=Re(t));var n,r,o=hn(t.r),i=hn(t.g),a=hn(t.b),c=ln((.2225045*o+.7168786*i+.0606169*a)/tn);return o===i&&i===a?n=r=c:(n=ln((.4360747*o+.3850649*i+.1430804*a)/Ke),r=ln((.0139322*o+.0971045*i+.7141733*a)/en)),new un(116*c-16,500*(n-c),200*(c-r),t.opacity)}function un(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function ln(t){return t>an?Math.pow(t,1/3):t/on+nn}function sn(t){return t>rn?t*t*t:on*(t-nn)}function fn(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function hn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function dn(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}Ce(un,function(t,e,n,r){return 1===arguments.length?cn(t):new un(t,e,n,null==r?1:r)},Te(Ne,{brighter:function(t){return new un(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new un(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new Ge(fn(3.1338561*(e=Ke*sn(e))-1.6168667*(t=tn*sn(t))-.4906146*(n=en*sn(n))),fn(-.9787684*e+1.9161415*t+.033454*n),fn(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Ce(dn,function(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof dn)return new dn(t.h,t.c,t.l,t.opacity);if(t instanceof un||(t=cn(t)),0===t.a&&0===t.b)return new dn(NaN,0,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*Je;return new dn(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new dn(t,e,n,null==r?1:r)},Te(Ne,{brighter:function(t){return new dn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new dn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return cn(this).rgb()}}));var pn=-.14861,gn=1.78277,vn=-.29227,bn=-.90649,mn=1.97294,yn=mn*bn,_n=mn*gn,wn=gn*vn-bn*pn;function $n(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function xn(t){return function(){return t}}function Mn(t){return 1==(t=+t)?kn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):xn(isNaN(e)?n:e)}}function kn(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):xn(isNaN(t)?e:t)}Ce($n,function(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof $n)return new $n(t.h,t.s,t.l,t.opacity);t instanceof Ge||(t=Re(t));var e=t.r/255,n=t.g/255,r=t.b/255,o=(wn*r+yn*e-_n*n)/(wn+yn-_n),i=r-o,a=(mn*(n-o)-vn*i)/bn,c=Math.sqrt(a*a+i*i)/(mn*o*(1-o)),u=c?Math.atan2(a,i)*Je-120:NaN;return new $n(u<0?u+360:u,c,o,t.opacity)}(t):new $n(t,e,n,null==r?1:r)},Te(Ne,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new $n(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new $n(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Qe,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),o=Math.sin(t);return new Ge(255*(e+n*(pn*r+gn*o)),255*(e+n*(vn*r+bn*o)),255*(e+n*(mn*r)),this.opacity)}}));var Cn=function t(e){var n=Mn(e);function r(t,e){var r=n((t=Ie(t)).r,(e=Ie(e)).r),o=n(t.g,e.g),i=n(t.b,e.b),a=kn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function Tn(t,e){return e-=t=+t,function(n){return t+e*n}}var Nn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Sn=new RegExp(Nn.source,"g");function zn(t,e){var n,r=typeof e;return null==e||"boolean"===r?xn(e):("number"===r?Tn:"string"===r?(n=qe(e))?(e=n,Cn):function(t,e){var n,r,o,i=Nn.lastIndex=Sn.lastIndex=0,a=-1,c=[],u=[];for(t+="",e+="";(n=Nn.exec(t))&&(r=Sn.exec(e));)(o=r.index)>i&&(o=e.slice(i,o),c[a]?c[a]+=o:c[++a]=o),(n=n[0])===(r=r[0])?c[a]?c[a]+=r:c[++a]=r:(c[++a]=null,u.push({i:a,x:Tn(n,r)})),i=Sn.lastIndex;return ir&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function Fn(t,e,n){var r=t[0],o=t[1],i=e[0],a=e[1];return o2?On:Fn,o=i=null,f}function f(e){return isNaN(e=+e)?n:(o||(o=r(a.map(t),c,u)))(t(l(e)))}return f.invert=function(n){return l(e((i||(i=r(c,a.map(t),Tn)))(n)))},f.domain=function(t){return arguments.length?(a=Array.from(t,Ln),l===En||(l=An(a)),s()):a.slice()},f.range=function(t){return arguments.length?(c=Array.from(t),s()):c.slice()},f.rangeRound=function(t){return c=Array.from(t),u=Dn,s()},f.clamp=function(t){return arguments.length?(l=t?An(a):En,f):l!==En},f.interpolate=function(t){return arguments.length?(u=t,s()):u},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,s()}}()(t,e)}function Yn(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function qn(t){return(t=Yn(Math.abs(t)))?t[1]:NaN}var Hn,Bn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rn(t){return new In(t)}function In(t){if(!(e=Bn.exec(t)))throw new Error("invalid format: "+t);var e;this.fill=e[1]||" ",this.align=e[2]||">",this.sign=e[3]||"-",this.symbol=e[4]||"",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||""}function Gn(t,e){var n=Yn(t,e);if(!n)return t+"";var r=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+new Array(o-r.length+2).join("0")}Rn.prototype=In.prototype,In.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Zn={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Gn(100*t,e)},r:Gn,s:function(t,e){var n=Yn(t,e);if(!n)return t+"";var r=n[0],o=n[1],i=o-(Hn=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=r.length;return i===a?r:i>a?r+new Array(i-a+1).join("0"):i>0?r.slice(0,i)+"."+r.slice(i):"0."+new Array(1-i).join("0")+Yn(t,Math.max(0,e+i-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Wn(t){return t}var Vn,Xn,Qn,Jn=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Kn(t){var e,n,r=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,r){for(var o=t.length,i=[],a=0,c=e[0],u=0;o>0&&c>0&&(u+c+1>r&&(c=Math.max(1,r-u)),i.push(t.substring(o-=c,o+c)),!((u+=c+1)>r));)c=e[a=(a+1)%e.length];return i.reverse().join(n)}):Wn,o=t.currency,i=t.decimal,a=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(t.numerals):Wn,c=t.percent||"%";function u(t){var e=(t=Rn(t)).fill,n=t.align,u=t.sign,l=t.symbol,s=t.zero,f=t.width,h=t.comma,d=t.precision,p=t.trim,g=t.type;"n"===g?(h=!0,g="g"):Zn[g]||(null==d&&(d=12),p=!0,g="g"),(s||"0"===e&&"="===n)&&(s=!0,e="0",n="=");var v="$"===l?o[0]:"#"===l&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",b="$"===l?o[1]:/[%p]/.test(g)?c:"",m=Zn[g],y=/[defgprs%]/.test(g);function _(t){var o,c,l,_=v,w=b;if("c"===g)w=m(t)+w,t="";else{var $=(t=+t)<0;if(t=m(Math.abs(t),d),p&&(t=function(t){t:for(var e,n=t.length,r=1,o=-1;r0){if(!+t[r])break t;o=0}}return o>0?t.slice(0,o)+t.slice(e+1):t}(t)),$&&0==+t&&($=!1),_=($?"("===u?u:"-":"-"===u||"("===u?"":u)+_,w=("s"===g?Jn[8+Hn/3]:"")+w+($&&"("===u?")":""),y)for(o=-1,c=t.length;++o(l=t.charCodeAt(o))||l>57){w=(46===l?i+t.slice(o+1):t.slice(o))+w,t=t.slice(0,o);break}}h&&!s&&(t=r(t,1/0));var x=_.length+t.length+w.length,M=x>1)+_+t+w+M.slice(x);break;default:t=M+_+t+w}return a(t)}return d=null==d?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var n=u(((t=Rn(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(qn(e)/3))),o=Math.pow(10,-r),i=Jn[8+r/3];return function(t){return n(o*t)+i}}}}function tr(t,e,n,r){var o,i=function(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),o=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),i=r/o;return i>=$e?o*=10:i>=xe?o*=5:i>=Me&&(o*=2),e0)return[t];if((r=e0)for(t=Math.ceil(t/a),e=Math.floor(e/a),i=new Array(o=Math.ceil(e-t+1));++c0?r=ke(c=Math.floor(c/r)*r,u=Math.ceil(u/r)*r,n):r<0&&(r=ke(c=Math.ceil(c*r)/r,u=Math.floor(u*r)/r,n)),r>0?(o[i]=Math.floor(c/r)*r,o[a]=Math.ceil(u/r)*r,e(o)):r<0&&(o[i]=Math.ceil(c*r)/r,o[a]=Math.floor(u*r)/r,e(o)),t},t}function nr(){var t=Pn(En,En);return t.copy=function(){return e=t,nr().domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown());var e},function(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}.apply(t,arguments),er(t)}Vn=Kn({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),Xn=Vn.format,Qn=Vn.formatPrefix;var rr=new Date,or=new Date;function ir(t,e,n,r){function o(e){return t(e=new Date(+e)),e}return o.floor=o,o.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},o.round=function(t){var e=o(t),n=o.ceil(t);return t-e0))return c;do{c.push(a=new Date(+n)),e(n,i),t(n)}while(a=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})},n&&(o.count=function(e,r){return rr.setTime(+e),or.setTime(+r),t(rr),t(or),Math.floor(n(rr,or))},o.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?o.filter(r?function(e){return r(e)%t==0}:function(e){return o.count(0,e)%t==0}):o:null}),o}var ar=ir(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});ar.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?ir(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):ar:null};var cr=6e4,ur=6048e5,lr=(ir(function(t){t.setTime(t-t.getMilliseconds())},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),ir(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,e){t.setTime(+t+e*cr)},function(t,e){return(e-t)/cr},function(t){return t.getMinutes()}),ir(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*cr)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()}),ir(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*cr)/864e5},function(t){return t.getDate()-1}));function sr(t){return ir(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*cr)/ur})}var fr=sr(0),hr=sr(1),dr=(sr(2),sr(3),sr(4)),pr=(sr(5),sr(6),ir(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),ir(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}));pr.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ir(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};ir(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*cr)},function(t,e){return(e-t)/cr},function(t){return t.getUTCMinutes()}),ir(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()});var gr=ir(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1});function vr(t){return ir(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/ur})}var br=vr(0),mr=vr(1),yr=(vr(2),vr(3),vr(4)),_r=(vr(5),vr(6),ir(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),ir(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}));function wr(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function $r(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function xr(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}_r.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ir(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var Mr,kr,Cr,Tr={"-":"",_:" ",0:"0"},Nr=/^\s*\d+/,Sr=/^%/,zr=/[\\^$*+?|[\]().{}]/g;function Dr(t,e,n){var r=t<0?"-":"",o=(r?-t:t)+"",i=o.length;return r+(i68?1900:2e3),n+r[0].length):-1}function Hr(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Br(t,e,n){var r=Nr.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Rr(t,e,n){var r=Nr.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Ir(t,e,n){var r=Nr.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Gr(t,e,n){var r=Nr.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Zr(t,e,n){var r=Nr.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Wr(t,e,n){var r=Nr.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Vr(t,e,n){var r=Nr.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Xr(t,e,n){var r=Nr.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Qr(t,e,n){var r=Sr.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Jr(t,e,n){var r=Nr.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Kr(t,e,n){var r=Nr.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function to(t,e){return Dr(t.getDate(),e,2)}function eo(t,e){return Dr(t.getHours(),e,2)}function no(t,e){return Dr(t.getHours()%12||12,e,2)}function ro(t,e){return Dr(1+lr.count(pr(t),t),e,3)}function oo(t,e){return Dr(t.getMilliseconds(),e,3)}function io(t,e){return oo(t,e)+"000"}function ao(t,e){return Dr(t.getMonth()+1,e,2)}function co(t,e){return Dr(t.getMinutes(),e,2)}function uo(t,e){return Dr(t.getSeconds(),e,2)}function lo(t){var e=t.getDay();return 0===e?7:e}function so(t,e){return Dr(fr.count(pr(t),t),e,2)}function fo(t,e){var n=t.getDay();return t=n>=4||0===n?dr(t):dr.ceil(t),Dr(dr.count(pr(t),t)+(4===pr(t).getDay()),e,2)}function ho(t){return t.getDay()}function po(t,e){return Dr(hr.count(pr(t),t),e,2)}function go(t,e){return Dr(t.getFullYear()%100,e,2)}function vo(t,e){return Dr(t.getFullYear()%1e4,e,4)}function bo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Dr(e/60|0,"0",2)+Dr(e%60,"0",2)}function mo(t,e){return Dr(t.getUTCDate(),e,2)}function yo(t,e){return Dr(t.getUTCHours(),e,2)}function _o(t,e){return Dr(t.getUTCHours()%12||12,e,2)}function wo(t,e){return Dr(1+gr.count(_r(t),t),e,3)}function $o(t,e){return Dr(t.getUTCMilliseconds(),e,3)}function xo(t,e){return $o(t,e)+"000"}function Mo(t,e){return Dr(t.getUTCMonth()+1,e,2)}function ko(t,e){return Dr(t.getUTCMinutes(),e,2)}function Co(t,e){return Dr(t.getUTCSeconds(),e,2)}function To(t){var e=t.getUTCDay();return 0===e?7:e}function No(t,e){return Dr(br.count(_r(t),t),e,2)}function So(t,e){var n=t.getUTCDay();return t=n>=4||0===n?yr(t):yr.ceil(t),Dr(yr.count(_r(t),t)+(4===_r(t).getUTCDay()),e,2)}function zo(t){return t.getUTCDay()}function Do(t,e){return Dr(mr.count(_r(t),t),e,2)}function Lo(t,e){return Dr(t.getUTCFullYear()%100,e,2)}function jo(t,e){return Dr(t.getUTCFullYear()%1e4,e,4)}function Eo(){return"+0000"}function Uo(){return"%"}function Ao(t){return+t}function Fo(t){return Math.floor(+t/1e3)}!function(t){Mr=function(t){var e=t.dateTime,n=t.date,r=t.time,o=t.periods,i=t.days,a=t.shortDays,c=t.months,u=t.shortMonths,l=jr(o),s=Er(o),f=jr(i),h=Er(i),d=jr(a),p=Er(a),g=jr(c),v=Er(c),b=jr(u),m=Er(u),y={a:function(t){return a[t.getDay()]},A:function(t){return i[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return c[t.getMonth()]},c:null,d:to,e:to,f:io,H:eo,I:no,j:ro,L:oo,m:ao,M:co,p:function(t){return o[+(t.getHours()>=12)]},Q:Ao,s:Fo,S:uo,u:lo,U:so,V:fo,w:ho,W:po,x:null,X:null,y:go,Y:vo,Z:bo,"%":Uo},_={a:function(t){return a[t.getUTCDay()]},A:function(t){return i[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return c[t.getUTCMonth()]},c:null,d:mo,e:mo,f:xo,H:yo,I:_o,j:wo,L:$o,m:Mo,M:ko,p:function(t){return o[+(t.getUTCHours()>=12)]},Q:Ao,s:Fo,S:Co,u:To,U:No,V:So,w:zo,W:Do,x:null,X:null,y:Lo,Y:jo,Z:Eo,"%":Uo},w={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=b.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=v[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return M(t,e,n,r)},d:Rr,e:Rr,f:Xr,H:Gr,I:Gr,j:Ir,L:Vr,m:Br,M:Zr,p:function(t,e,n){var r=l.exec(e.slice(n));return r?(t.p=s[r[0].toLowerCase()],n+r[0].length):-1},Q:Jr,s:Kr,S:Wr,u:Ar,U:Fr,V:Or,w:Ur,W:Pr,x:function(t,e,r){return M(t,n,e,r)},X:function(t,e,n){return M(t,r,e,n)},y:qr,Y:Yr,Z:Hr,"%":Qr};function $(t,e){return function(n){var r,o,i,a=[],c=-1,u=0,l=t.length;for(n instanceof Date||(n=new Date(+n));++c53)return null;"w"in i||(i.w=1),"Z"in i?(o=(r=$r(xr(i.y))).getUTCDay(),r=o>4||0===o?mr.ceil(r):mr(r),r=gr.offset(r,7*(i.V-1)),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(o=(r=e(xr(i.y))).getDay(),r=o>4||0===o?hr.ceil(r):hr(r),r=lr.offset(r,7*(i.V-1)),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?$r(xr(i.y)).getUTCDay():e(xr(i.y)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,$r(i)):e(i)}}function M(t,e,n,r){for(var o,i,a=0,c=e.length,u=n.length;a=u)return-1;if(37===(o=e.charCodeAt(a++))){if(o=e.charAt(a++),!(i=w[o in Tr?e.charAt(a++):o])||(r=i(t,n,r))<0)return-1}else if(o!=n.charCodeAt(r++))return-1}return r}return y.x=$(n,y),y.X=$(r,y),y.c=$(e,y),_.x=$(n,_),_.X=$(r,_),_.c=$(e,_),{format:function(t){var e=$(t+="",y);return e.toString=function(){return t},e},parse:function(t){var e=x(t+="",wr);return e.toString=function(){return t},e},utcFormat:function(t){var e=$(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=x(t,$r);return e.toString=function(){return t},e}}}(t),Mr.format,Mr.parse,kr=Mr.utcFormat,Cr=Mr.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||kr("%Y-%m-%dT%H:%M:%S.%LZ");+new Date("2000-01-01T00:00:00.000Z")||Cr("%Y-%m-%dT%H:%M:%S.%LZ");var Oo=Math.PI,Po=2*Oo,Yo=Po-1e-6;function qo(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ho(){return new qo}function Bo(t){return function(){return t}}qo.prototype=Ho.prototype={constructor:qo,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,o,i){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+o)+","+(this._y1=+i)},arcTo:function(t,e,n,r,o){t=+t,e=+e,n=+n,r=+r,o=+o;var i=this._x1,a=this._y1,c=n-t,u=r-e,l=i-t,s=a-e,f=l*l+s*s;if(o<0)throw new Error("negative radius: "+o);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>1e-6)if(Math.abs(s*c-u*l)>1e-6&&o){var h=n-i,d=r-a,p=c*c+u*u,g=h*h+d*d,v=Math.sqrt(p),b=Math.sqrt(f),m=o*Math.tan((Oo-Math.acos((p+f-g)/(2*v*b)))/2),y=m/b,_=m/v;Math.abs(y-1)>1e-6&&(this._+="L"+(t+y*l)+","+(e+y*s)),this._+="A"+o+","+o+",0,0,"+ +(s*h>l*d)+","+(this._x1=t+_*c)+","+(this._y1=e+_*u)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,o,i){t=+t,e=+e;var a=(n=+n)*Math.cos(r),c=n*Math.sin(r),u=t+a,l=e+c,s=1^i,f=i?r-o:o-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+u+","+l:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+u+","+l),n&&(f<0&&(f=f%Po+Po),f>Yo?this._+="A"+n+","+n+",0,1,"+s+","+(t-a)+","+(e-c)+"A"+n+","+n+",0,1,"+s+","+(this._x1=u)+","+(this._y1=l):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Oo)+","+s+","+(this._x1=t+n*Math.cos(o))+","+(this._y1=e+n*Math.sin(o))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};Math.PI;function Ro(t){this._context=t}function Io(t){return new Ro(t)}function Go(t){return t[0]}function Zo(t){return t[1]}function Wo(){var t=Go,e=Zo,n=Bo(!0),r=null,o=Io,i=null;function a(a){var c,u,l,s=a.length,f=!1;for(null==r&&(i=o(l=Ho())),c=0;c<=s;++c)!(ce.div_1_resize_handler.call(n)),w(n,"margin-top","1em")},m(t,c){s(t,n,c),l(n,r),l(r,o),l(n,i),l(n,a),h&&h.m(a,null),u=function(t,e){"static"===getComputedStyle(t).position&&(t.style.position="relative");const n=document.createElement("object");let r;return n.setAttribute("style","display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;"),n.type="text/html",n.onload=(()=>{(r=n.contentDocument.defaultView).addEventListener("resize",e)}),/Trident/.test(navigator.userAgent)?(t.appendChild(n),n.data="about:blank"):(n.data="about:blank",t.appendChild(n)),{cancel:()=>{r&&r.removeEventListener&&r.removeEventListener("resize",e),t.removeChild(n)}}}(n,e.div_1_resize_handler.bind(n))},p(t,e){t.title&&_(o,e.title),e.values.length?h?h.p(t,e):((h=oi(e)).c(),h.m(a,null)):h&&(h.d(1),h=null),t.height&&c!==(c=e.height||50)&&y(a,"height",c)},i:t,o:t,d(t){t&&f(n),h&&h.d(),u.cancel()}}}function ci(t,e,n){let r,{title:o=""}=e;const i={left:30,right:10,top:20,bottom:20};let a,c,u,l,s,f,h,d,p,g,v,{steps:b=[],mode:m=0}=e;return t.$set=(t=>{"title"in t&&n("title",o=t.title),"steps"in t&&n("steps",b=t.steps),"mode"in t&&n("mode",m=t.mode)}),t.$$.update=((t={width:1,steps:1,mode:1,values:1,yDomain:1,minDomain:1,height:1,yScale:1,xScale:1,lineGen:1,values2:1})=>{if(t.width&&n("height",c=.7*r),(t.steps||t.mode)&&n("values",u=b.map(t=>Q(t).lch()[m]).map(2===m?t=>t:t=>t)),t.values&&n("values2",l=u.concat(u[u.length-1])),(t.steps||t.width)&&n("xScale",s=nr().domain([0,b.length]).range([i.left,r-i.right])),t.mode&&n("minDomain",f=1===m?80:50),t.values||t.yDomain||t.minDomain){n("yDomain",a=function(t,e){let n,r;if(void 0===e)for(const e of t)null!=e&&(void 0===n?e>=e&&(n=r=e):(n>e&&(n=e),r=i&&(n=r=i):(n>i&&(n=i),rs(e)).y(h).curve(ni)),(t.lineGen||t.values2)&&n("path",v=g(l))}),{width:r,title:o,padding:i,steps:b,mode:m,height:c,values:u,yScale:h,path:v,div_1_resize_handler:function(){r=this.clientWidth,n("width",r)}}}Ro.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},Ko.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Jo(this,this._t0,Qo(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Jo(this,Qo(this,n=Xo(this,t,e)),n);break;default:Jo(this,this._t0,n=Xo(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(function(t){this._context=new ti(t)}.prototype=Object.create(Ko.prototype)).point=function(t,e){Ko.prototype.point.call(this,e,t)},ti.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,o,i){this._context.bezierCurveTo(e,t,r,n,i,o)}},ei.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};class ui extends W{constructor(t){super(),Z(this,t,ci,ai,a,["title","steps","mode"])}}function li(t){var e,n;return{c(){e=d("span"),n=g(t.step),y(e,"class","step rounded-circle svelte-1jaw2bc")},m(t,r){s(t,e,r),l(e,n)},p(t,e){t.step&&_(n,e.step)},d(t){t&&f(e)}}}function si(t){var n,r,o,i,a,u,h=t.step&&li(t);const p=t.$$slots.default,b=function(t,e,n){if(t){const r=c(t,e,n);return t[0](r)}}(p,t,null);return{c(){n=d("div"),r=d("div"),o=d("h5"),h&&h.c(),i=g(t.title),a=v(),b&&b.c(),y(o,"class","card-title svelte-1jaw2bc"),y(r,"class","card-body svelte-1jaw2bc"),y(n,"class","card shadow-sm svelte-1jaw2bc"),$(n,"rounded-0",t.noBorderTop),$(n,"border-top-0",t.noBorderTop)},l(t){b&&b.l(div0_nodes)},m(t,e){s(t,n,e),l(n,r),l(r,o),h&&h.m(o,null),l(o,i),l(r,a),b&&b.m(r,null),u=!0},p(t,r){r.step?h?h.p(t,r):((h=li(r)).c(),h.m(o,i)):h&&(h.d(1),h=null),u&&!t.title||_(i,r.title),b&&b.p&&t.$$scope&&b.p(function(t,n,r,o){return t[1]?e({},e(n.$$scope.changed||{},t[1](o?o(r):{}))):n.$$scope.changed||{}}(p,r,t,null),c(p,r,null)),t.noBorderTop&&($(n,"rounded-0",r.noBorderTop),$(n,"border-top-0",r.noBorderTop))},i(t){u||(q(b,t),u=!0)},o(t){H(b,t),u=!1},d(t){t&&f(n),h&&h.d(),b&&b.d(t)}}}function fi(t,e,n){let{title:r="",step:o="",noBorderTop:i=!1}=e,{$$slots:a={},$$scope:c}=e;return t.$set=(t=>{"title"in t&&n("title",r=t.title),"step"in t&&n("step",o=t.step),"noBorderTop"in t&&n("noBorderTop",i=t.noBorderTop),"$$scope"in t&&n("$$scope",c=t.$$scope)}),{title:r,step:o,noBorderTop:i,$$slots:a,$$scope:c}}class hi extends W{constructor(t){super(),Z(this,t,fi,si,a,["title","step","noBorderTop"])}}function di(e){var n,r;return{c(){n=p("svg"),y(r=p("path"),"fill","currentColor"),y(r,"d",e.path),y(n,"aria-hidden","true"),y(n,"class",e.classes+" svelte-p8vizn"),y(n,"role","img"),y(n,"xmlns","http://www.w3.org/2000/svg"),y(n,"viewBox",e.viewBox)},m(t,e){s(t,n,e),l(n,r)},p(t,e){t.path&&y(r,"d",e.path),t.classes&&y(n,"class",e.classes+" svelte-p8vizn"),t.viewBox&&y(n,"viewBox",e.viewBox)},i:t,o:t,d(t){t&&f(n)}}}function pi(t,n,r){let{icon:o}=n,i=[],a="",c="";return t.$set=(t=>{r("$$props",n=e(e({},n),t)),"icon"in n&&r("icon",o=n.icon)}),t.$$.update=((t={icon:1,$$props:1})=>{t.icon&&r("viewBox",c="0 0 "+o.icon[0]+" "+o.icon[1]),r("classes",a="fa-svelte "+(n.class?n.class:"")),t.icon&&r("path",i=o.icon[4])}),{icon:o,path:i,classes:a,viewBox:c,$$props:n=u(n)}}class gi extends W{constructor(t){super(),Z(this,t,pi,di,a,["icon"])}}var vi=X(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=[],r="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z";e.definition={prefix:"fas",iconName:"check",icon:[512,512,n,"f00c",r]},e.faCheck=e.definition,e.prefix="fas",e.iconName="check",e.width=512,e.height=512,e.ligatures=n,e.unicode="f00c",e.svgPathData=r});V(vi);vi.definition;var bi=vi.faCheck,mi=(vi.prefix,vi.iconName,vi.width,vi.height,vi.ligatures,vi.unicode,vi.svgPathData,X(function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=[],r="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";e.definition={prefix:"fas",iconName:"exclamation-triangle",icon:[576,512,n,"f071",r]},e.faExclamationTriangle=e.definition,e.prefix="fas",e.iconName="exclamation-triangle",e.width=576,e.height=512,e.ligatures=n,e.unicode="f071",e.svgPathData=r}));V(mi);mi.definition;var yi=mi.faExclamationTriangle;mi.prefix,mi.iconName,mi.width,mi.height,mi.ligatures,mi.unicode,mi.svgPathData;function _i(t,e,n){const r=Object.create(t);return r.type=e[n],r}function wi(t){var e,n,r,o=new gi({props:{icon:bi}});return{c(){e=d("p"),o.$$.fragment.c(),n=g(" This palette is colorblind-safe."),y(e,"class","res text-secondary svelte-116gzwh")},m(t,i){s(t,e,i),R(o,e,null),l(e,n),r=!0},p(t,e){var n={};t.faCheck&&(n.icon=bi),o.$set(n)},i(t){r||(q(o.$$.fragment,t),r=!0)},o(t){H(o.$$.fragment,t),r=!1},d(t){t&&f(e),I(o)}}}function $i(t){var e,n,r,o=new gi({props:{icon:yi}});return{c(){e=d("p"),o.$$.fragment.c(),n=g(" This palette is not colorblind-safe."),y(e,"class","res text-danger svelte-116gzwh")},m(t,i){s(t,e,i),R(o,e,null),l(e,n),r=!0},p(t,e){var n={};t.faExclamationTriangle&&(n.icon=yi),o.$set(n)},i(t){r||(q(o.$$.fragment,t),r=!0)},o(t){H(o.$$.fragment,t),r=!1},d(t){t&&f(e),I(o)}}}function xi(t){var e,n,r,o,i,a,c="none"===t.type?"normal":t.type.substr(0,4)+".";return{c(){e=d("label"),n=d("input"),o=g(c),i=v(),t.$$binding_groups[0].push(n),n.__value=t.type,n.value=n.__value,y(n,"type","radio"),y(n,"name","options"),y(n,"id","option1"),y(n,"autocomplete","off"),n.checked=r=t.active===t.type,y(e,"class","btn btn-sm btn-outline-secondary"),$(e,"btn-outline-danger",t.result.indexOf(t.type)>-1),$(e,"active",t.active===t.type),a=b(n,"change",t.input_change_handler)},m(r,a){s(r,e,a),l(e,n),n.checked=n.__value===t.active,l(e,o),l(e,i)},p(t,o){t.active&&(n.checked=n.__value===o.active),n.value=n.__value,t.active&&r!==(r=o.active===o.type)&&(n.checked=r),(t.result||t.types)&&$(e,"btn-outline-danger",o.result.indexOf(o.type)>-1),(t.active||t.types)&&$(e,"active",o.active===o.type)},d(r){r&&f(e),t.$$binding_groups[0].splice(t.$$binding_groups[0].indexOf(n),1),a()}}}function Mi(t){var e,n,r,o,i,a,c,u,p,g=[$i,wi],b=[];function m(t){return t.result.length?0:1}n=m(t),r=b[n]=g[n](t);for(var _=t.types,w=[],$=0;$<_.length;$+=1)w[$]=xi(_i(t,_,$));return{c(){e=d("div"),r.c(),o=v(),i=d("div"),(a=d("div")).textContent="simulate:",c=v(),u=d("div");for(var t=0;t{b[a]=null}),Y(),(r=b[n])||(r=b[n]=g[n](i)).c(),q(r,1),r.m(e,o)),t.result||t.types||t.active){_=i.types;for(var c=0;c<_.length;c+=1){const e=_i(i,_,c);w[c]?w[c].p(t,e):(w[c]=xi(e),w[c].c(),w[c].m(u,null))}for(;c{"colors"in t&&n("colors",r=t.colors),"result"in t&&n("result",o=t.result),"active"in t&&n("active",i=t.active)}),t.$$.update=((t={colors:1})=>{t.colors&&n("result",o=function(t){const e=["deuteranopia","protanopia","tritanopia"],n=[];for(let r=0;r{"options"in t&&n("options",r=t.options),"value"in t&&n("value",o=t.value),"label"in t&&n("label",i=t.label)}),t.$$.update=((t={options:1})=>{t.options&&n("options2",c=r.map(t=>"string"==typeof t?{value:t,title:t}:t))}),{options:r,value:o,label:i,id:a,options2:c,input_change_handler:function(){o=this.__value,n("value",o)},$$binding_groups:[[]]}}class Di extends W{constructor(t){super(),Z(this,t,zi,Si,a,["options","value","label"])}}function Li(t){var e,n,r,o,i,a,c,u,h,p;function m(e){t.buttongroup_value_binding.call(null,e),o=!0,E(()=>o=!1)}let _={options:["sequential","diverging"]};void 0!==t.mode&&(_.value=t.mode);var w=new Di({props:_});return L(()=>B(w,"value",m)),{c(){e=d("div"),n=d("div"),r=g("Palette type:\n "),w.$$.fragment.c(),i=v(),a=d("div"),c=g("Number of colors: "),u=d("input"),y(n,"class","col-md"),y(u,"type","number"),y(u,"min","2"),y(u,"class","svelte-3uzbpv"),y(a,"class","col-md"),y(e,"class","row"),p=b(u,"input",t.input_input_handler)},m(o,f){s(o,e,f),l(e,n),l(n,r),R(w,n,null),l(e,i),l(e,a),l(a,c),l(a,u),u.value=t.numColors,h=!0},p(t,e){var n={};!o&&t.mode&&(n.value=e.mode),w.$set(n),t.numColors&&(u.value=e.numColors)},i(t){h||(q(w.$$.fragment,t),h=!0)},o(t){H(w.$$.fragment,t),h=!1},d(t){t&&f(e),I(w),p()}}}function ji(t){var e,n,r;function o(n){t.inputcolors_colors_binding.call(null,n),e=!0,E(()=>e=!1)}function i(e){t.inputcolors_colors2_binding.call(null,e),n=!0,E(()=>n=!1)}let a={diverging:"diverging"===t.mode};void 0!==t.colors&&(a.colors=t.colors),void 0!==t.colors2&&(a.colors2=t.colors2);var c=new oe({props:a});return L(()=>B(c,"colors",o)),L(()=>B(c,"colors2",i)),{c(){c.$$.fragment.c()},m(t,e){R(c,t,e),r=!0},p(t,r){var o={};t.mode&&(o.diverging="diverging"===r.mode),!e&&t.colors&&(o.colors=r.colors),!n&&t.colors2&&(o.colors2=r.colors2),c.$set(o)},i(t){r||(q(c.$$.fragment,t),r=!0)},o(t){H(c.$$.fragment,t),r=!1},d(t){I(c,t)}}}function Ei(t){var e,n,r,o,i,a,c,u,h,p,g,b,m,_,$,x,M,k,C,T,N,S,z,D;function j(e){t.checkbox0_value_binding.call(null,e),r=!0,E(()=>r=!1)}let U={label:"correct lightness"};void 0!==t.correctLightness&&(U.value=t.correctLightness);var A=new tt({props:U});function F(e){t.checkbox1_value_binding.call(null,e),i=!0,E(()=>i=!1)}L(()=>B(A,"value",j));let O={label:"bezier interpolation"};void 0!==t.bezier&&(O.value=t.bezier);var P=new tt({props:O});function Y(e){t.colorblindcheck_colors_binding.call(null,e),u=!0,E(()=>u=!1)}function G(e){t.colorblindcheck_active_binding.call(null,e),h=!0,E(()=>h=!1)}L(()=>B(P,"value",F));let Z={};void 0!==t.steps&&(Z.colors=t.steps),void 0!==t.simulate&&(Z.active=t.simulate);var W=new Ci({props:Z});function V(e){t.palettepreview_steps_binding.call(null,e),g=!0,E(()=>g=!1)}function X(e){t.palettepreview_correctLightness_binding.call(null,e),b=!0,E(()=>b=!1)}function Q(e){t.palettepreview_bezier_binding.call(null,e),m=!0,E(()=>m=!1)}function J(e){t.palettepreview_colors_binding.call(null,e),_=!0,E(()=>_=!1)}function K(e){t.palettepreview_colors2_binding.call(null,e),$=!0,E(()=>$=!1)}function et(e){t.palettepreview_numColors_binding.call(null,e),x=!0,E(()=>x=!1)}L(()=>B(W,"colors",Y)),L(()=>B(W,"active",G));let nt={diverging:"diverging"===t.mode,simulate:t.simulate};void 0!==t.steps&&(nt.steps=t.steps),void 0!==t.correctLightness&&(nt.correctLightness=t.correctLightness),void 0!==t.bezier&&(nt.bezier=t.bezier),void 0!==t.colors&&(nt.colors=t.colors),void 0!==t.colors2&&(nt.colors2=t.colors2),void 0!==t.numColors&&(nt.numColors=t.numColors);var rt=new he({props:nt});L(()=>B(rt,"steps",V)),L(()=>B(rt,"correctLightness",X)),L(()=>B(rt,"bezier",Q)),L(()=>B(rt,"colors",J)),L(()=>B(rt,"colors2",K)),L(()=>B(rt,"numColors",et));var ot=new ui({props:{title:"lightness",steps:t.steps,mode:0}}),it=new ui({props:{title:"saturation",steps:t.steps,mode:1}}),at=new ui({props:{title:"hue",steps:t.steps,mode:2}});return{c(){e=d("div"),n=d("div"),A.$$.fragment.c(),o=v(),P.$$.fragment.c(),a=v(),c=d("div"),W.$$.fragment.c(),p=v(),rt.$$.fragment.c(),M=v(),k=d("div"),C=d("div"),ot.$$.fragment.c(),T=v(),N=d("div"),it.$$.fragment.c(),S=v(),z=d("div"),at.$$.fragment.c(),y(n,"class","col-md"),y(c,"class","col-md"),y(e,"class","row"),w(e,"margin-bottom","10px"),y(C,"class","col-md"),y(N,"class","col-md"),y(z,"class","col-md"),y(k,"class","row")},m(t,r){s(t,e,r),l(e,n),R(A,n,null),l(n,o),R(P,n,null),l(e,a),l(e,c),R(W,c,null),s(t,p,r),R(rt,t,r),s(t,M,r),s(t,k,r),l(k,C),R(ot,C,null),l(k,T),l(k,N),R(it,N,null),l(k,S),l(k,z),R(at,z,null),D=!0},p(t,e){var n={};!r&&t.correctLightness&&(n.value=e.correctLightness),A.$set(n);var o={};!i&&t.bezier&&(o.value=e.bezier),P.$set(o);var a={};!u&&t.steps&&(a.colors=e.steps),!h&&t.simulate&&(a.active=e.simulate),W.$set(a);var c={};t.mode&&(c.diverging="diverging"===e.mode),t.simulate&&(c.simulate=e.simulate),!g&&t.steps&&(c.steps=e.steps),!b&&t.correctLightness&&(c.correctLightness=e.correctLightness),!m&&t.bezier&&(c.bezier=e.bezier),!_&&t.colors&&(c.colors=e.colors),!$&&t.colors2&&(c.colors2=e.colors2),!x&&t.numColors&&(c.numColors=e.numColors),rt.$set(c);var l={};t.steps&&(l.steps=e.steps),ot.$set(l);var s={};t.steps&&(s.steps=e.steps),it.$set(s);var f={};t.steps&&(f.steps=e.steps),at.$set(f)},i(t){D||(q(A.$$.fragment,t),q(P.$$.fragment,t),q(W.$$.fragment,t),q(rt.$$.fragment,t),q(ot.$$.fragment,t),q(it.$$.fragment,t),q(at.$$.fragment,t),D=!0)},o(t){H(A.$$.fragment,t),H(P.$$.fragment,t),H(W.$$.fragment,t),H(rt.$$.fragment,t),H(ot.$$.fragment,t),H(it.$$.fragment,t),H(at.$$.fragment,t),D=!1},d(t){t&&f(e),I(A),I(P),I(W),t&&f(p),I(rt,t),t&&(f(M),f(k)),I(ot),I(it),I(at)}}}function Ui(t){var e,n,r,o,i,a,c,u,h,p,b,m,_,w=t.isMac?"cmd":"ctrl",$=new be({props:{steps:t.steps}});return{c(){e=d("p"),n=g("You can also save your palette for later by bookmarking "),r=d("a"),o=g("this page"),a=g(" using "),c=d("kbd"),u=g(w),h=g("+"),(p=d("kbd")).textContent="d",b=g("."),m=v(),$.$$.fragment.c(),y(r,"href",i="#/"+t.hash),y(c,"class","svelte-3uzbpv"),y(p,"class","svelte-3uzbpv")},m(t,i){s(t,e,i),l(e,n),l(e,r),l(r,o),l(e,a),l(e,c),l(c,u),l(e,h),l(e,p),l(e,b),s(t,m,i),R($,t,i),_=!0},p(t,e){_&&!t.hash||i===(i="#/"+e.hash)||y(r,"href",i);var n={};t.steps&&(n.steps=e.steps),$.$set(n)},i(t){_||(q($.$$.fragment,t),_=!0)},o(t){H($.$$.fragment,t),_=!1},d(t){t&&(f(e),f(m)),I($,t)}}}function Ai(t){var e,n,r,o,i,a,c,u,h,p,g=new hi({props:{step:"1",title:"What kind of palette do you want to create?",$$slots:{default:[Li]},$$scope:{ctx:t}}}),m=new hi({props:{step:"2",title:"Select and arrange input colors",$$slots:{default:[ji]},$$scope:{ctx:t}}}),_=new hi({props:{step:"3",title:"Check and configure the resulting palette",$$slots:{default:[Ei]},$$scope:{ctx:t}}}),w=new hi({props:{step:"4",title:"Export the color codes in various formats",$$slots:{default:[Ui]},$$scope:{ctx:t}}});return{c(){e=d("div"),(n=d("div")).innerHTML='

Chroma.js Color Palette Helper

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

',r=v(),g.$$.fragment.c(),o=v(),m.$$.fragment.c(),i=v(),_.$$.fragment.c(),a=v(),w.$$.fragment.c(),c=v(),(u=d("div")).innerHTML='

Created by Gregor Aisch for the sake of better\n\t\t\t use of colors in maps and data visualizations. Feel free to fork on Github.

',y(n,"class","head svelte-3uzbpv"),y(u,"class","foot svelte-3uzbpv"),y(e,"class","container"),p=b(window,"hashchange",t.hashChange)},m(t,f){s(t,e,f),l(e,n),l(e,r),R(g,e,null),l(e,o),R(m,e,null),l(e,i),R(_,e,null),l(e,a),R(w,e,null),l(e,c),l(e,u),h=!0},p(t,e){var n={};(t.$$scope||t.numColors||t.mode)&&(n.$$scope={changed:t,ctx:e}),g.$set(n);var r={};(t.$$scope||t.mode||t.colors||t.colors2)&&(r.$$scope={changed:t,ctx:e}),m.$set(r);var o={};(t.$$scope||t.steps||t.mode||t.simulate||t.correctLightness||t.bezier||t.colors||t.colors2||t.numColors)&&(o.$$scope={changed:t,ctx:e}),_.$set(o);var i={};(t.$$scope||t.steps||t.hash)&&(i.$$scope={changed:t,ctx:e}),w.$set(i)},i(t){h||(q(g.$$.fragment,t),q(m.$$.fragment,t),q(_.$$.fragment,t),q(w.$$.fragment,t),h=!0)},o(t){H(g.$$.fragment,t),H(m.$$.fragment,t),H(_.$$.fragment,t),H(w.$$.fragment,t),h=!1},d(t){t&&f(e),I(g),I(m),I(_),I(w),p()}}}function Fi(t,e,n){let{name:r}=e,o=[],i=!0,a=!0,c="00429d,96ffea,lightyellow".split(/\s*,\s*/).map(t=>Q(t)),u="ffffe0,ff005e,93003a".split(/\s*,\s*/).map(t=>Q(t)),l=9,s="sequential",f="none";window.location.hash&&v();const h=navigator.platform.toUpperCase().indexOf("MAC")>-1;let d,p="",g="sequential";function v(){const t=window.location.hash.substr(2).split("|");6===t.length?setTimeout(()=>{n("numColors",l=+t[0]),n("mode",s="s"===t[1]?"sequential":"diverging"),g=s,n("colors",c=t[2].split(",").map(t=>t&&Q(t))),n("colors2",u=""!==t[3]?t[3].split(",").map(t=>t&&Q(t)):[]),n("correctLightness",a="1"===t[4]),n("bezier",i="1"===t[5])}):window.location.hash=""}return k(()=>{d!==p&&(p=d,window.location.hash=`#/${d}`),s!==g&&("diverging"!==s||u.length||n("colors2",u=c.slice(0).reverse()),g=s)}),t.$set=(t=>{"name"in t&&n("name",r=t.name)}),t.$$.update=((t={numColors:1,mode:1,colors:1,colors2:1,correctLightness:1,bezier:1})=>{(t.numColors||t.mode||t.colors||t.colors2||t.correctLightness||t.bezier)&&n("hash",d=[l,s.substr(0,1),c.map(t=>t.hex().substr(1)).join(","),u.length?u.map(t=>t.hex().substr(1)).join(","):"",a?1:0,i?1:0].join("|"))}),{name:r,steps:o,bezier:i,correctLightness:a,colors:c,colors2:u,numColors:l,mode:s,simulate:f,isMac:h,hashChange:function(){window.location.hash!==`#/${d}`&&v()},hash:d,buttongroup_value_binding:function(t){n("mode",s=t)},input_input_handler:function(){var t;t=this.value,n("numColors",l=""===t?void 0:+t)},inputcolors_colors_binding:function(t){n("colors",c=t)},inputcolors_colors2_binding:function(t){n("colors2",u=t)},checkbox0_value_binding:function(t){n("correctLightness",a=t)},checkbox1_value_binding:function(t){n("bezier",i=t)},colorblindcheck_colors_binding:function(t){n("steps",o=t)},colorblindcheck_active_binding:function(t){n("simulate",f=t)},palettepreview_steps_binding:function(t){n("steps",o=t)},palettepreview_correctLightness_binding:function(t){n("correctLightness",a=t)},palettepreview_bezier_binding:function(t){n("bezier",i=t)},palettepreview_colors_binding:function(t){n("colors",c=t)},palettepreview_colors2_binding:function(t){n("colors2",u=t)},palettepreview_numColors_binding:function(t){n("numColors",l=t)}}}return new class extends W{constructor(t){super(),Z(this,t,Fi,Ai,a,["name"])}}({target:document.body,props:{name:"world"}})}(); + +(function(l, i, v, e) { v = l.createElement(i); v.async = 1; v.src = '//' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; e = l.getElementsByTagName(i)[0]; e.parentNode.insertBefore(v, e)})(document, 'script'); +var app = (function () { + 'use strict'; + + function noop() { } + function assign(tar, src) { + // @ts-ignore + for (const k in src) + tar[k] = src[k]; + return tar; + } + function add_location(element, file, line, column, char) { + element.__svelte_meta = { + loc: { file, line, column, char } + }; + } + function run(fn) { + return fn(); + } + function blank_object() { + return Object.create(null); + } + function run_all(fns) { + fns.forEach(run); + } + function is_function(thing) { + return typeof thing === 'function'; + } + function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); + } + function create_slot(definition, ctx, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, fn); + return definition[0](slot_ctx); + } + } + function get_slot_context(definition, ctx, fn) { + return definition[1] + ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {}))) + : ctx.$$scope.ctx; + } + function get_slot_changes(definition, ctx, changed, fn) { + return definition[1] + ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {}))) + : ctx.$$scope.changed || {}; + } + function exclude_internal_props(props) { + const result = {}; + for (const k in props) + if (k[0] !== '$') + result[k] = props[k]; + return result; + } + + function append(target, node) { + target.appendChild(node); + } + function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); + } + function detach(node) { + node.parentNode.removeChild(node); + } + function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } + } + function element(name) { + return document.createElement(name); + } + function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); + } + function text(data) { + return document.createTextNode(data); + } + function space() { + return text(' '); + } + function empty() { + return text(''); + } + function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); + } + function prevent_default(fn) { + return function (event) { + event.preventDefault(); + // @ts-ignore + return fn.call(this, event); + }; + } + function stop_propagation(fn) { + return function (event) { + event.stopPropagation(); + // @ts-ignore + return fn.call(this, event); + }; + } + function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else + node.setAttribute(attribute, value); + } + function to_number(value) { + return value === '' ? undefined : +value; + } + function children(element) { + return Array.from(element.childNodes); + } + function set_data(text, data) { + data = '' + data; + if (text.data !== data) + text.data = data; + } + function set_style(node, key, value) { + node.style.setProperty(key, value); + } + function add_resize_listener(element, fn) { + if (getComputedStyle(element).position === 'static') { + element.style.position = 'relative'; + } + const object = document.createElement('object'); + object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;'); + object.type = 'text/html'; + let win; + object.onload = () => { + win = object.contentDocument.defaultView; + win.addEventListener('resize', fn); + }; + if (/Trident/.test(navigator.userAgent)) { + element.appendChild(object); + object.data = 'about:blank'; + } + else { + object.data = 'about:blank'; + element.appendChild(object); + } + return { + cancel: () => { + win && win.removeEventListener && win.removeEventListener('resize', fn); + element.removeChild(object); + } + }; + } + function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); + } + + let current_component; + function set_current_component(component) { + current_component = component; + } + function get_current_component() { + if (!current_component) + throw new Error(`Function called outside component initialization`); + return current_component; + } + function beforeUpdate(fn) { + get_current_component().$$.before_render.push(fn); + } + // TODO figure out if we still want to support + // shorthand events, or if we want to implement + // a real bubbling mechanism + function bubble(component, event) { + const callbacks = component.$$.callbacks[event.type]; + if (callbacks) { + callbacks.slice().forEach(fn => fn(event)); + } + } + + const dirty_components = []; + const resolved_promise = Promise.resolve(); + let update_scheduled = false; + const binding_callbacks = []; + const render_callbacks = []; + const flush_callbacks = []; + function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } + } + function add_binding_callback(fn) { + binding_callbacks.push(fn); + } + function add_render_callback(fn) { + render_callbacks.push(fn); + } + function add_flush_callback(fn) { + flush_callbacks.push(fn); + } + function flush() { + const seen_callbacks = new Set(); + do { + // first, call beforeUpdate functions + // and update components + while (dirty_components.length) { + const component = dirty_components.shift(); + set_current_component(component); + update(component.$$); + } + while (binding_callbacks.length) + binding_callbacks.shift()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + while (render_callbacks.length) { + const callback = render_callbacks.pop(); + if (!seen_callbacks.has(callback)) { + callback(); + // ...so guard against infinite loops + seen_callbacks.add(callback); + } + } + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + } + function update($$) { + if ($$.fragment) { + $$.update($$.dirty); + run_all($$.before_render); + $$.fragment.p($$.dirty, $$.ctx); + $$.dirty = null; + $$.after_render.forEach(add_render_callback); + } + } + const outroing = new Set(); + let outros; + function group_outros() { + outros = { + remaining: 0, + callbacks: [] + }; + } + function check_outros() { + if (!outros.remaining) { + run_all(outros.callbacks); + } + } + function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } + } + function transition_out(block, local, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.callbacks.push(() => { + outroing.delete(block); + if (callback) { + block.d(1); + callback(); + } + }); + block.o(local); + } + } + + function bind(component, name, callback) { + if (component.$$.props.indexOf(name) === -1) + return; + component.$$.bound[name] = callback; + callback(component.$$.ctx[name]); + } + function mount_component(component, target, anchor) { + const { fragment, on_mount, on_destroy, after_render } = component.$$; + fragment.m(target, anchor); + // onMount happens after the initial afterUpdate. Because + // afterUpdate callbacks happen in reverse order (inner first) + // we schedule onMount callbacks before afterUpdate callbacks + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + after_render.forEach(add_render_callback); + } + function destroy_component(component, detaching) { + if (component.$$.fragment) { + run_all(component.$$.on_destroy); + if (detaching) + component.$$.fragment.d(1); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + component.$$.on_destroy = component.$$.fragment = null; + component.$$.ctx = {}; + } + } + function make_dirty(component, key) { + if (!component.$$.dirty) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty = blank_object(); + } + component.$$.dirty[key] = true; + } + function init(component, options, instance, create_fragment, not_equal$$1, prop_names) { + const parent_component = current_component; + set_current_component(component); + const props = options.props || {}; + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props: prop_names, + update: noop, + not_equal: not_equal$$1, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + before_render: [], + after_render: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object(), + dirty: null + }; + let ready = false; + $$.ctx = instance + ? instance(component, props, (key, value) => { + if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) { + if ($$.bound[key]) + $$.bound[key](value); + if (ready) + make_dirty(component, key); + } + }) + : props; + $$.update(); + ready = true; + run_all($$.before_render); + $$.fragment = create_fragment($$.ctx); + if (options.target) { + if (options.hydrate) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment.l(children(options.target)); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor); + flush(); + } + set_current_component(parent_component); + } + class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set() { + // overridden by instance, if it has props + } + } + class SvelteComponentDev extends SvelteComponent { + constructor(options) { + if (!options || (!options.target && !options.$$inline)) { + throw new Error(`'target' is a required option`); + } + super(); + } + $destroy() { + super.$destroy(); + this.$destroy = () => { + console.warn(`Component was already destroyed`); // eslint-disable-line no-console + }; + } + } + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var chroma = createCommonjsModule(function (module, exports) { + /** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + */ + + (function (global, factory) { + module.exports = factory(); + }(commonjsGlobal, (function () { + var limit = function (x, min, max) { + if ( min === void 0 ) min=0; + if ( max === void 0 ) max=1; + + return x < min ? min : x > max ? max : x; + }; + + var clip_rgb = function (rgb) { + rgb._clipped = false; + rgb._unclipped = rgb.slice(0); + for (var i=0; i<=3; i++) { + if (i < 3) { + if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } + rgb[i] = limit(rgb[i], 0, 255); + } else if (i === 3) { + rgb[i] = limit(rgb[i], 0, 1); + } + } + return rgb; + }; + + // ported from jQuery's $.type + var classToType = {}; + for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) { + var name = list[i]; + + classToType[("[object " + name + "]")] = name.toLowerCase(); + } + var type = function(obj) { + return classToType[Object.prototype.toString.call(obj)] || "object"; + }; + + var unpack = function (args, keyOrder) { + if ( keyOrder === void 0 ) keyOrder=null; + + // if called with more than 3 arguments, we return the arguments + if (args.length >= 3) { return Array.prototype.slice.call(args); } + // with less than 3 args we check if first arg is object + // and use the keyOrder string to extract and sort properties + if (type(args[0]) == 'object' && keyOrder) { + return keyOrder.split('') + .filter(function (k) { return args[0][k] !== undefined; }) + .map(function (k) { return args[0][k]; }); + } + // otherwise we just return the first argument + // (which we suppose is an array of args) + return args[0]; + }; + + var last = function (args) { + if (args.length < 2) { return null; } + var l = args.length-1; + if (type(args[l]) == 'string') { return args[l].toLowerCase(); } + return null; + }; + + var PI = Math.PI; + + var utils = { + clip_rgb: clip_rgb, + limit: limit, + type: type, + unpack: unpack, + last: last, + PI: PI, + TWOPI: PI*2, + PITHIRD: PI/3, + DEG2RAD: PI / 180, + RAD2DEG: 180 / PI + }; + + var input = { + format: {}, + autodetect: [] + }; + + var last$1 = utils.last; + var clip_rgb$1 = utils.clip_rgb; + var type$1 = utils.type; + + + var Color = function Color() { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var me = this; + if (type$1(args[0]) === 'object' && + args[0].constructor && + args[0].constructor === this.constructor) { + // the argument is already a Color instance + return args[0]; + } + + // last argument could be the mode + var mode = last$1(args); + var autodetect = false; + + if (!mode) { + autodetect = true; + if (!input.sorted) { + input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; }); + input.sorted = true; + } + // auto-detect format + for (var i = 0, list = input.autodetect; i < list.length; i += 1) { + var chk = list[i]; + + mode = chk.test.apply(chk, args); + if (mode) { break; } + } + } + + if (input.format[mode]) { + var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1)); + me._rgb = clip_rgb$1(rgb); + } else { + throw new Error('unknown format: '+args); + } + + // add alpha channel + if (me._rgb.length === 3) { me._rgb.push(1); } + }; + + Color.prototype.toString = function toString () { + if (type$1(this.hex) == 'function') { return this.hex(); } + return ("[" + (this._rgb.join(',')) + "]"); + }; + + var Color_1 = Color; + + var chroma = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) )); + }; + + chroma.Color = Color_1; + chroma.version = '2.0.4'; + + var chroma_1 = chroma; + + var unpack$1 = utils.unpack; + var max = Math.max; + + var rgb2cmyk = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$1(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + r = r / 255; + g = g / 255; + b = b / 255; + var k = 1 - max(r,max(g,b)); + var f = k < 1 ? 1 / (1-k) : 0; + var c = (1-r-k) * f; + var m = (1-g-k) * f; + var y = (1-b-k) * f; + return [c,m,y,k]; + }; + + var rgb2cmyk_1 = rgb2cmyk; + + var unpack$2 = utils.unpack; + + var cmyk2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$2(args, 'cmyk'); + var c = args[0]; + var m = args[1]; + var y = args[2]; + var k = args[3]; + var alpha = args.length > 4 ? args[4] : 1; + if (k === 1) { return [0,0,0,alpha]; } + return [ + c >= 1 ? 0 : 255 * (1-c) * (1-k), // r + m >= 1 ? 0 : 255 * (1-m) * (1-k), // g + y >= 1 ? 0 : 255 * (1-y) * (1-k), // b + alpha + ]; + }; + + var cmyk2rgb_1 = cmyk2rgb; + + var unpack$3 = utils.unpack; + var type$2 = utils.type; + + + + Color_1.prototype.cmyk = function() { + return rgb2cmyk_1(this._rgb); + }; + + chroma_1.cmyk = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) )); + }; + + input.format.cmyk = cmyk2rgb_1; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$3(args, 'cmyk'); + if (type$2(args) === 'array' && args.length === 4) { + return 'cmyk'; + } + } + }); + + var unpack$4 = utils.unpack; + var last$2 = utils.last; + var rnd = function (a) { return Math.round(a*100)/100; }; + + /* + * supported arguments: + * - hsl2css(h,s,l) + * - hsl2css(h,s,l,a) + * - hsl2css([h,s,l], mode) + * - hsl2css([h,s,l,a], mode) + * - hsl2css({h,s,l,a}, mode) + */ + var hsl2css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hsla = unpack$4(args, 'hsla'); + var mode = last$2(args) || 'lsa'; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1]*100) + '%'; + hsla[2] = rnd(hsla[2]*100) + '%'; + if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = 'hsla'; + } else { + hsla.length = 3; + } + return (mode + "(" + (hsla.join(',')) + ")"); + }; + + var hsl2css_1 = hsl2css; + + var unpack$5 = utils.unpack; + + /* + * supported arguments: + * - rgb2hsl(r,g,b) + * - rgb2hsl(r,g,b,a) + * - rgb2hsl([r,g,b]) + * - rgb2hsl([r,g,b,a]) + * - rgb2hsl({r,g,b,a}) + */ + var rgb2hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$5(args, 'rgba'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + + r /= 255; + g /= 255; + b /= 255; + + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + + var l = (max + min) / 2; + var s, h; + + if (max === min){ + s = 0; + h = Number.NaN; + } else { + s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min); + } + + if (r == max) { h = (g - b) / (max - min); } + else if (g == max) { h = 2 + (b - r) / (max - min); } + else if (b == max) { h = 4 + (r - g) / (max - min); } + + h *= 60; + if (h < 0) { h += 360; } + if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; } + return [h,s,l]; + }; + + var rgb2hsl_1 = rgb2hsl; + + var unpack$6 = utils.unpack; + var last$3 = utils.last; + + + var round = Math.round; + + /* + * supported arguments: + * - rgb2css(r,g,b) + * - rgb2css(r,g,b,a) + * - rgb2css([r,g,b], mode) + * - rgb2css([r,g,b,a], mode) + * - rgb2css({r,g,b,a}, mode) + */ + var rgb2css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack$6(args, 'rgba'); + var mode = last$3(args) || 'rgb'; + if (mode.substr(0,3) == 'hsl') { + return hsl2css_1(rgb2hsl_1(rgba), mode); + } + rgba[0] = round(rgba[0]); + rgba[1] = round(rgba[1]); + rgba[2] = round(rgba[2]); + if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = 'rgba'; + } + return (mode + "(" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + ")"); + }; + + var rgb2css_1 = rgb2css; + + var unpack$7 = utils.unpack; + var round$1 = Math.round; + + var hsl2rgb = function () { + var assign; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$7(args, 'hsl'); + var h = args[0]; + var s = args[1]; + var l = args[2]; + var r,g,b; + if (s === 0) { + r = g = b = l*255; + } else { + var t3 = [0,0,0]; + var c = [0,0,0]; + var t2 = l < 0.5 ? l * (1+s) : l+s-l*s; + var t1 = 2 * l - t2; + var h_ = h / 360; + t3[0] = h_ + 1/3; + t3[1] = h_; + t3[2] = h_ - 1/3; + for (var i=0; i<3; i++) { + if (t3[i] < 0) { t3[i] += 1; } + if (t3[i] > 1) { t3[i] -= 1; } + if (6 * t3[i] < 1) + { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } + else if (2 * t3[i] < 1) + { c[i] = t2; } + else if (3 * t3[i] < 2) + { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; } + else + { c[i] = t1; } + } + (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]); + } + if (args.length > 3) { + // keep alpha channel + return [r,g,b,args[3]]; + } + return [r,g,b,1]; + }; + + var hsl2rgb_1 = hsl2rgb; + + var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; + var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + + var round$2 = Math.round; + + var css2rgb = function (css) { + css = css.toLowerCase().trim(); + var m; + + if (input.format.named) { + try { + return input.format.named(css); + } catch (e) { + // eslint-disable-next-line + } + } + + // rgb(250,20,0) + if ((m = css.match(RE_RGB))) { + var rgb = m.slice(1,4); + for (var i=0; i<3; i++) { + rgb[i] = +rgb[i]; + } + rgb[3] = 1; // default alpha + return rgb; + } + + // rgba(250,20,0,0.4) + if ((m = css.match(RE_RGBA))) { + var rgb$1 = m.slice(1,5); + for (var i$1=0; i$1<4; i$1++) { + rgb$1[i$1] = +rgb$1[i$1]; + } + return rgb$1; + } + + // rgb(100%,0%,0%) + if ((m = css.match(RE_RGB_PCT))) { + var rgb$2 = m.slice(1,4); + for (var i$2=0; i$2<3; i$2++) { + rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55); + } + rgb$2[3] = 1; // default alpha + return rgb$2; + } + + // rgba(100%,0%,0%,0.4) + if ((m = css.match(RE_RGBA_PCT))) { + var rgb$3 = m.slice(1,5); + for (var i$3=0; i$3<3; i$3++) { + rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55); + } + rgb$3[3] = +rgb$3[3]; + return rgb$3; + } + + // hsl(0,100%,50%) + if ((m = css.match(RE_HSL))) { + var hsl = m.slice(1,4); + hsl[1] *= 0.01; + hsl[2] *= 0.01; + var rgb$4 = hsl2rgb_1(hsl); + rgb$4[3] = 1; + return rgb$4; + } + + // hsla(0,100%,50%,0.5) + if ((m = css.match(RE_HSLA))) { + var hsl$1 = m.slice(1,4); + hsl$1[1] *= 0.01; + hsl$1[2] *= 0.01; + var rgb$5 = hsl2rgb_1(hsl$1); + rgb$5[3] = +m[4]; // default alpha = 1 + return rgb$5; + } + }; + + css2rgb.test = function (s) { + return RE_RGB.test(s) || + RE_RGBA.test(s) || + RE_RGB_PCT.test(s) || + RE_RGBA_PCT.test(s) || + RE_HSL.test(s) || + RE_HSLA.test(s); + }; + + var css2rgb_1 = css2rgb; + + var type$3 = utils.type; + + + + + Color_1.prototype.css = function(mode) { + return rgb2css_1(this._rgb, mode); + }; + + chroma_1.css = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) )); + }; + + input.format.css = css2rgb_1; + + input.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) { + return 'css'; + } + } + }); + + var unpack$8 = utils.unpack; + + input.format.gl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgb = unpack$8(args, 'rgba'); + rgb[0] *= 255; + rgb[1] *= 255; + rgb[2] *= 255; + return rgb; + }; + + chroma_1.gl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) )); + }; + + Color_1.prototype.gl = function() { + var rgb = this._rgb; + return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]]; + }; + + var unpack$9 = utils.unpack; + + var rgb2hcg = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$9(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var c = delta * 100 / 255; + var _g = min / (255 - delta) * 100; + var h; + if (delta === 0) { + h = Number.NaN; + } else { + if (r === max) { h = (g - b) / delta; } + if (g === max) { h = 2+(b - r) / delta; } + if (b === max) { h = 4+(r - g) / delta; } + h *= 60; + if (h < 0) { h += 360; } + } + return [h, c, _g]; + }; + + var rgb2hcg_1 = rgb2hcg; + + var unpack$a = utils.unpack; + var floor = Math.floor; + + /* + * this is basically just HSV with some minor tweaks + * + * hue.. [0..360] + * chroma .. [0..1] + * grayness .. [0..1] + */ + + var hcg2rgb = function () { + var assign, assign$1, assign$2, assign$3, assign$4, assign$5; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$a(args, 'hcg'); + var h = args[0]; + var c = args[1]; + var _g = args[2]; + var r,g,b; + _g = _g * 255; + var _c = c * 255; + if (c === 0) { + r = g = b = _g; + } else { + if (h === 360) { h = 0; } + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 60; + var i = floor(h); + var f = h - i; + var p = _g * (1 - c); + var q = p + _c * (1 - f); + var t = p + _c * f; + var v = p + _c; + switch (i) { + case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break + case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break + case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break + case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break + case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break + case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break + } + } + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var hcg2rgb_1 = hcg2rgb; + + var unpack$b = utils.unpack; + var type$4 = utils.type; + + + + + + + Color_1.prototype.hcg = function() { + return rgb2hcg_1(this._rgb); + }; + + chroma_1.hcg = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) )); + }; + + input.format.hcg = hcg2rgb_1; + + input.autodetect.push({ + p: 1, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$b(args, 'hcg'); + if (type$4(args) === 'array' && args.length === 3) { + return 'hcg'; + } + } + }); + + var unpack$c = utils.unpack; + var last$4 = utils.last; + var round$3 = Math.round; + + var rgb2hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$c(args, 'rgba'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var a = ref[3]; + var mode = last$4(args) || 'auto'; + if (a === undefined) { a = 1; } + if (mode === 'auto') { + mode = a < 1 ? 'rgba' : 'rgb'; + } + r = round$3(r); + g = round$3(g); + b = round$3(b); + var u = r << 16 | g << 8 | b; + var str = "000000" + u.toString(16); //#.toUpperCase(); + str = str.substr(str.length - 6); + var hxa = '0' + round$3(a * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case 'rgba': return ("#" + str + hxa); + case 'argb': return ("#" + hxa + str); + default: return ("#" + str); + } + }; + + var rgb2hex_1 = rgb2hex; + + var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; + var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/; + + var hex2rgb = function (hex) { + if (hex.match(RE_HEX)) { + // remove optional leading # + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + // expand short-notation to full six-digit + if (hex.length === 3) { + hex = hex.split(''); + hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; + } + var u = parseInt(hex, 16); + var r = u >> 16; + var g = u >> 8 & 0xFF; + var b = u & 0xFF; + return [r,g,b,1]; + } + + // match rgba hex format, eg #FF000077 + if (hex.match(RE_HEXA)) { + if (hex.length === 9) { + // remove optional leading # + hex = hex.substr(1); + } + var u$1 = parseInt(hex, 16); + var r$1 = u$1 >> 24 & 0xFF; + var g$1 = u$1 >> 16 & 0xFF; + var b$1 = u$1 >> 8 & 0xFF; + var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100; + return [r$1,g$1,b$1,a]; + } + + // we used to check for css colors here + // if _input.css? and rgb = _input.css hex + // return rgb + + throw new Error(("unknown hex color: " + hex)); + }; + + var hex2rgb_1 = hex2rgb; + + var type$5 = utils.type; + + + + + Color_1.prototype.hex = function(mode) { + return rgb2hex_1(this._rgb, mode); + }; + + chroma_1.hex = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) )); + }; + + input.format.hex = hex2rgb_1; + input.autodetect.push({ + p: 4, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) { + return 'hex'; + } + } + }); + + var unpack$d = utils.unpack; + var TWOPI = utils.TWOPI; + var min = Math.min; + var sqrt = Math.sqrt; + var acos = Math.acos; + + var rgb2hsi = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp + */ + var ref = unpack$d(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + r /= 255; + g /= 255; + b /= 255; + var h; + var min_ = min(r,g,b); + var i = (r+g+b) / 3; + var s = i > 0 ? 1 - min_/i : 0; + if (s === 0) { + h = NaN; + } else { + h = ((r-g)+(r-b)) / 2; + h /= sqrt((r-g)*(r-g) + (r-b)*(g-b)); + h = acos(h); + if (b > g) { + h = TWOPI - h; + } + h /= TWOPI; + } + return [h*360,s,i]; + }; + + var rgb2hsi_1 = rgb2hsi; + + var unpack$e = utils.unpack; + var limit$1 = utils.limit; + var TWOPI$1 = utils.TWOPI; + var PITHIRD = utils.PITHIRD; + var cos = Math.cos; + + /* + * hue [0..360] + * saturation [0..1] + * intensity [0..1] + */ + var hsi2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + borrowed from here: + http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp + */ + args = unpack$e(args, 'hsi'); + var h = args[0]; + var s = args[1]; + var i = args[2]; + var r,g,b; + + if (isNaN(h)) { h = 0; } + if (isNaN(s)) { s = 0; } + // normalize hue + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 360; + if (h < 1/3) { + b = (1-s)/3; + r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3; + g = 1 - (b+r); + } else if (h < 2/3) { + h -= 1/3; + r = (1-s)/3; + g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3; + b = 1 - (r+g); + } else { + h -= 2/3; + g = (1-s)/3; + b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3; + r = 1 - (g+b); + } + r = limit$1(i*r*3); + g = limit$1(i*g*3); + b = limit$1(i*b*3); + return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1]; + }; + + var hsi2rgb_1 = hsi2rgb; + + var unpack$f = utils.unpack; + var type$6 = utils.type; + + + + + + + Color_1.prototype.hsi = function() { + return rgb2hsi_1(this._rgb); + }; + + chroma_1.hsi = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) )); + }; + + input.format.hsi = hsi2rgb_1; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$f(args, 'hsi'); + if (type$6(args) === 'array' && args.length === 3) { + return 'hsi'; + } + } + }); + + var unpack$g = utils.unpack; + var type$7 = utils.type; + + + + + + + Color_1.prototype.hsl = function() { + return rgb2hsl_1(this._rgb); + }; + + chroma_1.hsl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) )); + }; + + input.format.hsl = hsl2rgb_1; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$g(args, 'hsl'); + if (type$7(args) === 'array' && args.length === 3) { + return 'hsl'; + } + } + }); + + var unpack$h = utils.unpack; + var min$1 = Math.min; + var max$1 = Math.max; + + /* + * supported arguments: + * - rgb2hsv(r,g,b) + * - rgb2hsv([r,g,b]) + * - rgb2hsv({r,g,b}) + */ + var rgb2hsl$1 = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$h(args, 'rgb'); + var r = args[0]; + var g = args[1]; + var b = args[2]; + var min_ = min$1(r, g, b); + var max_ = max$1(r, g, b); + var delta = max_ - min_; + var h,s,v; + v = max_ / 255.0; + if (max_ === 0) { + h = Number.NaN; + s = 0; + } else { + s = delta / max_; + if (r === max_) { h = (g - b) / delta; } + if (g === max_) { h = 2+(b - r) / delta; } + if (b === max_) { h = 4+(r - g) / delta; } + h *= 60; + if (h < 0) { h += 360; } + } + return [h, s, v] + }; + + var rgb2hsv = rgb2hsl$1; + + var unpack$i = utils.unpack; + var floor$1 = Math.floor; + + var hsv2rgb = function () { + var assign, assign$1, assign$2, assign$3, assign$4, assign$5; + + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + args = unpack$i(args, 'hsv'); + var h = args[0]; + var s = args[1]; + var v = args[2]; + var r,g,b; + v *= 255; + if (s === 0) { + r = g = b = v; + } else { + if (h === 360) { h = 0; } + if (h > 360) { h -= 360; } + if (h < 0) { h += 360; } + h /= 60; + + var i = floor$1(h); + var f = h - i; + var p = v * (1 - s); + var q = v * (1 - s * f); + var t = v * (1 - s * (1 - f)); + + switch (i) { + case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break + case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break + case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break + case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break + case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break + case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break + } + } + return [r,g,b,args.length > 3?args[3]:1]; + }; + + var hsv2rgb_1 = hsv2rgb; + + var unpack$j = utils.unpack; + var type$8 = utils.type; + + + + + + + Color_1.prototype.hsv = function() { + return rgb2hsv(this._rgb); + }; + + chroma_1.hsv = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) )); + }; + + input.format.hsv = hsv2rgb_1; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$j(args, 'hsv'); + if (type$8(args) === 'array' && args.length === 3) { + return 'hsv'; + } + } + }); + + var labConstants = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + + // D65 standard referent + Xn: 0.950470, + Yn: 1, + Zn: 1.088830, + + t0: 0.137931034, // 4 / 29 + t1: 0.206896552, // 6 / 29 + t2: 0.12841855, // 3 * t1 * t1 + t3: 0.008856452, // t1 * t1 * t1 + }; + + var unpack$k = utils.unpack; + var pow = Math.pow; + + var rgb2lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$k(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2xyz(r,g,b); + var x = ref$1[0]; + var y = ref$1[1]; + var z = ref$1[2]; + var l = 116 * y - 16; + return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; + }; + + var rgb_xyz = function (r) { + if ((r /= 255) <= 0.04045) { return r / 12.92; } + return pow((r + 0.055) / 1.055, 2.4); + }; + + var xyz_lab = function (t) { + if (t > labConstants.t3) { return pow(t, 1 / 3); } + return t / labConstants.t2 + labConstants.t0; + }; + + var rgb2xyz = function (r,g,b) { + r = rgb_xyz(r); + g = rgb_xyz(g); + b = rgb_xyz(b); + var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn); + var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn); + var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn); + return [x,y,z]; + }; + + var rgb2lab_1 = rgb2lab; + + var unpack$l = utils.unpack; + var pow$1 = Math.pow; + + /* + * L* [0..100] + * a [-100..100] + * b [-100..100] + */ + var lab2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$l(args, 'lab'); + var l = args[0]; + var a = args[1]; + var b = args[2]; + var x,y,z, r,g,b_; + + y = (l + 16) / 116; + x = isNaN(a) ? y : y + a / 500; + z = isNaN(b) ? y : y - b / 200; + + y = labConstants.Yn * lab_xyz(y); + x = labConstants.Xn * lab_xyz(x); + z = labConstants.Zn * lab_xyz(z); + + r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB + g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z); + b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); + + return [r,g,b_,args.length > 3 ? args[3] : 1]; + }; + + var xyz_rgb = function (r) { + return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055) + }; + + var lab_xyz = function (t) { + return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0) + }; + + var lab2rgb_1 = lab2rgb; + + var unpack$m = utils.unpack; + var type$9 = utils.type; + + + + + + + Color_1.prototype.lab = function() { + return rgb2lab_1(this._rgb); + }; + + chroma_1.lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) )); + }; + + input.format.lab = lab2rgb_1; + + input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$m(args, 'lab'); + if (type$9(args) === 'array' && args.length === 3) { + return 'lab'; + } + } + }); + + var unpack$n = utils.unpack; + var RAD2DEG = utils.RAD2DEG; + var sqrt$1 = Math.sqrt; + var atan2 = Math.atan2; + var round$4 = Math.round; + + var lab2lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$n(args, 'lab'); + var l = ref[0]; + var a = ref[1]; + var b = ref[2]; + var c = sqrt$1(a * a + b * b); + var h = (atan2(b, a) * RAD2DEG + 360) % 360; + if (round$4(c*10000) === 0) { h = Number.NaN; } + return [l, c, h]; + }; + + var lab2lch_1 = lab2lch; + + var unpack$o = utils.unpack; + + + + var rgb2lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$o(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + var ref$1 = rgb2lab_1(r,g,b); + var l = ref$1[0]; + var a = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch_1(l,a,b_); + }; + + var rgb2lch_1 = rgb2lch; + + var unpack$p = utils.unpack; + var DEG2RAD = utils.DEG2RAD; + var sin = Math.sin; + var cos$1 = Math.cos; + + var lch2lab = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + /* + Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel. + These formulas were invented by David Dalrymple to obtain maximum contrast without going + out of gamut if the parameters are in the range 0-1. + + A saturation multiplier was added by Gregor Aisch + */ + var ref = unpack$p(args, 'lch'); + var l = ref[0]; + var c = ref[1]; + var h = ref[2]; + if (isNaN(h)) { h = 0; } + h = h * DEG2RAD; + return [l, cos$1(h) * c, sin(h) * c] + }; + + var lch2lab_1 = lch2lab; + + var unpack$q = utils.unpack; + + + + var lch2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$q(args, 'lch'); + var l = args[0]; + var c = args[1]; + var h = args[2]; + var ref = lch2lab_1 (l,c,h); + var L = ref[0]; + var a = ref[1]; + var b_ = ref[2]; + var ref$1 = lab2rgb_1 (L,a,b_); + var r = ref$1[0]; + var g = ref$1[1]; + var b = ref$1[2]; + return [r, g, b, args.length > 3 ? args[3] : 1]; + }; + + var lch2rgb_1 = lch2rgb; + + var unpack$r = utils.unpack; + + + var hcl2rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var hcl = unpack$r(args, 'hcl').reverse(); + return lch2rgb_1.apply(void 0, hcl); + }; + + var hcl2rgb_1 = hcl2rgb; + + var unpack$s = utils.unpack; + var type$a = utils.type; + + + + + + + Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); }; + Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); }; + + chroma_1.lch = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) )); + }; + chroma_1.hcl = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) )); + }; + + input.format.lch = lch2rgb_1; + input.format.hcl = hcl2rgb_1; + + ['lch','hcl'].forEach(function (m) { return input.autodetect.push({ + p: 2, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$s(args, m); + if (type$a(args) === 'array' && args.length === 3) { + return m; + } + } + }); }); + + /** + X11 color names + + http://www.w3.org/TR/css3-color/#svg-color + */ + + var w3cx11 = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflower: '#6495ed', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + laserlemon: '#ffff54', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrod: '#fafad2', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + maroon2: '#7f0000', + maroon3: '#b03060', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + purple2: '#7f007f', + purple3: '#a020f0', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32' + }; + + var w3cx11_1 = w3cx11; + + var type$b = utils.type; + + + + + + Color_1.prototype.name = function() { + var hex = rgb2hex_1(this._rgb, 'rgb'); + for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) { + var n = list[i]; + + if (w3cx11_1[n] === hex) { return n.toLowerCase(); } + } + return hex; + }; + + input.format.named = function (name) { + name = name.toLowerCase(); + if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); } + throw new Error('unknown color name: '+name); + }; + + input.autodetect.push({ + p: 5, + test: function (h) { + var rest = [], len = arguments.length - 1; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; + + if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) { + return 'named'; + } + } + }); + + var unpack$t = utils.unpack; + + var rgb2num = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var ref = unpack$t(args, 'rgb'); + var r = ref[0]; + var g = ref[1]; + var b = ref[2]; + return (r << 16) + (g << 8) + b; + }; + + var rgb2num_1 = rgb2num; + + var type$c = utils.type; + + var num2rgb = function (num) { + if (type$c(num) == "number" && num >= 0 && num <= 0xFFFFFF) { + var r = num >> 16; + var g = (num >> 8) & 0xFF; + var b = num & 0xFF; + return [r,g,b,1]; + } + throw new Error("unknown num color: "+num); + }; + + var num2rgb_1 = num2rgb; + + var type$d = utils.type; + + + + Color_1.prototype.num = function() { + return rgb2num_1(this._rgb); + }; + + chroma_1.num = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) )); + }; + + input.format.num = num2rgb_1; + + input.autodetect.push({ + p: 5, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) { + return 'num'; + } + } + }); + + var unpack$u = utils.unpack; + var type$e = utils.type; + var round$5 = Math.round; + + Color_1.prototype.rgb = function(rnd) { + if ( rnd === void 0 ) rnd=true; + + if (rnd === false) { return this._rgb.slice(0,3); } + return this._rgb.slice(0,3).map(round$5); + }; + + Color_1.prototype.rgba = function(rnd) { + if ( rnd === void 0 ) rnd=true; + + return this._rgb.slice(0,4).map(function (v,i) { + return i<3 ? (rnd === false ? v : round$5(v)) : v; + }); + }; + + chroma_1.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) )); + }; + + input.format.rgb = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgba = unpack$u(args, 'rgba'); + if (rgba[3] === undefined) { rgba[3] = 1; } + return rgba; + }; + + input.autodetect.push({ + p: 3, + test: function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + args = unpack$u(args, 'rgba'); + if (type$e(args) === 'array' && (args.length === 3 || + args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) { + return 'rgb'; + } + } + }); + + /* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + */ + + var log = Math.log; + + var temperature2rgb = function (kelvin) { + var temp = kelvin / 100; + var r,g,b; + if (temp < 66) { + r = 255; + g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g); + b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b); + } else { + r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r); + g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g); + b = 255; + } + return [r,g,b,1]; + }; + + var temperature2rgb_1 = temperature2rgb; + + /* + * Based on implementation by Neil Bartlett + * https://github.com/neilbartlett/color-temperature + **/ + + + var unpack$v = utils.unpack; + var round$6 = Math.round; + + var rgb2temperature = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + var rgb = unpack$v(args, 'rgb'); + var r = rgb[0], b = rgb[2]; + var minTemp = 1000; + var maxTemp = 40000; + var eps = 0.4; + var temp; + while (maxTemp - minTemp > eps) { + temp = (maxTemp + minTemp) * 0.5; + var rgb$1 = temperature2rgb_1(temp); + if ((rgb$1[2] / rgb$1[0]) >= (b / r)) { + maxTemp = temp; + } else { + minTemp = temp; + } + } + return round$6(temp); + }; + + var rgb2temperature_1 = rgb2temperature; + + Color_1.prototype.temp = + Color_1.prototype.kelvin = + Color_1.prototype.temperature = function() { + return rgb2temperature_1(this._rgb); + }; + + chroma_1.temp = + chroma_1.kelvin = + chroma_1.temperature = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) )); + }; + + input.format.temp = + input.format.kelvin = + input.format.temperature = temperature2rgb_1; + + var type$f = utils.type; + + Color_1.prototype.alpha = function(a, mutate) { + if ( mutate === void 0 ) mutate=false; + + if (a !== undefined && type$f(a) === 'number') { + if (mutate) { + this._rgb[3] = a; + return this; + } + return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); + } + return this._rgb[3]; + }; + + Color_1.prototype.clipped = function() { + return this._rgb._clipped || false; + }; + + Color_1.prototype.darken = function(amount) { + if ( amount === void 0 ) amount=1; + + var me = this; + var lab = me.lab(); + lab[0] -= labConstants.Kn * amount; + return new Color_1(lab, 'lab').alpha(me.alpha(), true); + }; + + Color_1.prototype.brighten = function(amount) { + if ( amount === void 0 ) amount=1; + + return this.darken(-amount); + }; + + Color_1.prototype.darker = Color_1.prototype.darken; + Color_1.prototype.brighter = Color_1.prototype.brighten; + + Color_1.prototype.get = function(mc) { + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel); + if (i > -1) { return src[i]; } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var type$g = utils.type; + var pow$2 = Math.pow; + + var EPS = 1e-7; + var MAX_ITER = 20; + + Color_1.prototype.luminance = function(lum) { + if (lum !== undefined && type$g(lum) === 'number') { + if (lum === 0) { + // return pure black + return new Color_1([0,0,0,this._rgb[3]], 'rgb'); + } + if (lum === 1) { + // return pure white + return new Color_1([255,255,255,this._rgb[3]], 'rgb'); + } + // compute new color using... + var cur_lum = this.luminance(); + var mode = 'rgb'; + var max_iter = MAX_ITER; + + var test = function (low, high) { + var mid = low.interpolate(high, 0.5, mode); + var lm = mid.luminance(); + if (Math.abs(lum - lm) < EPS || !max_iter--) { + // close enough + return mid; + } + return lm > lum ? test(low, mid) : test(mid, high); + }; + + var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb(); + return new Color_1(rgb.concat( [this._rgb[3]])); + } + return rgb2luminance.apply(void 0, (this._rgb).slice(0,3)); + }; + + + var rgb2luminance = function (r,g,b) { + // relative luminance + // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + r = luminance_x(r); + g = luminance_x(g); + b = luminance_x(b); + return 0.2126 * r + 0.7152 * g + 0.0722 * b; + }; + + var luminance_x = function (x) { + x /= 255; + return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4); + }; + + var interpolator = {}; + + var type$h = utils.type; + + + var mix = function (col1, col2, f) { + if ( f === void 0 ) f=0.5; + var rest = [], len = arguments.length - 3; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; + + var mode = rest[0] || 'lrgb'; + if (!interpolator[mode] && !rest.length) { + // fall back to the first supported mode + mode = Object.keys(interpolator)[0]; + } + if (!interpolator[mode]) { + throw new Error(("interpolation mode " + mode + " is not defined")); + } + if (type$h(col1) !== 'object') { col1 = new Color_1(col1); } + if (type$h(col2) !== 'object') { col2 = new Color_1(col2); } + return interpolator[mode](col1, col2, f) + .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha())); + }; + + Color_1.prototype.mix = + Color_1.prototype.interpolate = function(col2, f) { + if ( f === void 0 ) f=0.5; + var rest = [], len = arguments.length - 2; + while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; + + return mix.apply(void 0, [ this, col2, f ].concat( rest )); + }; + + Color_1.prototype.premultiply = function(mutate) { + if ( mutate === void 0 ) mutate=false; + + var rgb = this._rgb; + var a = rgb[3]; + if (mutate) { + this._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a]; + return this; + } else { + return new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb'); + } + }; + + Color_1.prototype.saturate = function(amount) { + if ( amount === void 0 ) amount=1; + + var me = this; + var lch = me.lch(); + lch[1] += labConstants.Kn * amount; + if (lch[1] < 0) { lch[1] = 0; } + return new Color_1(lch, 'lch').alpha(me.alpha(), true); + }; + + Color_1.prototype.desaturate = function(amount) { + if ( amount === void 0 ) amount=1; + + return this.saturate(-amount); + }; + + var type$i = utils.type; + + Color_1.prototype.set = function(mc, value, mutate) { + if ( mutate === void 0 ) mutate=false; + + var ref = mc.split('.'); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i = mode.indexOf(channel); + if (i > -1) { + if (type$i(value) == 'string') { + switch(value.charAt(0)) { + case '+': src[i] += +value; break; + case '-': src[i] += +value; break; + case '*': src[i] *= +(value.substr(1)); break; + case '/': src[i] /= +(value.substr(1)); break; + default: src[i] = +value; + } + } else if (type$i(value) === 'number') { + src[i] = value; + } else { + throw new Error("unsupported value for Color.set"); + } + var out = new Color_1(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error(("unknown channel " + channel + " in mode " + mode)); + } else { + return src; + } + }; + + var rgb$1 = function (col1, col2, f) { + var xyz0 = col1._rgb; + var xyz1 = col2._rgb; + return new Color_1( + xyz0[0] + f * (xyz1[0]-xyz0[0]), + xyz0[1] + f * (xyz1[1]-xyz0[1]), + xyz0[2] + f * (xyz1[2]-xyz0[2]), + 'rgb' + ) + }; + + // register interpolator + interpolator.rgb = rgb$1; + + var sqrt$2 = Math.sqrt; + var pow$3 = Math.pow; + + var lrgb = function (col1, col2, f) { + var ref = col1._rgb; + var x1 = ref[0]; + var y1 = ref[1]; + var z1 = ref[2]; + var ref$1 = col2._rgb; + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + return new Color_1( + sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f), + sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f), + sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f), + 'rgb' + ) + }; + + // register interpolator + interpolator.lrgb = lrgb; + + var lab$1 = function (col1, col2, f) { + var xyz0 = col1.lab(); + var xyz1 = col2.lab(); + return new Color_1( + xyz0[0] + f * (xyz1[0]-xyz0[0]), + xyz0[1] + f * (xyz1[1]-xyz0[1]), + xyz0[2] + f * (xyz1[2]-xyz0[2]), + 'lab' + ) + }; + + // register interpolator + interpolator.lab = lab$1; + + var _hsx = function (col1, col2, f, m) { + var assign, assign$1; + + var xyz0, xyz1; + if (m === 'hsl') { + xyz0 = col1.hsl(); + xyz1 = col2.hsl(); + } else if (m === 'hsv') { + xyz0 = col1.hsv(); + xyz1 = col2.hsv(); + } else if (m === 'hcg') { + xyz0 = col1.hcg(); + xyz1 = col2.hcg(); + } else if (m === 'hsi') { + xyz0 = col1.hsi(); + xyz1 = col2.hsi(); + } else if (m === 'lch' || m === 'hcl') { + m = 'hcl'; + xyz0 = col1.hcl(); + xyz1 = col2.hcl(); + } + + var hue0, hue1, sat0, sat1, lbv0, lbv1; + if (m.substr(0, 1) === 'h') { + (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]); + (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]); + } + + var sat, hue, lbv, dh; + + if (!isNaN(hue0) && !isNaN(hue1)) { + // both colors have hue + if (hue1 > hue0 && hue1 - hue0 > 180) { + dh = hue1-(hue0+360); + } else if (hue1 < hue0 && hue0 - hue1 > 180) { + dh = hue1+360-hue0; + } else{ + dh = hue1 - hue0; + } + hue = hue0 + f * dh; + } else if (!isNaN(hue0)) { + hue = hue0; + if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; } + } else if (!isNaN(hue1)) { + hue = hue1; + if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; } + } else { + hue = Number.NaN; + } + + if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); } + lbv = lbv0 + f * (lbv1-lbv0); + return new Color_1([hue, sat, lbv], m); + }; + + var lch$1 = function (col1, col2, f) { + return _hsx(col1, col2, f, 'lch'); + }; + + // register interpolator + interpolator.lch = lch$1; + interpolator.hcl = lch$1; + + var num$1 = function (col1, col2, f) { + var c1 = col1.num(); + var c2 = col2.num(); + return new Color_1(c1 + f * (c2-c1), 'num') + }; + + // register interpolator + interpolator.num = num$1; + + var hcg$1 = function (col1, col2, f) { + return _hsx(col1, col2, f, 'hcg'); + }; + + // register interpolator + interpolator.hcg = hcg$1; + + var hsi$1 = function (col1, col2, f) { + return _hsx(col1, col2, f, 'hsi'); + }; + + // register interpolator + interpolator.hsi = hsi$1; + + var hsl$1 = function (col1, col2, f) { + return _hsx(col1, col2, f, 'hsl'); + }; + + // register interpolator + interpolator.hsl = hsl$1; + + var hsv$1 = function (col1, col2, f) { + return _hsx(col1, col2, f, 'hsv'); + }; + + // register interpolator + interpolator.hsv = hsv$1; + + var clip_rgb$2 = utils.clip_rgb; + var pow$4 = Math.pow; + var sqrt$3 = Math.sqrt; + var PI$1 = Math.PI; + var cos$2 = Math.cos; + var sin$1 = Math.sin; + var atan2$1 = Math.atan2; + + var average = function (colors, mode) { + if ( mode === void 0 ) mode='lrgb'; + + var l = colors.length; + // convert colors to Color objects + colors = colors.map(function (c) { return new Color_1(c); }); + if (mode === 'lrgb') { + return _average_lrgb(colors) + } + var first = colors.shift(); + var xyz = first.get(mode); + var cnt = []; + var dx = 0; + var dy = 0; + // initial color + for (var i=0; i= 360) { A$1 -= 360; } + xyz[i$1] = A$1; + } else { + xyz[i$1] = xyz[i$1]/cnt[i$1]; + } + } + alpha /= l; + return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true); + }; + + + var _average_lrgb = function (colors) { + var l = colors.length; + var f = 1/l; + var xyz = [0,0,0,0]; + for (var i = 0, list = colors; i < list.length; i += 1) { + var col = list[i]; + + var rgb = col._rgb; + xyz[0] += pow$4(rgb[0],2) * f; + xyz[1] += pow$4(rgb[1],2) * f; + xyz[2] += pow$4(rgb[2],2) * f; + xyz[3] += rgb[3] * f; + } + xyz[0] = sqrt$3(xyz[0]); + xyz[1] = sqrt$3(xyz[1]); + xyz[2] = sqrt$3(xyz[2]); + if (xyz[3] > 0.9999999) { xyz[3] = 1; } + return new Color_1(clip_rgb$2(xyz)); + }; + + // minimal multi-purpose interface + + // @requires utils color analyze + + + var type$j = utils.type; + + var pow$5 = Math.pow; + + var scale = function(colors) { + + // constructor + var _mode = 'rgb'; + var _nacol = chroma_1('#ccc'); + var _spread = 0; + // const _fixed = false; + var _domain = [0, 1]; + var _pos = []; + var _padding = [0,0]; + var _classes = false; + var _colors = []; + var _out = false; + var _min = 0; + var _max = 1; + var _correctLightness = false; + var _colorCache = {}; + var _useCache = true; + var _gamma = 1; + + // private methods + + var setColors = function(colors) { + colors = colors || ['#fff', '#000']; + if (colors && type$j(colors) === 'string' && chroma_1.brewer && + chroma_1.brewer[colors.toLowerCase()]) { + colors = chroma_1.brewer[colors.toLowerCase()]; + } + if (type$j(colors) === 'array') { + // handle single color + if (colors.length === 1) { + colors = [colors[0], colors[0]]; + } + // make a copy of the colors + colors = colors.slice(0); + // convert to chroma classes + for (var c=0; c= _classes[i]) { + i++; + } + return i-1; + } + return 0; + }; + + var tmap = function (t) { return t; }; + + // const classifyValue = function(value) { + // let val = value; + // if (_classes.length > 2) { + // const n = _classes.length-1; + // const i = getClass(value); + // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class + // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class + // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min)); + // } + // return val; + // }; + + var getColor = function(val, bypassMap) { + var col, t; + if (bypassMap == null) { bypassMap = false; } + if (isNaN(val) || (val === null)) { return _nacol; } + if (!bypassMap) { + if (_classes && (_classes.length > 2)) { + // find the class + var c = getClass(val); + t = c / (_classes.length-2); + } else if (_max !== _min) { + // just interpolate between min/max + t = (val - _min) / (_max - _min); + } else { + t = 1; + } + } else { + t = val; + } + + if (!bypassMap) { + t = tmap(t); // lightness correction + } + + if (_gamma !== 1) { t = pow$5(t, _gamma); } + + t = _padding[0] + (t * (1 - _padding[0] - _padding[1])); + + t = Math.min(1, Math.max(0, t)); + + var k = Math.floor(t * 10000); + + if (_useCache && _colorCache[k]) { + col = _colorCache[k]; + } else { + if (type$j(_colors) === 'array') { + //for i in [0.._pos.length-1] + for (var i=0; i<_pos.length; i++) { + var p = _pos[i]; + if (t <= p) { + col = _colors[i]; + break; + } + if ((t >= p) && (i === (_pos.length-1))) { + col = _colors[i]; + break; + } + if (t > p && t < _pos[i+1]) { + t = (t-p)/(_pos[i+1]-p); + col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode); + break; + } + } + } else if (type$j(_colors) === 'function') { + col = _colors(t); + } + if (_useCache) { _colorCache[k] = col; } + } + return col; + }; + + var resetCache = function () { return _colorCache = {}; }; + + setColors(colors); + + // public interface + + var f = function(v) { + var c = chroma_1(getColor(v)); + if (_out && c[_out]) { return c[_out](); } else { return c; } + }; + + f.classes = function(classes) { + if (classes != null) { + if (type$j(classes) === 'array') { + _classes = classes; + _domain = [classes[0], classes[classes.length-1]]; + } else { + var d = chroma_1.analyze(_domain); + if (classes === 0) { + _classes = [d.min, d.max]; + } else { + _classes = chroma_1.limits(d, 'e', classes); + } + } + return f; + } + return _classes; + }; + + + f.domain = function(domain) { + if (!arguments.length) { + return _domain; + } + _min = domain[0]; + _max = domain[domain.length-1]; + _pos = []; + var k = _colors.length; + if ((domain.length === k) && (_min !== _max)) { + // update positions + for (var i = 0, list = Array.from(domain); i < list.length; i += 1) { + var d = list[i]; + + _pos.push((d-_min) / (_max-_min)); + } + } else { + for (var c=0; c L1; + var L_actual = getColor(t, true).lab()[0]; + var L_ideal = L0 + ((L1 - L0) * t); + var L_diff = L_actual - L_ideal; + var t0 = 0; + var t1 = 1; + var max_iter = 20; + while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) { + (function() { + if (pol) { L_diff *= -1; } + if (L_diff < 0) { + t0 = t; + t += (t1 - t) * 0.5; + } else { + t1 = t; + t += (t0 - t) * 0.5; + } + L_actual = getColor(t, true).lab()[0]; + return L_diff = L_actual - L_ideal; + })(); + } + return t; + }; + } else { + tmap = function (t) { return t; }; + } + return f; + }; + + f.padding = function(p) { + if (p != null) { + if (type$j(p) === 'number') { + p = [p,p]; + } + _padding = p; + return f; + } else { + return _padding; + } + }; + + f.colors = function(numColors, out) { + // If no arguments are given, return the original colors that were provided + if (arguments.length < 2) { out = 'hex'; } + var result = []; + + if (arguments.length === 0) { + result = _colors.slice(0); + + } else if (numColors === 1) { + result = [f(0.5)]; + + } else if (numColors > 1) { + var dm = _domain[0]; + var dd = _domain[1] - dm; + result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); }); + + } else { // returns all colors based on the defined classes + colors = []; + var samples = []; + if (_classes && (_classes.length > 2)) { + for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) { + samples.push((_classes[i-1]+_classes[i])*0.5); + } + } else { + samples = _domain; + } + result = samples.map(function (v) { return f(v); }); + } + + if (chroma_1[out]) { + result = result.map(function (c) { return c[out](); }); + } + return result; + }; + + f.cache = function(c) { + if (c != null) { + _useCache = c; + return f; + } else { + return _useCache; + } + }; + + f.gamma = function(g) { + if (g != null) { + _gamma = g; + return f; + } else { + return _gamma; + } + }; + + f.nodata = function(d) { + if (d != null) { + _nacol = chroma_1(d); + return f; + } else { + return _nacol; + } + }; + + return f; + }; + + function __range__(left, right, inclusive) { + var range = []; + var ascending = left < right; + var end = !inclusive ? right : ascending ? right + 1 : right - 1; + for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { + range.push(i); + } + return range; + } + + // + // interpolates between a set of colors uzing a bezier spline + // + + // @requires utils lab + + + + + var bezier = function(colors) { + var assign, assign$1, assign$2; + + var I, lab0, lab1, lab2; + colors = colors.map(function (c) { return new Color_1(c); }); + if (colors.length === 2) { + // linear interpolation + (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]); + I = function(t) { + var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); })); + return new Color_1(lab, 'lab'); + }; + } else if (colors.length === 3) { + // quadratic bezier interpolation + (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]); + I = function(t) { + var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); })); + return new Color_1(lab, 'lab'); + }; + } else if (colors.length === 4) { + // cubic bezier interpolation + var lab3; + (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]); + I = function(t) { + var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); })); + return new Color_1(lab, 'lab'); + }; + } else if (colors.length === 5) { + var I0 = bezier(colors.slice(0, 3)); + var I1 = bezier(colors.slice(2, 5)); + I = function(t) { + if (t < 0.5) { + return I0(t*2); + } else { + return I1((t-0.5)*2); + } + }; + } + return I; + }; + + var bezier_1 = function (colors) { + var f = bezier(colors); + f.scale = function () { return scale(f); }; + return f; + }; + + /* + * interpolates between a set of colors uzing a bezier spline + * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ + */ + + + + + var blend = function (bottom, top, mode) { + if (!blend[mode]) { + throw new Error('unknown blend mode ' + mode); + } + return blend[mode](bottom, top); + }; + + var blend_f = function (f) { return function (bottom,top) { + var c0 = chroma_1(top).rgb(); + var c1 = chroma_1(bottom).rgb(); + return chroma_1.rgb(f(c0, c1)); + }; }; + + var each = function (f) { return function (c0, c1) { + var out = []; + out[0] = f(c0[0], c1[0]); + out[1] = f(c0[1], c1[1]); + out[2] = f(c0[2], c1[2]); + return out; + }; }; + + var normal = function (a) { return a; }; + var multiply = function (a,b) { return a * b / 255; }; + var darken$1 = function (a,b) { return a > b ? b : a; }; + var lighten = function (a,b) { return a > b ? a : b; }; + var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); }; + var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); }; + var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); }; + var dodge = function (a,b) { + if (a === 255) { return 255; } + a = 255 * (b / 255) / (1 - a / 255); + return a > 255 ? 255 : a + }; + + // # add = (a,b) -> + // # if (a + b > 255) then 255 else a + b + + blend.normal = blend_f(each(normal)); + blend.multiply = blend_f(each(multiply)); + blend.screen = blend_f(each(screen)); + blend.overlay = blend_f(each(overlay)); + blend.darken = blend_f(each(darken$1)); + blend.lighten = blend_f(each(lighten)); + blend.dodge = blend_f(each(dodge)); + blend.burn = blend_f(each(burn)); + // blend.add = blend_f(each(add)); + + var blend_1 = blend; + + // cubehelix interpolation + // based on D.A. Green "A colour scheme for the display of astronomical intensity images" + // http://astron-soc.in/bulletin/11June/289392011.pdf + + var type$k = utils.type; + var clip_rgb$3 = utils.clip_rgb; + var TWOPI$2 = utils.TWOPI; + var pow$6 = Math.pow; + var sin$2 = Math.sin; + var cos$3 = Math.cos; + + + var cubehelix = function(start, rotations, hue, gamma, lightness) { + if ( start === void 0 ) start=300; + if ( rotations === void 0 ) rotations=-1.5; + if ( hue === void 0 ) hue=1; + if ( gamma === void 0 ) gamma=1; + if ( lightness === void 0 ) lightness=[0,1]; + + var dh = 0, dl; + if (type$k(lightness) === 'array') { + dl = lightness[1] - lightness[0]; + } else { + dl = 0; + lightness = [lightness, lightness]; + } + + var f = function(fract) { + var a = TWOPI$2 * (((start+120)/360) + (rotations * fract)); + var l = pow$6(lightness[0] + (dl * fract), gamma); + var h = dh !== 0 ? hue[0] + (fract * dh) : hue; + var amp = (h * l * (1-l)) / 2; + var cos_a = cos$3(a); + var sin_a = sin$2(a); + var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a))); + var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a))); + var b = l + (amp * (+1.97294 * cos_a)); + return chroma_1(clip_rgb$3([r*255,g*255,b*255,1])); + }; + + f.start = function(s) { + if ((s == null)) { return start; } + start = s; + return f; + }; + + f.rotations = function(r) { + if ((r == null)) { return rotations; } + rotations = r; + return f; + }; + + f.gamma = function(g) { + if ((g == null)) { return gamma; } + gamma = g; + return f; + }; + + f.hue = function(h) { + if ((h == null)) { return hue; } + hue = h; + if (type$k(hue) === 'array') { + dh = hue[1] - hue[0]; + if (dh === 0) { hue = hue[1]; } + } else { + dh = 0; + } + return f; + }; + + f.lightness = function(h) { + if ((h == null)) { return lightness; } + if (type$k(h) === 'array') { + lightness = h; + dl = h[1] - h[0]; + } else { + lightness = [h,h]; + dl = 0; + } + return f; + }; + + f.scale = function () { return chroma_1.scale(f); }; + + f.hue(hue); + + return f; + }; + + var digits = '0123456789abcdef'; + + var floor$2 = Math.floor; + var random = Math.random; + + var random_1 = function () { + var code = '#'; + for (var i=0; i<6; i++) { + code += digits.charAt(floor$2(random() * 16)); + } + return new Color_1(code, 'hex'); + }; + + var log$1 = Math.log; + var pow$7 = Math.pow; + var floor$3 = Math.floor; + var abs = Math.abs; + + + var analyze = function (data, key) { + if ( key === void 0 ) key=null; + + var r = { + min: Number.MAX_VALUE, + max: Number.MAX_VALUE*-1, + sum: 0, + values: [], + count: 0 + }; + if (type(data) === 'object') { + data = Object.values(data); + } + data.forEach(function (val) { + if (key && type(val) === 'object') { val = val[key]; } + if (val !== undefined && val !== null && !isNaN(val)) { + r.values.push(val); + r.sum += val; + if (val < r.min) { r.min = val; } + if (val > r.max) { r.max = val; } + r.count += 1; + } + }); + + r.domain = [r.min, r.max]; + + r.limits = function (mode, num) { return limits(r, mode, num); }; + + return r; + }; + + + var limits = function (data, mode, num) { + if ( mode === void 0 ) mode='equal'; + if ( num === void 0 ) num=7; + + if (type(data) == 'array') { + data = analyze(data); + } + var min = data.min; + var max = data.max; + var values = data.values.sort(function (a,b) { return a-b; }); + + if (num === 1) { return [min,max]; } + + var limits = []; + + if (mode.substr(0,1) === 'c') { // continuous + limits.push(min); + limits.push(max); + } + + if (mode.substr(0,1) === 'e') { // equal interval + limits.push(min); + for (var i=1; i 0'); + } + var min_log = Math.LOG10E * log$1(min); + var max_log = Math.LOG10E * log$1(max); + limits.push(min); + for (var i$1=1; i$1 pb + var pr = p - pb; + limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr)); + } + } + limits.push(max); + + } + + else if (mode.substr(0,1) === 'k') { // k-means clustering + /* + implementation based on + http://code.google.com/p/figue/source/browse/trunk/figue.js#336 + simplified for 1-d input values + */ + var cluster; + var n = values.length; + var assignments = new Array(n); + var clusterSizes = new Array(num); + var repeat = true; + var nb_iters = 0; + var centroids = null; + + // get seed values + centroids = []; + centroids.push(min); + for (var i$3=1; i$3 200) { + repeat = false; + } + } + + // finished k-means clustering + // the next part is borrowed from gabrielflor.it + var kClusters = {}; + for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); + }; + + var sqrt$4 = Math.sqrt; + var atan2$2 = Math.atan2; + var abs$1 = Math.abs; + var cos$4 = Math.cos; + var PI$2 = Math.PI; + + var deltaE = function(a, b, L, C) { + if ( L === void 0 ) L=1; + if ( C === void 0 ) C=1; + + // Delta E (CMC) + // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html + a = new Color_1(a); + b = new Color_1(b); + var ref = Array.from(a.lab()); + var L1 = ref[0]; + var a1 = ref[1]; + var b1 = ref[2]; + var ref$1 = Array.from(b.lab()); + var L2 = ref$1[0]; + var a2 = ref$1[1]; + var b2 = ref$1[2]; + var c1 = sqrt$4((a1 * a1) + (b1 * b1)); + var c2 = sqrt$4((a2 * a2) + (b2 * b2)); + var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1)); + var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638; + var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2; + while (h1 < 0) { h1 += 360; } + while (h1 >= 360) { h1 -= 360; } + var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0))); + var c4 = c1 * c1 * c1 * c1; + var f = sqrt$4(c4 / (c4 + 1900.0)); + var sh = sc * (((f * t) + 1.0) - f); + var delL = L1 - L2; + var delC = c1 - c2; + var delA = a1 - a2; + var delB = b1 - b2; + var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC); + var v1 = delL / (L * sl); + var v2 = delC / (C * sc); + var v3 = sh; + return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3))); + }; + + // simple Euclidean distance + var distance = function(a, b, mode) { + if ( mode === void 0 ) mode='lab'; + + // Delta E (CIE 1976) + // see http://www.brucelindbloom.com/index.html?Equations.html + a = new Color_1(a); + b = new Color_1(b); + var l1 = a.get(mode); + var l2 = b.get(mode); + var sum_sq = 0; + for (var i in l1) { + var d = (l1[i] || 0) - (l2[i] || 0); + sum_sq += d*d; + } + return Math.sqrt(sum_sq); + }; + + var valid = function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + try { + new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) )); + return true; + } catch (e) { + return false; + } + }; + + // some pre-defined color scales: + + + + + var scales = { + cool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) }, + hot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') } + }; + + /** + ColorBrewer colors for chroma.js + + Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The + Pennsylvania State University. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed + under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + CONDITIONS OF ANY KIND, either express or implied. See the License for the + specific language governing permissions and limitations under the License. + */ + + var colorbrewer = { + // sequential + OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'], + PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'], + BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'], + Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'], + BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'], + YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'], + YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'], + Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'], + RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'], + Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'], + YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'], + Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'], + GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'], + Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'], + YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'], + PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'], + Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'], + PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'], + Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'], + + // diverging + + Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'], + RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'], + RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'], + PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'], + PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'], + RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'], + BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'], + RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'], + PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'], + + // qualitative + + Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'], + Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'], + Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'], + Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'], + Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'], + Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'], + Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'], + Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'], + }; + + // add lowercase aliases for case-insensitive matches + for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) { + var key = list$1[i$1]; + + colorbrewer[key.toLowerCase()] = colorbrewer[key]; + } + + var colorbrewer_1 = colorbrewer; + + // feel free to comment out anything to rollup + // a smaller chroma.js built + + // io --> convert colors + + + + + + + + + + + + + + + + // operators --> modify existing Colors + + + + + + + + + + + // interpolators + + + + + + + + + + + // generators -- > create new colors + chroma_1.average = average; + chroma_1.bezier = bezier_1; + chroma_1.blend = blend_1; + chroma_1.cubehelix = cubehelix; + chroma_1.mix = chroma_1.interpolate = mix; + chroma_1.random = random_1; + chroma_1.scale = scale; + + // other utility methods + chroma_1.analyze = analyze_1.analyze; + chroma_1.contrast = contrast; + chroma_1.deltaE = deltaE; + chroma_1.distance = distance; + chroma_1.limits = analyze_1.limits; + chroma_1.valid = valid; + + // scale + chroma_1.scales = scales; + + // colors + chroma_1.colors = w3cx11_1; + chroma_1.brewer = colorbrewer_1; + + var chroma_js = chroma_1; + + return chroma_js; + + }))); + }); + + /* src\Checkbox.svelte generated by Svelte v3.5.3 */ + + const file = "src\\Checkbox.svelte"; + + function create_fragment(ctx) { + var div, input, t0, label_1, t1, dispose; + + return { + c: function create() { + div = element("div"); + input = element("input"); + t0 = space(); + label_1 = element("label"); + t1 = text(ctx.label); + attr(input, "type", "checkbox"); + attr(input, "class", "custom-control-input"); + attr(input, "id", ctx.id); + add_location(input, file, 8, 4, 260); + attr(label_1, "class", "custom-control-label"); + attr(label_1, "for", ctx.id); + add_location(label_1, file, 9, 4, 349); + attr(div, "class", "custom-control custom-checkbox"); + toggle_class(div, "custom-control-inline", ctx.inline); + add_location(div, file, 7, 0, 173); + dispose = listen(input, "change", ctx.input_change_handler); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div, anchor); + append(div, input); + + input.checked = ctx.value; + + append(div, t0); + append(div, label_1); + append(label_1, t1); + }, + + p: function update(changed, ctx) { + if (changed.value) input.checked = ctx.value; + + if (changed.label) { + set_data(t1, ctx.label); + } + + if (changed.inline) { + toggle_class(div, "custom-control-inline", ctx.inline); + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(div); + } + + dispose(); + } + }; + } + + function instance($$self, $$props, $$invalidate) { + let { value = false, inline = true, label = '' } = $$props; + const id = Math.round(Math.random()*1e7).toString(36); + + const writable_props = ['value', 'inline', 'label']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + function input_change_handler() { + value = this.checked; + $$invalidate('value', value); + } + + $$self.$set = $$props => { + if ('value' in $$props) $$invalidate('value', value = $$props.value); + if ('inline' in $$props) $$invalidate('inline', inline = $$props.inline); + if ('label' in $$props) $$invalidate('label', label = $$props.label); + }; + + return { + value, + inline, + label, + id, + input_change_handler + }; + } + + class Checkbox extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance, create_fragment, safe_not_equal, ["value", "inline", "label"]); + } + + get value() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set value(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get inline() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set inline(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get label() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set label(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeMax = Math.max; + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Built-in value references. */ + var Symbol = root.Symbol; + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Built-in value references. */ + var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** Used for built-in method references. */ + var objectProto$1 = Object.prototype; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString$1 = objectProto$1.toString; + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString$1.call(value); + } + + /** `Object#toString` result references. */ + var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + + /** Built-in value references. */ + var symToStringTag$1 = Symbol ? Symbol.toStringTag : undefined; + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag$1 && symToStringTag$1 in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** `Object#toString` result references. */ + var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER$1 = 9007199254740991; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER$1 : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** `Object#toString` result references. */ + var symbolTag = '[object Symbol]'; + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** Used as references for various `Number` constants. */ + var NAN = 0 / 0; + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Built-in method references without a dependency on `root`. */ + var freeParseInt = parseInt; + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ + var range = createRange(); + + /* src\Color.svelte generated by Svelte v3.5.3 */ + + const file$1 = "src\\Color.svelte"; + + function get_each_context(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.c = list[i]; + return child_ctx; + } + + function get_each_context_1(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.c = list[i]; + return child_ctx; + } + + function get_each_context_2(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.l = list[i]; + return child_ctx; + } + + // (85:4) {#if open && !dragging} + function create_if_block(ctx) { + var div6, div5, div0, t0, h3, t1, div4, div1, span0, t3, t4, div2, span1, t6, t7, div3, span2, t9; + + var each_value_2 = ctx.lightness; + + var each_blocks_2 = []; + + for (var i = 0; i < each_value_2.length; i += 1) { + each_blocks_2[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); + } + + var each_value_1 = ctx.saturation; + + var each_blocks_1 = []; + + for (var i = 0; i < each_value_1.length; i += 1) { + each_blocks_1[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + + var each_value = ctx.hue; + + var each_blocks = []; + + for (var i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + return { + c: function create() { + div6 = element("div"); + div5 = element("div"); + div0 = element("div"); + t0 = space(); + h3 = element("h3"); + t1 = space(); + div4 = element("div"); + div1 = element("div"); + span0 = element("span"); + span0.textContent = "L"; + t3 = space(); + + for (var i = 0; i < each_blocks_2.length; i += 1) { + each_blocks_2[i].c(); + } + + t4 = space(); + div2 = element("div"); + span1 = element("span"); + span1.textContent = "S"; + t6 = space(); + + for (var i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + + t7 = space(); + div3 = element("div"); + span2 = element("span"); + span2.textContent = "H"; + t9 = space(); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div0, "class", "arrow"); + set_style(div0, "left", "121px"); + add_location(div0, file$1, 89, 12, 2444); + attr(h3, "class", "popover-header svelte-fua55c"); + add_location(h3, file$1, 90, 12, 2504); + attr(span0, "class", "lbl svelte-fua55c"); + add_location(span0, file$1, 93, 20, 2639); + attr(div1, "class", "color-row svelte-fua55c"); + add_location(div1, file$1, 92, 16, 2594); + attr(span1, "class", "lbl svelte-fua55c"); + add_location(span1, file$1, 99, 20, 2933); + attr(div2, "class", "color-row svelte-fua55c"); + add_location(div2, file$1, 98, 16, 2888); + attr(span2, "class", "lbl svelte-fua55c"); + add_location(span2, file$1, 105, 20, 3228); + attr(div3, "class", "color-row svelte-fua55c"); + add_location(div3, file$1, 104, 16, 3183); + attr(div4, "class", "popover-body svelte-fua55c"); + add_location(div4, file$1, 91, 12, 2550); + attr(div5, "class", "popover fade show bs-popover-bottom svelte-fua55c"); + attr(div5, "role", "tooltip"); + attr(div5, "x-placement", "bottom"); + add_location(div5, file$1, 86, 8, 2319); + set_style(div6, "position", "absolute"); + set_style(div6, "top", "0px"); + set_style(div6, "left", "0"); + set_style(div6, "right", "0"); + set_style(div6, "height", "40px"); + add_location(div6, file$1, 85, 4, 2241); + }, + + m: function mount(target, anchor) { + insert(target, div6, anchor); + append(div6, div5); + append(div5, div0); + append(div5, t0); + append(div5, h3); + append(div5, t1); + append(div5, div4); + append(div4, div1); + append(div1, span0); + append(div1, t3); + + for (var i = 0; i < each_blocks_2.length; i += 1) { + each_blocks_2[i].m(div1, null); + } + + append(div4, t4); + append(div4, div2); + append(div2, span1); + append(div2, t6); + + for (var i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].m(div2, null); + } + + append(div4, t7); + append(div4, div3); + append(div3, span2); + append(div3, t9); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div3, null); + } + }, + + p: function update(changed, ctx) { + if (changed.lightness) { + each_value_2 = ctx.lightness; + + for (var i = 0; i < each_value_2.length; i += 1) { + const child_ctx = get_each_context_2(ctx, each_value_2, i); + + if (each_blocks_2[i]) { + each_blocks_2[i].p(changed, child_ctx); + } else { + each_blocks_2[i] = create_each_block_2(child_ctx); + each_blocks_2[i].c(); + each_blocks_2[i].m(div1, null); + } + } + + for (; i < each_blocks_2.length; i += 1) { + each_blocks_2[i].d(1); + } + each_blocks_2.length = each_value_2.length; + } + + if (changed.saturation) { + each_value_1 = ctx.saturation; + + for (var i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + + if (each_blocks_1[i]) { + each_blocks_1[i].p(changed, child_ctx); + } else { + each_blocks_1[i] = create_each_block_1(child_ctx); + each_blocks_1[i].c(); + each_blocks_1[i].m(div2, null); + } + } + + for (; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].d(1); + } + each_blocks_1.length = each_value_1.length; + } + + if (changed.hue) { + each_value = ctx.hue; + + for (var i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(changed, child_ctx); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div3, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div6); + } + + destroy_each(each_blocks_2, detaching); + + destroy_each(each_blocks_1, detaching); + + destroy_each(each_blocks, detaching); + } + }; + } + + // (95:20) {#each lightness as l} + function create_each_block_2(ctx) { + var span, dispose; + + function click_handler() { + return ctx.click_handler(ctx); + } + + return { + c: function create() { + span = element("span"); + attr(span, "class", "color svelte-fua55c"); + set_style(span, "background", ctx.l.hex()); + add_location(span, file$1, 95, 20, 2731); + dispose = listen(span, "click", click_handler); + }, + + m: function mount(target, anchor) { + insert(target, span, anchor); + }, + + p: function update(changed, new_ctx) { + ctx = new_ctx; + if (changed.lightness) { + set_style(span, "background", ctx.l.hex()); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(span); + } + + dispose(); + } + }; + } + + // (101:20) {#each saturation as c} + function create_each_block_1(ctx) { + var span, dispose; + + function click_handler_1() { + return ctx.click_handler_1(ctx); + } + + return { + c: function create() { + span = element("span"); + attr(span, "class", "color svelte-fua55c"); + set_style(span, "background", ctx.c.hex()); + add_location(span, file$1, 101, 20, 3026); + dispose = listen(span, "click", click_handler_1); + }, + + m: function mount(target, anchor) { + insert(target, span, anchor); + }, + + p: function update(changed, new_ctx) { + ctx = new_ctx; + if (changed.saturation) { + set_style(span, "background", ctx.c.hex()); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(span); + } + + dispose(); + } + }; + } + + // (107:20) {#each hue as c} + function create_each_block(ctx) { + var span, dispose; + + function click_handler_2() { + return ctx.click_handler_2(ctx); + } + + return { + c: function create() { + span = element("span"); + attr(span, "class", "color svelte-fua55c"); + set_style(span, "background", ctx.c.hex()); + add_location(span, file$1, 107, 20, 3314); + dispose = listen(span, "click", click_handler_2); + }, + + m: function mount(target, anchor) { + insert(target, span, anchor); + }, + + p: function update(changed, new_ctx) { + ctx = new_ctx; + if (changed.hue) { + set_style(span, "background", ctx.c.hex()); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(span); + } + + dispose(); + } + }; + } + + function create_fragment$1(ctx) { + var span1, span0, t0_value = ctx.value.hex().substr(1), t0, t1, dispose; + + var if_block = (ctx.open && !ctx.dragging) && create_if_block(ctx); + + return { + c: function create() { + span1 = element("span"); + span0 = element("span"); + t0 = text(t0_value); + t1 = space(); + if (if_block) if_block.c(); + attr(span0, "class", "hex svelte-fua55c"); + add_location(span0, file$1, 83, 4, 2158); + attr(span1, "draggable", "true"); + attr(span1, "class", "badge shadow-sm svelte-fua55c"); + set_style(span1, "background", ctx.value.hex()); + toggle_class(span1, "inverted", ctx.value.lab()[0]<50); + add_location(span1, file$1, 72, 0, 1768); + + dispose = [ + listen(span1, "dragstart", ctx.dragstart_handler), + listen(span1, "dragstart", ctx.dragstart_handler_1), + listen(span1, "dragend", ctx.dragend_handler, ctx.open = false), + listen(span1, "mouseenter", ctx.toggleEditOpen), + listen(span1, "mouseleave", ctx.toggleEditClose), + listen(span1, "click", stop_propagation(click_handler_3)) + ]; + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, span1, anchor); + append(span1, span0); + append(span0, t0); + append(span1, t1); + if (if_block) if_block.m(span1, null); + }, + + p: function update(changed, ctx) { + if ((changed.value) && t0_value !== (t0_value = ctx.value.hex().substr(1))) { + set_data(t0, t0_value); + } + + if (ctx.open && !ctx.dragging) { + if (if_block) { + if_block.p(changed, ctx); + } else { + if_block = create_if_block(ctx); + if_block.c(); + if_block.m(span1, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + + if (changed.value) { + set_style(span1, "background", ctx.value.hex()); + toggle_class(span1, "inverted", ctx.value.lab()[0]<50); + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(span1); + } + + if (if_block) if_block.d(); + run_all(dispose); + } + }; + } + + function click_handler_3() { + return false; + } + + function instance$1($$self, $$props, $$invalidate) { + + let { value = chroma('red') } = $$props; + + let open = false; + let dragging = false; + + function toggleEditOpen() { $$invalidate('open', open = true); } + function toggleEditClose() { $$invalidate('open', open = false); } + + const writable_props = ['value']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + function dragstart_handler(event) { + bubble($$self, event); + } + + function click_handler({ l }) { + const $$result = value = l; + $$invalidate('value', value); + return $$result; + } + + function click_handler_1({ c }) { + const $$result = value = c; + $$invalidate('value', value); + return $$result; + } + + function click_handler_2({ c }) { + const $$result = value = c; + $$invalidate('value', value); + return $$result; + } + + function dragstart_handler_1(event) { + const $$result = dragging = true; + $$invalidate('dragging', dragging); + return $$result; + } + + function dragend_handler(event) { + const $$result = dragging = false; + $$invalidate('dragging', dragging); + return $$result; + } + + $$self.$set = $$props => { + if ('value' in $$props) $$invalidate('value', value = $$props.value); + }; + + let lch, lightness, saturation, hue; + + $$self.$$.update = ($$dirty = { value: 1, lch: 1 }) => { + if ($$dirty.value) { $$invalidate('lch', lch = value.lch()); } + if ($$dirty.lch) { $$invalidate('lightness', lightness = range(-5,6) + .map(l => lch[0] + Math.pow(l/8,2)*80*(l<0?-1:1)) + .map(l => chroma.lch(l, lch[1], lch[2]))); } + if ($$dirty.lch) { $$invalidate('saturation', saturation = range(-5,6) + .map(s => Math.max(0, lch[1] + Math.pow(s/5,2)*80*(s<0?-1:1))) + .map(s => chroma.lch(lch[0], s, lch[2]))); } + if ($$dirty.lch) { $$invalidate('hue', hue = range(-5,6) + .map(h => lch[2] + Math.pow(h/5,2)*80*(h<0?-1:1)) + .map(h => chroma.lch(lch[0], lch[1], h < 0 ? h + 360 : h > 360 ? h - 360 : h))); } + }; + + return { + value, + open, + dragging, + toggleEditOpen, + toggleEditClose, + lightness, + saturation, + hue, + dragstart_handler, + click_handler, + click_handler_1, + click_handler_2, + dragstart_handler_1, + dragend_handler + }; + } + + class Color extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$1, create_fragment$1, safe_not_equal, ["value"]); + } + + get value() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set value(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src\ColorList.svelte generated by Svelte v3.5.3 */ + + const file$2 = "src\\ColorList.svelte"; + + function get_each_context$1(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.color = list[i]; + child_ctx.each_value = list; + child_ctx.i = i; + return child_ctx; + } + + // (70:0) {#if !edit} + function create_if_block$1(ctx) { + var div, t, span, current, dispose; + + var each_value = ctx.colors; + + var each_blocks = []; + + for (var i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); + } + + const out = i => transition_out(each_blocks[i], 1, () => { + each_blocks[i] = null; + }); + + return { + c: function create() { + div = element("div"); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t = space(); + span = element("span"); + attr(span, "class", "inv svelte-r8qk73"); + add_location(span, file$2, 80, 4, 2080); + attr(div, "class", "form-control svelte-r8qk73"); + add_location(div, file$2, 70, 0, 1751); + + dispose = [ + listen(div, "drop", prevent_default(ctx.drop_handler)), + listen(div, "dragover", prevent_default(ctx.dragover_handler)), + listen(div, "click", ctx.enterEditMode) + ]; + }, + + m: function mount(target, anchor) { + insert(target, div, anchor); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + + append(div, t); + append(div, span); + current = true; + }, + + p: function update(changed, ctx) { + if (changed.colors) { + each_value = ctx.colors; + + for (var i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$1(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(changed, child_ctx); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block$1(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div, t); + } + } + + group_outros(); + for (; i < each_blocks.length; i += 1) out(i); + check_outros(); + } + }, + + i: function intro(local) { + if (current) return; + for (var i = 0; i < each_value.length; i += 1) transition_in(each_blocks[i]); + + current = true; + }, + + o: function outro(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) transition_out(each_blocks[i]); + + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div); + } + + destroy_each(each_blocks, detaching); + + run_all(dispose); + } + }; + } + + // (76:4) {#each colors as color,i} + function create_each_block$1(ctx) { + var updating_value, current; + + function color_value_binding(value) { + ctx.color_value_binding.call(null, value, ctx); + updating_value = true; + add_flush_callback(() => updating_value = false); + } + + function dragstart_handler(...args) { + return ctx.dragstart_handler(ctx, ...args); + } + + let color_props = {}; + if (ctx.color !== void 0) { + color_props.value = ctx.color; + } + var color = new Color({ props: color_props, $$inline: true }); + + add_binding_callback(() => bind(color, 'value', color_value_binding)); + color.$on("dragstart", dragstart_handler); + + return { + c: function create() { + color.$$.fragment.c(); + }, + + m: function mount(target, anchor) { + mount_component(color, target, anchor); + current = true; + }, + + p: function update(changed, new_ctx) { + ctx = new_ctx; + var color_changes = {}; + if (!updating_value && changed.colors) { + color_changes.value = ctx.color; + } + color.$set(color_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(color.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(color.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + destroy_component(color, detaching); + } + }; + } + + function create_fragment$2(ctx) { + var input_1, t, if_block_anchor, current, dispose; + + var if_block = (!ctx.edit) && create_if_block$1(ctx); + + return { + c: function create() { + input_1 = element("input"); + t = space(); + if (if_block) if_block.c(); + if_block_anchor = empty(); + attr(input_1, "type", "text"); + attr(input_1, "class", "form-control svelte-r8qk73"); + toggle_class(input_1, "hidden", !ctx.edit); + add_location(input_1, file$2, 68, 0, 1609); + + dispose = [ + listen(input_1, "input", ctx.input_1_input_handler), + listen(input_1, "blur", ctx.exitEditMode) + ]; + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, input_1, anchor); + + input_1.value = ctx.colorString; + + add_binding_callback(() => ctx.input_1_binding(input_1, null)); + insert(target, t, anchor); + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + + p: function update(changed, ctx) { + if (changed.colorString && (input_1.value !== ctx.colorString)) input_1.value = ctx.colorString; + if (changed.items) { + ctx.input_1_binding(null, input_1); + ctx.input_1_binding(input_1, null); + } + + if (changed.edit) { + toggle_class(input_1, "hidden", !ctx.edit); + } + + if (!ctx.edit) { + if (if_block) { + if_block.p(changed, ctx); + transition_in(if_block, 1); + } else { + if_block = create_if_block$1(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + + o: function outro(local) { + transition_out(if_block); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(input_1); + } + + ctx.input_1_binding(null, input_1); + + if (detaching) { + detach(t); + } + + if (if_block) if_block.d(detaching); + + if (detaching) { + detach(if_block_anchor); + } + + run_all(dispose); + } + }; + } + + function dragstart(event, index) { + event.dataTransfer.setData('index', index); + } + + function dragover(event) { + event.dataTransfer.dropEffect = 'move'; + } + + function findIndex(el) { + const siblings = el.parentNode.children; + for (let i=0; i c.name()).join(', ')); + input.focus(); + } + + function exitEditMode() { + $$invalidate('edit', edit = false); + $$invalidate('colors', colors = colorString + .split(/\s*[,|\s]\s*/) + .filter(c => chroma.valid(c)) + .map(c => chroma(c))); + } + + function drop(event) { + const index = event.dataTransfer.getData('index'); + const newIndex = findIndex(event.target); + const col = colors.splice(index, 1, null)[0]; + colors.splice(newIndex, 0, col); + $$invalidate('colors', colors = colors.filter(c => c !== null)); + } + + const writable_props = ['colors']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + function input_1_input_handler() { + colorString = this.value; + $$invalidate('colorString', colorString); + } + + function input_1_binding($$node, check) { + input = $$node; + $$invalidate('input', input); + } + + function color_value_binding(value, { color, each_value, i }) { + each_value[i] = value; + $$invalidate('colors', colors); + } + + function dragstart_handler({ i }, event) { + return dragstart(event, i); + } + + function drop_handler(event) { + return drop(event); + } + + function dragover_handler(event) { + return dragover(event); + } + + $$self.$set = $$props => { + if ('colors' in $$props) $$invalidate('colors', colors = $$props.colors); + }; + + return { + colors, + edit, + input, + colorString, + enterEditMode, + exitEditMode, + drop, + input_1_input_handler, + input_1_binding, + color_value_binding, + dragstart_handler, + drop_handler, + dragover_handler + }; + } + + class ColorList extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$2, create_fragment$2, safe_not_equal, ["colors"]); + + const { ctx } = this.$$; + const props = options.props || {}; + if (ctx.colors === undefined && !('colors' in props)) { + console.warn(" was created without expected prop 'colors'"); + } + } + + get colors() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set colors(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src\InputColors.svelte generated by Svelte v3.5.3 */ + + const file$3 = "src\\InputColors.svelte"; + + // (16:4) {#if diverging} + function create_if_block$2(ctx) { + var div, updating_colors, current; + + function colorlist_colors_binding_1(value) { + ctx.colorlist_colors_binding_1.call(null, value); + updating_colors = true; + add_flush_callback(() => updating_colors = false); + } + + let colorlist_props = {}; + if (ctx.colors2 !== void 0) { + colorlist_props.colors = ctx.colors2; + } + var colorlist = new ColorList({ props: colorlist_props, $$inline: true }); + + add_binding_callback(() => bind(colorlist, 'colors', colorlist_colors_binding_1)); + + return { + c: function create() { + div = element("div"); + colorlist.$$.fragment.c(); + attr(div, "class", "col-md"); + add_location(div, file$3, 16, 4, 306); + }, + + m: function mount(target, anchor) { + insert(target, div, anchor); + mount_component(colorlist, div, null); + current = true; + }, + + p: function update(changed, ctx) { + var colorlist_changes = {}; + if (!updating_colors && changed.colors2) { + colorlist_changes.colors = ctx.colors2; + } + colorlist.$set(colorlist_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(colorlist.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(colorlist.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div); + } + + destroy_component(colorlist, ); + } + }; + } + + function create_fragment$3(ctx) { + var div1, div0, updating_colors, t, current; + + function colorlist_colors_binding(value) { + ctx.colorlist_colors_binding.call(null, value); + updating_colors = true; + add_flush_callback(() => updating_colors = false); + } + + let colorlist_props = {}; + if (ctx.colors !== void 0) { + colorlist_props.colors = ctx.colors; + } + var colorlist = new ColorList({ props: colorlist_props, $$inline: true }); + + add_binding_callback(() => bind(colorlist, 'colors', colorlist_colors_binding)); + + var if_block = (ctx.diverging) && create_if_block$2(ctx); + + return { + c: function create() { + div1 = element("div"); + div0 = element("div"); + colorlist.$$.fragment.c(); + t = space(); + if (if_block) if_block.c(); + attr(div0, "class", "col-md"); + add_location(div0, file$3, 12, 4, 212); + attr(div1, "class", "row"); + add_location(div1, file$3, 11, 0, 189); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(colorlist, div0, null); + append(div1, t); + if (if_block) if_block.m(div1, null); + current = true; + }, + + p: function update(changed, ctx) { + var colorlist_changes = {}; + if (!updating_colors && changed.colors) { + colorlist_changes.colors = ctx.colors; + } + colorlist.$set(colorlist_changes); + + if (ctx.diverging) { + if (if_block) { + if_block.p(changed, ctx); + transition_in(if_block, 1); + } else { + if_block = create_if_block$2(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div1, null); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + + i: function intro(local) { + if (current) return; + transition_in(colorlist.$$.fragment, local); + + transition_in(if_block); + current = true; + }, + + o: function outro(local) { + transition_out(colorlist.$$.fragment, local); + transition_out(if_block); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div1); + } + + destroy_component(colorlist, ); + + if (if_block) if_block.d(); + } + }; + } + + function instance$3($$self, $$props, $$invalidate) { + let { colors = [], colors2 = [], diverging = false } = $$props; + + const writable_props = ['colors', 'colors2', 'diverging']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + function colorlist_colors_binding(value) { + colors = value; + $$invalidate('colors', colors); + } + + function colorlist_colors_binding_1(value) { + colors2 = value; + $$invalidate('colors2', colors2); + } + + $$self.$set = $$props => { + if ('colors' in $$props) $$invalidate('colors', colors = $$props.colors); + if ('colors2' in $$props) $$invalidate('colors2', colors2 = $$props.colors2); + if ('diverging' in $$props) $$invalidate('diverging', diverging = $$props.diverging); + }; + + return { + colors, + colors2, + diverging, + colorlist_colors_binding, + colorlist_colors_binding_1 + }; + } + + class InputColors extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$3, create_fragment$3, safe_not_equal, ["colors", "colors2", "diverging"]); + } + + get colors() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set colors(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get colors2() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set colors2(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get diverging() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set diverging(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* globals blinder */ + + function colorBlindCheck(colors) { + const types = ["deuteranopia", "protanopia", "tritanopia"]; + const invalid = []; + for (let i = 0; i < types.length; i++) { + if (!checkType(colors, types[i])) invalid.push(types[i]); + } + return invalid; + } + + function colorBlindSim(color, type) { + return blinder[type](chroma(color).hex()); + } + + function checkType(colors, type) { + // let ok = 0; + let notok = 0; + let ratioThreshold = 5; + let smallestPerceivableDistance = 9; + let k = colors.length; + if (!k) { + // console.log('no colors', type); + return true; + } + // compute distances between colors + for (let a = 0; a < k; a++) { + for (let b = a + 1; b < k; b++) { + let colorA = chroma(colors[a]); + let colorB = chroma(colors[b]); + let distanceNorm = difference(colorA, colorB); + if (distanceNorm < smallestPerceivableDistance) continue; + let aSim = blinder[type](colorA.hex()); + let bSim = blinder[type](colorB.hex()); + let distanceSim = difference(aSim, bSim); + let isNotOk = + distanceNorm / distanceSim > ratioThreshold && + distanceSim < smallestPerceivableDistance; + // count combinations that are problematic + if (isNotOk) notok++; + // else ok++; + } + } + // console.log(type, notok/(ok+notok)); + // compute share of problematic colorss + return notok === 0; + } + + function difference(colorA, colorB) { + return ( + 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA)) + ); + } + + /* src\PalettePreview.svelte generated by Svelte v3.5.3 */ + + const file$4 = "src\\PalettePreview.svelte"; + + function get_each_context$2(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.step = list[i]; + return child_ctx; + } + + // (79:4) {#each steps as step} + function create_each_block$2(ctx) { + var div; + + return { + c: function create() { + div = element("div"); + attr(div, "class", "step svelte-qylrh0"); + set_style(div, "background", (ctx.simulate === 'none' ? ctx.step : colorBlindSim(ctx.step, ctx.simulate))); + add_location(div, file$4, 79, 4, 2641); + }, + + m: function mount(target, anchor) { + insert(target, div, anchor); + }, + + p: function update(changed, ctx) { + if (changed.simulate || changed.steps || changed.colorBlindSim) { + set_style(div, "background", (ctx.simulate === 'none' ? ctx.step : colorBlindSim(ctx.step, ctx.simulate))); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div); + } + } + }; + } + + function create_fragment$4(ctx) { + var div; + + var each_value = ctx.steps; + + var each_blocks = []; + + for (var i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); + } + + return { + c: function create() { + div = element("div"); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div, "class", "palette svelte-qylrh0"); + add_location(div, file$4, 77, 0, 2587); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div, anchor); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + }, + + p: function update(changed, ctx) { + if (changed.simulate || changed.steps || changed.colorBlindSim) { + each_value = ctx.steps; + + for (var i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$2(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(changed, child_ctx); + } else { + each_blocks[i] = create_each_block$2(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(div); + } + + destroy_each(each_blocks, detaching); + } + }; + } + + function instance$4($$self, $$props, $$invalidate) { + + + let { colors = ['red'], colors2 = [], numColors = 7, diverging = false, bezier, correctLightness, simulate = 'none', steps } = $$props; + + function autoGradient(color, numColors) { + const lab = chroma(color).lab(); + const lRange = 100 * (0.95 - 1/numColors); + const lStep = lRange / (numColors-1); + let lStart = (100-lRange)*0.5; + const range$1 = range(lStart, lStart+numColors*lStep, lStep); + let offset = 0; + if (!diverging) { + offset = 9999; + for (let i=0; i < numColors; i++) { + let diff = lab[0] - range$1[i]; + if (Math.abs(diff) < Math.abs(offset)) { + offset = diff; + } + } + } + return range$1.map(l => chroma.lab([l + offset, lab[1], lab[2]])); + } + + function autoColors(color, numColors, reverse=false) { + if (diverging) { + const colors = autoGradient(color, 3).concat(chroma('#f5f5f5')); + if (reverse) colors.reverse(); + return colors; + } else { + return autoGradient(color, numColors); + } + } + + const writable_props = ['colors', 'colors2', 'numColors', 'diverging', 'bezier', 'correctLightness', 'simulate', 'steps']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$set = $$props => { + if ('colors' in $$props) $$invalidate('colors', colors = $$props.colors); + if ('colors2' in $$props) $$invalidate('colors2', colors2 = $$props.colors2); + if ('numColors' in $$props) $$invalidate('numColors', numColors = $$props.numColors); + if ('diverging' in $$props) $$invalidate('diverging', diverging = $$props.diverging); + if ('bezier' in $$props) $$invalidate('bezier', bezier = $$props.bezier); + if ('correctLightness' in $$props) $$invalidate('correctLightness', correctLightness = $$props.correctLightness); + if ('simulate' in $$props) $$invalidate('simulate', simulate = $$props.simulate); + if ('steps' in $$props) $$invalidate('steps', steps = $$props.steps); + }; + + let even, numColorsLeft, numColorsRight, genColors, genColors2, stepsLeft, stepsRight; + + $$self.$$.update = ($$dirty = { numColors: 1, diverging: 1, even: 1, colors: 1, numColorsLeft: 1, colors2: 1, numColorsRight: 1, bezier: 1, genColors: 1, correctLightness: 1, genColors2: 1, stepsLeft: 1, stepsRight: 1 }) => { + if ($$dirty.numColors) { $$invalidate('even', even = numColors % 2 === 0); } + if ($$dirty.diverging || $$dirty.numColors || $$dirty.even) { $$invalidate('numColorsLeft', numColorsLeft = diverging ? Math.ceil(numColors/2) + (even?1:0) : numColors); } + if ($$dirty.diverging || $$dirty.numColors || $$dirty.even) { $$invalidate('numColorsRight', numColorsRight = diverging ? Math.ceil(numColors/2) + (even?1:0) : 0); } + if ($$dirty.colors || $$dirty.numColorsLeft) { $$invalidate('genColors', genColors = colors.length !== 1 ? colors : autoColors(colors[0], numColorsLeft)); } + if ($$dirty.colors2 || $$dirty.numColorsRight) { $$invalidate('genColors2', genColors2 = colors2.length !== 1 ? colors2 : autoColors(colors2[0], numColorsRight, true)); } + if ($$dirty.colors || $$dirty.bezier || $$dirty.genColors || $$dirty.correctLightness || $$dirty.numColorsLeft) { $$invalidate('stepsLeft', stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 ? chroma.bezier(genColors) : genColors) + .correctLightness(correctLightness) + .colors(numColorsLeft) : []); } + if ($$dirty.diverging || $$dirty.colors2 || $$dirty.bezier || $$dirty.genColors2 || $$dirty.correctLightness || $$dirty.numColorsRight) { $$invalidate('stepsRight', stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 ? chroma.bezier(genColors2) : genColors2) + .correctLightness(correctLightness) + .colors(numColorsRight) : []); } + if ($$dirty.even || $$dirty.diverging || $$dirty.stepsLeft || $$dirty.stepsRight) { $$invalidate('steps', steps = (even && diverging ? stepsLeft.slice(0, stepsLeft.length-1) : stepsLeft).concat(stepsRight.slice(1))); } + }; + + return { + colors, + colors2, + numColors, + diverging, + bezier, + correctLightness, + simulate, + steps + }; + } + + class PalettePreview extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$4, create_fragment$4, safe_not_equal, ["colors", "colors2", "numColors", "diverging", "bezier", "correctLightness", "simulate", "steps"]); + + const { ctx } = this.$$; + const props = options.props || {}; + if (ctx.bezier === undefined && !('bezier' in props)) { + console.warn(" was created without expected prop 'bezier'"); + } + if (ctx.correctLightness === undefined && !('correctLightness' in props)) { + console.warn(" was created without expected prop 'correctLightness'"); + } + if (ctx.steps === undefined && !('steps' in props)) { + console.warn(" was created without expected prop 'steps'"); + } + } + + get colors() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set colors(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get colors2() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set colors2(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get numColors() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set numColors(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get diverging() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set diverging(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get bezier() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set bezier(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get correctLightness() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set correctLightness(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get simulate() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set simulate(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get steps() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set steps(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src\Export.svelte generated by Svelte v3.5.3 */ + + const file$5 = "src\\Export.svelte"; + + function create_fragment$5(ctx) { + var pre0, t0, t1, pre1, t2, t3_value = ctx.steps.join(`', '`), t3, t4, t5, pre2, t6, t7_value = ctx.steps.join(`', '`), t7, t8, t9, pre3, t10_value = ctx.steps.join('\n'), t10, t11, pre4, t12, t13_value = ctx.steps.map(func).join(`,`), t13, t14, t15, pre5, t16, t17_value = ctx.steps.length, t17, t18, t19_value = ctx.steps.join(`', '`), t19, t20, t21_value = ctx.steps.slice(1).map(func_1), t21, t22; + + return { + c: function create() { + pre0 = element("pre"); + t0 = text(ctx.steps); + t1 = space(); + pre1 = element("pre"); + t2 = text("'"); + t3 = text(t3_value); + t4 = text("'"); + t5 = space(); + pre2 = element("pre"); + t6 = text("['"); + t7 = text(t7_value); + t8 = text("']"); + t9 = space(); + pre3 = element("pre"); + t10 = text(t10_value); + t11 = space(); + pre4 = element("pre"); + t12 = text("["); + t13 = text(t13_value); + t14 = text("]"); + t15 = space(); + pre5 = element("pre"); + t16 = text("import { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n const d = (max-min)/"); + t17 = text(t17_value); + t18 = text(";\r\n return = scaleThreshold()\r\n .range(['"); + t19 = text(t19_value); + t20 = text("'])\r\n .domain(["); + t21 = text(t21_value); + t22 = text("]);\r\n}"); + attr(pre0, "class", "svelte-1rj5ek4"); + add_location(pre0, file$5, 12, 0, 172); + attr(pre1, "class", "svelte-1rj5ek4"); + add_location(pre1, file$5, 13, 0, 192); + attr(pre2, "class", "svelte-1rj5ek4"); + add_location(pre2, file$5, 14, 0, 227); + attr(pre3, "class", "svelte-1rj5ek4"); + add_location(pre3, file$5, 15, 0, 264); + attr(pre4, "class", "svelte-1rj5ek4"); + add_location(pre4, file$5, 16, 0, 295); + attr(pre5, "class", "svelte-1rj5ek4"); + add_location(pre5, file$5, 17, 0, 354); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, pre0, anchor); + append(pre0, t0); + insert(target, t1, anchor); + insert(target, pre1, anchor); + append(pre1, t2); + append(pre1, t3); + append(pre1, t4); + insert(target, t5, anchor); + insert(target, pre2, anchor); + append(pre2, t6); + append(pre2, t7); + append(pre2, t8); + insert(target, t9, anchor); + insert(target, pre3, anchor); + append(pre3, t10); + insert(target, t11, anchor); + insert(target, pre4, anchor); + append(pre4, t12); + append(pre4, t13); + append(pre4, t14); + insert(target, t15, anchor); + insert(target, pre5, anchor); + append(pre5, t16); + append(pre5, t17); + append(pre5, t18); + append(pre5, t19); + append(pre5, t20); + append(pre5, t21); + append(pre5, t22); + }, + + p: function update(changed, ctx) { + if (changed.steps) { + set_data(t0, ctx.steps); + } + + if ((changed.steps) && t3_value !== (t3_value = ctx.steps.join(`', '`))) { + set_data(t3, t3_value); + } + + if ((changed.steps) && t7_value !== (t7_value = ctx.steps.join(`', '`))) { + set_data(t7, t7_value); + } + + if ((changed.steps) && t10_value !== (t10_value = ctx.steps.join('\n'))) { + set_data(t10, t10_value); + } + + if ((changed.steps) && t13_value !== (t13_value = ctx.steps.map(func).join(`,`))) { + set_data(t13, t13_value); + } + + if ((changed.steps) && t17_value !== (t17_value = ctx.steps.length)) { + set_data(t17, t17_value); + } + + if ((changed.steps) && t19_value !== (t19_value = ctx.steps.join(`', '`))) { + set_data(t19, t19_value); + } + + if ((changed.steps) && t21_value !== (t21_value = ctx.steps.slice(1).map(func_1))) { + set_data(t21, t21_value); + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(pre0); + detach(t1); + detach(pre1); + detach(t5); + detach(pre2); + detach(t9); + detach(pre3); + detach(t11); + detach(pre4); + detach(t15); + detach(pre5); + } + } + }; + } + + function func(c) { + return '0x'+c.substr(1); + } + + function func_1(v,i) { + return `min + d*${i+1}`; + } + + function instance$5($$self, $$props, $$invalidate) { + let { steps = [] } = $$props; + + const writable_props = ['steps']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + $$self.$set = $$props => { + if ('steps' in $$props) $$invalidate('steps', steps = $$props.steps); + }; + + return { steps }; + } + + class Export extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$5, create_fragment$5, safe_not_equal, ["steps"]); + } + + get steps() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set steps(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + } + + function bisector(compare) { + if (compare.length === 1) compare = ascendingComparator(compare); + return { + left: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) > 0) hi = mid; + else lo = mid + 1; + } + return lo; + } + }; + } + + function ascendingComparator(f) { + return function(d, x) { + return ascending(f(d), x); + }; + } + + var ascendingBisect = bisector(ascending); + var bisectRight = ascendingBisect.right; + + function extent(values, valueof) { + let min; + let max; + if (valueof === undefined) { + for (const value of values) { + if (value != null) { + if (min === undefined) { + if (value >= value) min = max = value; + } else { + if (min > value) min = value; + if (max < value) max = value; + } + } + } + } else { + let index = -1; + for (let value of values) { + if ((value = valueof(value, ++index, values)) != null) { + if (min === undefined) { + if (value >= value) min = max = value; + } else { + if (min > value) min = value; + if (max < value) max = value; + } + } + } + } + return [min, max]; + } + + var e10 = Math.sqrt(50), + e5 = Math.sqrt(10), + e2 = Math.sqrt(2); + + function ticks(start, stop, count) { + var reverse, + i = -1, + n, + ticks, + step; + + stop = +stop, start = +start, count = +count; + if (start === stop && count > 0) return [start]; + if (reverse = stop < start) n = start, start = stop, stop = n; + if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; + + if (step > 0) { + start = Math.ceil(start / step); + stop = Math.floor(stop / step); + ticks = new Array(n = Math.ceil(stop - start + 1)); + while (++i < n) ticks[i] = (start + i) * step; + } else { + start = Math.floor(start * step); + stop = Math.ceil(stop * step); + ticks = new Array(n = Math.ceil(start - stop + 1)); + while (++i < n) ticks[i] = (start - i) / step; + } + + if (reverse) ticks.reverse(); + + return ticks; + } + + function tickIncrement(start, stop, count) { + var step = (stop - start) / Math.max(0, count), + power = Math.floor(Math.log(step) / Math.LN10), + error = step / Math.pow(10, power); + return power >= 0 + ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) + : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); + } + + function tickStep(start, stop, count) { + var step0 = Math.abs(stop - start) / Math.max(0, count), + step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), + error = step0 / step1; + if (error >= e10) step1 *= 10; + else if (error >= e5) step1 *= 5; + else if (error >= e2) step1 *= 2; + return stop < start ? -step1 : step1; + } + + function initRange(domain, range) { + switch (arguments.length) { + case 0: break; + case 1: this.range(domain); break; + default: this.range(range).domain(domain); break; + } + return this; + } + + function define(constructor, factory, prototype) { + constructor.prototype = factory.prototype = prototype; + prototype.constructor = constructor; + } + + function extend(parent, definition) { + var prototype = Object.create(parent.prototype); + for (var key in definition) prototype[key] = definition[key]; + return prototype; + } + + function Color$1() {} + + var darker = 0.7; + var brighter = 1 / darker; + + var reI = "\\s*([+-]?\\d+)\\s*", + reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", + reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", + reHex3 = /^#([0-9a-f]{3})$/, + reHex6 = /^#([0-9a-f]{6})$/, + reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), + reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), + reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), + reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), + reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), + reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); + + var named = { + aliceblue: 0xf0f8ff, + antiquewhite: 0xfaebd7, + aqua: 0x00ffff, + aquamarine: 0x7fffd4, + azure: 0xf0ffff, + beige: 0xf5f5dc, + bisque: 0xffe4c4, + black: 0x000000, + blanchedalmond: 0xffebcd, + blue: 0x0000ff, + blueviolet: 0x8a2be2, + brown: 0xa52a2a, + burlywood: 0xdeb887, + cadetblue: 0x5f9ea0, + chartreuse: 0x7fff00, + chocolate: 0xd2691e, + coral: 0xff7f50, + cornflowerblue: 0x6495ed, + cornsilk: 0xfff8dc, + crimson: 0xdc143c, + cyan: 0x00ffff, + darkblue: 0x00008b, + darkcyan: 0x008b8b, + darkgoldenrod: 0xb8860b, + darkgray: 0xa9a9a9, + darkgreen: 0x006400, + darkgrey: 0xa9a9a9, + darkkhaki: 0xbdb76b, + darkmagenta: 0x8b008b, + darkolivegreen: 0x556b2f, + darkorange: 0xff8c00, + darkorchid: 0x9932cc, + darkred: 0x8b0000, + darksalmon: 0xe9967a, + darkseagreen: 0x8fbc8f, + darkslateblue: 0x483d8b, + darkslategray: 0x2f4f4f, + darkslategrey: 0x2f4f4f, + darkturquoise: 0x00ced1, + darkviolet: 0x9400d3, + deeppink: 0xff1493, + deepskyblue: 0x00bfff, + dimgray: 0x696969, + dimgrey: 0x696969, + dodgerblue: 0x1e90ff, + firebrick: 0xb22222, + floralwhite: 0xfffaf0, + forestgreen: 0x228b22, + fuchsia: 0xff00ff, + gainsboro: 0xdcdcdc, + ghostwhite: 0xf8f8ff, + gold: 0xffd700, + goldenrod: 0xdaa520, + gray: 0x808080, + green: 0x008000, + greenyellow: 0xadff2f, + grey: 0x808080, + honeydew: 0xf0fff0, + hotpink: 0xff69b4, + indianred: 0xcd5c5c, + indigo: 0x4b0082, + ivory: 0xfffff0, + khaki: 0xf0e68c, + lavender: 0xe6e6fa, + lavenderblush: 0xfff0f5, + lawngreen: 0x7cfc00, + lemonchiffon: 0xfffacd, + lightblue: 0xadd8e6, + lightcoral: 0xf08080, + lightcyan: 0xe0ffff, + lightgoldenrodyellow: 0xfafad2, + lightgray: 0xd3d3d3, + lightgreen: 0x90ee90, + lightgrey: 0xd3d3d3, + lightpink: 0xffb6c1, + lightsalmon: 0xffa07a, + lightseagreen: 0x20b2aa, + lightskyblue: 0x87cefa, + lightslategray: 0x778899, + lightslategrey: 0x778899, + lightsteelblue: 0xb0c4de, + lightyellow: 0xffffe0, + lime: 0x00ff00, + limegreen: 0x32cd32, + linen: 0xfaf0e6, + magenta: 0xff00ff, + maroon: 0x800000, + mediumaquamarine: 0x66cdaa, + mediumblue: 0x0000cd, + mediumorchid: 0xba55d3, + mediumpurple: 0x9370db, + mediumseagreen: 0x3cb371, + mediumslateblue: 0x7b68ee, + mediumspringgreen: 0x00fa9a, + mediumturquoise: 0x48d1cc, + mediumvioletred: 0xc71585, + midnightblue: 0x191970, + mintcream: 0xf5fffa, + mistyrose: 0xffe4e1, + moccasin: 0xffe4b5, + navajowhite: 0xffdead, + navy: 0x000080, + oldlace: 0xfdf5e6, + olive: 0x808000, + olivedrab: 0x6b8e23, + orange: 0xffa500, + orangered: 0xff4500, + orchid: 0xda70d6, + palegoldenrod: 0xeee8aa, + palegreen: 0x98fb98, + paleturquoise: 0xafeeee, + palevioletred: 0xdb7093, + papayawhip: 0xffefd5, + peachpuff: 0xffdab9, + peru: 0xcd853f, + pink: 0xffc0cb, + plum: 0xdda0dd, + powderblue: 0xb0e0e6, + purple: 0x800080, + rebeccapurple: 0x663399, + red: 0xff0000, + rosybrown: 0xbc8f8f, + royalblue: 0x4169e1, + saddlebrown: 0x8b4513, + salmon: 0xfa8072, + sandybrown: 0xf4a460, + seagreen: 0x2e8b57, + seashell: 0xfff5ee, + sienna: 0xa0522d, + silver: 0xc0c0c0, + skyblue: 0x87ceeb, + slateblue: 0x6a5acd, + slategray: 0x708090, + slategrey: 0x708090, + snow: 0xfffafa, + springgreen: 0x00ff7f, + steelblue: 0x4682b4, + tan: 0xd2b48c, + teal: 0x008080, + thistle: 0xd8bfd8, + tomato: 0xff6347, + turquoise: 0x40e0d0, + violet: 0xee82ee, + wheat: 0xf5deb3, + white: 0xffffff, + whitesmoke: 0xf5f5f5, + yellow: 0xffff00, + yellowgreen: 0x9acd32 + }; + + define(Color$1, color, { + displayable: function() { + return this.rgb().displayable(); + }, + hex: function() { + return this.rgb().hex(); + }, + toString: function() { + return this.rgb() + ""; + } + }); + + function color(format) { + var m; + format = (format + "").trim().toLowerCase(); + return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00 + : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000 + : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) + : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) + : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) + : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) + : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) + : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) + : named.hasOwnProperty(format) ? rgbn(named[format]) + : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) + : null; + } + + function rgbn(n) { + return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); + } + + function rgba(r, g, b, a) { + if (a <= 0) r = g = b = NaN; + return new Rgb(r, g, b, a); + } + + function rgbConvert(o) { + if (!(o instanceof Color$1)) o = color(o); + if (!o) return new Rgb; + o = o.rgb(); + return new Rgb(o.r, o.g, o.b, o.opacity); + } + + function rgb(r, g, b, opacity) { + return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); + } + + function Rgb(r, g, b, opacity) { + this.r = +r; + this.g = +g; + this.b = +b; + this.opacity = +opacity; + } + + define(Rgb, rgb, extend(Color$1, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + rgb: function() { + return this; + }, + displayable: function() { + return (0 <= this.r && this.r <= 255) + && (0 <= this.g && this.g <= 255) + && (0 <= this.b && this.b <= 255) + && (0 <= this.opacity && this.opacity <= 1); + }, + hex: function() { + return "#" + hex(this.r) + hex(this.g) + hex(this.b); + }, + toString: function() { + var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); + return (a === 1 ? "rgb(" : "rgba(") + + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + + (a === 1 ? ")" : ", " + a + ")"); + } + })); + + function hex(value) { + value = Math.max(0, Math.min(255, Math.round(value) || 0)); + return (value < 16 ? "0" : "") + value.toString(16); + } + + function hsla(h, s, l, a) { + if (a <= 0) h = s = l = NaN; + else if (l <= 0 || l >= 1) h = s = NaN; + else if (s <= 0) h = NaN; + return new Hsl(h, s, l, a); + } + + function hslConvert(o) { + if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Color$1)) o = color(o); + if (!o) return new Hsl; + if (o instanceof Hsl) return o; + o = o.rgb(); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + h = NaN, + s = max - min, + l = (max + min) / 2; + if (s) { + if (r === max) h = (g - b) / s + (g < b) * 6; + else if (g === max) h = (b - r) / s + 2; + else h = (r - g) / s + 4; + s /= l < 0.5 ? max + min : 2 - max - min; + h *= 60; + } else { + s = l > 0 && l < 1 ? 0 : h; + } + return new Hsl(h, s, l, o.opacity); + } + + function hsl(h, s, l, opacity) { + return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); + } + + function Hsl(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; + } + + define(Hsl, hsl, extend(Color$1, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + rgb: function() { + var h = this.h % 360 + (this.h < 0) * 360, + s = isNaN(h) || isNaN(this.s) ? 0 : this.s, + l = this.l, + m2 = l + (l < 0.5 ? l : 1 - l) * s, + m1 = 2 * l - m2; + return new Rgb( + hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), + hsl2rgb(h, m1, m2), + hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), + this.opacity + ); + }, + displayable: function() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) + && (0 <= this.l && this.l <= 1) + && (0 <= this.opacity && this.opacity <= 1); + } + })); + + /* From FvD 13.37, CSS Color Module Level 3 */ + function hsl2rgb(h, m1, m2) { + return (h < 60 ? m1 + (m2 - m1) * h / 60 + : h < 180 ? m2 + : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 + : m1) * 255; + } + + var deg2rad = Math.PI / 180; + var rad2deg = 180 / Math.PI; + + // https://beta.observablehq.com/@mbostock/lab-and-rgb + var K = 18, + Xn = 0.96422, + Yn = 1, + Zn = 0.82521, + t0 = 4 / 29, + t1 = 6 / 29, + t2 = 3 * t1 * t1, + t3 = t1 * t1 * t1; + + function labConvert(o) { + if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); + if (o instanceof Hcl) { + if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); + var h = o.h * deg2rad; + return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); + } + if (!(o instanceof Rgb)) o = rgbConvert(o); + var r = rgb2lrgb(o.r), + g = rgb2lrgb(o.g), + b = rgb2lrgb(o.b), + y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; + if (r === g && g === b) x = z = y; else { + x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); + z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); + } + return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); + } + + function lab(l, a, b, opacity) { + return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); + } + + function Lab(l, a, b, opacity) { + this.l = +l; + this.a = +a; + this.b = +b; + this.opacity = +opacity; + } + + define(Lab, lab, extend(Color$1, { + brighter: function(k) { + return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + darker: function(k) { + return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + rgb: function() { + var y = (this.l + 16) / 116, + x = isNaN(this.a) ? y : y + this.a / 500, + z = isNaN(this.b) ? y : y - this.b / 200; + x = Xn * lab2xyz(x); + y = Yn * lab2xyz(y); + z = Zn * lab2xyz(z); + return new Rgb( + lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), + lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), + lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), + this.opacity + ); + } + })); + + function xyz2lab(t) { + return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; + } + + function lab2xyz(t) { + return t > t1 ? t * t * t : t2 * (t - t0); + } + + function lrgb2rgb(x) { + return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); + } + + function rgb2lrgb(x) { + return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); + } + + function hclConvert(o) { + if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); + if (!(o instanceof Lab)) o = labConvert(o); + if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity); + var h = Math.atan2(o.b, o.a) * rad2deg; + return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); + } + + function hcl(h, c, l, opacity) { + return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); + } + + function Hcl(h, c, l, opacity) { + this.h = +h; + this.c = +c; + this.l = +l; + this.opacity = +opacity; + } + + define(Hcl, hcl, extend(Color$1, { + brighter: function(k) { + return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); + }, + darker: function(k) { + return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); + }, + rgb: function() { + return labConvert(this).rgb(); + } + })); + + var A = -0.14861, + B = +1.78277, + C = -0.29227, + D = -0.90649, + E = +1.97294, + ED = E * D, + EB = E * B, + BC_DA = B * C - D * A; + + function cubehelixConvert(o) { + if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Rgb)) o = rgbConvert(o); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), + bl = b - l, + k = (E * (g - l) - C * bl) / D, + s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 + h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; + return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); + } + + function cubehelix(h, s, l, opacity) { + return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); + } + + function Cubehelix(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; + } + + define(Cubehelix, cubehelix, extend(Color$1, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + rgb: function() { + var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, + l = +this.l, + a = isNaN(this.s) ? 0 : this.s * l * (1 - l), + cosh = Math.cos(h), + sinh = Math.sin(h); + return new Rgb( + 255 * (l + a * (A * cosh + B * sinh)), + 255 * (l + a * (C * cosh + D * sinh)), + 255 * (l + a * (E * cosh)), + this.opacity + ); + } + })); + + function constant(x) { + return function() { + return x; + }; + } + + function linear(a, d) { + return function(t) { + return a + t * d; + }; + } + + function exponential(a, b, y) { + return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { + return Math.pow(a + t * b, y); + }; + } + + function gamma(y) { + return (y = +y) === 1 ? nogamma : function(a, b) { + return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a); + }; + } + + function nogamma(a, b) { + var d = b - a; + return d ? linear(a, d) : constant(isNaN(a) ? b : a); + } + + var rgb$1 = (function rgbGamma(y) { + var color = gamma(y); + + function rgb$1(start, end) { + var r = color((start = rgb(start)).r, (end = rgb(end)).r), + g = color(start.g, end.g), + b = color(start.b, end.b), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.r = r(t); + start.g = g(t); + start.b = b(t); + start.opacity = opacity(t); + return start + ""; + }; + } + + rgb$1.gamma = rgbGamma; + + return rgb$1; + })(1); + + function array(a, b) { + var nb = b ? b.length : 0, + na = a ? Math.min(nb, a.length) : 0, + x = new Array(na), + c = new Array(nb), + i; + + for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]); + for (; i < nb; ++i) c[i] = b[i]; + + return function(t) { + for (i = 0; i < na; ++i) c[i] = x[i](t); + return c; + }; + } + + function date(a, b) { + var d = new Date; + return a = +a, b -= a, function(t) { + return d.setTime(a + b * t), d; + }; + } + + function interpolateNumber(a, b) { + return a = +a, b -= a, function(t) { + return a + b * t; + }; + } + + function object(a, b) { + var i = {}, + c = {}, + k; + + if (a === null || typeof a !== "object") a = {}; + if (b === null || typeof b !== "object") b = {}; + + for (k in b) { + if (k in a) { + i[k] = interpolateValue(a[k], b[k]); + } else { + c[k] = b[k]; + } + } + + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; + } + + var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, + reB = new RegExp(reA.source, "g"); + + function zero(b) { + return function() { + return b; + }; + } + + function one(b) { + return function(t) { + return b(t) + ""; + }; + } + + function string(a, b) { + var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b + am, // current match in a + bm, // current match in b + bs, // string preceding current number in b, if any + i = -1, // index in s + s = [], // string constants and placeholders + q = []; // number interpolators + + // Coerce inputs to strings. + a = a + "", b = b + ""; + + // Interpolate pairs of numbers in a & b. + while ((am = reA.exec(a)) + && (bm = reB.exec(b))) { + if ((bs = bm.index) > bi) { // a string precedes the next number in b + bs = b.slice(bi, bs); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match + if (s[i]) s[i] += bm; // coalesce with previous string + else s[++i] = bm; + } else { // interpolate non-matching numbers + s[++i] = null; + q.push({i: i, x: interpolateNumber(am, bm)}); + } + bi = reB.lastIndex; + } + + // Add remains of b. + if (bi < b.length) { + bs = b.slice(bi); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + + // Special optimization for only a single match. + // Otherwise, interpolate each of the numbers and rejoin the string. + return s.length < 2 ? (q[0] + ? one(q[0].x) + : zero(b)) + : (b = q.length, function(t) { + for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }); + } + + function interpolateValue(a, b) { + var t = typeof b, c; + return b == null || t === "boolean" ? constant(b) + : (t === "number" ? interpolateNumber + : t === "string" ? ((c = color(b)) ? (b = c, rgb$1) : string) + : b instanceof color ? rgb$1 + : b instanceof Date ? date + : Array.isArray(b) ? array + : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object + : interpolateNumber)(a, b); + } + + function interpolateRound(a, b) { + return a = +a, b -= a, function(t) { + return Math.round(a + b * t); + }; + } + + var degrees = 180 / Math.PI; + + var rho = Math.SQRT2; + + function constant$1(x) { + return function() { + return x; + }; + } + + function number(x) { + return +x; + } + + var unit = [0, 1]; + + function identity(x) { + return x; + } + + function normalize(a, b) { + return (b -= (a = +a)) + ? function(x) { return (x - a) / b; } + : constant$1(isNaN(b) ? NaN : 0.5); + } + + function clamper(domain) { + var a = domain[0], b = domain[domain.length - 1], t; + if (a > b) t = a, a = b, b = t; + return function(x) { return Math.max(a, Math.min(b, x)); }; + } + + // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. + // interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. + function bimap(domain, range, interpolate) { + var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; + if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); + else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); + return function(x) { return r0(d0(x)); }; + } + + function polymap(domain, range, interpolate) { + var j = Math.min(domain.length, range.length) - 1, + d = new Array(j), + r = new Array(j), + i = -1; + + // Reverse descending domains. + if (domain[j] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + + while (++i < j) { + d[i] = normalize(domain[i], domain[i + 1]); + r[i] = interpolate(range[i], range[i + 1]); + } + + return function(x) { + var i = bisectRight(domain, x, 1, j) - 1; + return r[i](d[i](x)); + }; + } + + function copy(source, target) { + return target + .domain(source.domain()) + .range(source.range()) + .interpolate(source.interpolate()) + .clamp(source.clamp()) + .unknown(source.unknown()); + } + + function transformer() { + var domain = unit, + range = unit, + interpolate = interpolateValue, + transform, + untransform, + unknown, + clamp = identity, + piecewise, + output, + input; + + function rescale() { + piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; + output = input = null; + return scale; + } + + function scale(x) { + return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); + } + + scale.invert = function(y) { + return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); + }; + + scale.domain = function(_) { + return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice(); + }; + + scale.range = function(_) { + return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); + }; + + scale.rangeRound = function(_) { + return range = Array.from(_), interpolate = interpolateRound, rescale(); + }; + + scale.clamp = function(_) { + return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity; + }; + + scale.interpolate = function(_) { + return arguments.length ? (interpolate = _, rescale()) : interpolate; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + return function(t, u) { + transform = t, untransform = u; + return rescale(); + }; + } + + function continuous(transform, untransform) { + return transformer()(transform, untransform); + } + + // Computes the decimal coefficient and exponent of the specified number x with + // significant digits p, where x is positive and p is in [1, 21] or undefined. + // For example, formatDecimal(1.23) returns ["123", 0]. + function formatDecimal(x, p) { + if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity + var i, coefficient = x.slice(0, i); + + // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ + // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). + return [ + coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, + +x.slice(i + 1) + ]; + } + + function exponent(x) { + return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; + } + + function formatGroup(grouping, thousands) { + return function(value, width) { + var i = value.length, + t = [], + j = 0, + g = grouping[0], + length = 0; + + while (i > 0 && g > 0) { + if (length + g + 1 > width) g = Math.max(1, width - length); + t.push(value.substring(i -= g, i + g)); + if ((length += g + 1) > width) break; + g = grouping[j = (j + 1) % grouping.length]; + } + + return t.reverse().join(thousands); + }; + } + + function formatNumerals(numerals) { + return function(value) { + return value.replace(/[0-9]/g, function(i) { + return numerals[+i]; + }); + }; + } + + // [[fill]align][sign][symbol][0][width][,][.precision][~][type] + var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; + + function formatSpecifier(specifier) { + return new FormatSpecifier(specifier); + } + + formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof + + function FormatSpecifier(specifier) { + if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); + var match; + this.fill = match[1] || " "; + this.align = match[2] || ">"; + this.sign = match[3] || "-"; + this.symbol = match[4] || ""; + this.zero = !!match[5]; + this.width = match[6] && +match[6]; + this.comma = !!match[7]; + this.precision = match[8] && +match[8].slice(1); + this.trim = !!match[9]; + this.type = match[10] || ""; + } + + FormatSpecifier.prototype.toString = function() { + return this.fill + + this.align + + this.sign + + this.symbol + + (this.zero ? "0" : "") + + (this.width == null ? "" : Math.max(1, this.width | 0)) + + (this.comma ? "," : "") + + (this.precision == null ? "" : "." + Math.max(0, this.precision | 0)) + + (this.trim ? "~" : "") + + this.type; + }; + + // Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. + function formatTrim(s) { + out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { + switch (s[i]) { + case ".": i0 = i1 = i; break; + case "0": if (i0 === 0) i0 = i; i1 = i; break; + default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break; + } + } + return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; + } + + var prefixExponent; + + function formatPrefixAuto(x, p) { + var d = formatDecimal(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1], + i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, + n = coefficient.length; + return i === n ? coefficient + : i > n ? coefficient + new Array(i - n + 1).join("0") + : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) + : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! + } + + function formatRounded(x, p) { + var d = formatDecimal(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1]; + return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient + : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) + : coefficient + new Array(exponent - coefficient.length + 2).join("0"); + } + + var formatTypes = { + "%": function(x, p) { return (x * 100).toFixed(p); }, + "b": function(x) { return Math.round(x).toString(2); }, + "c": function(x) { return x + ""; }, + "d": function(x) { return Math.round(x).toString(10); }, + "e": function(x, p) { return x.toExponential(p); }, + "f": function(x, p) { return x.toFixed(p); }, + "g": function(x, p) { return x.toPrecision(p); }, + "o": function(x) { return Math.round(x).toString(8); }, + "p": function(x, p) { return formatRounded(x * 100, p); }, + "r": formatRounded, + "s": formatPrefixAuto, + "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, + "x": function(x) { return Math.round(x).toString(16); } + }; + + function identity$1(x) { + return x; + } + + var prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; + + function formatLocale(locale) { + var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity$1, + currency = locale.currency, + decimal = locale.decimal, + numerals = locale.numerals ? formatNumerals(locale.numerals) : identity$1, + percent = locale.percent || "%"; + + function newFormat(specifier) { + specifier = formatSpecifier(specifier); + + var fill = specifier.fill, + align = specifier.align, + sign = specifier.sign, + symbol = specifier.symbol, + zero = specifier.zero, + width = specifier.width, + comma = specifier.comma, + precision = specifier.precision, + trim = specifier.trim, + type = specifier.type; + + // The "n" type is an alias for ",g". + if (type === "n") comma = true, type = "g"; + + // The "" type, and any invalid type, is an alias for ".12~g". + else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = "g"; + + // If zero fill is specified, padding goes after sign and before digits. + if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; + + // Compute the prefix and suffix. + // For SI-prefix, the suffix is lazily computed. + var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", + suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : ""; + + // What format function should we use? + // Is this an integer type? + // Can this type generate exponential notation? + var formatType = formatTypes[type], + maybeSuffix = /[defgprs%]/.test(type); + + // Set the default precision if not specified, + // or clamp the specified precision to the supported range. + // For significant precision, it must be in [1, 21]. + // For fixed precision, it must be in [0, 20]. + precision = precision == null ? 6 + : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) + : Math.max(0, Math.min(20, precision)); + + function format(value) { + var valuePrefix = prefix, + valueSuffix = suffix, + i, n, c; + + if (type === "c") { + valueSuffix = formatType(value) + valueSuffix; + value = ""; + } else { + value = +value; + + // Perform the initial formatting. + var valueNegative = value < 0; + value = formatType(Math.abs(value), precision); + + // Trim insignificant zeros. + if (trim) value = formatTrim(value); + + // If a negative value rounds to zero during formatting, treat as positive. + if (valueNegative && +value === 0) valueNegative = false; + + // Compute the prefix and suffix. + valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; + valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); + + // Break the formatted value into the integer “value” part that can be + // grouped, and fractional or exponential “suffix” part that is not. + if (maybeSuffix) { + i = -1, n = value.length; + while (++i < n) { + if (c = value.charCodeAt(i), 48 > c || c > 57) { + valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; + value = value.slice(0, i); + break; + } + } + } + } + + // If the fill character is not "0", grouping is applied before padding. + if (comma && !zero) value = group(value, Infinity); + + // Compute the padding. + var length = valuePrefix.length + value.length + valueSuffix.length, + padding = length < width ? new Array(width - length + 1).join(fill) : ""; + + // If the fill character is "0", grouping is applied after padding. + if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; + + // Reconstruct the final output based on the desired alignment. + switch (align) { + case "<": value = valuePrefix + value + valueSuffix + padding; break; + case "=": value = valuePrefix + padding + value + valueSuffix; break; + case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; + default: value = padding + valuePrefix + value + valueSuffix; break; + } + + return numerals(value); + } + + format.toString = function() { + return specifier + ""; + }; + + return format; + } + + function formatPrefix(specifier, value) { + var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), + e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, + k = Math.pow(10, -e), + prefix = prefixes[8 + e / 3]; + return function(value) { + return f(k * value) + prefix; + }; + } + + return { + format: newFormat, + formatPrefix: formatPrefix + }; + } + + var locale; + var format; + var formatPrefix; + + defaultLocale({ + decimal: ".", + thousands: ",", + grouping: [3], + currency: ["$", ""] + }); + + function defaultLocale(definition) { + locale = formatLocale(definition); + format = locale.format; + formatPrefix = locale.formatPrefix; + return locale; + } + + function precisionFixed(step) { + return Math.max(0, -exponent(Math.abs(step))); + } + + function precisionPrefix(step, value) { + return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); + } + + function precisionRound(step, max) { + step = Math.abs(step), max = Math.abs(max) - step; + return Math.max(0, exponent(max) - exponent(step)) + 1; + } + + function tickFormat(start, stop, count, specifier) { + var step = tickStep(start, stop, count), + precision; + specifier = formatSpecifier(specifier == null ? ",f" : specifier); + switch (specifier.type) { + case "s": { + var value = Math.max(Math.abs(start), Math.abs(stop)); + if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; + return formatPrefix(specifier, value); + } + case "": + case "e": + case "g": + case "p": + case "r": { + if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); + break; + } + case "f": + case "%": { + if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; + break; + } + } + return format(specifier); + } + + function linearish(scale) { + var domain = scale.domain; + + scale.ticks = function(count) { + var d = domain(); + return ticks(d[0], d[d.length - 1], count == null ? 10 : count); + }; + + scale.tickFormat = function(count, specifier) { + var d = domain(); + return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); + }; + + scale.nice = function(count) { + if (count == null) count = 10; + + var d = domain(), + i0 = 0, + i1 = d.length - 1, + start = d[i0], + stop = d[i1], + step; + + if (stop < start) { + step = start, start = stop, stop = step; + step = i0, i0 = i1, i1 = step; + } + + step = tickIncrement(start, stop, count); + + if (step > 0) { + start = Math.floor(start / step) * step; + stop = Math.ceil(stop / step) * step; + step = tickIncrement(start, stop, count); + } else if (step < 0) { + start = Math.ceil(start * step) / step; + stop = Math.floor(stop * step) / step; + step = tickIncrement(start, stop, count); + } + + if (step > 0) { + d[i0] = Math.floor(start / step) * step; + d[i1] = Math.ceil(stop / step) * step; + domain(d); + } else if (step < 0) { + d[i0] = Math.ceil(start * step) / step; + d[i1] = Math.floor(stop * step) / step; + domain(d); + } + + return scale; + }; + + return scale; + } + + function linear$1() { + var scale = continuous(identity, identity); + + scale.copy = function() { + return copy(scale, linear$1()); + }; + + initRange.apply(scale, arguments); + + return linearish(scale); + } + + var t0$1 = new Date, + t1$1 = new Date; + + function newInterval(floori, offseti, count, field) { + + function interval(date) { + return floori(date = new Date(+date)), date; + } + + interval.floor = interval; + + interval.ceil = function(date) { + return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; + }; + + interval.round = function(date) { + var d0 = interval(date), + d1 = interval.ceil(date); + return date - d0 < d1 - date ? d0 : d1; + }; + + interval.offset = function(date, step) { + return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; + }; + + interval.range = function(start, stop, step) { + var range = [], previous; + start = interval.ceil(start); + step = step == null ? 1 : Math.floor(step); + if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date + do range.push(previous = new Date(+start)), offseti(start, step), floori(start); + while (previous < start && start < stop); + return range; + }; + + interval.filter = function(test) { + return newInterval(function(date) { + if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); + }, function(date, step) { + if (date >= date) { + if (step < 0) while (++step <= 0) { + while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty + } else while (--step >= 0) { + while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty + } + } + }); + }; + + if (count) { + interval.count = function(start, end) { + t0$1.setTime(+start), t1$1.setTime(+end); + floori(t0$1), floori(t1$1); + return Math.floor(count(t0$1, t1$1)); + }; + + interval.every = function(step) { + step = Math.floor(step); + return !isFinite(step) || !(step > 0) ? null + : !(step > 1) ? interval + : interval.filter(field + ? function(d) { return field(d) % step === 0; } + : function(d) { return interval.count(0, d) % step === 0; }); + }; + } + + return interval; + } + + var millisecond = newInterval(function() { + // noop + }, function(date, step) { + date.setTime(+date + step); + }, function(start, end) { + return end - start; + }); + + // An optimized implementation for this simple case. + millisecond.every = function(k) { + k = Math.floor(k); + if (!isFinite(k) || !(k > 0)) return null; + if (!(k > 1)) return millisecond; + return newInterval(function(date) { + date.setTime(Math.floor(date / k) * k); + }, function(date, step) { + date.setTime(+date + step * k); + }, function(start, end) { + return (end - start) / k; + }); + }; + + var durationSecond = 1e3; + var durationMinute = 6e4; + var durationHour = 36e5; + var durationDay = 864e5; + var durationWeek = 6048e5; + + var second = newInterval(function(date) { + date.setTime(date - date.getMilliseconds()); + }, function(date, step) { + date.setTime(+date + step * durationSecond); + }, function(start, end) { + return (end - start) / durationSecond; + }, function(date) { + return date.getUTCSeconds(); + }); + + var minute = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); + }, function(date, step) { + date.setTime(+date + step * durationMinute); + }, function(start, end) { + return (end - start) / durationMinute; + }, function(date) { + return date.getMinutes(); + }); + + var hour = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); + }, function(date, step) { + date.setTime(+date + step * durationHour); + }, function(start, end) { + return (end - start) / durationHour; + }, function(date) { + return date.getHours(); + }); + + var day = newInterval(function(date) { + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; + }, function(date) { + return date.getDate() - 1; + }); + + function weekday(i) { + return newInterval(function(date) { + date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step * 7); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; + }); + } + + var sunday = weekday(0); + var monday = weekday(1); + var tuesday = weekday(2); + var wednesday = weekday(3); + var thursday = weekday(4); + var friday = weekday(5); + var saturday = weekday(6); + + var month = newInterval(function(date) { + date.setDate(1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setMonth(date.getMonth() + step); + }, function(start, end) { + return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; + }, function(date) { + return date.getMonth(); + }); + + var year = newInterval(function(date) { + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step); + }, function(start, end) { + return end.getFullYear() - start.getFullYear(); + }, function(date) { + return date.getFullYear(); + }); + + // An optimized implementation for this simple case. + year.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setFullYear(Math.floor(date.getFullYear() / k) * k); + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step * k); + }); + }; + + var utcMinute = newInterval(function(date) { + date.setUTCSeconds(0, 0); + }, function(date, step) { + date.setTime(+date + step * durationMinute); + }, function(start, end) { + return (end - start) / durationMinute; + }, function(date) { + return date.getUTCMinutes(); + }); + + var utcHour = newInterval(function(date) { + date.setUTCMinutes(0, 0, 0); + }, function(date, step) { + date.setTime(+date + step * durationHour); + }, function(start, end) { + return (end - start) / durationHour; + }, function(date) { + return date.getUTCHours(); + }); + + var utcDay = newInterval(function(date) { + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step); + }, function(start, end) { + return (end - start) / durationDay; + }, function(date) { + return date.getUTCDate() - 1; + }); + + function utcWeekday(i) { + return newInterval(function(date) { + date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step * 7); + }, function(start, end) { + return (end - start) / durationWeek; + }); + } + + var utcSunday = utcWeekday(0); + var utcMonday = utcWeekday(1); + var utcTuesday = utcWeekday(2); + var utcWednesday = utcWeekday(3); + var utcThursday = utcWeekday(4); + var utcFriday = utcWeekday(5); + var utcSaturday = utcWeekday(6); + + var utcMonth = newInterval(function(date) { + date.setUTCDate(1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCMonth(date.getUTCMonth() + step); + }, function(start, end) { + return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; + }, function(date) { + return date.getUTCMonth(); + }); + + var utcYear = newInterval(function(date) { + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step); + }, function(start, end) { + return end.getUTCFullYear() - start.getUTCFullYear(); + }, function(date) { + return date.getUTCFullYear(); + }); + + // An optimized implementation for this simple case. + utcYear.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step * k); + }); + }; + + function localDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); + date.setFullYear(d.y); + return date; + } + return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); + } + + function utcDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); + date.setUTCFullYear(d.y); + return date; + } + return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); + } + + function newYear(y) { + return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0}; + } + + function formatLocale$1(locale) { + var locale_dateTime = locale.dateTime, + locale_date = locale.date, + locale_time = locale.time, + locale_periods = locale.periods, + locale_weekdays = locale.days, + locale_shortWeekdays = locale.shortDays, + locale_months = locale.months, + locale_shortMonths = locale.shortMonths; + + var periodRe = formatRe(locale_periods), + periodLookup = formatLookup(locale_periods), + weekdayRe = formatRe(locale_weekdays), + weekdayLookup = formatLookup(locale_weekdays), + shortWeekdayRe = formatRe(locale_shortWeekdays), + shortWeekdayLookup = formatLookup(locale_shortWeekdays), + monthRe = formatRe(locale_months), + monthLookup = formatLookup(locale_months), + shortMonthRe = formatRe(locale_shortMonths), + shortMonthLookup = formatLookup(locale_shortMonths); + + var formats = { + "a": formatShortWeekday, + "A": formatWeekday, + "b": formatShortMonth, + "B": formatMonth, + "c": null, + "d": formatDayOfMonth, + "e": formatDayOfMonth, + "f": formatMicroseconds, + "H": formatHour24, + "I": formatHour12, + "j": formatDayOfYear, + "L": formatMilliseconds, + "m": formatMonthNumber, + "M": formatMinutes, + "p": formatPeriod, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatSeconds, + "u": formatWeekdayNumberMonday, + "U": formatWeekNumberSunday, + "V": formatWeekNumberISO, + "w": formatWeekdayNumberSunday, + "W": formatWeekNumberMonday, + "x": null, + "X": null, + "y": formatYear, + "Y": formatFullYear, + "Z": formatZone, + "%": formatLiteralPercent + }; + + var utcFormats = { + "a": formatUTCShortWeekday, + "A": formatUTCWeekday, + "b": formatUTCShortMonth, + "B": formatUTCMonth, + "c": null, + "d": formatUTCDayOfMonth, + "e": formatUTCDayOfMonth, + "f": formatUTCMicroseconds, + "H": formatUTCHour24, + "I": formatUTCHour12, + "j": formatUTCDayOfYear, + "L": formatUTCMilliseconds, + "m": formatUTCMonthNumber, + "M": formatUTCMinutes, + "p": formatUTCPeriod, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatUTCSeconds, + "u": formatUTCWeekdayNumberMonday, + "U": formatUTCWeekNumberSunday, + "V": formatUTCWeekNumberISO, + "w": formatUTCWeekdayNumberSunday, + "W": formatUTCWeekNumberMonday, + "x": null, + "X": null, + "y": formatUTCYear, + "Y": formatUTCFullYear, + "Z": formatUTCZone, + "%": formatLiteralPercent + }; + + var parses = { + "a": parseShortWeekday, + "A": parseWeekday, + "b": parseShortMonth, + "B": parseMonth, + "c": parseLocaleDateTime, + "d": parseDayOfMonth, + "e": parseDayOfMonth, + "f": parseMicroseconds, + "H": parseHour24, + "I": parseHour24, + "j": parseDayOfYear, + "L": parseMilliseconds, + "m": parseMonthNumber, + "M": parseMinutes, + "p": parsePeriod, + "Q": parseUnixTimestamp, + "s": parseUnixTimestampSeconds, + "S": parseSeconds, + "u": parseWeekdayNumberMonday, + "U": parseWeekNumberSunday, + "V": parseWeekNumberISO, + "w": parseWeekdayNumberSunday, + "W": parseWeekNumberMonday, + "x": parseLocaleDate, + "X": parseLocaleTime, + "y": parseYear, + "Y": parseFullYear, + "Z": parseZone, + "%": parseLiteralPercent + }; + + // These recursive directive definitions must be deferred. + formats.x = newFormat(locale_date, formats); + formats.X = newFormat(locale_time, formats); + formats.c = newFormat(locale_dateTime, formats); + utcFormats.x = newFormat(locale_date, utcFormats); + utcFormats.X = newFormat(locale_time, utcFormats); + utcFormats.c = newFormat(locale_dateTime, utcFormats); + + function newFormat(specifier, formats) { + return function(date) { + var string = [], + i = -1, + j = 0, + n = specifier.length, + c, + pad, + format; + + if (!(date instanceof Date)) date = new Date(+date); + + while (++i < n) { + if (specifier.charCodeAt(i) === 37) { + string.push(specifier.slice(j, i)); + if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); + else pad = c === "e" ? " " : "0"; + if (format = formats[c]) c = format(date, pad); + string.push(c); + j = i + 1; + } + } + + string.push(specifier.slice(j, i)); + return string.join(""); + }; + } + + function newParse(specifier, newDate) { + return function(string) { + var d = newYear(1900), + i = parseSpecifier(d, specifier, string += "", 0), + week, day$1; + if (i != string.length) return null; + + // If a UNIX timestamp is specified, return it. + if ("Q" in d) return new Date(d.Q); + + // The am-pm flag is 0 for AM, and 1 for PM. + if ("p" in d) d.H = d.H % 12 + d.p * 12; + + // Convert day-of-week and week-of-year to day-of-year. + if ("V" in d) { + if (d.V < 1 || d.V > 53) return null; + if (!("w" in d)) d.w = 1; + if ("Z" in d) { + week = utcDate(newYear(d.y)), day$1 = week.getUTCDay(); + week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week); + week = utcDay.offset(week, (d.V - 1) * 7); + d.y = week.getUTCFullYear(); + d.m = week.getUTCMonth(); + d.d = week.getUTCDate() + (d.w + 6) % 7; + } else { + week = newDate(newYear(d.y)), day$1 = week.getDay(); + week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week); + week = day.offset(week, (d.V - 1) * 7); + d.y = week.getFullYear(); + d.m = week.getMonth(); + d.d = week.getDate() + (d.w + 6) % 7; + } + } else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; + day$1 = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay(); + d.m = 0; + d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7; + } + + // If a time zone is specified, all fields are interpreted as UTC and then + // offset according to the specified time zone. + if ("Z" in d) { + d.H += d.Z / 100 | 0; + d.M += d.Z % 100; + return utcDate(d); + } + + // Otherwise, all fields are in local time. + return newDate(d); + }; + } + + function parseSpecifier(d, specifier, string, j) { + var i = 0, + n = specifier.length, + m = string.length, + c, + parse; + + while (i < n) { + if (j >= m) return -1; + c = specifier.charCodeAt(i++); + if (c === 37) { + c = specifier.charAt(i++); + parse = parses[c in pads ? specifier.charAt(i++) : c]; + if (!parse || ((j = parse(d, string, j)) < 0)) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + + return j; + } + + function parsePeriod(d, string, i) { + var n = periodRe.exec(string.slice(i)); + return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortWeekday(d, string, i) { + var n = shortWeekdayRe.exec(string.slice(i)); + return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseWeekday(d, string, i) { + var n = weekdayRe.exec(string.slice(i)); + return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortMonth(d, string, i) { + var n = shortMonthRe.exec(string.slice(i)); + return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseMonth(d, string, i) { + var n = monthRe.exec(string.slice(i)); + return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseLocaleDateTime(d, string, i) { + return parseSpecifier(d, locale_dateTime, string, i); + } + + function parseLocaleDate(d, string, i) { + return parseSpecifier(d, locale_date, string, i); + } + + function parseLocaleTime(d, string, i) { + return parseSpecifier(d, locale_time, string, i); + } + + function formatShortWeekday(d) { + return locale_shortWeekdays[d.getDay()]; + } + + function formatWeekday(d) { + return locale_weekdays[d.getDay()]; + } + + function formatShortMonth(d) { + return locale_shortMonths[d.getMonth()]; + } + + function formatMonth(d) { + return locale_months[d.getMonth()]; + } + + function formatPeriod(d) { + return locale_periods[+(d.getHours() >= 12)]; + } + + function formatUTCShortWeekday(d) { + return locale_shortWeekdays[d.getUTCDay()]; + } + + function formatUTCWeekday(d) { + return locale_weekdays[d.getUTCDay()]; + } + + function formatUTCShortMonth(d) { + return locale_shortMonths[d.getUTCMonth()]; + } + + function formatUTCMonth(d) { + return locale_months[d.getUTCMonth()]; + } + + function formatUTCPeriod(d) { + return locale_periods[+(d.getUTCHours() >= 12)]; + } + + return { + format: function(specifier) { + var f = newFormat(specifier += "", formats); + f.toString = function() { return specifier; }; + return f; + }, + parse: function(specifier) { + var p = newParse(specifier += "", localDate); + p.toString = function() { return specifier; }; + return p; + }, + utcFormat: function(specifier) { + var f = newFormat(specifier += "", utcFormats); + f.toString = function() { return specifier; }; + return f; + }, + utcParse: function(specifier) { + var p = newParse(specifier, utcDate); + p.toString = function() { return specifier; }; + return p; + } + }; + } + + var pads = {"-": "", "_": " ", "0": "0"}, + numberRe = /^\s*\d+/, // note: ignores next directive + percentRe = /^%/, + requoteRe = /[\\^$*+?|[\]().{}]/g; + + function pad(value, fill, width) { + var sign = value < 0 ? "-" : "", + string = (sign ? -value : value) + "", + length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); + } + + function requote(s) { + return s.replace(requoteRe, "\\$&"); + } + + function formatRe(names) { + return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); + } + + function formatLookup(names) { + var map = {}, i = -1, n = names.length; + while (++i < n) map[names[i].toLowerCase()] = i; + return map; + } + + function parseWeekdayNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.w = +n[0], i + n[0].length) : -1; + } + + function parseWeekdayNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.u = +n[0], i + n[0].length) : -1; + } + + function parseWeekNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.U = +n[0], i + n[0].length) : -1; + } + + function parseWeekNumberISO(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.V = +n[0], i + n[0].length) : -1; + } + + function parseWeekNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.W = +n[0], i + n[0].length) : -1; + } + + function parseFullYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 4)); + return n ? (d.y = +n[0], i + n[0].length) : -1; + } + + function parseYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; + } + + function parseZone(d, string, i) { + var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); + return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; + } + + function parseMonthNumber(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.m = n[0] - 1, i + n[0].length) : -1; + } + + function parseDayOfMonth(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.d = +n[0], i + n[0].length) : -1; + } + + function parseDayOfYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; + } + + function parseHour24(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.H = +n[0], i + n[0].length) : -1; + } + + function parseMinutes(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.M = +n[0], i + n[0].length) : -1; + } + + function parseSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.S = +n[0], i + n[0].length) : -1; + } + + function parseMilliseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.L = +n[0], i + n[0].length) : -1; + } + + function parseMicroseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 6)); + return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; + } + + function parseLiteralPercent(d, string, i) { + var n = percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; + } + + function parseUnixTimestamp(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = +n[0], i + n[0].length) : -1; + } + + function parseUnixTimestampSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1; + } + + function formatDayOfMonth(d, p) { + return pad(d.getDate(), p, 2); + } + + function formatHour24(d, p) { + return pad(d.getHours(), p, 2); + } + + function formatHour12(d, p) { + return pad(d.getHours() % 12 || 12, p, 2); + } + + function formatDayOfYear(d, p) { + return pad(1 + day.count(year(d), d), p, 3); + } + + function formatMilliseconds(d, p) { + return pad(d.getMilliseconds(), p, 3); + } + + function formatMicroseconds(d, p) { + return formatMilliseconds(d, p) + "000"; + } + + function formatMonthNumber(d, p) { + return pad(d.getMonth() + 1, p, 2); + } + + function formatMinutes(d, p) { + return pad(d.getMinutes(), p, 2); + } + + function formatSeconds(d, p) { + return pad(d.getSeconds(), p, 2); + } + + function formatWeekdayNumberMonday(d) { + var day = d.getDay(); + return day === 0 ? 7 : day; + } + + function formatWeekNumberSunday(d, p) { + return pad(sunday.count(year(d), d), p, 2); + } + + function formatWeekNumberISO(d, p) { + var day = d.getDay(); + d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d); + return pad(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2); + } + + function formatWeekdayNumberSunday(d) { + return d.getDay(); + } + + function formatWeekNumberMonday(d, p) { + return pad(monday.count(year(d), d), p, 2); + } + + function formatYear(d, p) { + return pad(d.getFullYear() % 100, p, 2); + } + + function formatFullYear(d, p) { + return pad(d.getFullYear() % 10000, p, 4); + } + + function formatZone(d) { + var z = d.getTimezoneOffset(); + return (z > 0 ? "-" : (z *= -1, "+")) + + pad(z / 60 | 0, "0", 2) + + pad(z % 60, "0", 2); + } + + function formatUTCDayOfMonth(d, p) { + return pad(d.getUTCDate(), p, 2); + } + + function formatUTCHour24(d, p) { + return pad(d.getUTCHours(), p, 2); + } + + function formatUTCHour12(d, p) { + return pad(d.getUTCHours() % 12 || 12, p, 2); + } + + function formatUTCDayOfYear(d, p) { + return pad(1 + utcDay.count(utcYear(d), d), p, 3); + } + + function formatUTCMilliseconds(d, p) { + return pad(d.getUTCMilliseconds(), p, 3); + } + + function formatUTCMicroseconds(d, p) { + return formatUTCMilliseconds(d, p) + "000"; + } + + function formatUTCMonthNumber(d, p) { + return pad(d.getUTCMonth() + 1, p, 2); + } + + function formatUTCMinutes(d, p) { + return pad(d.getUTCMinutes(), p, 2); + } + + function formatUTCSeconds(d, p) { + return pad(d.getUTCSeconds(), p, 2); + } + + function formatUTCWeekdayNumberMonday(d) { + var dow = d.getUTCDay(); + return dow === 0 ? 7 : dow; + } + + function formatUTCWeekNumberSunday(d, p) { + return pad(utcSunday.count(utcYear(d), d), p, 2); + } + + function formatUTCWeekNumberISO(d, p) { + var day = d.getUTCDay(); + d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); + return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); + } + + function formatUTCWeekdayNumberSunday(d) { + return d.getUTCDay(); + } + + function formatUTCWeekNumberMonday(d, p) { + return pad(utcMonday.count(utcYear(d), d), p, 2); + } + + function formatUTCYear(d, p) { + return pad(d.getUTCFullYear() % 100, p, 2); + } + + function formatUTCFullYear(d, p) { + return pad(d.getUTCFullYear() % 10000, p, 4); + } + + function formatUTCZone() { + return "+0000"; + } + + function formatLiteralPercent() { + return "%"; + } + + function formatUnixTimestamp(d) { + return +d; + } + + function formatUnixTimestampSeconds(d) { + return Math.floor(+d / 1000); + } + + var locale$1; + var timeFormat; + var timeParse; + var utcFormat; + var utcParse; + + defaultLocale$1({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + }); + + function defaultLocale$1(definition) { + locale$1 = formatLocale$1(definition); + timeFormat = locale$1.format; + timeParse = locale$1.parse; + utcFormat = locale$1.utcFormat; + utcParse = locale$1.utcParse; + return locale$1; + } + + var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; + + function formatIsoNative(date) { + return date.toISOString(); + } + + var formatIso = Date.prototype.toISOString + ? formatIsoNative + : utcFormat(isoSpecifier); + + function parseIsoNative(string) { + var date = new Date(string); + return isNaN(date) ? null : date; + } + + var parseIso = +new Date("2000-01-01T00:00:00.000Z") + ? parseIsoNative + : utcParse(isoSpecifier); + + var pi = Math.PI, + tau = 2 * pi, + epsilon = 1e-6, + tauEpsilon = tau - epsilon; + + function Path() { + this._x0 = this._y0 = // start of current subpath + this._x1 = this._y1 = null; // end of current subpath + this._ = ""; + } + + function path() { + return new Path; + } + + Path.prototype = path.prototype = { + constructor: Path, + moveTo: function(x, y) { + this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); + }, + closePath: function() { + if (this._x1 !== null) { + this._x1 = this._x0, this._y1 = this._y0; + this._ += "Z"; + } + }, + lineTo: function(x, y) { + this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); + }, + quadraticCurveTo: function(x1, y1, x, y) { + this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); + }, + bezierCurveTo: function(x1, y1, x2, y2, x, y) { + this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); + }, + arcTo: function(x1, y1, x2, y2, r) { + x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; + var x0 = this._x1, + y0 = this._y1, + x21 = x2 - x1, + y21 = y2 - y1, + x01 = x0 - x1, + y01 = y0 - y1, + l01_2 = x01 * x01 + y01 * y01; + + // Is the radius negative? Error. + if (r < 0) throw new Error("negative radius: " + r); + + // Is this path empty? Move to (x1,y1). + if (this._x1 === null) { + this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); + } + + // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. + else if (!(l01_2 > epsilon)); + + // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? + // Equivalently, is (x1,y1) coincident with (x2,y2)? + // Or, is the radius zero? Line to (x1,y1). + else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) { + this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); + } + + // Otherwise, draw an arc! + else { + var x20 = x2 - x0, + y20 = y2 - y0, + l21_2 = x21 * x21 + y21 * y21, + l20_2 = x20 * x20 + y20 * y20, + l21 = Math.sqrt(l21_2), + l01 = Math.sqrt(l01_2), + l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), + t01 = l / l01, + t21 = l / l21; + + // If the start tangent is not coincident with (x0,y0), line to. + if (Math.abs(t01 - 1) > epsilon) { + this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); + } + + this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); + } + }, + arc: function(x, y, r, a0, a1, ccw) { + x = +x, y = +y, r = +r; + var dx = r * Math.cos(a0), + dy = r * Math.sin(a0), + x0 = x + dx, + y0 = y + dy, + cw = 1 ^ ccw, + da = ccw ? a0 - a1 : a1 - a0; + + // Is the radius negative? Error. + if (r < 0) throw new Error("negative radius: " + r); + + // Is this path empty? Move to (x0,y0). + if (this._x1 === null) { + this._ += "M" + x0 + "," + y0; + } + + // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). + else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) { + this._ += "L" + x0 + "," + y0; + } + + // Is this arc empty? We’re done. + if (!r) return; + + // Does the angle go the wrong way? Flip the direction. + if (da < 0) da = da % tau + tau; + + // Is this a complete circle? Draw two arcs to complete the circle. + if (da > tauEpsilon) { + this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); + } + + // Is this arc non-empty? Draw an arc! + else if (da > epsilon) { + this._ += "A" + r + "," + r + ",0," + (+(da >= pi)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); + } + }, + rect: function(x, y, w, h) { + this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; + }, + toString: function() { + return this._; + } + }; + + function constant$2(x) { + return function constant() { + return x; + }; + } + + var pi$1 = Math.PI; + + function Linear(context) { + this._context = context; + } + + Linear.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; // proceed + default: this._context.lineTo(x, y); break; + } + } + }; + + function curveLinear(context) { + return new Linear(context); + } + + function x(p) { + return p[0]; + } + + function y(p) { + return p[1]; + } + + function line() { + var x$1 = x, + y$1 = y, + defined = constant$2(true), + context = null, + curve = curveLinear, + output = null; + + function line(data) { + var i, + n = data.length, + d, + defined0 = false, + buffer; + + if (context == null) output = curve(buffer = path()); + + for (i = 0; i <= n; ++i) { + if (!(i < n && defined(d = data[i], i, data)) === defined0) { + if (defined0 = !defined0) output.lineStart(); + else output.lineEnd(); + } + if (defined0) output.point(+x$1(d, i, data), +y$1(d, i, data)); + } + + if (buffer) return output = null, buffer + "" || null; + } + + line.x = function(_) { + return arguments.length ? (x$1 = typeof _ === "function" ? _ : constant$2(+_), line) : x$1; + }; + + line.y = function(_) { + return arguments.length ? (y$1 = typeof _ === "function" ? _ : constant$2(+_), line) : y$1; + }; + + line.defined = function(_) { + return arguments.length ? (defined = typeof _ === "function" ? _ : constant$2(!!_), line) : defined; + }; + + line.curve = function(_) { + return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; + }; + + line.context = function(_) { + return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; + }; + + return line; + } + + function sign(x) { + return x < 0 ? -1 : 1; + } + + // Calculate the slopes of the tangents (Hermite-type interpolation) based on + // the following paper: Steffen, M. 1990. A Simple Method for Monotonic + // Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. + // NOV(II), P. 443, 1990. + function slope3(that, x2, y2) { + var h0 = that._x1 - that._x0, + h1 = x2 - that._x1, + s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), + s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), + p = (s0 * h1 + s1 * h0) / (h0 + h1); + return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; + } + + // Calculate a one-sided slope. + function slope2(that, t) { + var h = that._x1 - that._x0; + return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; + } + + // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations + // "you can express cubic Hermite interpolation in terms of cubic Bézier curves + // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". + function point(that, t0, t1) { + var x0 = that._x0, + y0 = that._y0, + x1 = that._x1, + y1 = that._y1, + dx = (x1 - x0) / 3; + that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); + } + + function MonotoneX(context) { + this._context = context; + } + + MonotoneX.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = + this._y0 = this._y1 = + this._t0 = NaN; + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: this._context.lineTo(this._x1, this._y1); break; + case 3: point(this, this._t0, slope2(this, this._t0)); break; + } + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + var t1 = NaN; + + x = +x, y = +y; + if (x === this._x1 && y === this._y1) return; // Ignore coincident points. + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; break; + case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break; + default: point(this, this._t0, t1 = slope3(this, x, y)); break; + } + + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + this._t0 = t1; + } + }; + + function MonotoneY(context) { + this._context = new ReflectContext(context); + } + + (MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { + MonotoneX.prototype.point.call(this, y, x); + }; + + function ReflectContext(context) { + this._context = context; + } + + ReflectContext.prototype = { + moveTo: function(x, y) { this._context.moveTo(y, x); }, + closePath: function() { this._context.closePath(); }, + lineTo: function(x, y) { this._context.lineTo(y, x); }, + bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } + }; + + function Step(context, t) { + this._context = context; + this._t = t; + } + + Step.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x = this._y = NaN; + this._point = 0; + }, + lineEnd: function() { + if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; // proceed + default: { + if (this._t <= 0) { + this._context.lineTo(this._x, y); + this._context.lineTo(x, y); + } else { + var x1 = this._x * (1 - this._t) + x * this._t; + this._context.lineTo(x1, this._y); + this._context.lineTo(x1, y); + } + break; + } + } + this._x = x, this._y = y; + } + }; + + function stepAfter(context) { + return new Step(context, 1); + } + + /* src\StepChart.svelte generated by Svelte v3.5.3 */ + + const file$6 = "src\\StepChart.svelte"; + + function get_each_context$3(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.y = list[i]; + return child_ctx; + } + + // (86:8) {#if values.length} + function create_if_block$3(ctx) { + var line_1, line_1_x__value, line_1_x__value_1, line_1_y__value, line_1_y__value_1, path_1; + + var each_value = ctx.yScale.ticks(6); + + var each_blocks = []; + + for (var i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i)); + } + + return { + c: function create() { + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + line_1 = svg_element("line"); + path_1 = svg_element("path"); + attr(line_1, "class", "direct svelte-1cvjt29"); + attr(line_1, "x1", line_1_x__value = ctx.padding.left); + attr(line_1, "x2", line_1_x__value_1 = ctx.width-ctx.padding.right); + attr(line_1, "y1", line_1_y__value = ctx.yScale(ctx.values[0])); + attr(line_1, "y2", line_1_y__value_1 = ctx.yScale(ctx.values[ctx.values.length-1])); + add_location(line_1, file$6, 90, 12, 2254); + attr(path_1, "d", ctx.path); + attr(path_1, "class", "svelte-1cvjt29"); + add_location(path_1, file$6, 96, 12, 2487); + }, + + m: function mount(target, anchor) { + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } + + insert(target, line_1, anchor); + insert(target, path_1, anchor); + }, + + p: function update(changed, ctx) { + if (changed.padding || changed.width || changed.yScale) { + each_value = ctx.yScale.ticks(6); + + for (var i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$3(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(changed, child_ctx); + } else { + each_blocks[i] = create_each_block$3(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(line_1.parentNode, line_1); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + + if ((changed.width) && line_1_x__value_1 !== (line_1_x__value_1 = ctx.width-ctx.padding.right)) { + attr(line_1, "x2", line_1_x__value_1); + } + + if ((changed.yScale || changed.values) && line_1_y__value !== (line_1_y__value = ctx.yScale(ctx.values[0]))) { + attr(line_1, "y1", line_1_y__value); + } + + if ((changed.yScale || changed.values) && line_1_y__value_1 !== (line_1_y__value_1 = ctx.yScale(ctx.values[ctx.values.length-1]))) { + attr(line_1, "y2", line_1_y__value_1); + } + + if (changed.path) { + attr(path_1, "d", ctx.path); + } + }, + + d: function destroy(detaching) { + destroy_each(each_blocks, detaching); + + if (detaching) { + detach(line_1); + detach(path_1); + } + } + }; + } + + // (87:12) {#each yScale.ticks(6) as y} + function create_each_block$3(ctx) { + var text_1, t_value = ctx.y, t, text_1_x_value, text_1_y_value, line_1, line_1_x__value, line_1_x__value_1, line_1_transform_value; + + return { + c: function create() { + text_1 = svg_element("text"); + t = text(t_value); + line_1 = svg_element("line"); + attr(text_1, "x", text_1_x_value = ctx.padding.left-5); + attr(text_1, "y", text_1_y_value = ctx.yScale(ctx.y)); + attr(text_1, "class", "svelte-1cvjt29"); + add_location(text_1, file$6, 87, 12, 2060); + attr(line_1, "x1", line_1_x__value = ctx.padding.left); + attr(line_1, "x2", line_1_x__value_1 = ctx.width-ctx.padding.right); + attr(line_1, "transform", line_1_transform_value = "translate(0," + ctx.yScale(ctx.y) + ")"); + attr(line_1, "class", "svelte-1cvjt29"); + add_location(line_1, file$6, 88, 12, 2127); + }, + + m: function mount(target, anchor) { + insert(target, text_1, anchor); + append(text_1, t); + insert(target, line_1, anchor); + }, + + p: function update(changed, ctx) { + if ((changed.yScale) && t_value !== (t_value = ctx.y)) { + set_data(t, t_value); + } + + if ((changed.yScale) && text_1_y_value !== (text_1_y_value = ctx.yScale(ctx.y))) { + attr(text_1, "y", text_1_y_value); + } + + if ((changed.width) && line_1_x__value_1 !== (line_1_x__value_1 = ctx.width-ctx.padding.right)) { + attr(line_1, "x2", line_1_x__value_1); + } + + if ((changed.yScale) && line_1_transform_value !== (line_1_transform_value = "translate(0," + ctx.yScale(ctx.y) + ")")) { + attr(line_1, "transform", line_1_transform_value); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(text_1); + detach(line_1); + } + } + }; + } + + function create_fragment$6(ctx) { + var div_1, h4, t0, t1, svg, svg_height_value, div_1_resize_listener; + + var if_block = (ctx.values.length) && create_if_block$3(ctx); + + return { + c: function create() { + div_1 = element("div"); + h4 = element("h4"); + t0 = text(ctx.title); + t1 = space(); + svg = svg_element("svg"); + if (if_block) if_block.c(); + attr(h4, "class", "svelte-1cvjt29"); + add_location(h4, file$6, 83, 4, 1926); + attr(svg, "height", svg_height_value = ctx.height || 50); + attr(svg, "class", "svelte-1cvjt29"); + add_location(svg, file$6, 84, 4, 1948); + add_render_callback(() => ctx.div_1_resize_handler.call(div_1)); + set_style(div_1, "margin-top", "1em"); + add_location(div_1, file$6, 82, 0, 1866); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div_1, anchor); + append(div_1, h4); + append(h4, t0); + append(div_1, t1); + append(div_1, svg); + if (if_block) if_block.m(svg, null); + div_1_resize_listener = add_resize_listener(div_1, ctx.div_1_resize_handler.bind(div_1)); + }, + + p: function update(changed, ctx) { + if (changed.title) { + set_data(t0, ctx.title); + } + + if (ctx.values.length) { + if (if_block) { + if_block.p(changed, ctx); + } else { + if_block = create_if_block$3(ctx); + if_block.c(); + if_block.m(svg, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + + if ((changed.height) && svg_height_value !== (svg_height_value = ctx.height || 50)) { + attr(svg, "height", svg_height_value); + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(div_1); + } + + if (if_block) if_block.d(); + div_1_resize_listener.cancel(); + } + }; + } + + function instance$6($$self, $$props, $$invalidate) { + let width; + let { title = '' } = $$props; + + const padding = { + left: 30, + right: 10, + top: 20, + bottom: 20 + }; + + let { steps = [], mode = 0 } = $$props; + let yDomain; + + const writable_props = ['title', 'steps', 'mode']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + function div_1_resize_handler() { + width = this.clientWidth; + $$invalidate('width', width); + } + + $$self.$set = $$props => { + if ('title' in $$props) $$invalidate('title', title = $$props.title); + if ('steps' in $$props) $$invalidate('steps', steps = $$props.steps); + if ('mode' in $$props) $$invalidate('mode', mode = $$props.mode); + }; + + let height, values, values2, xScale, minDomain, yScale, y0, y1, lineGen, path; + + $$self.$$.update = ($$dirty = { width: 1, steps: 1, mode: 1, values: 1, yDomain: 1, minDomain: 1, height: 1, yScale: 1, xScale: 1, lineGen: 1, values2: 1 }) => { + if ($$dirty.width) { $$invalidate('height', height = width * 0.7); } + if ($$dirty.steps || $$dirty.mode) { $$invalidate('values', values = steps.map(c => chroma(c).lch()[mode]).map(mode === 2 ? h=>h: d=>d)); } + if ($$dirty.values) { $$invalidate('values2', values2 = values.concat(values[values.length-1])); } + if ($$dirty.steps || $$dirty.width) { $$invalidate('xScale', xScale = linear$1() + .domain([0, steps.length]) + .range([padding.left, width - padding.right])); } + if ($$dirty.mode) { $$invalidate('minDomain', minDomain = mode === 1 ? 80 : 50); } + if ($$dirty.values || $$dirty.yDomain || $$dirty.minDomain) { { + $$invalidate('yDomain', yDomain = extent(values)); + let diff = Math.abs(yDomain[1] - yDomain[0]); + if (diff < minDomain) { + yDomain[0] -= (minDomain-diff)*0.5; $$invalidate('yDomain', yDomain), $$invalidate('values', values), $$invalidate('minDomain', minDomain), $$invalidate('steps', steps), $$invalidate('mode', mode); + yDomain[1] += (minDomain-diff)*0.5; $$invalidate('yDomain', yDomain), $$invalidate('values', values), $$invalidate('minDomain', minDomain), $$invalidate('steps', steps), $$invalidate('mode', mode); + $$invalidate('yDomain', yDomain), $$invalidate('values', values), $$invalidate('minDomain', minDomain), $$invalidate('steps', steps), $$invalidate('mode', mode); + } + } } + if ($$dirty.yDomain || $$dirty.height) { $$invalidate('yScale', yScale = linear$1() + .domain(yDomain) + .nice() + .rangeRound([height - padding.bottom, padding.top])); } + if ($$dirty.yScale) { y0 = yScale.domain()[0]; } + if ($$dirty.yScale) { y1 = yScale.domain()[1]; } + if ($$dirty.xScale || $$dirty.yScale) { $$invalidate('lineGen', lineGen = line().x((v,i) => xScale(i)).y(yScale).curve(stepAfter)); } + if ($$dirty.lineGen || $$dirty.values2) { $$invalidate('path', path = lineGen(values2)); } + }; + + return { + width, + title, + padding, + steps, + mode, + height, + values, + yScale, + path, + div_1_resize_handler + }; + } + + class StepChart extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$6, create_fragment$6, safe_not_equal, ["title", "steps", "mode"]); + } + + get title() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set title(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get steps() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set steps(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get mode() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set mode(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src\Card.svelte generated by Svelte v3.5.3 */ + + const file$7 = "src\\Card.svelte"; + + // (27:25) {#if step} + function create_if_block$4(ctx) { + var span, t; + + return { + c: function create() { + span = element("span"); + t = text(ctx.step); + attr(span, "class", "step rounded-circle svelte-ruts6u"); + add_location(span, file$7, 26, 35, 556); + }, + + m: function mount(target, anchor) { + insert(target, span, anchor); + append(span, t); + }, + + p: function update(changed, ctx) { + if (changed.step) { + set_data(t, ctx.step); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(span); + } + } + }; + } + + function create_fragment$7(ctx) { + var div1, div0, h5, t0, t1, current; + + var if_block = (ctx.step) && create_if_block$4(ctx); + + const default_slot_1 = ctx.$$slots.default; + const default_slot = create_slot(default_slot_1, ctx, null); + + return { + c: function create() { + div1 = element("div"); + div0 = element("div"); + h5 = element("h5"); + if (if_block) if_block.c(); + t0 = text(ctx.title); + t1 = space(); + + if (default_slot) default_slot.c(); + attr(h5, "class", "card-title svelte-ruts6u"); + add_location(h5, file$7, 26, 2, 523); + + attr(div0, "class", "card-body svelte-ruts6u"); + add_location(div0, file$7, 25, 1, 496); + attr(div1, "class", "card shadow-sm svelte-ruts6u"); + toggle_class(div1, "rounded-0", ctx.noBorderTop); + toggle_class(div1, "border-top-0", ctx.noBorderTop); + add_location(div1, file$7, 24, 0, 402); + }, + + l: function claim(nodes) { + if (default_slot) default_slot.l(div0_nodes); + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + append(div0, h5); + if (if_block) if_block.m(h5, null); + append(h5, t0); + append(div0, t1); + + if (default_slot) { + default_slot.m(div0, null); + } + + current = true; + }, + + p: function update(changed, ctx) { + if (ctx.step) { + if (if_block) { + if_block.p(changed, ctx); + } else { + if_block = create_if_block$4(ctx); + if_block.c(); + if_block.m(h5, t0); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + + if (!current || changed.title) { + set_data(t0, ctx.title); + } + + if (default_slot && default_slot.p && changed.$$scope) { + default_slot.p(get_slot_changes(default_slot_1, ctx, changed, null), get_slot_context(default_slot_1, ctx, null)); + } + + if (changed.noBorderTop) { + toggle_class(div1, "rounded-0", ctx.noBorderTop); + toggle_class(div1, "border-top-0", ctx.noBorderTop); + } + }, + + i: function intro(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + + o: function outro(local) { + transition_out(default_slot, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div1); + } + + if (if_block) if_block.d(); + + if (default_slot) default_slot.d(detaching); + } + }; + } + + function instance$7($$self, $$props, $$invalidate) { + let { title = '', step = '', noBorderTop = false } = $$props; + + const writable_props = ['title', 'step', 'noBorderTop']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + let { $$slots = {}, $$scope } = $$props; + + $$self.$set = $$props => { + if ('title' in $$props) $$invalidate('title', title = $$props.title); + if ('step' in $$props) $$invalidate('step', step = $$props.step); + if ('noBorderTop' in $$props) $$invalidate('noBorderTop', noBorderTop = $$props.noBorderTop); + if ('$$scope' in $$props) $$invalidate('$$scope', $$scope = $$props.$$scope); + }; + + return { + title, + step, + noBorderTop, + $$slots, + $$scope + }; + } + + class Card extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$7, create_fragment$7, safe_not_equal, ["title", "step", "noBorderTop"]); + } + + get title() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set title(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get step() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set step(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get noBorderTop() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set noBorderTop(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* node_modules\fa-svelte\src\Icon.html generated by Svelte v3.5.3 */ + + const file$8 = "node_modules\\fa-svelte\\src\\Icon.html"; + + function create_fragment$8(ctx) { + var svg, path_1; + + return { + c: function create() { + svg = svg_element("svg"); + path_1 = svg_element("path"); + attr(path_1, "fill", "currentColor"); + attr(path_1, "d", ctx.path); + add_location(path_1, file$8, 7, 2, 129); + attr(svg, "aria-hidden", "true"); + attr(svg, "class", "" + ctx.classes + " svelte-p8vizn"); + attr(svg, "role", "img"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + attr(svg, "viewBox", ctx.viewBox); + add_location(svg, file$8, 0, 0, 0); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, svg, anchor); + append(svg, path_1); + }, + + p: function update(changed, ctx) { + if (changed.path) { + attr(path_1, "d", ctx.path); + } + + if (changed.classes) { + attr(svg, "class", "" + ctx.classes + " svelte-p8vizn"); + } + + if (changed.viewBox) { + attr(svg, "viewBox", ctx.viewBox); + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(svg); + } + } + }; + } + + function instance$8($$self, $$props, $$invalidate) { + let { icon } = $$props; + + let path = []; + let classes = ""; + let viewBox = ""; + + $$self.$set = $$new_props => { + $$invalidate('$$props', $$props = assign(assign({}, $$props), $$new_props)); + if ('icon' in $$props) $$invalidate('icon', icon = $$props.icon); + }; + + $$self.$$.update = ($$dirty = { icon: 1, $$props: 1 }) => { + if ($$dirty.icon) { $$invalidate('viewBox', viewBox = "0 0 " + icon.icon[0] + " " + icon.icon[1]); } + $$invalidate('classes', classes = "fa-svelte " + ($$props.class ? $$props.class : "")); + if ($$dirty.icon) { $$invalidate('path', path = icon.icon[4]); } + }; + + return { + icon, + path, + classes, + viewBox, + $$props: $$props = exclude_internal_props($$props) + }; + } + + class Icon extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$8, create_fragment$8, safe_not_equal, ["icon"]); + + const { ctx } = this.$$; + const props = options.props || {}; + if (ctx.icon === undefined && !('icon' in props)) { + console.warn(" was created without expected prop 'icon'"); + } + } + + get icon() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set icon(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + var faCheck = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports, '__esModule', { value: true }); + var prefix = 'fas'; + var iconName = 'check'; + var width = 512; + var height = 512; + var ligatures = []; + var unicode = 'f00c'; + var svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z'; + + exports.definition = { + prefix: prefix, + iconName: iconName, + icon: [ + width, + height, + ligatures, + unicode, + svgPathData + ]}; + + exports.faCheck = exports.definition; + exports.prefix = prefix; + exports.iconName = iconName; + exports.width = width; + exports.height = height; + exports.ligatures = ligatures; + exports.unicode = unicode; + exports.svgPathData = svgPathData; + }); + + unwrapExports(faCheck); + var faCheck_1 = faCheck.definition; + var faCheck_2 = faCheck.faCheck; + var faCheck_3 = faCheck.prefix; + var faCheck_4 = faCheck.iconName; + var faCheck_5 = faCheck.width; + var faCheck_6 = faCheck.height; + var faCheck_7 = faCheck.ligatures; + var faCheck_8 = faCheck.unicode; + var faCheck_9 = faCheck.svgPathData; + + var faExclamationTriangle = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports, '__esModule', { value: true }); + var prefix = 'fas'; + var iconName = 'exclamation-triangle'; + var width = 576; + var height = 512; + var ligatures = []; + var unicode = 'f071'; + var svgPathData = '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'; + + exports.definition = { + prefix: prefix, + iconName: iconName, + icon: [ + width, + height, + ligatures, + unicode, + svgPathData + ]}; + + exports.faExclamationTriangle = exports.definition; + exports.prefix = prefix; + exports.iconName = iconName; + exports.width = width; + exports.height = height; + exports.ligatures = ligatures; + exports.unicode = unicode; + exports.svgPathData = svgPathData; + }); + + unwrapExports(faExclamationTriangle); + var faExclamationTriangle_1 = faExclamationTriangle.definition; + var faExclamationTriangle_2 = faExclamationTriangle.faExclamationTriangle; + var faExclamationTriangle_3 = faExclamationTriangle.prefix; + var faExclamationTriangle_4 = faExclamationTriangle.iconName; + var faExclamationTriangle_5 = faExclamationTriangle.width; + var faExclamationTriangle_6 = faExclamationTriangle.height; + var faExclamationTriangle_7 = faExclamationTriangle.ligatures; + var faExclamationTriangle_8 = faExclamationTriangle.unicode; + var faExclamationTriangle_9 = faExclamationTriangle.svgPathData; + + /* src\ColorBlindCheck.svelte generated by Svelte v3.5.3 */ + + const file$9 = "src\\ColorBlindCheck.svelte"; + + function get_each_context$4(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.type = list[i]; + return child_ctx; + } + + // (46:4) {:else} + function create_else_block(ctx) { + var p, t, current; + + var icon = new Icon({ + props: { icon: faCheck_2 }, + $$inline: true + }); + + return { + c: function create() { + p = element("p"); + icon.$$.fragment.c(); + t = text(" This palette is colorblind-safe."); + attr(p, "class", "res text-secondary svelte-ylsdbc"); + add_location(p, file$9, 46, 4, 1072); + }, + + m: function mount(target, anchor) { + insert(target, p, anchor); + mount_component(icon, p, null); + append(p, t); + current = true; + }, + + p: function update(changed, ctx) { + var icon_changes = {}; + if (changed.faCheck) icon_changes.icon = faCheck_2; + icon.$set(icon_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(icon.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(p); + } + + destroy_component(icon, ); + } + }; + } + + // (44:4) {#if result.length} + function create_if_block$5(ctx) { + var p, t, current; + + var icon = new Icon({ + props: { icon: faExclamationTriangle_2 }, + $$inline: true + }); + + return { + c: function create() { + p = element("p"); + icon.$$.fragment.c(); + t = text(" This palette is not colorblind-safe."); + attr(p, "class", "res text-danger svelte-ylsdbc"); + add_location(p, file$9, 44, 4, 948); + }, + + m: function mount(target, anchor) { + insert(target, p, anchor); + mount_component(icon, p, null); + append(p, t); + current = true; + }, + + p: function update(changed, ctx) { + var icon_changes = {}; + if (changed.faExclamationTriangle) icon_changes.icon = faExclamationTriangle_2; + icon.$set(icon_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(icon.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(p); + } + + destroy_component(icon, ); + } + }; + } + + // (52:12) {#each types as type} + function create_each_block$4(ctx) { + var label, input, input_value_value, input_checked_value, t0_value = ctx.type === 'none' ? 'normal' : ctx.type.substr(0,4)+'.', t0, t1, dispose; + + return { + c: function create() { + label = element("label"); + input = element("input"); + t0 = text(t0_value); + t1 = space(); + ctx.$$binding_groups[0].push(input); + input.__value = input_value_value = ctx.type; + input.value = input.__value; + attr(input, "type", "radio"); + attr(input, "name", "options"); + attr(input, "id", "option1"); + attr(input, "autocomplete", "off"); + input.checked = input_checked_value = ctx.active===ctx.type; + add_location(input, file$9, 55, 16, 1549); + attr(label, "class", "btn btn-sm btn-outline-secondary"); + toggle_class(label, "btn-outline-danger", ctx.result.indexOf(ctx.type) > -1); + toggle_class(label, "active", ctx.active===ctx.type); + add_location(label, file$9, 52, 12, 1365); + dispose = listen(input, "change", ctx.input_change_handler); + }, + + m: function mount(target, anchor) { + insert(target, label, anchor); + append(label, input); + + input.checked = input.__value === ctx.active; + + append(label, t0); + append(label, t1); + }, + + p: function update(changed, ctx) { + if (changed.active) input.checked = input.__value === ctx.active; + input.value = input.__value; + + if ((changed.active) && input_checked_value !== (input_checked_value = ctx.active===ctx.type)) { + input.checked = input_checked_value; + } + + if ((changed.result || changed.types)) { + toggle_class(label, "btn-outline-danger", ctx.result.indexOf(ctx.type) > -1); + } + + if ((changed.active || changed.types)) { + toggle_class(label, "active", ctx.active===ctx.type); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(label); + } + + ctx.$$binding_groups[0].splice(ctx.$$binding_groups[0].indexOf(input), 1); + dispose(); + } + }; + } + + function create_fragment$9(ctx) { + var div3, current_block_type_index, if_block, t0, div2, div0, t2, div1, current; + + var if_block_creators = [ + create_if_block$5, + create_else_block + ]; + + var if_blocks = []; + + function select_block_type(ctx) { + if (ctx.result.length) return 0; + return 1; + } + + current_block_type_index = select_block_type(ctx); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + + var each_value = ctx.types; + + var each_blocks = []; + + for (var i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$4(get_each_context$4(ctx, each_value, i)); + } + + return { + c: function create() { + div3 = element("div"); + if_block.c(); + t0 = space(); + div2 = element("div"); + div0 = element("div"); + div0.textContent = "simulate:"; + t2 = space(); + div1 = element("div"); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div0, "class", "text-muted svelte-ylsdbc"); + add_location(div0, file$9, 49, 8, 1205); + attr(div1, "class", "btn-group btn-group-toggle"); + div1.dataset.toggle = "buttons"; + add_location(div1, file$9, 50, 8, 1254); + attr(div2, "class", "c1 svelte-ylsdbc"); + add_location(div2, file$9, 48, 4, 1179); + attr(div3, "class", "colorblind-sim svelte-ylsdbc"); + add_location(div3, file$9, 42, 0, 889); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div3, anchor); + if_blocks[current_block_type_index].m(div3, null); + append(div3, t0); + append(div3, div2); + append(div2, div0); + append(div2, t2); + append(div2, div1); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div1, null); + } + + current = true; + }, + + p: function update(changed, ctx) { + var previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(changed, ctx); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block.c(); + } + transition_in(if_block, 1); + if_block.m(div3, t0); + } + + if (changed.result || changed.types || changed.active) { + each_value = ctx.types; + + for (var i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$4(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(changed, child_ctx); + } else { + each_blocks[i] = create_each_block$4(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div1, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + }, + + i: function intro(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + + o: function outro(local) { + transition_out(if_block); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div3); + } + + if_blocks[current_block_type_index].d(); + + destroy_each(each_blocks, detaching); + } + }; + } + + function instance$9($$self, $$props, $$invalidate) { + + + let { colors = [], result = [], active = 'none' } = $$props; + + const types = ['none', 'deuteranopia', 'protanopia', 'tritanopia']; + + const writable_props = ['colors', 'result', 'active']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + const $$binding_groups = [[]]; + + function input_change_handler() { + active = this.__value; + $$invalidate('active', active); + } + + $$self.$set = $$props => { + if ('colors' in $$props) $$invalidate('colors', colors = $$props.colors); + if ('result' in $$props) $$invalidate('result', result = $$props.result); + if ('active' in $$props) $$invalidate('active', active = $$props.active); + }; + + $$self.$$.update = ($$dirty = { colors: 1 }) => { + if ($$dirty.colors) { $$invalidate('result', result = colorBlindCheck(colors)); } + }; + + return { + colors, + result, + active, + types, + input_change_handler, + $$binding_groups + }; + } + + class ColorBlindCheck extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$9, create_fragment$9, safe_not_equal, ["colors", "result", "active"]); + } + + get colors() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set colors(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get result() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set result(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get active() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set active(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src\ButtonGroup.svelte generated by Svelte v3.5.3 */ + + const file$a = "src\\ButtonGroup.svelte"; + + function get_each_context$5(ctx, list, i) { + const child_ctx = Object.create(ctx); + child_ctx.option = list[i]; + return child_ctx; + } + + // (20:4) {#each options2 as option} + function create_each_block$5(ctx) { + var label_1, input, input_value_value, input_checked_value, t0_value = ctx.option.title, t0, t1, dispose; + + return { + c: function create() { + label_1 = element("label"); + input = element("input"); + t0 = text(t0_value); + t1 = space(); + ctx.$$binding_groups[0].push(input); + input.__value = input_value_value = ctx.option.value; + input.value = input.__value; + attr(input, "type", "radio"); + attr(input, "name", "options"); + attr(input, "id", ctx.id); + attr(input, "autocomplete", "off"); + input.checked = input_checked_value = ctx.value===ctx.option.value; + add_location(input, file$a, 22, 8, 552); + attr(label_1, "class", "btn btn-outline-secondary"); + toggle_class(label_1, "active", ctx.value===ctx.option.value); + add_location(label_1, file$a, 20, 4, 456); + dispose = listen(input, "change", ctx.input_change_handler); + }, + + m: function mount(target, anchor) { + insert(target, label_1, anchor); + append(label_1, input); + + input.checked = input.__value === ctx.value; + + append(label_1, t0); + append(label_1, t1); + }, + + p: function update(changed, ctx) { + if (changed.value) input.checked = input.__value === ctx.value; + + if ((changed.options2) && input_value_value !== (input_value_value = ctx.option.value)) { + input.__value = input_value_value; + } + + input.value = input.__value; + + if ((changed.value || changed.options2) && input_checked_value !== (input_checked_value = ctx.value===ctx.option.value)) { + input.checked = input_checked_value; + } + + if ((changed.options2) && t0_value !== (t0_value = ctx.option.title)) { + set_data(t0, t0_value); + } + + if ((changed.value || changed.options2)) { + toggle_class(label_1, "active", ctx.value===ctx.option.value); + } + }, + + d: function destroy(detaching) { + if (detaching) { + detach(label_1); + } + + ctx.$$binding_groups[0].splice(ctx.$$binding_groups[0].indexOf(input), 1); + dispose(); + } + }; + } + + function create_fragment$a(ctx) { + var div; + + var each_value = ctx.options2; + + var each_blocks = []; + + for (var i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$5(get_each_context$5(ctx, each_value, i)); + } + + return { + c: function create() { + div = element("div"); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div, "class", "btn-group btn-group-toggle svelte-t0e0bc"); + div.dataset.toggle = "buttons"; + add_location(div, file$a, 18, 0, 356); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div, anchor); + + for (var i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } + }, + + p: function update(changed, ctx) { + if (changed.value || changed.options2 || changed.id) { + each_value = ctx.options2; + + for (var i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$5(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(changed, child_ctx); + } else { + each_blocks[i] = create_each_block$5(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(div, null); + } + } + + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + }, + + i: noop, + o: noop, + + d: function destroy(detaching) { + if (detaching) { + detach(div); + } + + destroy_each(each_blocks, detaching); + } + }; + } + + function instance$a($$self, $$props, $$invalidate) { + let { options = [] } = $$props; + let { value, label = '' } = $$props; + const id = Math.round(Math.random()*1e7).toString(36); + + const writable_props = ['options', 'value', 'label']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + const $$binding_groups = [[]]; + + function input_change_handler() { + value = this.__value; + $$invalidate('value', value); + } + + $$self.$set = $$props => { + if ('options' in $$props) $$invalidate('options', options = $$props.options); + if ('value' in $$props) $$invalidate('value', value = $$props.value); + if ('label' in $$props) $$invalidate('label', label = $$props.label); + }; + + let options2; + + $$self.$$.update = ($$dirty = { options: 1 }) => { + if ($$dirty.options) { $$invalidate('options2', options2 = options.map(s => typeof s === 'string' ? {value:s, title:s} : s)); } + }; + + return { + options, + value, + label, + id, + options2, + input_change_handler, + $$binding_groups + }; + } + + class ButtonGroup extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$a, create_fragment$a, safe_not_equal, ["options", "value", "label"]); + + const { ctx } = this.$$; + const props = options.props || {}; + if (ctx.value === undefined && !('value' in props)) { + console.warn(" was created without expected prop 'value'"); + } + } + + get options() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set options(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get value() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set value(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + + get label() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set label(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + /* src\App.svelte generated by Svelte v3.5.3 */ + + const file$b = "src\\App.svelte"; + + // (141:4) + function create_default_slot_3(ctx) { + var div2, div0, t0, updating_value, t1, div1, t2, input, current, dispose; + + function buttongroup_value_binding(value) { + ctx.buttongroup_value_binding.call(null, value); + updating_value = true; + add_flush_callback(() => updating_value = false); + } + + let buttongroup_props = { options: ['sequential', 'diverging'] }; + if (ctx.mode !== void 0) { + buttongroup_props.value = ctx.mode; + } + var buttongroup = new ButtonGroup({ props: buttongroup_props, $$inline: true }); + + add_binding_callback(() => bind(buttongroup, 'value', buttongroup_value_binding)); + + return { + c: function create() { + div2 = element("div"); + div0 = element("div"); + t0 = text("Palette type:\r\n "); + buttongroup.$$.fragment.c(); + t1 = space(); + div1 = element("div"); + t2 = text("Number of colors: "); + input = element("input"); + attr(div0, "class", "col-md"); + add_location(div0, file$b, 142, 12, 4441); + attr(input, "type", "number"); + attr(input, "min", "2"); + attr(input, "class", "svelte-1cvo05r"); + add_location(input, file$b, 147, 34, 4673); + attr(div1, "class", "col-md"); + add_location(div1, file$b, 146, 12, 4617); + attr(div2, "class", "row"); + add_location(div2, file$b, 141, 8, 4410); + dispose = listen(input, "input", ctx.input_input_handler); + }, + + m: function mount(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + append(div0, t0); + mount_component(buttongroup, div0, null); + append(div2, t1); + append(div2, div1); + append(div1, t2); + append(div1, input); + + input.value = ctx.numColors; + + current = true; + }, + + p: function update(changed, ctx) { + var buttongroup_changes = {}; + if (!updating_value && changed.mode) { + buttongroup_changes.value = ctx.mode; + } + buttongroup.$set(buttongroup_changes); + + if (changed.numColors) input.value = ctx.numColors; + }, + + i: function intro(local) { + if (current) return; + transition_in(buttongroup.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(buttongroup.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div2); + } + + destroy_component(buttongroup, ); + + dispose(); + } + }; + } + + // (153:4) + function create_default_slot_2(ctx) { + var updating_colors, updating_colors2, current; + + function inputcolors_colors_binding(value) { + ctx.inputcolors_colors_binding.call(null, value); + updating_colors = true; + add_flush_callback(() => updating_colors = false); + } + + function inputcolors_colors2_binding(value_1) { + ctx.inputcolors_colors2_binding.call(null, value_1); + updating_colors2 = true; + add_flush_callback(() => updating_colors2 = false); + } + + let inputcolors_props = { diverging: ctx.mode==='diverging' }; + if (ctx.colors !== void 0) { + inputcolors_props.colors = ctx.colors; + } + if (ctx.colors2 !== void 0) { + inputcolors_props.colors2 = ctx.colors2; + } + var inputcolors = new InputColors({ props: inputcolors_props, $$inline: true }); + + add_binding_callback(() => bind(inputcolors, 'colors', inputcolors_colors_binding)); + add_binding_callback(() => bind(inputcolors, 'colors2', inputcolors_colors2_binding)); + + return { + c: function create() { + inputcolors.$$.fragment.c(); + }, + + m: function mount(target, anchor) { + mount_component(inputcolors, target, anchor); + current = true; + }, + + p: function update(changed, ctx) { + var inputcolors_changes = {}; + if (changed.mode) inputcolors_changes.diverging = ctx.mode==='diverging'; + if (!updating_colors && changed.colors) { + inputcolors_changes.colors = ctx.colors; + } + if (!updating_colors2 && changed.colors2) { + inputcolors_changes.colors2 = ctx.colors2; + } + inputcolors.$set(inputcolors_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(inputcolors.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(inputcolors.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + destroy_component(inputcolors, detaching); + } + }; + } + + // (157:4) + function create_default_slot_1(ctx) { + var div2, div0, updating_value, t0, updating_value_1, t1, div1, updating_colors, updating_active, t2, updating_steps, updating_correctLightness, updating_bezier, updating_colors_1, updating_colors2, updating_numColors, t3, div6, div3, t4, div4, t5, div5, current; + + function checkbox0_value_binding(value) { + ctx.checkbox0_value_binding.call(null, value); + updating_value = true; + add_flush_callback(() => updating_value = false); + } + + let checkbox0_props = { label: "correct lightness" }; + if (ctx.correctLightness !== void 0) { + checkbox0_props.value = ctx.correctLightness; + } + var checkbox0 = new Checkbox({ props: checkbox0_props, $$inline: true }); + + add_binding_callback(() => bind(checkbox0, 'value', checkbox0_value_binding)); + + function checkbox1_value_binding(value_1) { + ctx.checkbox1_value_binding.call(null, value_1); + updating_value_1 = true; + add_flush_callback(() => updating_value_1 = false); + } + + let checkbox1_props = { label: "bezier interpolation" }; + if (ctx.bezier !== void 0) { + checkbox1_props.value = ctx.bezier; + } + var checkbox1 = new Checkbox({ props: checkbox1_props, $$inline: true }); + + add_binding_callback(() => bind(checkbox1, 'value', checkbox1_value_binding)); + + function colorblindcheck_colors_binding(value_2) { + ctx.colorblindcheck_colors_binding.call(null, value_2); + updating_colors = true; + add_flush_callback(() => updating_colors = false); + } + + function colorblindcheck_active_binding(value_3) { + ctx.colorblindcheck_active_binding.call(null, value_3); + updating_active = true; + add_flush_callback(() => updating_active = false); + } + + let colorblindcheck_props = {}; + if (ctx.steps !== void 0) { + colorblindcheck_props.colors = ctx.steps; + } + if (ctx.simulate !== void 0) { + colorblindcheck_props.active = ctx.simulate; + } + var colorblindcheck = new ColorBlindCheck({ + props: colorblindcheck_props, + $$inline: true + }); + + add_binding_callback(() => bind(colorblindcheck, 'colors', colorblindcheck_colors_binding)); + add_binding_callback(() => bind(colorblindcheck, 'active', colorblindcheck_active_binding)); + + function palettepreview_steps_binding(value_4) { + ctx.palettepreview_steps_binding.call(null, value_4); + updating_steps = true; + add_flush_callback(() => updating_steps = false); + } + + function palettepreview_correctLightness_binding(value_5) { + ctx.palettepreview_correctLightness_binding.call(null, value_5); + updating_correctLightness = true; + add_flush_callback(() => updating_correctLightness = false); + } + + function palettepreview_bezier_binding(value_6) { + ctx.palettepreview_bezier_binding.call(null, value_6); + updating_bezier = true; + add_flush_callback(() => updating_bezier = false); + } + + function palettepreview_colors_binding(value_7) { + ctx.palettepreview_colors_binding.call(null, value_7); + updating_colors_1 = true; + add_flush_callback(() => updating_colors_1 = false); + } + + function palettepreview_colors2_binding(value_8) { + ctx.palettepreview_colors2_binding.call(null, value_8); + updating_colors2 = true; + add_flush_callback(() => updating_colors2 = false); + } + + function palettepreview_numColors_binding(value_9) { + ctx.palettepreview_numColors_binding.call(null, value_9); + updating_numColors = true; + add_flush_callback(() => updating_numColors = false); + } + + let palettepreview_props = { + diverging: ctx.mode === 'diverging', + simulate: ctx.simulate + }; + if (ctx.steps !== void 0) { + palettepreview_props.steps = ctx.steps; + } + if (ctx.correctLightness !== void 0) { + palettepreview_props.correctLightness = ctx.correctLightness; + } + if (ctx.bezier !== void 0) { + palettepreview_props.bezier = ctx.bezier; + } + if (ctx.colors !== void 0) { + palettepreview_props.colors = ctx.colors; + } + if (ctx.colors2 !== void 0) { + palettepreview_props.colors2 = ctx.colors2; + } + if (ctx.numColors !== void 0) { + palettepreview_props.numColors = ctx.numColors; + } + var palettepreview = new PalettePreview({ + props: palettepreview_props, + $$inline: true + }); + + add_binding_callback(() => bind(palettepreview, 'steps', palettepreview_steps_binding)); + add_binding_callback(() => bind(palettepreview, 'correctLightness', palettepreview_correctLightness_binding)); + add_binding_callback(() => bind(palettepreview, 'bezier', palettepreview_bezier_binding)); + add_binding_callback(() => bind(palettepreview, 'colors', palettepreview_colors_binding)); + add_binding_callback(() => bind(palettepreview, 'colors2', palettepreview_colors2_binding)); + add_binding_callback(() => bind(palettepreview, 'numColors', palettepreview_numColors_binding)); + + var stepchart0 = new StepChart({ + props: { + title: "lightness", + steps: ctx.steps, + mode: 0 + }, + $$inline: true + }); + + var stepchart1 = new StepChart({ + props: { + title: "saturation", + steps: ctx.steps, + mode: 1 + }, + $$inline: true + }); + + var stepchart2 = new StepChart({ + props: { + title: "hue", + steps: ctx.steps, + mode: 2 + }, + $$inline: true + }); + + return { + c: function create() { + div2 = element("div"); + div0 = element("div"); + checkbox0.$$.fragment.c(); + t0 = space(); + checkbox1.$$.fragment.c(); + t1 = space(); + div1 = element("div"); + colorblindcheck.$$.fragment.c(); + t2 = space(); + palettepreview.$$.fragment.c(); + t3 = space(); + div6 = element("div"); + div3 = element("div"); + stepchart0.$$.fragment.c(); + t4 = space(); + div4 = element("div"); + stepchart1.$$.fragment.c(); + t5 = space(); + div5 = element("div"); + stepchart2.$$.fragment.c(); + attr(div0, "class", "col-md"); + add_location(div0, file$b, 158, 12, 5077); + attr(div1, "class", "col-md"); + add_location(div1, file$b, 162, 12, 5296); + attr(div2, "class", "row"); + set_style(div2, "margin-bottom", "10px"); + add_location(div2, file$b, 157, 8, 5018); + attr(div3, "class", "col-md"); + add_location(div3, file$b, 176, 12, 5745); + attr(div4, "class", "col-md"); + add_location(div4, file$b, 179, 12, 5871); + attr(div5, "class", "col-md"); + add_location(div5, file$b, 182, 12, 5998); + attr(div6, "class", "row"); + add_location(div6, file$b, 175, 8, 5714); + }, + + m: function mount(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + mount_component(checkbox0, div0, null); + append(div0, t0); + mount_component(checkbox1, div0, null); + append(div2, t1); + append(div2, div1); + mount_component(colorblindcheck, div1, null); + insert(target, t2, anchor); + mount_component(palettepreview, target, anchor); + insert(target, t3, anchor); + insert(target, div6, anchor); + append(div6, div3); + mount_component(stepchart0, div3, null); + append(div6, t4); + append(div6, div4); + mount_component(stepchart1, div4, null); + append(div6, t5); + append(div6, div5); + mount_component(stepchart2, div5, null); + current = true; + }, + + p: function update(changed, ctx) { + var checkbox0_changes = {}; + if (!updating_value && changed.correctLightness) { + checkbox0_changes.value = ctx.correctLightness; + } + checkbox0.$set(checkbox0_changes); + + var checkbox1_changes = {}; + if (!updating_value_1 && changed.bezier) { + checkbox1_changes.value = ctx.bezier; + } + checkbox1.$set(checkbox1_changes); + + var colorblindcheck_changes = {}; + if (!updating_colors && changed.steps) { + colorblindcheck_changes.colors = ctx.steps; + } + if (!updating_active && changed.simulate) { + colorblindcheck_changes.active = ctx.simulate; + } + colorblindcheck.$set(colorblindcheck_changes); + + var palettepreview_changes = {}; + if (changed.mode) palettepreview_changes.diverging = ctx.mode === 'diverging'; + if (changed.simulate) palettepreview_changes.simulate = ctx.simulate; + if (!updating_steps && changed.steps) { + palettepreview_changes.steps = ctx.steps; + } + if (!updating_correctLightness && changed.correctLightness) { + palettepreview_changes.correctLightness = ctx.correctLightness; + } + if (!updating_bezier && changed.bezier) { + palettepreview_changes.bezier = ctx.bezier; + } + if (!updating_colors_1 && changed.colors) { + palettepreview_changes.colors = ctx.colors; + } + if (!updating_colors2 && changed.colors2) { + palettepreview_changes.colors2 = ctx.colors2; + } + if (!updating_numColors && changed.numColors) { + palettepreview_changes.numColors = ctx.numColors; + } + palettepreview.$set(palettepreview_changes); + + var stepchart0_changes = {}; + if (changed.steps) stepchart0_changes.steps = ctx.steps; + stepchart0.$set(stepchart0_changes); + + var stepchart1_changes = {}; + if (changed.steps) stepchart1_changes.steps = ctx.steps; + stepchart1.$set(stepchart1_changes); + + var stepchart2_changes = {}; + if (changed.steps) stepchart2_changes.steps = ctx.steps; + stepchart2.$set(stepchart2_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(checkbox0.$$.fragment, local); + + transition_in(checkbox1.$$.fragment, local); + + transition_in(colorblindcheck.$$.fragment, local); + + transition_in(palettepreview.$$.fragment, local); + + transition_in(stepchart0.$$.fragment, local); + + transition_in(stepchart1.$$.fragment, local); + + transition_in(stepchart2.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(checkbox0.$$.fragment, local); + transition_out(checkbox1.$$.fragment, local); + transition_out(colorblindcheck.$$.fragment, local); + transition_out(palettepreview.$$.fragment, local); + transition_out(stepchart0.$$.fragment, local); + transition_out(stepchart1.$$.fragment, local); + transition_out(stepchart2.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div2); + } + + destroy_component(checkbox0, ); + + destroy_component(checkbox1, ); + + destroy_component(colorblindcheck, ); + + if (detaching) { + detach(t2); + } + + destroy_component(palettepreview, detaching); + + if (detaching) { + detach(t3); + detach(div6); + } + + destroy_component(stepchart0, ); + + destroy_component(stepchart1, ); + + destroy_component(stepchart2, ); + } + }; + } + + // (189:4) + function create_default_slot(ctx) { + var p, t0, a, t1, a_href_value, t2, kbd0, t3_value = ctx.isMac ? 'cmd' : 'ctrl', t3, t4, kbd1, t6, t7, current; + + var export_1 = new Export({ + props: { steps: ctx.steps }, + $$inline: true + }); + + return { + c: function create() { + p = element("p"); + t0 = text("You can also save your palette for later by bookmarking "); + a = element("a"); + t1 = text("this page"); + t2 = text(" using "); + kbd0 = element("kbd"); + t3 = text(t3_value); + t4 = text("+"); + kbd1 = element("kbd"); + kbd1.textContent = "d"; + t6 = text("."); + t7 = space(); + export_1.$$.fragment.c(); + attr(a, "href", a_href_value = "#/" + ctx.hash); + add_location(a, file$b, 189, 67, 6275); + attr(kbd0, "class", "svelte-1cvo05r"); + add_location(kbd0, file$b, 189, 106, 6314); + attr(kbd1, "class", "svelte-1cvo05r"); + add_location(kbd1, file$b, 189, 142, 6350); + add_location(p, file$b, 189, 8, 6216); + }, + + m: function mount(target, anchor) { + insert(target, p, anchor); + append(p, t0); + append(p, a); + append(a, t1); + append(p, t2); + append(p, kbd0); + append(kbd0, t3); + append(p, t4); + append(p, kbd1); + append(p, t6); + insert(target, t7, anchor); + mount_component(export_1, target, anchor); + current = true; + }, + + p: function update(changed, ctx) { + if ((!current || changed.hash) && a_href_value !== (a_href_value = "#/" + ctx.hash)) { + attr(a, "href", a_href_value); + } + + var export_1_changes = {}; + if (changed.steps) export_1_changes.steps = ctx.steps; + export_1.$set(export_1_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(export_1.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(export_1.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(p); + detach(t7); + } + + destroy_component(export_1, detaching); + } + }; + } + + function create_fragment$b(ctx) { + var div2, div0, h1, t1, p0, t2, a0, t4, a1, t6, t7, t8, t9, t10, t11, div1, hr, t12, p1, t13, a2, t15, a3, t17, current, dispose; + + var card0 = new Card({ + props: { + step: "1", + title: "What kind of palette do you want to create?", + $$slots: { default: [create_default_slot_3] }, + $$scope: { ctx } + }, + $$inline: true + }); + + var card1 = new Card({ + props: { + step: "2", + title: "Select and arrange input colors", + $$slots: { default: [create_default_slot_2] }, + $$scope: { ctx } + }, + $$inline: true + }); + + var card2 = new Card({ + props: { + step: "3", + title: "Check and configure the resulting palette", + $$slots: { default: [create_default_slot_1] }, + $$scope: { ctx } + }, + $$inline: true + }); + + var card3 = new Card({ + props: { + step: "4", + title: "Export the color codes in various formats", + $$slots: { default: [create_default_slot] }, + $$scope: { ctx } + }, + $$inline: true + }); + + return { + c: function create() { + div2 = element("div"); + div0 = element("div"); + h1 = element("h1"); + h1.textContent = "Chroma.js Color Palette Helper"; + t1 = space(); + p0 = element("p"); + t2 = text("This "); + a0 = element("a"); + a0.textContent = "chroma.js"; + t4 = text("-powered tool is here to help us "); + a1 = element("a"); + a1.textContent = "mastering multi-hued, multi-stops color scales"; + t6 = text("."); + t7 = space(); + card0.$$.fragment.c(); + t8 = space(); + card1.$$.fragment.c(); + t9 = space(); + card2.$$.fragment.c(); + t10 = space(); + card3.$$.fragment.c(); + t11 = space(); + div1 = element("div"); + hr = element("hr"); + t12 = space(); + p1 = element("p"); + t13 = text("Created by "); + a2 = element("a"); + a2.textContent = "Gregor Aisch"; + t15 = text(" for the sake of better\r\n use of colors in maps and data visualizations. Feel free to "); + a3 = element("a"); + a3.textContent = "fork on Github"; + t17 = text("."); + attr(h1, "class", "svelte-1cvo05r"); + add_location(h1, file$b, 137, 8, 4009); + attr(a0, "href", "https://github.com/gka/chroma.js"); + attr(a0, "target", "_blank"); + add_location(a0, file$b, 138, 16, 4066); + attr(a1, "target", "_blank"); + attr(a1, "href", "http://vis4.net/blog/posts/mastering-multi-hued-color-scales/"); + add_location(a1, file$b, 138, 122, 4172); + add_location(p0, file$b, 138, 8, 4058); + attr(div0, "class", "head svelte-1cvo05r"); + add_location(div0, file$b, 136, 4, 3981); + add_location(hr, file$b, 193, 8, 6448); + attr(a2, "href", "https://vis4.net/blog"); + add_location(a2, file$b, 194, 22, 6476); + attr(a3, "href", "https://github.com/gka/palettes"); + add_location(a3, file$b, 195, 68, 6617); + add_location(p1, file$b, 194, 8, 6462); + attr(div1, "class", "foot svelte-1cvo05r"); + add_location(div1, file$b, 192, 4, 6420); + attr(div2, "class", "container"); + add_location(div2, file$b, 135, 0, 3952); + dispose = listen(window, "hashchange", ctx.hashChange); + }, + + l: function claim(nodes) { + throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); + }, + + m: function mount(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + append(div0, h1); + append(div0, t1); + append(div0, p0); + append(p0, t2); + append(p0, a0); + append(p0, t4); + append(p0, a1); + append(p0, t6); + append(div2, t7); + mount_component(card0, div2, null); + append(div2, t8); + mount_component(card1, div2, null); + append(div2, t9); + mount_component(card2, div2, null); + append(div2, t10); + mount_component(card3, div2, null); + append(div2, t11); + append(div2, div1); + append(div1, hr); + append(div1, t12); + append(div1, p1); + append(p1, t13); + append(p1, a2); + append(p1, t15); + append(p1, a3); + append(p1, t17); + current = true; + }, + + p: function update(changed, ctx) { + var card0_changes = {}; + if (changed.$$scope || changed.numColors || changed.mode) card0_changes.$$scope = { changed, ctx }; + card0.$set(card0_changes); + + var card1_changes = {}; + if (changed.$$scope || changed.mode || changed.colors || changed.colors2) card1_changes.$$scope = { changed, ctx }; + card1.$set(card1_changes); + + var card2_changes = {}; + if (changed.$$scope || changed.steps || changed.mode || changed.simulate || changed.correctLightness || changed.bezier || changed.colors || changed.colors2 || changed.numColors) card2_changes.$$scope = { changed, ctx }; + card2.$set(card2_changes); + + var card3_changes = {}; + if (changed.$$scope || changed.steps || changed.hash) card3_changes.$$scope = { changed, ctx }; + card3.$set(card3_changes); + }, + + i: function intro(local) { + if (current) return; + transition_in(card0.$$.fragment, local); + + transition_in(card1.$$.fragment, local); + + transition_in(card2.$$.fragment, local); + + transition_in(card3.$$.fragment, local); + + current = true; + }, + + o: function outro(local) { + transition_out(card0.$$.fragment, local); + transition_out(card1.$$.fragment, local); + transition_out(card2.$$.fragment, local); + transition_out(card3.$$.fragment, local); + current = false; + }, + + d: function destroy(detaching) { + if (detaching) { + detach(div2); + } + + destroy_component(card0, ); + + destroy_component(card1, ); + + destroy_component(card2, ); + + destroy_component(card3, ); + + dispose(); + } + }; + } + + function instance$b($$self, $$props, $$invalidate) { + + + let { name } = $$props; + + let steps = []; + let bezier = true; + let correctLightness = true; + + let colors = '00429d,96ffea,lightyellow'.split(/\s*,\s*/).map(c => chroma(c)); + let colors2 = 'ffffe0,ff005e,93003a'.split(/\s*,\s*/).map(c => chroma(c)); + let numColors = 9; + let mode = 'sequential'; + let simulate = 'none'; + + if (window.location.hash) { + readStateFromHash(); + } + + const isMac = navigator.platform.toUpperCase().indexOf('MAC') > -1; + + let _hash = ''; + let _mode = 'sequential'; + + beforeUpdate(() => { + if (hash !== _hash) { + _hash = hash; + window.location.hash = `#/${hash}`; + } + if (mode !== _mode) { + if (mode === 'diverging' && !colors2.length) { + $$invalidate('colors2', colors2 = colors.slice(0).reverse()); + } + _mode = mode; + } + }); + + // onMount(() => { + // if (window.location.hash) { + // console.log('initial hash', window.location.hash); + // readStateFromHash(); + // } + // _mounted = true; + // }) + + function readStateFromHash() { + const parts = window.location.hash.substr(2).split('|'); + if (parts.length === 6) { + setTimeout(() => { + $$invalidate('numColors', numColors = +parts[0]); + $$invalidate('mode', mode = parts[1] === 's' ? 'sequential' : 'diverging'); + _mode = mode; + $$invalidate('colors', colors = parts[2].split(',').map(c => c && chroma(c))); + $$invalidate('colors2', colors2 = parts[3] !== '' ? parts[3].split(',').map(c => c && chroma(c)) : []); + $$invalidate('correctLightness', correctLightness = parts[4] === '1'); + $$invalidate('bezier', bezier = parts[5] === '1'); + }); + } else { + window.location.hash = ''; + } + } + + function hashChange() { + if (window.location.hash !== `#/${hash}`) { + // deserialize hash + readStateFromHash(); + } + } + + const writable_props = ['name']; + Object.keys($$props).forEach(key => { + if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); + }); + + function buttongroup_value_binding(value) { + mode = value; + $$invalidate('mode', mode); + } + + function input_input_handler() { + numColors = to_number(this.value); + $$invalidate('numColors', numColors); + } + + function inputcolors_colors_binding(value) { + colors = value; + $$invalidate('colors', colors); + } + + function inputcolors_colors2_binding(value_1) { + colors2 = value_1; + $$invalidate('colors2', colors2); + } + + function checkbox0_value_binding(value) { + correctLightness = value; + $$invalidate('correctLightness', correctLightness); + } + + function checkbox1_value_binding(value_1) { + bezier = value_1; + $$invalidate('bezier', bezier); + } + + function colorblindcheck_colors_binding(value_2) { + steps = value_2; + $$invalidate('steps', steps); + } + + function colorblindcheck_active_binding(value_3) { + simulate = value_3; + $$invalidate('simulate', simulate); + } + + function palettepreview_steps_binding(value_4) { + steps = value_4; + $$invalidate('steps', steps); + } + + function palettepreview_correctLightness_binding(value_5) { + correctLightness = value_5; + $$invalidate('correctLightness', correctLightness); + } + + function palettepreview_bezier_binding(value_6) { + bezier = value_6; + $$invalidate('bezier', bezier); + } + + function palettepreview_colors_binding(value_7) { + colors = value_7; + $$invalidate('colors', colors); + } + + function palettepreview_colors2_binding(value_8) { + colors2 = value_8; + $$invalidate('colors2', colors2); + } + + function palettepreview_numColors_binding(value_9) { + numColors = value_9; + $$invalidate('numColors', numColors); + } + + $$self.$set = $$props => { + if ('name' in $$props) $$invalidate('name', name = $$props.name); + }; + + let hash; + + $$self.$$.update = ($$dirty = { numColors: 1, mode: 1, colors: 1, colors2: 1, correctLightness: 1, bezier: 1 }) => { + if ($$dirty.numColors || $$dirty.mode || $$dirty.colors || $$dirty.colors2 || $$dirty.correctLightness || $$dirty.bezier) { $$invalidate('hash', hash = [ + numColors, + mode.substr(0,1), + colors.map(c=>c.hex().substr(1)).join(','), + colors2.length ? colors2.map(c=>c.hex().substr(1)).join(',') : '', + correctLightness ? 1:0, + bezier?1:0 + ].join('|')); } + }; + + return { + name, + steps, + bezier, + correctLightness, + colors, + colors2, + numColors, + mode, + simulate, + isMac, + hashChange, + hash, + buttongroup_value_binding, + input_input_handler, + inputcolors_colors_binding, + inputcolors_colors2_binding, + checkbox0_value_binding, + checkbox1_value_binding, + colorblindcheck_colors_binding, + colorblindcheck_active_binding, + palettepreview_steps_binding, + palettepreview_correctLightness_binding, + palettepreview_bezier_binding, + palettepreview_colors_binding, + palettepreview_colors2_binding, + palettepreview_numColors_binding + }; + } + + class App extends SvelteComponentDev { + constructor(options) { + super(options); + init(this, options, instance$b, create_fragment$b, safe_not_equal, ["name"]); + + const { ctx } = this.$$; + const props = options.props || {}; + if (ctx.name === undefined && !('name' in props)) { + console.warn(" was created without expected prop 'name'"); + } + } + + get name() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set name(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + } + + const app = new App({ + target: document.body, + props: { + name: 'world' + } + }); + + return app; + +}()); //# sourceMappingURL=bundle.js.map diff --git a/docs/bundle.js.map b/docs/bundle.js.map new file mode 100644 index 0000000..5e760f8 --- /dev/null +++ b/docs/bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":";;;;;IAAA,SAAS,IAAI,GAAG,GAAG;AACnB,IACA,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;IAC1B;IACA,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG;IACvB,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,GAAG,CAAC;IACf,CAAC;AACD,IAGA,SAAS,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACzD,IAAI,OAAO,CAAC,aAAa,GAAG;IAC5B,QAAQ,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACzC,KAAK,CAAC;IACN,CAAC;IACD,SAAS,GAAG,CAAC,EAAE,EAAE;IACjB,IAAI,OAAO,EAAE,EAAE,CAAC;IAChB,CAAC;IACD,SAAS,YAAY,GAAG;IACxB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,SAAS,OAAO,CAAC,GAAG,EAAE;IACtB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,SAAS,WAAW,CAAC,KAAK,EAAE;IAC5B,IAAI,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;IACvC,CAAC;IACD,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,KAAK,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC;IAClG,CAAC;AACD,IAcA,SAAS,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE;IAC1C,IAAI,IAAI,UAAU,EAAE;IACpB,QAAQ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/D,QAAQ,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvC,KAAK;IACL,CAAC;IACD,SAAS,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/C,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC;IACxB,UAAU,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/E,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,SAAS,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;IACxD,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC;IACxB,UAAU,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7F,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,CAAC;IACD,SAAS,sBAAsB,CAAC,KAAK,EAAE;IACvC,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;IACtB,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK;IACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;IACxB,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;AACD,AAwDA;IACA,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;IAC9B,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IACtC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,SAAS,MAAM,CAAC,IAAI,EAAE;IACtB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;AACD,IAeA,SAAS,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE;IAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IACnD,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;IACzB,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvC,KAAK;IACL,CAAC;IACD,SAAS,OAAO,CAAC,IAAI,EAAE;IACvB,IAAI,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;AACD,IAaA,SAAS,WAAW,CAAC,IAAI,EAAE;IAC3B,IAAI,OAAO,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,SAAS,IAAI,CAAC,IAAI,EAAE;IACpB,IAAI,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,SAAS,KAAK,GAAG;IACjB,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,SAAS,KAAK,GAAG;IACjB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;IAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IACD,SAAS,eAAe,CAAC,EAAE,EAAE;IAC7B,IAAI,OAAO,UAAU,KAAK,EAAE;IAC5B,QAAQ,KAAK,CAAC,cAAc,EAAE,CAAC;IAC/B;IACA,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC;IACN,CAAC;IACD,SAAS,gBAAgB,CAAC,EAAE,EAAE;IAC9B,IAAI,OAAO,UAAU,KAAK,EAAE;IAC5B,QAAQ,KAAK,CAAC,eAAe,EAAE,CAAC;IAChC;IACA,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC;IACN,CAAC;IACD,SAAS,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACtC,IAAI,IAAI,KAAK,IAAI,IAAI;IACrB,QAAQ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC;IACA,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;AACD,IAgCA,SAAS,SAAS,CAAC,KAAK,EAAE;IAC1B,IAAI,OAAO,KAAK,KAAK,EAAE,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC;IAC7C,CAAC;AACD,IAOA,SAAS,QAAQ,CAAC,OAAO,EAAE;IAC3B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;AACD,IAwBA,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;IAC9B,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;IACrB,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;IAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,CAAC;AACD,IAQA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;IACrC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;AACD,IAsBA,SAAS,mBAAmB,CAAC,OAAO,EAAE,EAAE,EAAE;IAC1C,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;IACzD,QAAQ,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC5C,KAAK;IACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,sIAAsI,CAAC,CAAC;IACzK,IAAI,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC;IACZ,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM;IAC1B,QAAQ,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC;IACjD,QAAQ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC;IACN,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;IAC7C,QAAQ,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;IACpC,KAAK;IACL,SAAS;IACT,QAAQ,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;IACpC,QAAQ,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK;IACL,IAAI,OAAO;IACX,QAAQ,MAAM,EAAE,MAAM;IACtB,YAAY,GAAG,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACpF,YAAY,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS;IACT,KAAK,CAAC;IACN,CAAC;IACD,SAAS,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;AACD,AAkIA;IACA,IAAI,iBAAiB,CAAC;IACtB,SAAS,qBAAqB,CAAC,SAAS,EAAE;IAC1C,IAAI,iBAAiB,GAAG,SAAS,CAAC;IAClC,CAAC;IACD,SAAS,qBAAqB,GAAG;IACjC,IAAI,IAAI,CAAC,iBAAiB;IAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IACD,SAAS,YAAY,CAAC,EAAE,EAAE;IAC1B,IAAI,qBAAqB,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;AACD,IA6BA;IACA;IACA;IACA,SAAS,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE;IAClC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,IAAI,SAAS,EAAE;IACnB,QAAQ,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK;IACL,CAAC;;IAED,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,IACA,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3C,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,SAAS,eAAe,GAAG;IAC3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;IAC3B,QAAQ,gBAAgB,GAAG,IAAI,CAAC;IAChC,QAAQ,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,KAAK;IACL,CAAC;AACD,IAIA,SAAS,oBAAoB,CAAC,EAAE,EAAE;IAClC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,SAAS,mBAAmB,CAAC,EAAE,EAAE;IACjC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,SAAS,kBAAkB,CAAC,EAAE,EAAE;IAChC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,SAAS,KAAK,GAAG;IACjB,IAAI,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IACrC,IAAI,GAAG;IACP;IACA;IACA,QAAQ,OAAO,gBAAgB,CAAC,MAAM,EAAE;IACxC,YAAY,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACvD,YAAY,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC7C,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,SAAS;IACT,QAAQ,OAAO,iBAAiB,CAAC,MAAM;IACvC,YAAY,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC;IACxC;IACA;IACA;IACA,QAAQ,OAAO,gBAAgB,CAAC,MAAM,EAAE;IACxC,YAAY,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;IACpD,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;IAC/C,gBAAgB,QAAQ,EAAE,CAAC;IAC3B;IACA,gBAAgB,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,aAAa;IACb,SAAS;IACT,KAAK,QAAQ,gBAAgB,CAAC,MAAM,EAAE;IACtC,IAAI,OAAO,eAAe,CAAC,MAAM,EAAE;IACnC,QAAQ,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC;IAChC,KAAK;IACL,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,SAAS,MAAM,CAAC,EAAE,EAAE;IACpB,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrB,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAClC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrD,KAAK;IACL,CAAC;AACD,IAcA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC;IACX,SAAS,YAAY,GAAG;IACxB,IAAI,MAAM,GAAG;IACb,QAAQ,SAAS,EAAE,CAAC;IACpB,QAAQ,SAAS,EAAE,EAAE;IACrB,KAAK,CAAC;IACN,CAAC;IACD,SAAS,YAAY,GAAG;IACxB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;IAC3B,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,KAAK;IACL,CAAC;IACD,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE;IACrC,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE;IAC1B,QAAQ,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvB,KAAK;IACL,CAAC;IACD,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;IAChD,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE;IAC1B,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B,YAAY,OAAO;IACnB,QAAQ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;IACpC,YAAY,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,gBAAgB,QAAQ,EAAE,CAAC;IAC3B,aAAa;IACb,SAAS,CAAC,CAAC;IACX,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvB,KAAK;IACL,CAAC;AACD,AA0fA;IACA,SAAS,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzC,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAQ,OAAO;IACf,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IACxC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,SAAS,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1E,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;IACA;IACA;IACA,IAAI,mBAAmB,CAAC,MAAM;IAC9B,QAAQ,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACrE,QAAQ,IAAI,UAAU,EAAE;IACxB,YAAY,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAC/C,SAAS;IACT,aAAa;IACb;IACA;IACA,YAAY,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,SAAS;IACT,QAAQ,SAAS,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;IACnC,KAAK,CAAC,CAAC;IACP,IAAI,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IACD,SAAS,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE;IACjD,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACzC,QAAQ,IAAI,SAAS;IACrB,YAAY,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC;IACA;IACA,QAAQ,SAAS,CAAC,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC/D,QAAQ,SAAS,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;IAC9B,KAAK;IACL,CAAC;IACD,SAAS,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE;IACpC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;IAC7B,QAAQ,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,eAAe,EAAE,CAAC;IAC1B,QAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,EAAE,CAAC;IAC5C,KAAK;IACL,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC;IACD,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE;IACvF,IAAI,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;IAC/C,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG;IAC9B,QAAQ,QAAQ,EAAE,IAAI;IACtB,QAAQ,GAAG,EAAE,IAAI;IACjB;IACA,QAAQ,KAAK,EAAE,UAAU;IACzB,QAAQ,MAAM,EAAE,IAAI;IACpB,QAAQ,SAAS,EAAE,YAAY;IAC/B,QAAQ,KAAK,EAAE,YAAY,EAAE;IAC7B;IACA,QAAQ,QAAQ,EAAE,EAAE;IACpB,QAAQ,UAAU,EAAE,EAAE;IACtB,QAAQ,aAAa,EAAE,EAAE;IACzB,QAAQ,YAAY,EAAE,EAAE;IACxB,QAAQ,OAAO,EAAE,IAAI,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;IAC7E;IACA,QAAQ,SAAS,EAAE,YAAY,EAAE;IACjC,QAAQ,KAAK,EAAE,IAAI;IACnB,KAAK,CAAC;IACN,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;IACtB,IAAI,EAAE,CAAC,GAAG,GAAG,QAAQ;IACrB,UAAU,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;IACrD,YAAY,IAAI,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE;IAC1E,gBAAgB,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;IACjC,oBAAoB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACzC,gBAAgB,IAAI,KAAK;IACzB,oBAAoB,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,aAAa;IACb,SAAS,CAAC;IACV,UAAU,KAAK,CAAC;IAChB,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;IACxB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE;IAC7B;IACA,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,SAAS;IACT,aAAa;IACb;IACA,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC5B,SAAS;IACT,QAAQ,IAAI,OAAO,CAAC,KAAK;IACzB,YAAY,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACjD,QAAQ,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,QAAQ,KAAK,EAAE,CAAC;IAChB,KAAK;IACL,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;AACD,IAoCA,MAAM,eAAe,CAAC;IACtB,IAAI,QAAQ,GAAG;IACf,QAAQ,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B,KAAK;IACL,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE;IACxB,QAAQ,MAAM,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtF,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,QAAQ,OAAO,MAAM;IACrB,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,YAAY,IAAI,KAAK,KAAK,CAAC,CAAC;IAC5B,gBAAgB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,SAAS,CAAC;IACV,KAAK;IACL,IAAI,IAAI,GAAG;IACX;IACA,KAAK;IACL,CAAC;IACD,MAAM,kBAAkB,SAAS,eAAe,CAAC;IACjD,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,IAAI,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAChE,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC7D,SAAS;IACT,QAAQ,KAAK,EAAE,CAAC;IAChB,KAAK;IACL,IAAI,QAAQ,GAAG;IACf,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM;IAC9B,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC;IACV,KAAK;IACL,CAAC;;;;;;;;;;;;;IC9xCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyDA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;QACxB,AAA+D,cAAc,GAAG,OAAO,EAAE,AAE9D,CAAC;KAC/B,CAACA,cAAI,GAAG,YAAY;QAEjB,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;YAC/B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;YAE5B,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;SAC5C,CAAC;;QAEF,IAAI,QAAQ,GAAG,UAAU,GAAG,EAAE;YAC1B,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,EAAE;oBACP,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;oBACxD,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;iBAClC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;oBAChB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChC;aACJ;YACD,OAAO,GAAG,CAAC;SACd,CAAC;;;QAGF,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACzI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;YAEnB,WAAW,EAAE,UAAU,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;SAC/D;QACD,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;YACrB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;SACvE,CAAC;;QAEF,IAAI,MAAM,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE;YACnC,KAAK,QAAQ,KAAK,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;;;YAGzC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;;;SAGrE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,QAAQ,EAAE;UAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;UAC3C;;;YAGE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,IAAI,GAAG,UAAU,IAAI,EAAE;YACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;YACrC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;YAChE,OAAO,IAAI,CAAC;SACf,CAAC;;QAEF,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;;QAEjB,IAAI,KAAK,GAAG;SACX,QAAQ,EAAE,QAAQ;SAClB,KAAK,EAAE,KAAK;SACZ,IAAI,EAAE,IAAI;SACV,MAAM,EAAE,MAAM;SACd,IAAI,EAAE,IAAI;SACV,EAAE,EAAE,EAAE;SACN,KAAK,EAAE,EAAE,CAAC,CAAC;SACX,OAAO,EAAE,EAAE,CAAC,CAAC;SACb,OAAO,EAAE,EAAE,GAAG,GAAG;SACjB,OAAO,EAAE,GAAG,GAAG,EAAE;SACjB,CAAC;;QAEF,IAAI,KAAK,GAAG;SACX,MAAM,EAAE,EAAE;SACV,UAAU,EAAE,EAAE;SACd,CAAC;;QAEF,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;QAGxB,IAAI,KAAK,GAAG,SAAS,KAAK,GAAG;YACzB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC5B,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;gBACnB,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;;gBAE1C,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;aAClB;;;YAGD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,UAAU,GAAG,KAAK,CAAC;;YAEvB,IAAI,CAAC,IAAI,EAAE;gBACP,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACf,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC/E,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;iBACvB;;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC9D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;oBAElB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACjC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE;iBACvB;aACJ;;YAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;aAC7B,MAAM;gBACH,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;aAC5C;;;YAGD,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;SACjD,CAAC;;QAEF,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;YAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;YAC1D,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;SAC9C,CAAC;;QAEF,IAAI,OAAO,GAAG,KAAK,CAAC;;QAEpB,IAAI,MAAM,GAAG,YAAY;SACxB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;SACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;SAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SACnF,CAAC;;QAEF,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;;QAEzB,IAAI,QAAQ,GAAG,MAAM,CAAC;;QAEtB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;QAEnB,IAAI,QAAQ,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACZ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACZ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpB,CAAC;;QAEF,IAAI,UAAU,GAAG,QAAQ,CAAC;;QAE1B,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;QAE5B,IAAI,QAAQ,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACtC,OAAO;gBACH,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,KAAK;aACR,CAAC;SACL,CAAC;;QAEF,IAAI,UAAU,GAAG,QAAQ,CAAC;;QAE1B,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;QAIxB,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;YAChC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC,CAAC;;QAEF,QAAQ,CAAC,IAAI,GAAG,YAAY;YACxB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;;QAE/B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,MAAM,CAAC;iBACjB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;;;;;;;;;;QAUzD,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACjC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACjC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACjC,IAAI,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,GAAG,MAAM,CAAC;aACjB,MAAM;gBACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aACnB;YACD,QAAQ,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;SAChD,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;QAU5B,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;YAEhB,CAAC,IAAI,GAAG,CAAC;YACT,CAAC,IAAI,GAAG,CAAC;YACT,CAAC,IAAI,GAAG,CAAC;;YAET,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;YAE5B,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,EAAE,CAAC,CAAC;;YAET,IAAI,GAAG,KAAK,GAAG,CAAC;gBACZ,CAAC,GAAG,CAAC,CAAC;gBACN,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;aAClB,MAAM;gBACH,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;aAC3E;;YAED,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE;iBACvC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE;iBAChD,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE;;YAErD,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;QAGxB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;QAUvB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE;gBAC3B,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,GAAG,MAAM,CAAC;aACjB;YACD,QAAQ,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;SAC1E,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,MAAM,CAAC;;YAEX,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;aACrB,MAAM;gBACH,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChB,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACpB,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;gBACjB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;gBACX,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACpB,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;oBAC9B,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;oBAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBACb,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;yBACrC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBAClB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;yBACb,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBAClB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;;wBAElD,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;iBACrB;gBACD,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;aACnH;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAEjB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;YACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,MAAM,GAAG,iDAAiD,CAAC;QAC/D,IAAI,OAAO,GAAG,uEAAuE,CAAC;QACtF,IAAI,UAAU,GAAG,kFAAkF,CAAC;QACpG,IAAI,WAAW,GAAG,wGAAwG,CAAC;QAC3H,IAAI,MAAM,GAAG,iFAAiF,CAAC;QAC/F,IAAI,OAAO,GAAG,uGAAuG,CAAC;;QAEtH,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,OAAO,GAAG,UAAU,GAAG,EAAE;YACzB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC;;YAEN,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;gBACpB,IAAI;oBACA,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAClC,CAAC,OAAO,CAAC,EAAE;;iBAEX;aACJ;;;YAGD,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;gBACzB,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACpB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACpB;gBACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACX,OAAO,GAAG,CAAC;aACd;;;YAGD,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;gBAC1B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC5B;gBACD,OAAO,KAAK,CAAC;aAChB;;;YAGD,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG;gBAC7B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;iBAC3C;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,OAAO,KAAK,CAAC;aAChB;;;YAGD,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG;gBAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;iBAC3C;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,KAAK,CAAC;aAChB;;;YAGD,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;gBACzB,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBACf,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBACf,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,OAAO,KAAK,CAAC;aAChB;;;YAGD,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;gBAC1B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBACjB,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBACjB,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjB,OAAO,KAAK,CAAC;aAChB;SACJ,CAAC;;QAEF,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;QAKxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;YACnC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACrC,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,UAAU,CAAC,EAAE;gBACf,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1C,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;gBAEvD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oBAC7D,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;QAE5B,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY;YAC1B,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACd,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACd,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACd,OAAO,GAAG,CAAC;SACd,CAAC;;QAEF,QAAQ,CAAC,EAAE,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;SACzF,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;YAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,CAAC;;QAEF,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;QAE5B,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;YAC1B,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;YACnC,IAAI,CAAC,CAAC;YACN,IAAI,KAAK,KAAK,CAAC,EAAE;gBACb,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;aAClB,MAAM;gBACH,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBACvC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBACzC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBACzC,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;aAC3B;YACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SACrB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;QAUvB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;;YAE7D,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;YACd,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAClB,MAAM;gBACH,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;gBAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;gBACxB,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACf,QAAQ,CAAC;oBACL,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBAChF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;iBAC3F;aACJ;YACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACnD,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;QAOxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;YAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;YAClC,IAAI,CAAC,KAAK,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/B,IAAI,IAAI,KAAK,MAAM,EAAE;gBACjB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;aACjC;YACD,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC9C,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjC,QAAQ,IAAI,CAAC,WAAW,EAAE;gBACtB,KAAK,MAAM,EAAE,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;gBACtC,KAAK,MAAM,EAAE,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;gBACtC,SAAS,QAAQ,GAAG,GAAG,GAAG,EAAE;aAC/B;SACJ,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,MAAM,GAAG,qCAAqC,CAAC;QACnD,IAAI,OAAO,GAAG,sBAAsB,CAAC;;QAErC,IAAI,OAAO,GAAG,UAAU,GAAG,EAAE;YACzB,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;gBAEnB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACvB;;gBAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACpB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACnD;gBACD,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACjB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpB;;;YAGD,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACpB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;;oBAElB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACvB;gBACD,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;gBAC3B,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;gBAC3B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACpD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC1B;;;;;;YAMD,MAAM,IAAI,KAAK,EAAE,qBAAqB,GAAG,GAAG,EAAE,CAAC;SAClD,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;QAKxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;YACnC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACrC,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,UAAU,CAAC,EAAE;gBACf,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1C,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;gBAEvD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;oBAC5E,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;;QAErB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;;;;;YAM/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,IAAI,GAAG,CAAC;YACT,CAAC,IAAI,GAAG,CAAC;YACT,CAAC,IAAI,GAAG,CAAC;YACT,IAAI,CAAC,CAAC;YACN,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,CAAC,GAAG,GAAG,CAAC;aACX,MAAM;gBACH,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,GAAG,CAAC,EAAE;oBACP,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;iBACjB;gBACD,CAAC,IAAI,KAAK,CAAC;aACd;YACD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;;;;;;QAOnB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;;;;;YAM/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAEV,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YACxB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;;YAExB,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;YACxB,CAAC,IAAI,GAAG,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACT,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACZ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACjB,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAChB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACT,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACZ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACjB,MAAM;gBACH,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACT,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACZ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACjB;YACD,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/D,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;QAOxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;YAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;QAOxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;YAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;;;;;;;QAQrB,IAAI,SAAS,GAAG,YAAY;YACxB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,IAAI,KAAK,CAAC,EAAE;gBACZ,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBACf,CAAC,GAAG,CAAC,CAAC;aACT,MAAM;gBACH,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBACxC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC1C,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC1C,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;aAC3B;YACD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACnB,CAAC;;QAEF,IAAI,OAAO,GAAG,SAAS,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;;YAE7D,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,CAAC,IAAI,GAAG,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACjB,MAAM;gBACH,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;gBAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE;gBACxB,CAAC,IAAI,EAAE,CAAC;;gBAER,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;gBAE9B,QAAQ,CAAC;oBACL,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBAChF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;oBACxF,KAAK,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;iBAC3F;aACJ;YACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5C,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;QAOxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;YAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,YAAY,GAAG;;YAEf,EAAE,EAAE,EAAE;;;YAGN,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,QAAQ;;YAEZ,EAAE,EAAE,WAAW;YACf,EAAE,EAAE,WAAW;YACf,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,WAAW;SAClB,CAAC;;QAEF,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;QAEnB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxD,CAAC;;QAEF,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;YACvB,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,EAAE;YAChD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClD,OAAO,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;SAChD,CAAC;;QAEF,IAAI,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAC3B,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;YACnF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;;;;;;QAOrB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;YAElB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;YACnB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAC/B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;;YAE/B,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;;YAEjC,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;YAC3D,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;YAC5D,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;;YAE5D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACjD,CAAC;;QAEF,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;YACvB,OAAO,GAAG,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;SAC9E,CAAC;;QAEF,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;SACnF,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;QAOxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;YAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC;YAC5C,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE;YAC/C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACpB,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;;;QAI5B,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5B,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;QAErB,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;;;;;;;;YAS/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YACxB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YAChB,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACvC,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;;;QAI5B,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACnD,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;;QAG5B,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;SACvC,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;QAOxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;;QAE9E,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;QACF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9D,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC/C,OAAO,CAAC,CAAC;iBACZ;aACJ;SACJ,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;;;;QAQP,IAAI,MAAM,GAAG;YACT,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,cAAc,EAAE,SAAS;YACzB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,SAAS;YACzB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,SAAS;YACxB,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,SAAS;YACxB,aAAa,EAAE,SAAS;YACxB,aAAa,EAAE,SAAS;YACxB,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,SAAS;YACxB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,SAAS;YACvB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,SAAS;YACpB,cAAc,EAAE,SAAS;YACzB,oBAAoB,EAAE,SAAS;YAC/B,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,SAAS;YACtB,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,SAAS;YACzB,cAAc,EAAE,SAAS;YACzB,cAAc,EAAE,SAAS;YACzB,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,SAAS;YAC3B,UAAU,EAAE,SAAS;YACrB,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,SAAS;YACzB,eAAe,EAAE,SAAS;YAC1B,iBAAiB,EAAE,SAAS;YAC5B,eAAe,EAAE,SAAS;YAC1B,eAAe,EAAE,SAAS;YAC1B,YAAY,EAAE,SAAS;YACvB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,SAAS;YACxB,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,SAAS;YACxB,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,aAAa,EAAE,SAAS;YACxB,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,SAAS;SACzB,CAAC;;QAEF,IAAI,QAAQ,GAAG,MAAM,CAAC;;QAEtB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;QAMxB,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;YAChC,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBACnE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;gBAEhB,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;aACvD;YACD,OAAO,GAAG,CAAC;SACd,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE;YACjC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;SAChD,CAAC;;QAEF,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,UAAU,CAAC,EAAE;gBACf,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1C,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;gBAEvD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;oBACrE,OAAO,OAAO,CAAC;iBAClB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;;QAE5B,IAAI,OAAO,GAAG,YAAY;YACtB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACnC,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;QAExB,IAAI,OAAO,GAAG,UAAU,GAAG,EAAE;YACzB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,EAAE;gBACxD,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;gBACnB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpB;YACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;SAC9C,CAAC;;QAEF,IAAI,SAAS,GAAG,OAAO,CAAC;;QAExB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;QAIxB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;YAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;;QAE7B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;oBAC1F,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;YAClC,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;;YAE/B,IAAI,GAAG,KAAK,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC5C,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,EAAE;YACnC,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;;YAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAC3C,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACrD,CAAC,CAAC;SACN,CAAC;;QAEF,QAAQ,CAAC,GAAG,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,YAAY;YAC3B,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC;SACf,CAAC;;QAEF,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,YAAY;gBACd,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;gBAE/C,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC;oBAC9C,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;oBACnF,OAAO,KAAK,CAAC;iBAChB;aACJ;SACJ,CAAC,CAAC;;;;;;;QAOH,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;QAEnB,IAAI,eAAe,GAAG,UAAU,MAAM,EAAE;YACpC,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,IAAI,IAAI,GAAG,EAAE,EAAE;gBACX,CAAC,GAAG,GAAG,CAAC;gBACR,CAAC,GAAG,CAAC,kBAAkB,GAAG,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3F,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aAC9G,MAAM;gBACH,CAAC,GAAG,kBAAkB,GAAG,iBAAiB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxF,CAAC,GAAG,iBAAiB,GAAG,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxF,CAAC,GAAG,GAAG,CAAC;aACX;YACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpB,CAAC;;QAEF,IAAI,iBAAiB,GAAG,eAAe,CAAC;;;;;;;;QAQxC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,eAAe,GAAG,YAAY;YAC9B,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,GAAG,GAAG,GAAG,CAAC;YACd,IAAI,IAAI,CAAC;YACT,OAAO,OAAO,GAAG,OAAO,GAAG,GAAG,EAAE;gBAC5B,IAAI,GAAG,CAAC,OAAO,GAAG,OAAO,IAAI,GAAG,CAAC;gBACjC,IAAI,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;oBAClC,OAAO,GAAG,IAAI,CAAC;iBAClB,MAAM;oBACH,OAAO,GAAG,IAAI,CAAC;iBAClB;aACJ;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;SACxB,CAAC;;QAEF,IAAI,iBAAiB,GAAG,eAAe,CAAC;;QAExC,OAAO,CAAC,SAAS,CAAC,IAAI;QACtB,OAAO,CAAC,SAAS,CAAC,MAAM;QACxB,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;YACvC,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC,CAAC;;QAEF,QAAQ,CAAC,IAAI;QACb,QAAQ,CAAC,MAAM;QACf,QAAQ,CAAC,WAAW,GAAG,YAAY;YAC/B,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,OAAO,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3F,CAAC;;QAEF,KAAK,CAAC,MAAM,CAAC,IAAI;QACjB,KAAK,CAAC,MAAM,CAAC,MAAM;QACnB,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,iBAAiB,CAAC;;QAE7C,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;QAExB,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE;YAC1C,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;;YAEtC,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBAC3C,IAAI,MAAM,EAAE;oBACR,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO,IAAI,CAAC;iBACf;gBACD,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aAC5E;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvB,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;YACnC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;SACtC,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;SAC3C,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;;SAElC,IAAI,EAAE,GAAG,IAAI,CAAC;SACd,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC;SACnC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;SACvD,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,MAAM,EAAE;SAC7C,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;;SAElC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;SAC5B,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;QACpD,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;;QAExD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,EAAE,EAAE;YACjC,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9B,MAAM,IAAI,KAAK,EAAE,kBAAkB,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC;aACxE,MAAM;gBACH,OAAO,GAAG,CAAC;aACd;SACJ,CAAC;;QAEF,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;QAErB,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,QAAQ,GAAG,EAAE,CAAC;;QAElB,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;YACxC,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBAC/C,IAAI,GAAG,KAAK,CAAC,EAAE;;oBAEX,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACnD;gBACD,IAAI,GAAG,KAAK,CAAC,EAAE;;oBAEX,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;iBACzD;;gBAED,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,IAAI,GAAG,KAAK,CAAC;gBACjB,IAAI,QAAQ,GAAG,QAAQ,CAAC;;gBAExB,IAAI,IAAI,GAAG,UAAU,GAAG,EAAE,IAAI,EAAE;oBAC5B,IAAI,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC3C,IAAI,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;oBACzB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;;wBAEzC,OAAO,GAAG,CAAC;qBACd;oBACD,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBACtD,CAAC;;gBAEF,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;gBAC5G,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnD;YACD,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D,CAAC;;;QAGF,IAAI,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;;;YAGjC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;SAC/C,CAAC;;QAEF,IAAI,WAAW,GAAG,UAAU,CAAC,EAAE;YAC3B,CAAC,IAAI,GAAG,CAAC;YACT,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC/D,CAAC;;QAEF,IAAI,YAAY,GAAG,EAAE,CAAC;;QAEtB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;QAGxB,IAAI,GAAG,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/B,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAC1B,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1C,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;YAEvD,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;gBAErC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBACrB,MAAM,IAAI,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,iBAAiB,EAAE,CAAC;aACvE;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;YAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,EAAE,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;YAC5D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACnC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAChE,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,GAAG;QACrB,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;SACjD,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;SAC1B,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1C,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;SAEvD,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SAC3D,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,MAAM,EAAE;SAChD,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;;SAEtC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;SACpB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SACf,IAAI,MAAM,EAAE;UACX,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAC9C,OAAO,IAAI,CAAC;UACZ,MAAM;UACN,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;UAC7D;SACD,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,MAAM,EAAE;SAC7C,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;;SAElC,IAAI,EAAE,GAAG,IAAI,CAAC;SACd,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC;SACnC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;SAC/B,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;SACvD,CAAC;;QAEF,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,MAAM,EAAE;SAC/C,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;;SAElC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;SAC9B,CAAC;;QAEF,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;QAExB,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAChD,KAAK,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;;YAEtC,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;oBACR,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE;wBAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;4BAClB,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;4BAClC,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;4BAClC,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;4BAC9C,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;4BAC9C,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;yBAC5B;qBACJ,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;wBACnC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;qBAClB,MAAM;wBACH,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;qBACtD;oBACD,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACjC,IAAI,MAAM,EAAE;wBACR,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACrB,OAAO,IAAI,CAAC;qBACf;oBACD,OAAO,GAAG,CAAC;iBACd;gBACD,MAAM,IAAI,KAAK,EAAE,kBAAkB,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC;aACxE,MAAM;gBACH,OAAO,GAAG,CAAC;aACd;SACJ,CAAC;;QAEF,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YACjC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,OAAO,IAAI,OAAO;gBACd,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,KAAK;aACR;SACJ,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;QAErB,IAAI,IAAI,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YAChC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,IAAI,OAAO;gBACd,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7C,KAAK;aACR;SACJ,CAAC;;;QAGF,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;;QAEzB,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YACjC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,OAAO;gBACd,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,KAAK;aACR;SACJ,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,IAAI,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;YACnC,IAAI,MAAM,EAAE,QAAQ,CAAC;;YAErB,IAAI,IAAI,EAAE,IAAI,CAAC;YACf,IAAI,CAAC,KAAK,KAAK,EAAE;gBACb,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;gBACpB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;gBACpB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB,MAAM,IAAI,CAAC,KAAK,KAAK,EAAE;gBACpB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE;gBACnC,CAAC,GAAG,KAAK,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB;;YAED,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACvC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;gBACxB,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;gBACtE,CAAC,QAAQ,GAAG,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;aACjF;;YAED,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;;YAEtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;;gBAE9B,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE;oBAClC,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;iBACxB,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE;oBACzC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;iBACtB,KAAK;oBACF,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;iBACpB;gBACD,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;aACvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACrB,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE;aAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACrB,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE;aAC9D,MAAM;gBACH,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;aACpB;;YAED,IAAI,GAAG,KAAK,SAAS,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;YAC1D,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1C,CAAC;;QAEF,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAClC,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;QACzB,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YACjC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;SAC9C,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAClC,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAClC,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAClC,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAClC,CAAC;;;QAGF,YAAY,CAAC,GAAG,GAAG,KAAK,CAAC;;QAEzB,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;;QAEzB,IAAI,OAAO,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;YAClC,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;;YAEnC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;;YAEtB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,IAAI,KAAK,MAAM,EAAE;gBACjB,OAAO,aAAa,CAAC,MAAM,CAAC;aAC/B;YACD,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,CAAC;;YAEX,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC1C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;oBAC5B,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;oBACf,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClB;aACJ;;YAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACxB,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;wBACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACT,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;4BACxB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;4BAC7B,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;4BACf,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;yBAClB,MAAM;4BACH,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;yBACrB;qBACJ;iBACJ;aACJ,CAAC,CAAC;;YAEH,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBACnC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;oBAC1B,IAAI,GAAG,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;oBAC7D,OAAO,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE;oBAC/B,OAAO,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE;oBAClC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBAClB,MAAM;oBACH,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAChC;aACJ;YACD,KAAK,IAAI,CAAC,CAAC;YACX,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;SAC5E,CAAC;;;QAGF,IAAI,aAAa,GAAG,UAAU,MAAM,EAAE;YAClC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBACpD,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;gBAElB,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACxB;YACD,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YACvC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SACvC,CAAC;;;;;;;QAOF,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;QAExB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;QAErB,IAAI,KAAK,GAAG,SAAS,MAAM,EAAE;;;YAGzB,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;;YAEhB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,IAAI,MAAM,GAAG,CAAC,CAAC;;;;YAIf,IAAI,SAAS,GAAG,SAAS,MAAM,EAAE;gBAC7B,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACpC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM;oBACxD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE;oBACvC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;iBAClD;gBACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;;oBAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;wBACrB,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnC;;oBAED,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;oBAEzB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAChC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnC;;oBAED,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;wBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpC;iBACJ;gBACD,UAAU,EAAE,CAAC;gBACb,OAAO,OAAO,GAAG,MAAM,CAAC;aAC3B,CAAC;;YAEF,IAAI,QAAQ,GAAG,SAAS,KAAK,EAAE;gBAC3B,IAAI,QAAQ,IAAI,IAAI,EAAE;oBAClB,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;wBAClC,CAAC,EAAE,CAAC;qBACP;oBACD,OAAO,CAAC,CAAC,CAAC,CAAC;iBACd;gBACD,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;;;;;;;;;;;;;;YActC,IAAI,QAAQ,GAAG,SAAS,GAAG,EAAE,SAAS,EAAE;gBACpC,IAAI,GAAG,EAAE,CAAC,CAAC;gBACX,IAAI,SAAS,IAAI,IAAI,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,EAAE;gBAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,EAAE,EAAE,OAAO,MAAM,CAAC,EAAE;gBACpD,IAAI,CAAC,SAAS,EAAE;oBACZ,IAAI,QAAQ,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;;wBAEnC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACtB,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;qBAC/B,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;;wBAEtB,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;qBACpC,MAAM;wBACH,CAAC,GAAG,CAAC,CAAC;qBACT;iBACJ,MAAM;oBACH,CAAC,GAAG,GAAG,CAAC;iBACX;;gBAED,IAAI,CAAC,SAAS,EAAE;oBACZ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBACf;;gBAED,IAAI,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;;gBAE3C,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;gBAExD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;gBAEhC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;;gBAE9B,IAAI,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;oBAC7B,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;iBACxB,MAAM;oBACH,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE;;wBAE7B,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;4BAChB,IAAI,CAAC,IAAI,CAAC,EAAE;gCACR,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gCACjB,MAAM;6BACT;4BACD,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gCACrC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gCACjB,MAAM;6BACT;4BACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCACxB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACxB,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gCAC/D,MAAM;6BACT;yBACJ;qBACJ,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;wBACvC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;qBACpB;oBACD,IAAI,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE;iBAC3C;gBACD,OAAO,GAAG,CAAC;aACd,CAAC;;YAEF,IAAI,UAAU,GAAG,YAAY,EAAE,OAAO,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC;;YAE1D,SAAS,CAAC,MAAM,CAAC,CAAC;;;;YAIlB,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE;gBAChB,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE;aAChE,CAAC;;YAEF,CAAC,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE;gBAC1B,IAAI,OAAO,IAAI,IAAI,EAAE;oBACjB,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE;wBAC7B,QAAQ,GAAG,OAAO,CAAC;wBACnB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACrD,MAAM;wBACH,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAClC,IAAI,OAAO,KAAK,CAAC,EAAE;4BACf,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;yBAC7B,MAAM;4BACH,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;yBAC/C;qBACJ;oBACD,OAAO,CAAC,CAAC;iBACZ;gBACD,OAAO,QAAQ,CAAC;aACnB,CAAC;;;YAGF,CAAC,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;gBACxB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;oBACnB,OAAO,OAAO,CAAC;iBAClB;gBACD,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,GAAG,EAAE,CAAC;gBACV,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE;;oBAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;wBAChE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;sBAElB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;qBACnC;iBACJ,MAAM;oBACH,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBACpB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtB;iBACJ;gBACD,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvB,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,IAAI,GAAG,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;oBACnB,OAAO,KAAK,CAAC;iBAChB;gBACD,KAAK,GAAG,EAAE,CAAC;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;gBAC7B,SAAS,CAAC,MAAM,AAAM,CAAC,CAAC;gBACxB,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,GAAG,GAAG,SAAS,EAAE,EAAE;gBACjB,IAAI,GAAG,EAAE,CAAC;gBACV,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;gBACrB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;oBACnB,OAAO,OAAO,CAAC;iBAClB;gBACD,OAAO,GAAG,GAAG,CAAC;gBACd,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAAE;gBAC7B,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;gBAC5B,iBAAiB,GAAG,CAAC,CAAC;gBACtB,UAAU,EAAE,CAAC;gBACb,IAAI,iBAAiB,EAAE;oBACnB,IAAI,GAAG,SAAS,CAAC,EAAE;wBACf,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;wBACpC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;wBACpC,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;wBAClB,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC1C,IAAI,OAAO,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;wBACnC,IAAI,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;wBAChC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACX,IAAI,EAAE,GAAG,CAAC,CAAC;wBACX,IAAI,QAAQ,GAAG,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE;4BAClD,CAAC,WAAW;gCACR,IAAI,GAAG,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;gCAC1B,IAAI,MAAM,GAAG,CAAC,EAAE;oCACZ,EAAE,GAAG,CAAC,CAAC;oCACP,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;iCACvB,MAAM;oCACH,EAAE,GAAG,CAAC,CAAC;oCACP,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;iCACvB;gCACD,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCACtC,OAAO,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;6BACtC,GAAG,CAAC;yBACR;wBACD,OAAO,CAAC,CAAC;qBACZ,CAAC;iBACL,MAAM;oBACH,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;iBACrC;gBACD,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE;gBACpB,IAAI,CAAC,IAAI,IAAI,EAAE;oBACX,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;wBACxB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACb;oBACD,QAAQ,GAAG,CAAC,CAAC;oBACb,OAAO,CAAC,CAAC;iBACZ,MAAM;oBACH,OAAO,QAAQ,CAAC;iBACnB;aACJ,CAAC;;YAEF,CAAC,CAAC,MAAM,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;;gBAEhC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,EAAE;gBAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;;gBAEhB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBACxB,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;iBAE7B,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE;oBACxB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;iBAErB,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE;oBACtB,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACpB,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACzB,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;iBAE5G,MAAM;oBACH,MAAM,GAAG,EAAE,CAAC;oBACZ,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,IAAI,QAAQ,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;wBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE;4BAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;yBACjD;qBACJ,MAAM;wBACH,OAAO,GAAG,OAAO,CAAC;qBACrB;oBACD,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBACvD;;gBAED,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACf,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC1D;gBACD,OAAO,MAAM,CAAC;aACjB,CAAC;;YAEF,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,IAAI,EAAE;oBACX,SAAS,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,CAAC;iBACZ,MAAM;oBACH,OAAO,SAAS,CAAC;iBACpB;aACJ,CAAC;;YAEF,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,IAAI,EAAE;oBACX,MAAM,GAAG,CAAC,CAAC;oBACX,OAAO,CAAC,CAAC;iBACZ,MAAM;oBACH,OAAO,MAAM,CAAC;iBACjB;aACJ,CAAC;;YAEF,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;gBACnB,IAAI,CAAC,IAAI,IAAI,EAAE;oBACX,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACrB,OAAO,CAAC,CAAC;iBACZ,MAAM;oBACH,OAAO,MAAM,CAAC;iBACjB;aACJ,CAAC;;YAEF,OAAO,CAAC,CAAC;SACZ,CAAC;;QAEF,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;UACzC,IAAI,KAAK,GAAG,EAAE,CAAC;UACf,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;UAC7B,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;UACjE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE;YACvE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;WACf;UACD,OAAO,KAAK,CAAC;SACd;;;;;;;;;;;QAWD,IAAI,MAAM,GAAG,SAAS,MAAM,EAAE;YAC1B,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;;YAE/B,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACxB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;gBAErB,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC5F,CAAC,GAAG,SAAS,CAAC,EAAE;oBACZ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACxF,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAClC,CAAC;aACL,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;gBAE5B,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACtH,CAAC,GAAG,SAAS,CAAC,EAAE;oBACZ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5H,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAClC,CAAC;aACL,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;gBAE5B,IAAI,IAAI,CAAC;gBACT,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC1I,CAAC,GAAG,SAAS,CAAC,EAAE;oBACZ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1K,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAClC,CAAC;aACL,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC,GAAG,SAAS,CAAC,EAAE;oBACZ,IAAI,CAAC,GAAG,GAAG,EAAE;wBACT,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClB,MAAM;wBACH,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;qBACxB;iBACJ,CAAC;aACL;YACD,OAAO,CAAC,CAAC;SACZ,CAAC;;QAEF,IAAI,QAAQ,GAAG,UAAU,MAAM,EAAE;YAC7B,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,CAAC,KAAK,GAAG,YAAY,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,CAAC;SACZ,CAAC;;;;;;;;;;QAUF,IAAI,KAAK,GAAG,UAAU,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;aACjD;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SACnC,CAAC;;QAEF,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE;gBAClD,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC7B,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;gBAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAClC,CAAC,EAAE,CAAC;;QAET,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,UAAU,EAAE,EAAE,EAAE,EAAE;gBAC3C,IAAI,GAAG,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,OAAO,GAAG,CAAC;aACd,CAAC,EAAE,CAAC;;QAET,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QACxC,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACtD,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACtH,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE;YAC9B,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;SAC3B,CAAC;;;;;QAKF,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;;QAGjC,IAAI,OAAO,GAAG,KAAK,CAAC;;;;;;QAMpB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;;QAGrB,IAAI,SAAS,GAAG,SAAS,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;YAC9D,KAAK,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;YAClC,KAAK,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC;YAC3C,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5B,KAAK,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,KAAK,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAE5C,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE;gBAC/B,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACpC,MAAM;gBACH,EAAE,GAAG,CAAC,CAAC;gBACP,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;aACtC;;YAED,IAAI,CAAC,GAAG,SAAS,KAAK,EAAE;gBACpB,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;gBAC/C,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;gBACvC,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtD,CAAC;;YAEF,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;gBAClB,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC,EAAE;gBAClC,KAAK,GAAG,CAAC,CAAC;gBACV,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;gBACtB,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,OAAO,SAAS,CAAC,EAAE;gBACtC,SAAS,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;gBAClB,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC,EAAE;gBAClC,KAAK,GAAG,CAAC,CAAC;gBACV,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE;gBAChB,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,OAAO,GAAG,CAAC,EAAE;gBAChC,GAAG,GAAG,CAAC,CAAC;gBACR,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE;oBACzB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrB,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;iBAClC,MAAM;oBACH,EAAE,GAAG,CAAC,CAAC;iBACV;gBACD,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;gBACtB,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,OAAO,SAAS,CAAC,EAAE;gBACtC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;oBACvB,SAAS,GAAG,CAAC,CAAC;oBACd,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpB,MAAM;oBACH,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,EAAE,GAAG,CAAC,CAAC;iBACV;gBACD,OAAO,CAAC,CAAC;aACZ,CAAC;;YAEF,CAAC,CAAC,KAAK,GAAG,YAAY,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;YAEpD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;YAEX,OAAO,CAAC,CAAC;SACZ,CAAC;;QAEF,IAAI,MAAM,GAAG,kBAAkB,CAAC;;QAEhC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;QAEzB,IAAI,QAAQ,GAAG,YAAY;YACvB,IAAI,IAAI,GAAG,GAAG,CAAC;YACf,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACnC,CAAC;;QAEF,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;;QAGnB,IAAI,OAAO,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE;YAC/B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;;YAE/B,IAAI,CAAC,GAAG;gBACJ,GAAG,EAAE,MAAM,CAAC,SAAS;gBACrB,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,GAAG,EAAE,CAAC;gBACN,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,CAAC;aACX,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACzB,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;gBACxB,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;gBACtD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAClD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;oBACb,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;oBACjC,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;oBACjC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;iBAChB;aACJ,CAAC,CAAC;;YAEH,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;;YAE1B,CAAC,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;;YAEjE,OAAO,CAAC,CAAC;SACZ,CAAC;;;QAGF,IAAI,MAAM,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YACpC,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACpC,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;YAE5B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;gBACvB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;aACxB;YACD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;YAE9D,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;;YAEpC,IAAI,MAAM,GAAG,EAAE,CAAC;;YAEhB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpB;;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;oBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxC;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpB;;iBAEI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC/B,IAAI,GAAG,IAAI,CAAC,EAAE;oBACV,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;iBAC1E;gBACD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvE;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpB;;iBAEI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC;oBACtC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACpB,IAAI,EAAE,KAAK,CAAC,EAAE;wBACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC3B,MAAM;wBACH,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;wBAChB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACxD;iBACJ;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;aAEpB;;iBAEI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;;;;;;gBAM/B,IAAI,OAAO,CAAC;gBACZ,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBACtB,IAAI,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,MAAM,GAAG,IAAI,CAAC;gBAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,SAAS,GAAG,IAAI,CAAC;;;gBAGrB,SAAS,GAAG,EAAE,CAAC;gBACf,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACjD;gBACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;gBAEpB,OAAO,MAAM,EAAE;;oBAEX,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;wBACtB,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBACvB;oBACD,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;wBAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;wBACxB,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;wBAC/B,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;wBACpB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;4BAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;4BACrC,IAAI,IAAI,GAAG,OAAO,EAAE;gCAChB,OAAO,GAAG,IAAI,CAAC;gCACf,IAAI,GAAG,GAAG,CAAC;6BACd;4BACD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrB,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;yBAC3B;qBACJ;;;oBAGD,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClC,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBAC5B,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;qBAC5B;oBACD,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;wBAC1B,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;wBAC3B,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;4BAChC,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;yBACvC,MAAM;4BACH,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;yBACxC;qBACJ;oBACD,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBAC5B,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;qBAC5C;;;oBAGD,MAAM,GAAG,KAAK,CAAC;oBACf,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE;4BACtC,MAAM,GAAG,IAAI,CAAC;4BACd,MAAM;yBACT;qBACJ;;oBAED,SAAS,GAAG,YAAY,CAAC;oBACzB,QAAQ,EAAE,CAAC;;oBAEX,IAAI,QAAQ,GAAG,GAAG,EAAE;wBAChB,MAAM,GAAG,KAAK,CAAC;qBAClB;iBACJ;;;;gBAID,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;iBACvB;gBACD,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBAC1B,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC3B,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iBACxC;gBACD,IAAI,eAAe,GAAG,EAAE,CAAC;gBACzB,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5B,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACjE;gBACD,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE;oBACnD,IAAI,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACzC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAClB;iBACJ;aACJ;YACD,OAAO,MAAM,CAAC;SACjB,CAAC;;QAEF,IAAI,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;QAEnD,IAAI,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;;;YAG3B,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;SAC1E,CAAC;;QAEF,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;;QAEnB,IAAI,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC9B,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;;;YAIxB,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,GAAG,EAAE,KAAK,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YACtE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC;YACzD,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;YAChE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE;YAC7B,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAChK,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YACnC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;YAC1D,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,GAAG,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5D,CAAC;;;QAGF,IAAI,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;YAChC,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;;;;YAIlC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE;gBACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5B,CAAC;;QAEF,IAAI,KAAK,GAAG,YAAY;YACpB,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;YACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC;;YAE/C,IAAI;gBACA,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC;aACf,CAAC,OAAO,CAAC,EAAE;gBACR,OAAO,KAAK,CAAC;aAChB;SACJ,CAAC;;;;;;;QAOF,IAAI,MAAM,GAAG;SACZ,IAAI,EAAE,SAAS,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;SACzF,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,AAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SAC9F,CAAC;;;;;;;;;;;;;;;;;;;QAmBF,IAAI,WAAW,GAAG;;YAEd,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC5G,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC3G,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC3G,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC3G,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC5G,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC1G,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC3G,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC1G,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC3G,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;;;;YAI5G,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACnI,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACjI,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC/H,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC/H,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC/H,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACjI,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC/H,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC/H,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;;;;YAI/H,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC9F,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAChG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACzG,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC1I,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC/F,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAC5I,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YACjG,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;SAC/G,CAAC;;;QAGF,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;YAChF,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;;YAEtB,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;SACrD;;QAED,IAAI,aAAa,GAAG,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4ChC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC3B,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;QACzB,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;QAC1C,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC3B,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;;;QAGvB,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACrC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;;;QAGvB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;;;QAGzB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC3B,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC;;QAEhC,IAAI,SAAS,GAAG,QAAQ,CAAC;;QAEzB,OAAO,SAAS,CAAC;;KAEpB,EAAE,EAAE;;;;;;;;;;;;;;;;qBClnG+C,KAAK;;;6BADyB,EAAE;;;gCACtC,EAAE;;;sDAFyB,MAAM;;;;;;;;;;;;;2BACtD,KAAK;;;;;;;;8CAAL,KAAK;;;yBACsB,KAAK;;;;uDAFgB,MAAM;;;;;;;;;;;;;;;;;;KANpE,MAAI,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,IAAI,EACb,KAAK,GAAG,cAAE,CAAC;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICJ1D;IACA,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI;IAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;;IAEzB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IAChD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IAChB,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;;IAE7B,EAAE,OAAO,MAAM,EAAE,EAAE;IACnB,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IACjD,IAAI,KAAK,IAAI,IAAI,CAAC;IAClB,GAAG;IACH,EAAE,OAAO,MAAM,CAAC;IAChB,CAAC;;ICzBD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;IAC1B,EAAE,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;IACjE,CAAC;;IClCD;IACA,IAAI,UAAU,GAAG,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC;;ICC3F;IACA,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;;IAEjF;IACA,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;;ICJ/D;IACA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;ICDzB;IACA,IAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;;IAEnC;IACA,IAAI,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;;IAEhD;IACA;IACA;IACA;IACA;IACA,IAAI,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC;;IAEhD;IACA,IAAI,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;;IAE7D;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,KAAK,EAAE;IAC1B,EAAE,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;IACxD,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;;IAElC,EAAE,IAAI;IACN,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IACtC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;;IAEhB,EAAE,IAAI,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,EAAE,IAAI,QAAQ,EAAE;IAChB,IAAI,IAAI,KAAK,EAAE;IACf,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC;IAClC,KAAK,MAAM;IACX,MAAM,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC;IACnC,KAAK;IACL,GAAG;IACH,EAAE,OAAO,MAAM,CAAC;IAChB,CAAC;;IC3CD;IACA,IAAIC,aAAW,GAAG,MAAM,CAAC,SAAS,CAAC;;IAEnC;IACA;IACA;IACA;IACA;IACA,IAAIC,sBAAoB,GAAGD,aAAW,CAAC,QAAQ,CAAC;;IAEhD;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,KAAK,EAAE;IAC/B,EAAE,OAAOC,sBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;;ICfD;IACA,IAAI,OAAO,GAAG,eAAe;IAC7B,IAAI,YAAY,GAAG,oBAAoB,CAAC;;IAExC;IACA,IAAIC,gBAAc,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;;IAE7D;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3B,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE;IACrB,IAAI,OAAO,KAAK,KAAK,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IACxD,GAAG;IACH,EAAE,OAAO,CAACA,gBAAc,IAAIA,gBAAc,IAAI,MAAM,CAAC,KAAK,CAAC;IAC3D,MAAM,SAAS,CAAC,KAAK,CAAC;IACtB,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;;ICzBD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,KAAK,EAAE;IACzB,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,EAAE,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;IACnE,CAAC;;ICzBD;IACA,IAAI,QAAQ,GAAG,wBAAwB;IACvC,IAAI,OAAO,GAAG,mBAAmB;IACjC,IAAI,MAAM,GAAG,4BAA4B;IACzC,IAAI,QAAQ,GAAG,gBAAgB,CAAC;;IAEhC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3B,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACxB,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG;IACH;IACA;IACA,EAAE,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,EAAE,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC;IAC/E,CAAC;;IClCD;IACA,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;;IAExC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,KAAK,EAAE;IACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;IAC9D,CAAC;;IC7BD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,KAAK,EAAE;IAC5B,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;;IC9BD;IACA,IAAIC,kBAAgB,GAAG,gBAAgB,CAAC;;IAExC;IACA,IAAI,QAAQ,GAAG,kBAAkB,CAAC;;IAElC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,EAAE,MAAM,GAAG,MAAM,IAAI,IAAI,GAAGA,kBAAgB,GAAG,MAAM,CAAC;;IAEtD,EAAE,OAAO,CAAC,CAAC,MAAM;IACjB,KAAK,IAAI,IAAI,QAAQ;IACrB,OAAO,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,SAAS,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC;IACzD,CAAC;;ICjBD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IACzB,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG;IACH,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,EAAE,IAAI,IAAI,IAAI,QAAQ;IACtB,WAAW,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;IAC/D,WAAW,IAAI,IAAI,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC;IAC/C,QAAQ;IACR,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,GAAG;IACH,EAAE,OAAO,KAAK,CAAC;IACf,CAAC;;IC3BD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,YAAY,CAAC,KAAK,EAAE;IAC7B,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;IACnD,CAAC;;ICvBD;IACA,IAAI,SAAS,GAAG,iBAAiB,CAAC;;IAElC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,KAAK,EAAE;IACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;IACjC,KAAK,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;IAC5D,CAAC;;ICvBD;IACA,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;;IAEhB;IACA,IAAI,MAAM,GAAG,YAAY,CAAC;;IAE1B;IACA,IAAI,UAAU,GAAG,oBAAoB,CAAC;;IAEtC;IACA,IAAI,UAAU,GAAG,YAAY,CAAC;;IAE9B;IACA,IAAI,SAAS,GAAG,aAAa,CAAC;;IAE9B;IACA,IAAI,YAAY,GAAG,QAAQ,CAAC;;IAE5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,KAAK,EAAE;IACzB,EAAE,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;IAChC,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG;IACH,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;IACvB,IAAI,OAAO,GAAG,CAAC;IACf,GAAG;IACH,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;IACvB,IAAI,IAAI,KAAK,GAAG,OAAO,KAAK,CAAC,OAAO,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;IAC7E,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC;IACnD,GAAG;IACH,EAAE,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;IAChC,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;IACxC,GAAG;IACH,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;;IC7DD;IACA,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC;IACpB,IAAI,WAAW,GAAG,uBAAuB,CAAC;;IAE1C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,KAAK,EAAE;IACzB,EAAE,IAAI,CAAC,KAAK,EAAE;IACd,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACnC,GAAG;IACH,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,EAAE,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,QAAQ,EAAE;IACjD,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,OAAO,IAAI,GAAG,WAAW,CAAC;IAC9B,GAAG;IACH,EAAE,OAAO,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACrC,CAAC;;ICnCD;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,WAAW,CAAC,SAAS,EAAE;IAChC,EAAE,OAAO,SAAS,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;IACpC,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;IAC7E,MAAM,GAAG,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7B,KAAK;IACL;IACA,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;IAC3B,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM;IACX,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,KAAK;IACL,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,GAAG,CAAC;IACJ,CAAC;;ICzBD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BCmDC,SAAS;;;;sCAAd;;;;4BAMK,UAAU;;;;sCAAf;;;;0BAMK,GAAG;;;;oCAAR;;;;;;;;;;;;;;;;;;yCAZA;;;;;;;;;;yCAMA;;;;;;;;;;uCAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAZA;;;;;;;;;yCAMA;;;;;;;;;uCAMA;;;;;;;2BAZK,SAAS;;yCAAd;;;;;;;;;;;;iCAAA;;;sBAAA,sBAAA;;;;2BAMK,UAAU;;yCAAf;;;;;;;;;;;;iCAAA;;;sBAAA,sBAAA;;;;yBAMK,GAAG;;uCAAR;;;;;;;;;;;;+BAAA;;;oBAAA,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAXmE,CAAC,CAAC,GAAG,EAAE;;uCAA3D;;;;;;;;;;0CAAoD,CAAC,CAAC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;yCAMP,CAAC,CAAC,GAAG,EAAE;;uCAA3D;;;;;;;;;;0CAAoD,CAAC,CAAC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;yCAMP,CAAC,CAAC,GAAG,EAAE;;uCAA3D;;;;;;;;;;0CAAoD,CAAC,CAAC,GAAG,EAAE;;;;;;;;;;;;;;;sCAxBzE,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;;yBACnC,IAAI,IAAI,KAAC,QAAQ;;;;;;;;;;;;;0CAFF,KAAK,CAAC,GAAG,EAAE;2CAFf,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;mCANlB;iCACF,mBAA2B,MAAE,IAAI,GAAG,KAAK;wCAEvC,cAAc;wCACd,eAAe;gDACH;;;;;;;;;;;;;;;;;2DAIR,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;;;;eACnC,IAAI,IAAI,KAAC,QAAQ;;;;;;;;;;;;;;2CAFF,KAAK,CAAC,GAAG,EAAE;4CAFf,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;QA7E1B,MAAI,KAAK,GAAG,MAAM,CAAC,KAAK,aAAC,CAAC;;QAEjC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;;QAErB,SAAS,cAAc,GAAG,uBAAE,IAAI,GAAG,KAAI,CAAC,EAAE;QAC1C,SAAS,eAAe,GAAG,uBAAE,IAAI,GAAG,MAAK,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAIzC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;mDACjB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACrB,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAChD,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC;oDAC1C,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtB,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC7D,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC;6CAC1C,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACf,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAChD,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BCqD5E,MAAM;;;;oCAAX;;;;;;;;;;;;uCAAA;;;;;;;;;;;;4CAJuB;gDACI;iCAEnB,aAAa;;;;;;;uCACrB;;;;;;;;;;;yBAAK,MAAM;;uCAAX;;;;;;;;;;;;;;;+BAAA;;;;;;;sCAAA;;;;;;;uCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAEc,KAAK;8BAAL,KAAK;;;;;4BACF;;;;;;;;;;;;;;;;kCADH,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;qBARpB,KAAC,IAAI;;;;;;;;;;uCADW,KAAC,IAAI;;;;;oCAAuF,YAAY;;;;;;;;;;;2BAAlC,WAAW;;;;;;;;;;yDAAX,WAAW,uBAAX,WAAW;;;;;;;wCAAjF,KAAC,IAAI;;;WACrB,KAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA7CN,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE;IACrC,IAAQ,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;;IAED,SAAS,QAAQ,CAAC,KAAK,EAAE;IAC7B,IAAQ,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;IAC3C,CAAC;;IAUD,SAAS,SAAS,CAAC,EAAE,EAAE;IAC3B,IAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC5C,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC9C,QAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK;IACL,IAAI,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;;;;;QA1CD,MAAW,kBAAM,CAAC;QAClB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,CAAC;;QAEV,IAAI,WAAW,GAAG,EAAE,CAAC;;QAErB,SAAS,aAAa,GAAG;iCACrB,IAAI,GAAG,KAAI,CAAC;wCACZ,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC;YACnD,KAAK,CAAC,KAAK,EAAE,CAAC;SACjB;;QAED,SAAS,YAAY,GAAG;iCACpB,IAAI,GAAG,MAAK,CAAC;mCACb,MAAM,GAAG,WAAW;iBACf,KAAK,CAAC,cAAc,CAAC;iBACrB,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC5B,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC;SAC5B;;QAUD,SAAS,IAAI,CAAC,KAAK,EAAE;YACjB,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;mCAChC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAC,CAAC;SAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aCrB2B,OAAO;mCAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;uCAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAJf,MAAM;mCAAN,MAAM;;;;;;yBAErB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAFM,MAAM;;;;eAErB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAbP,MAAI,MAAM,GAAG,EAAE,EACX,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,iBAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICJjC;AACA,AACA;AACA,IAAO,SAAS,eAAe,CAAC,MAAM,EAAE;IACxC,IAAI,MAAM,KAAK,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC/D,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3C,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,KAAK;IACL,IAAI,OAAO,OAAO,CAAC;IACnB,CAAC;;AAED,IAAO,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE;IAC3C,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;;IAED,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;IACjC;IACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,IAAI,IAAI,cAAc,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,2BAA2B,GAAG,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,IAAI,IAAI,CAAC,CAAC,EAAE;IACZ;IACA,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL;IACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACxC,YAAY,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,YAAY,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,YAAY,IAAI,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,YAAY,IAAI,YAAY,GAAG,2BAA2B,EAAE,SAAS;IACrE,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,YAAY,IAAI,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,YAAY,IAAI,OAAO;IACvB,gBAAgB,YAAY,GAAG,WAAW,GAAG,cAAc;IAC3D,gBAAgB,WAAW,GAAG,2BAA2B,CAAC;AAC1D,IAGA;IACA,YAAY,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;IACjC;IACA,SAAS;IACT,KAAK;IACL;IACA;IACA,IAAI,OAAO,KAAK,KAAK,CAAC,CAAC;IACvB,CAAC;;IAED,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;IACpC,IAAI;IACJ,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM;IACN,CAAC;;;;;;;;;;;;;;;;;;;;yCCuByC,QAAQ,KAAK,MAAM,OAAG,IAAI,GAAG,aAAa,KAAC,IAAI,MAAE,QAAQ,CAAC;;;;;;;;;;0CAA1D,QAAQ,KAAK,MAAM,OAAG,IAAI,GAAG,aAAa,KAAC,IAAI,MAAE,QAAQ,CAAC;;;;;;;;;;;;;;;0BADzF,KAAK;;;;oCAAV;;;;;;;;uCAAA;;;;;;;;;;;;;;uCAAA;;;;;;;yBAAK,KAAK;;uCAAV;;;;;;;;;;;;+BAAA;;;oBAAA,oBAAA;;;;;;;;;;;;;;;;;;;;QAzEK,MAAI,MAAM,GAAG,CAAC,KAAK,CAAC,EAChB,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,CAAC,EACb,SAAS,GAAG,KAAK,EACjB,MAAM,EACN,gBAAgB,EAEhB,QAAQ,GAAG,MAAM,EACjB,iBAAK,CAAC;;QAoBjB,SAAS,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YAC9B,MAAMC,OAAK,GAAGC,KAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,GAAG,IAAI,CAAC;gBACd,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAC9B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAGD,OAAK,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;wBACnC,MAAM,GAAG,IAAI,CAAC;qBACjB;iBACJ;aACJ;YACD,OAAOA,OAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE;;QAED,SAAS,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE;YACjD,IAAI,SAAS,EAAE;gBACX,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChE,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,MAAM,CAAC;aACjB,MAAM;gBACH,OAAO,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACzC;SACJ;;;;;;;;;;;;;;;;;;;;;oDA7CE,IAAI,GAAG,SAAS,GAAG,CAAC,KAAK,EAAC,CAAC;kGAE3B,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAS,CAAC;mGAC5E,cAAc,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC;+EAErE,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAC,CAAC;kFAChF,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAC,CAAC;kJAE3F,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;qBACxG,gBAAgB,CAAC,gBAAgB,CAAC;qBAClC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAE,CAAC;2KAE7B,UAAU,GAAG,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;qBACzH,gBAAgB,CAAC,gBAAgB,CAAC;qBAClC,MAAM,CAAC,cAAc,CAAC,GAAG,GAAE,CAAC;gHAE9B,KAAK,GAAG,CAAC,IAAI,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDClB7G,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,uCACjB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,oCACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uCACf,KAAK,CAAC,GAAG,CAAC,IAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4CAKxB,KAAK,CAAC,MAAM,4BAEnB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,4BAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAyB,CAAC;;;;;qBAZzD,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAAL,KAAK;;;2DACJ,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;;;2DACjB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;;;6DACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;6DACf,KAAK,CAAC,GAAG,CAAC,IAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;;;6DAKxB,KAAK,CAAC,MAAM;;;;6DAEnB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;;;6DAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAvBpD,MAAI,KAAK,GAAG,cAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICDX,kBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,CAAC;;ICAc,iBAAQ,CAAC,OAAO,EAAE;IACjC,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnE,EAAE,OAAO;IACT,IAAI,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IACjC,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,OAAO,EAAE,GAAG,EAAE,EAAE;IACtB,QAAQ,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACjD,aAAa,EAAE,GAAG,GAAG,CAAC;IACtB,OAAO;IACP,MAAM,OAAO,EAAE,CAAC;IAChB,KAAK;IACL,IAAI,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IAClC,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,MAAM,OAAO,EAAE,GAAG,EAAE,EAAE;IACtB,QAAQ,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC;IAC7C,aAAa,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1B,OAAO;IACP,MAAM,OAAO,EAAE,CAAC;IAChB,KAAK;IACL,GAAG,CAAC;IACJ,CAAC;;IAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;IAChC,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,GAAG,CAAC;IACJ,CAAC;;IC7BD,IAAI,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAO,IAAI,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;;ICJhC,eAAQ,CAAC,MAAM,EAAE,OAAO,EAAE;IACzC,EAAE,IAAI,GAAG,CAAC;IACV,EAAE,IAAI,GAAG,CAAC;IACV,EAAE,IAAI,OAAO,KAAK,SAAS,EAAE;IAC7B,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAChC,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;IACzB,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;IAC/B,UAAU,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IAChD,SAAS,MAAM;IACf,UAAU,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IACvC,UAAU,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IACvC,SAAS;IACT,OAAO;IACP,KAAK;IACL,GAAG,MAAM;IACT,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;IAC9B,MAAM,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;IAC7D,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;IAC/B,UAAU,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IAChD,SAAS,MAAM;IACf,UAAU,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IACvC,UAAU,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IACvC,SAAS;IACT,OAAO;IACP,KAAK;IACL,GAAG;IACH,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;;IC5BD,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACvB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAEtB,IAAe,cAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAC5C,EAAE,IAAI,OAAO;IACb,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC;IACP,MAAM,KAAK;IACX,MAAM,IAAI,CAAC;;IAEX,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;IAC/C,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,EAAE,IAAI,OAAO,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;IAChE,EAAE,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;;IAErF,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE;IAChB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;IAClD,GAAG,MAAM;IACT,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC;IAClD,GAAG;;IAEH,EAAE,IAAI,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;;IAE/B,EAAE,OAAO,KAAK,CAAC;IACf,CAAC;;AAED,IAAO,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAClD,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACzC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnB,QAAQ,CAAC,KAAK,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;IACzF,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;;AAED,IAAO,SAAS,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAC7C,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5B,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IAChC,OAAO,IAAI,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC;IACnC,EAAE,OAAO,IAAI,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACvC,CAAC;;IClDM,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;IACzC,EAAE,QAAQ,SAAS,CAAC,MAAM;IAC1B,IAAI,KAAK,CAAC,EAAE,MAAM;IAClB,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;IACtC,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;IACrD,GAAG;IACH,EAAE,OAAO,IAAI,CAAC;IACd,CAAC;;ICPc,eAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;IACzD,EAAE,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IACxD,EAAE,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;IACtC,CAAC;;AAED,IAAO,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE;IAC3C,EAAE,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,EAAE,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/D,EAAE,OAAO,SAAS,CAAC;IACnB,CAAC;;ICPM,SAASE,OAAK,GAAG,EAAE;;AAE1B,IAAO,IAAI,MAAM,GAAG,GAAG,CAAC;AACxB,IAAO,IAAI,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC;;IAEjC,IAAI,GAAG,GAAG,qBAAqB;IAC/B,IAAI,GAAG,GAAG,+CAA+C;IACzD,IAAI,GAAG,GAAG,gDAAgD;IAC1D,IAAI,MAAM,GAAG,kBAAkB;IAC/B,IAAI,MAAM,GAAG,kBAAkB;IAC/B,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACnE,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACnE,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC1E,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC1E,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACnE,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;;IAE3E,IAAI,KAAK,GAAG;IACZ,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,oBAAoB,EAAE,QAAQ;IAChC,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,gBAAgB,EAAE,QAAQ;IAC5B,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,cAAc,EAAE,QAAQ;IAC1B,EAAE,eAAe,EAAE,QAAQ;IAC3B,EAAE,iBAAiB,EAAE,QAAQ;IAC7B,EAAE,eAAe,EAAE,QAAQ;IAC3B,EAAE,eAAe,EAAE,QAAQ;IAC3B,EAAE,YAAY,EAAE,QAAQ;IACxB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,aAAa,EAAE,QAAQ;IACzB,EAAE,GAAG,EAAE,QAAQ;IACf,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,WAAW,EAAE,QAAQ;IACvB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,GAAG,EAAE,QAAQ;IACf,EAAE,IAAI,EAAE,QAAQ;IAChB,EAAE,OAAO,EAAE,QAAQ;IACnB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,SAAS,EAAE,QAAQ;IACrB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,KAAK,EAAE,QAAQ;IACjB,EAAE,UAAU,EAAE,QAAQ;IACtB,EAAE,MAAM,EAAE,QAAQ;IAClB,EAAE,WAAW,EAAE,QAAQ;IACvB,CAAC,CAAC;;IAEF,MAAM,CAACA,OAAK,EAAE,KAAK,EAAE;IACrB,EAAE,WAAW,EAAE,WAAW;IAC1B,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC5B,GAAG;IACH,EAAE,QAAQ,EAAE,WAAW;IACvB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3B,GAAG;IACH,CAAC,CAAC,CAAC;;AAEH,IAAe,SAAS,KAAK,CAAC,MAAM,EAAE;IACtC,EAAE,IAAI,CAAC,CAAC;IACR,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACtK,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtE,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IAC1G,QAAQ,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/E,QAAQ,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,QAAQ,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1D,QAAQ,MAAM,KAAK,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,QAAQ,IAAI,CAAC;IACb,CAAC;;IAED,SAAS,IAAI,CAAC,CAAC,EAAE;IACjB,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;;IAED,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1B,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC9B,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;;AAED,IAAO,SAAS,UAAU,CAAC,CAAC,EAAE;IAC9B,EAAE,IAAI,EAAE,CAAC,YAAYA,OAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC;IACzB,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;;AAED,IAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACtC,EAAE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAClG,CAAC;;AAED,IAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACtC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAACA,OAAK,EAAE;IAC/B,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,GAAG;IACH,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,OAAO,IAAI,CAAC;IAChB,GAAG;IACH,EAAE,WAAW,EAAE,WAAW;IAC1B,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG;IACxC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;IACzC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;IACzC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,OAAO,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,GAAG;IACH,EAAE,QAAQ,EAAE,WAAW;IACvB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO;IACtC,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;IACpE,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;IACpE,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC3C,GAAG;IACH,CAAC,CAAC,CAAC,CAAC;;IAEJ,SAAS,GAAG,CAAC,KAAK,EAAE;IACpB,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;;IAED,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1B,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAC3B,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;;AAED,IAAO,SAAS,UAAU,CAAC,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACjE,EAAE,IAAI,EAAE,CAAC,YAAYA,OAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC;IACzB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,GAAG;IACb,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG;IACnB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC1B,EAAE,IAAI,CAAC,EAAE;IACT,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,GAAG,MAAM;IACT,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG;IACH,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;;AAED,IAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACtC,EAAE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAClG,CAAC;;IAED,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAACA,OAAK,EAAE;IAC/B,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,GAAG;IACH,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG;IAC7C,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACxB,IAAI,OAAO,IAAI,GAAG;IAClB,MAAM,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;IACnD,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IACxB,MAAM,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;IAClD,MAAM,IAAI,CAAC,OAAO;IAClB,KAAK,CAAC;IACN,GAAG;IACH,EAAE,WAAW,EAAE,WAAW;IAC1B,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,GAAG;IACH,CAAC,CAAC,CAAC,CAAC;;IAEJ;IACA,SAAS,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5B,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;IAC1C,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE;IACpB,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;IACjD,QAAQ,EAAE,IAAI,GAAG,CAAC;IAClB,CAAC;;ICpVM,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AACnC,IAAO,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;;ICGnC;IACA,IAAI,CAAC,GAAG,EAAE;IACV,IAAI,EAAE,GAAG,OAAO;IAChB,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,GAAG,OAAO;IAChB,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE;IACf,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE;IACf,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;IACpB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;IAEtB,SAAS,UAAU,CAAC,CAAC,EAAE;IACvB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACjE,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC1B,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACzE,GAAG;IACH,EAAE,IAAI,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7C,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9E,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;IAC1C,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,GAAG;IACH,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;AACD,AAIA;AACA,IAAe,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IAC9C,EAAE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAClG,CAAC;;AAED,IAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACtC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAACA,OAAK,EAAE;IAC/B,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;IACxB,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnF,GAAG;IACH,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;IACtB,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnF,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;IAC/B,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG;IAChD,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,IAAI,GAAG;IAClB,MAAM,QAAQ,EAAE,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IAC9D,MAAM,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IAC9D,MAAM,QAAQ,EAAE,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;IAC9D,MAAM,IAAI,CAAC,OAAO;IAClB,KAAK,CAAC;IACN,GAAG;IACH,CAAC,CAAC,CAAC,CAAC;;IAEJ,SAAS,OAAO,CAAC,CAAC,EAAE;IACpB,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACnD,CAAC;;IAED,SAAS,OAAO,CAAC,CAAC,EAAE;IACpB,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;;IAED,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrB,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACnF,CAAC;;IAED,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrB,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;IAChF,CAAC;;IAED,SAAS,UAAU,CAAC,CAAC,EAAE;IACvB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACjE,EAAE,IAAI,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7C,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACrE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACzC,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxF,CAAC;AACD,AAIA;AACA,IAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACtC,EAAE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAClG,CAAC;;AAED,IAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACtC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAACA,OAAK,EAAE;IAC/B,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;IACxB,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnF,GAAG;IACH,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;IACtB,IAAI,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnF,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAClC,GAAG;IACH,CAAC,CAAC,CAAC,CAAC;;ICpHJ,IAAI,CAAC,GAAG,CAAC,OAAO;IAChB,IAAI,CAAC,GAAG,CAAC,OAAO;IAChB,IAAI,CAAC,GAAG,CAAC,OAAO;IAChB,IAAI,CAAC,GAAG,CAAC,OAAO;IAChB,IAAI,CAAC,GAAG,CAAC,OAAO;IAChB,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;IACd,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;IAE1B,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC7B,EAAE,IAAI,CAAC,YAAY,SAAS,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7E,EAAE,IAAI,EAAE,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IACnB,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3D,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;IAChB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;IACtD,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;;AAED,IAAe,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IACpD,EAAE,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC9G,CAAC;;AAED,IAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;IAC5C,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACd,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;;IAED,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAACA,OAAK,EAAE;IAC3C,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,GAAG;IACH,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,GAAG;IACH,EAAE,GAAG,EAAE,WAAW;IAClB,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO;IACxD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,OAAO,IAAI,GAAG;IAClB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,CAAC,OAAO;IAClB,KAAK,CAAC;IACN,GAAG;IACH,CAAC,CAAC,CAAC,CAAC;;IC5DW,iBAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,OAAO,WAAW;IACpB,IAAI,OAAO,CAAC,CAAC;IACb,GAAG,CAAC;IACJ,CAAC;;ICFD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IACtB,EAAE,OAAO,SAAS,CAAC,EAAE;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,CAAC;IACJ,CAAC;;IAED,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE;IAC5E,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,GAAG,CAAC;IACJ,CAAC;AACD,AAKA;AACA,IAAO,SAAS,KAAK,CAAC,CAAC,EAAE;IACzB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC;IACJ,CAAC;;AAED,IAAe,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;IACtC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;;ACvBD,gBAAe,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEvB,EAAE,SAASC,KAAG,CAAC,KAAK,EAAE,GAAG,EAAE;IAC3B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,GAAGC,GAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAGA,GAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,SAAS,CAAC,EAAE;IACvB,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,OAAO,KAAK,GAAG,EAAE,CAAC;IACxB,KAAK,CAAC;IACN,GAAG;;IAEH,EAAED,KAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;;IAEvB,EAAE,OAAOA,KAAG,CAAC;IACb,CAAC,EAAE,CAAC,CAAC,CAAC;;ICvBS,cAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACzC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;IACvB,MAAM,CAAC,CAAC;;IAER,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGE,gBAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;IAElC,EAAE,OAAO,SAAS,CAAC,EAAE;IACrB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,CAAC;IACb,GAAG,CAAC;IACJ,CAAC;;IChBc,aAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;IACnB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE;IACrC,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,GAAG,CAAC;IACJ,CAAC;;ICLc,0BAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,GAAG,CAAC;IACJ,CAAC;;ICFc,eAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,CAAC;;IAER,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;IAClD,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;;IAElD,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;IACf,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;IAChB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAGA,gBAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,KAAK,MAAM;IACX,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,KAAK;IACL,GAAG;;IAEH,EAAE,OAAO,SAAS,CAAC,EAAE;IACrB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,CAAC;IACb,GAAG,CAAC;IACJ,CAAC;;ICpBD,IAAI,GAAG,GAAG,6CAA6C;IACvD,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;IAEtC,SAAS,IAAI,CAAC,CAAC,EAAE;IACjB,EAAE,OAAO,WAAW;IACpB,IAAI,OAAO,CAAC,CAAC;IACb,GAAG,CAAC;IACJ,CAAC;;IAED,SAAS,GAAG,CAAC,CAAC,EAAE;IAChB,EAAE,OAAO,SAAS,CAAC,EAAE;IACrB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACrB,GAAG,CAAC;IACJ,CAAC;;AAED,IAAe,eAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC;IAC5C,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,EAAE;IACR,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,GAAG,EAAE,CAAC;;IAEb;IACA,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;IAEzB;IACA,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE;IAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK;IACL,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;IACvC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM;IACX,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEC,iBAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,KAAK;IACL,IAAI,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;IACvB,GAAG;;IAEH;IACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;IACrB,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACrB,GAAG;;IAEH;IACA;IACA,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,QAAQ,IAAI,CAAC,CAAC,CAAC;IACf,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACnC,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,UAAU,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,SAAS,CAAC,CAAC;IACX,CAAC;;ICtDc,yBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,CAAC,KAAK,QAAQ,GAAGA,iBAAM;IAChC,QAAQ,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAEH,KAAG,IAAI,MAAM;IAChE,QAAQ,CAAC,YAAY,KAAK,GAAGA,KAAG;IAChC,QAAQ,CAAC,YAAY,IAAI,GAAG,IAAI;IAChC,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;IAChC,QAAQ,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;IAChG,QAAQG,iBAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;;ICnBc,yBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE;IACrC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,GAAG,CAAC;IACJ,CAAC;;ICJD,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;;ACAzB,QAAC,GAAG,GAAG,IAAI,CAAC,KAAK;;ICAL,mBAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,OAAO,WAAW;IACpB,IAAI,OAAO,CAAC,CAAC;IACb,GAAG,CAAC;IACJ,CAAC;;ICJc,eAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;;ICGD,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AAElB,IAAO,SAAS,QAAQ,CAAC,CAAC,EAAE;IAC5B,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;;IAED,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IACzB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;IAC3C,QAAQC,UAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACvC,CAAC;;IAED,SAAS,OAAO,CAAC,MAAM,EAAE;IACzB,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACtD,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjC,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;;IAED;IACA;IACA,SAAS,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3C,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;;IAED,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;IAC7C,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACnD,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEb;IACA,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;IAC7B,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IACpC,GAAG;;IAEH,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;IAClB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,GAAG;;IAEH,EAAE,OAAO,SAAS,CAAC,EAAE;IACrB,IAAI,IAAI,CAAC,GAAGC,WAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC;IACJ,CAAC;;AAED,IAAO,SAAS,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;IACrC,EAAE,OAAO,MAAM;IACf,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;;AAED,IAAO,SAAS,WAAW,GAAG;IAC9B,EAAE,IAAI,MAAM,GAAG,IAAI;IACnB,MAAM,KAAK,GAAG,IAAI;IAClB,MAAM,WAAW,GAAG,gBAAgB;IACpC,MAAM,SAAS;IACf,MAAM,WAAW;IACjB,MAAM,OAAO;IACb,MAAM,KAAK,GAAG,QAAQ;IACtB,MAAM,SAAS;IACf,MAAM,MAAM;IACZ,MAAM,KAAK,CAAC;;IAEZ,EAAE,SAAS,OAAO,GAAG;IACrB,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5E,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1B,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG;;IAEH,EAAE,SAAS,KAAK,CAAC,CAAC,EAAE;IACpB,IAAI,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtI,GAAG;;IAEH,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IAC7B,IAAI,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IAC7B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5I,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;IAC5B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IACjF,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;IACjC,IAAI,OAAO,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC5E,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;IAC5B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC;IACnG,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE;IAClC,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC;IACzE,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE;IAC9B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC;IAC7D,GAAG,CAAC;;IAEJ,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,SAAS,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,OAAO,EAAE,CAAC;IACrB,GAAG,CAAC;IACJ,CAAC;;AAED,IAAe,SAAS,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE;IAC3D,EAAE,OAAO,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;;IC1HD;IACA;IACA;AACA,IAAe,sBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC;IAC/F,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;IAErC;IACA;IACA,EAAE,OAAO;IACT,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW;IAChF,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC;IACJ,CAAC;;ICXc,iBAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACxD,CAAC;;ICJc,oBAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE;IAC7C,EAAE,OAAO,SAAS,KAAK,EAAE,KAAK,EAAE;IAChC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;IACxB,QAAQ,CAAC,GAAG,EAAE;IACd,QAAQ,CAAC,GAAG,CAAC;IACb,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvB,QAAQ,MAAM,GAAG,CAAC,CAAC;;IAEnB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAC3B,MAAM,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IAClE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,MAAM;IAC3C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK;;IAEL,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC;IACJ,CAAC;;ICjBc,uBAAQ,CAAC,QAAQ,EAAE;IAClC,EAAE,OAAO,SAAS,KAAK,EAAE;IACzB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;IAC/C,MAAM,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,CAAC,CAAC;IACP,GAAG,CAAC;IACJ,CAAC;;ICND;IACA,IAAI,EAAE,GAAG,0EAA0E,CAAC;;AAEpF,IAAe,SAAS,eAAe,CAAC,SAAS,EAAE;IACnD,EAAE,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;;IAED,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;;IAEtD,SAAS,eAAe,CAAC,SAAS,EAAE;IACpC,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACrF,EAAE,IAAI,KAAK,CAAC;IACZ,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC9B,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC/B,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC9B,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClD,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;;IAED,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;IAChD,EAAE,OAAO,IAAI,CAAC,IAAI;IAClB,QAAQ,IAAI,CAAC,KAAK;IAClB,QAAQ,IAAI,CAAC,IAAI;IACjB,QAAQ,IAAI,CAAC,MAAM;IACnB,SAAS,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;IAC9B,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/D,SAAS,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC;IAC/B,SAAS,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC7E,SAAS,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;IAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC;;ICnCF;AACA,IAAe,mBAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9D,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;IACnC,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;IACpD,MAAM,SAAS,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM;IACpE,KAAK;IACL,GAAG;IACH,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;;ICRM,IAAI,cAAc,CAAC;;AAE1B,IAAe,yBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IACnG,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;IAC7B,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW;IAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,QAAQ,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;;ICbc,sBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,EAAE,OAAO,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW;IAC3E,QAAQ,WAAW,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtH,QAAQ,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;;ACPD,sBAAe;IACf,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IACtD,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACxD,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE;IACrC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;IACzD,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;IACpD,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;IAC9C,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;IAClD,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACxD,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;IAC3D,EAAE,GAAG,EAAE,aAAa;IACpB,EAAE,GAAG,EAAE,gBAAgB;IACvB,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;IACvE,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;IACzD,CAAC,CAAC;;ICjBa,mBAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;;ICOD,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;AAEpF,IAAe,qBAAQ,CAAC,MAAM,EAAE;IAChC,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,GAAGC,UAAQ;IAC7G,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;IAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAGA,UAAQ;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;;IAEtC,EAAE,SAAS,SAAS,CAAC,SAAS,EAAE;IAChC,IAAI,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;;IAE3C,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI;IAC7B,QAAQ,KAAK,GAAG,SAAS,CAAC,KAAK;IAC/B,QAAQ,IAAI,GAAG,SAAS,CAAC,IAAI;IAC7B,QAAQ,MAAM,GAAG,SAAS,CAAC,MAAM;IACjC,QAAQ,IAAI,GAAG,SAAS,CAAC,IAAI;IAC7B,QAAQ,KAAK,GAAG,SAAS,CAAC,KAAK;IAC/B,QAAQ,KAAK,GAAG,SAAS,CAAC,KAAK;IAC/B,QAAQ,SAAS,GAAG,SAAS,CAAC,SAAS;IACvC,QAAQ,IAAI,GAAG,SAAS,CAAC,IAAI;IAC7B,QAAQ,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;;IAE9B;IACA,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC;;IAE/C;IACA,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC;;IAEhG;IACA,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC;;IAEtF;IACA;IACA,IAAI,IAAI,MAAM,GAAG,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACrH,QAAQ,MAAM,GAAG,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;;IAEjF;IACA;IACA;IACA,IAAI,IAAI,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;IACtC,QAAQ,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAE9C;IACA;IACA;IACA;IACA,IAAI,SAAS,GAAG,SAAS,IAAI,IAAI,GAAG,CAAC;IACrC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACpE,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;;IAE/C,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE;IAC3B,MAAM,IAAI,WAAW,GAAG,MAAM;IAC9B,UAAU,WAAW,GAAG,MAAM;IAC9B,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAElB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;IACxB,QAAQ,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;IACtD,QAAQ,KAAK,GAAG,EAAE,CAAC;IACnB,OAAO,MAAM;IACb,QAAQ,KAAK,GAAG,CAAC,KAAK,CAAC;;IAEvB;IACA,QAAQ,IAAI,aAAa,GAAG,KAAK,GAAG,CAAC,CAAC;IACtC,QAAQ,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;;IAEvD;IACA,QAAQ,IAAI,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;IAE5C;IACA,QAAQ,IAAI,aAAa,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;;IAEjE;IACA,QAAQ,WAAW,GAAG,CAAC,aAAa,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,WAAW,CAAC;IAC7H,QAAQ,WAAW,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,WAAW,IAAI,aAAa,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;;IAExI;IACA;IACA,QAAQ,IAAI,WAAW,EAAE;IACzB,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,UAAU,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;IAC1B,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;IAC3D,cAAc,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;IACrG,cAAc,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,cAAc,MAAM;IACpB,aAAa;IACb,WAAW;IACX,SAAS;IACT,OAAO;;IAEP;IACA,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;;IAEzD;IACA,MAAM,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;IACzE,UAAU,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;;IAEnF;IACA,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC;;IAE9H;IACA,MAAM,QAAQ,KAAK;IACnB,QAAQ,KAAK,GAAG,EAAE,KAAK,GAAG,WAAW,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,MAAM;IAC7E,QAAQ,KAAK,GAAG,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,MAAM;IAC7E,QAAQ,KAAK,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,WAAW,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;IAC5I,QAAQ,SAAS,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,MAAM;IAC5E,OAAO;;IAEP,MAAM,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,KAAK;;IAEL,IAAI,MAAM,CAAC,QAAQ,GAAG,WAAW;IACjC,MAAM,OAAO,SAAS,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC;;IAEN,IAAI,OAAO,MAAM,CAAC;IAClB,GAAG;;IAEH,EAAE,SAAS,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE;IAC1C,IAAI,IAAI,CAAC,GAAG,SAAS,EAAE,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,SAAS,EAAE;IAChG,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1E,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5B,QAAQ,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,OAAO,SAAS,KAAK,EAAE;IAC3B,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;IACnC,KAAK,CAAC;IACN,GAAG;;IAEH,EAAE,OAAO;IACT,IAAI,MAAM,EAAE,SAAS;IACrB,IAAI,YAAY,EAAE,YAAY;IAC9B,GAAG,CAAC;IACJ,CAAC;;IC3ID,IAAI,MAAM,CAAC;AACX,IAAO,IAAI,MAAM,CAAC;AAClB,IAAO,IAAI,YAAY,CAAC;;IAExB,aAAa,CAAC;IACd,EAAE,OAAO,EAAE,GAAG;IACd,EAAE,SAAS,EAAE,GAAG;IAChB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACf,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;;AAEH,IAAe,SAAS,aAAa,CAAC,UAAU,EAAE;IAClD,EAAE,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,EAAE,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACrC,EAAE,OAAO,MAAM,CAAC;IAChB,CAAC;;IChBc,uBAAQ,CAAC,IAAI,EAAE;IAC9B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;;ICFc,wBAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;IACrC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC;;ICFc,uBAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IACnC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACpD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;;ICFc,mBAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;IACvD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IACzC,MAAM,SAAS,CAAC;IAChB,EAAE,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpE,EAAE,QAAQ,SAAS,CAAC,IAAI;IACxB,IAAI,KAAK,GAAG,EAAE;IACd,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3H,MAAM,OAAO,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,KAAK;IACL,IAAI,KAAK,EAAE,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,KAAK,GAAG,EAAE;IACd,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IACzL,MAAM,MAAM;IACZ,KAAK;IACL,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,KAAK,GAAG,EAAE;IACd,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;IAClJ,MAAM,MAAM;IACZ,KAAK;IACL,GAAG;IACH,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;;ICvBM,SAAS,SAAS,CAAC,KAAK,EAAE;IACjC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;IAE5B,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;IAChC,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACpE,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE,SAAS,EAAE;IAChD,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,CAAC,CAAC;IACpF,GAAG,CAAC;;IAEJ,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;;IAElC,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE;IACpB,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;IACzB,QAAQ,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IACrB,QAAQ,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;IACpB,QAAQ,IAAI,CAAC;;IAEb,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;IACtB,MAAM,IAAI,GAAG,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IACpC,KAAK;;IAEL,IAAI,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;;IAE7C,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,KAAK;;IAEL,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE;IAClB,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE;IACzB,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;IAChB,KAAK;;IAEL,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG,CAAC;;IAEJ,EAAE,OAAO,KAAK,CAAC;IACf,CAAC;;AAED,IAAe,SAASC,QAAM,GAAG;IACjC,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;IAE7C,EAAE,KAAK,CAAC,IAAI,GAAG,WAAW;IAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,EAAEA,QAAM,EAAE,CAAC,CAAC;IACjC,GAAG,CAAC;;IAEJ,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;;IAEpC,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;;ICvED,IAAIC,IAAE,GAAG,IAAI,IAAI;IACjB,IAAIC,IAAE,GAAG,IAAI,IAAI,CAAC;;AAElB,IAAe,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;;IAEnE,EAAE,SAAS,QAAQ,CAAC,IAAI,EAAE;IAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;IAChD,GAAG;;IAEH,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;;IAE5B,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;IACjC,IAAI,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACnF,GAAG,CAAC;;IAEJ,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IAClC,IAAI,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3C,GAAG,CAAC;;IAEJ,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IACzC,IAAI,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;IACtF,GAAG,CAAC;;IAEJ,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IAC/C,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;IACrD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpF,WAAW,QAAQ,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE;IAC7C,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG,CAAC;;IAEJ,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;IACnC,IAAI,OAAO,WAAW,CAAC,SAAS,IAAI,EAAE;IACtC,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjF,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IAC5B,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;IACxB,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE;IAC1C,UAAU,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;IACnD,SAAS,MAAM,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE;IACnC,UAAU,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;IACnD,SAAS;IACT,OAAO;IACP,KAAK,CAAC,CAAC;IACP,GAAG,CAAC;;IAEJ,EAAE,IAAI,KAAK,EAAE;IACb,IAAI,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC1C,MAAMD,IAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAEC,IAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,CAACD,IAAE,CAAC,EAAE,MAAM,CAACC,IAAE,CAAC,CAAC;IAC7B,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAACD,IAAE,EAAEC,IAAE,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC;;IAEN,IAAI,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;IAClD,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ;IAClC,YAAY,QAAQ,CAAC,MAAM,CAAC,KAAK;IACjC,gBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE;IAC7D,gBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,KAAK,CAAC;IACN,GAAG;;IAEH,EAAE,OAAO,QAAQ,CAAC;IAClB,CAAC;;ICjED,IAAI,WAAW,GAAGC,WAAQ,CAAC,WAAW;IACtC;IACA,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC,CAAC;;IAEH;IACA,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;IAChC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;IAC5C,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,WAAW,CAAC;IACnC,EAAE,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,GAAG,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IACnC,GAAG,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC;IACL,CAAC,CAAC;;ICtBK,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,IAAO,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,IAAO,IAAI,YAAY,GAAG,IAAI,CAAC;AAC/B,IAAO,IAAI,WAAW,GAAG,KAAK,CAAC;AAC/B,IAAO,IAAI,YAAY,GAAG,MAAM,CAAC;;ICDjC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACrC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9C,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,cAAc,CAAC;IACxC,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;;ICRH,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACrC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;IACnF,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,cAAc,CAAC;IACxC,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;;ICRH,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACnC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;IACxH,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;IAC5C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,YAAY,CAAC;IACtC,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;;ICRH,IAAI,GAAG,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAClC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,IAAI,cAAc,IAAI,WAAW,CAAC;IAC9G,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;;ICRH,SAAS,OAAO,CAAC,CAAC,EAAE;IACpB,EAAE,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,GAAG,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAC5C,GAAG,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,IAAI,cAAc,IAAI,YAAY,CAAC;IACjH,GAAG,CAAC,CAAC;IACL,CAAC;;AAED,IAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAO,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,IAAO,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,IAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,IAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;;IClBjC,IAAI,KAAK,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACpC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC5F,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;;ICTH,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACnC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACjD,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;;IAEH;IACA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;IACzB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACnF,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,GAAG,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IACpD,GAAG,CAAC,CAAC;IACL,CAAC,CAAC;;ICnBF,IAAI,SAAS,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACxC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,cAAc,CAAC;IACxC,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;;ICRH,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACtC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;IAC5C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,YAAY,CAAC;IACtC,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;;ICRH,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACrC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,WAAW,CAAC;IACrC,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;;ICRH,SAAS,UAAU,CAAC,CAAC,EAAE;IACvB,EAAE,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,GAAG,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAClD,GAAG,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,YAAY,CAAC;IACxC,GAAG,CAAC,CAAC;IACL,CAAC;;AAED,IAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,IAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,IAAO,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,IAAO,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,IAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,IAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,IAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;;IClBvC,IAAI,QAAQ,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACvC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACxG,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;;ICTH,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACtC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACxB,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACxB,EAAE,OAAO,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IACvD,CAAC,EAAE,SAAS,IAAI,EAAE;IAClB,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;;IAEH;IACA,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;IAC5B,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IACnF,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,GAAG,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAC1D,GAAG,CAAC,CAAC;IACL,CAAC,CAAC;;ICTF,SAAS,SAAS,CAAC,CAAC,EAAE;IACtB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IAC7B,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,OAAO,IAAI,CAAC;IAChB,GAAG;IACH,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;;IAED,SAAS,OAAO,CAAC,CAAC,EAAE;IACpB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IAC7B,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,OAAO,IAAI,CAAC;IAChB,GAAG;IACH,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;;IAED,SAAS,OAAO,CAAC,CAAC,EAAE;IACpB,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;;AAED,IAAe,SAASC,cAAY,CAAC,MAAM,EAAE;IAC7C,EAAE,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;IAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI;IAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO;IACrC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI;IACnC,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM;IACnC,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;;IAE9C,EAAE,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;IACzC,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;IACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC;IAC3C,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC;IACnD,MAAM,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IACrD,MAAM,kBAAkB,GAAG,YAAY,CAAC,oBAAoB,CAAC;IAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;IACvC,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;IAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;;IAE1D,EAAE,IAAI,OAAO,GAAG;IAChB,IAAI,GAAG,EAAE,kBAAkB;IAC3B,IAAI,GAAG,EAAE,aAAa;IACtB,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,WAAW;IACpB,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,kBAAkB;IAC3B,IAAI,GAAG,EAAE,YAAY;IACrB,IAAI,GAAG,EAAE,YAAY;IACrB,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,kBAAkB;IAC3B,IAAI,GAAG,EAAE,iBAAiB;IAC1B,IAAI,GAAG,EAAE,aAAa;IACtB,IAAI,GAAG,EAAE,YAAY;IACrB,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,0BAA0B;IACnC,IAAI,GAAG,EAAE,aAAa;IACtB,IAAI,GAAG,EAAE,yBAAyB;IAClC,IAAI,GAAG,EAAE,sBAAsB;IAC/B,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,yBAAyB;IAClC,IAAI,GAAG,EAAE,sBAAsB;IAC/B,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,UAAU;IACnB,IAAI,GAAG,EAAE,cAAc;IACvB,IAAI,GAAG,EAAE,UAAU;IACnB,IAAI,GAAG,EAAE,oBAAoB;IAC7B,GAAG,CAAC;;IAEJ,EAAE,IAAI,UAAU,GAAG;IACnB,IAAI,GAAG,EAAE,qBAAqB;IAC9B,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,cAAc;IACvB,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,qBAAqB;IAC9B,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,kBAAkB;IAC3B,IAAI,GAAG,EAAE,qBAAqB;IAC9B,IAAI,GAAG,EAAE,oBAAoB;IAC7B,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,0BAA0B;IACnC,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,4BAA4B;IACrC,IAAI,GAAG,EAAE,yBAAyB;IAClC,IAAI,GAAG,EAAE,sBAAsB;IAC/B,IAAI,GAAG,EAAE,4BAA4B;IACrC,IAAI,GAAG,EAAE,yBAAyB;IAClC,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,aAAa;IACtB,IAAI,GAAG,EAAE,iBAAiB;IAC1B,IAAI,GAAG,EAAE,aAAa;IACtB,IAAI,GAAG,EAAE,oBAAoB;IAC7B,GAAG,CAAC;;IAEJ,EAAE,IAAI,MAAM,GAAG;IACf,IAAI,GAAG,EAAE,iBAAiB;IAC1B,IAAI,GAAG,EAAE,YAAY;IACrB,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,UAAU;IACnB,IAAI,GAAG,EAAE,mBAAmB;IAC5B,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,iBAAiB;IAC1B,IAAI,GAAG,EAAE,WAAW;IACpB,IAAI,GAAG,EAAE,WAAW;IACpB,IAAI,GAAG,EAAE,cAAc;IACvB,IAAI,GAAG,EAAE,iBAAiB;IAC1B,IAAI,GAAG,EAAE,gBAAgB;IACzB,IAAI,GAAG,EAAE,YAAY;IACrB,IAAI,GAAG,EAAE,WAAW;IACpB,IAAI,GAAG,EAAE,kBAAkB;IAC3B,IAAI,GAAG,EAAE,yBAAyB;IAClC,IAAI,GAAG,EAAE,YAAY;IACrB,IAAI,GAAG,EAAE,wBAAwB;IACjC,IAAI,GAAG,EAAE,qBAAqB;IAC9B,IAAI,GAAG,EAAE,kBAAkB;IAC3B,IAAI,GAAG,EAAE,wBAAwB;IACjC,IAAI,GAAG,EAAE,qBAAqB;IAC9B,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,eAAe;IACxB,IAAI,GAAG,EAAE,SAAS;IAClB,IAAI,GAAG,EAAE,aAAa;IACtB,IAAI,GAAG,EAAE,SAAS;IAClB,IAAI,GAAG,EAAE,mBAAmB;IAC5B,GAAG,CAAC;;IAEJ;IACA,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAClD,EAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACpD,EAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACpD,EAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;;IAExD,EAAE,SAAS,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE;IACzC,IAAI,OAAO,SAAS,IAAI,EAAE;IAC1B,MAAM,IAAI,MAAM,GAAG,EAAE;IACrB,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,UAAU,CAAC,GAAG,CAAC;IACf,UAAU,CAAC,GAAG,SAAS,CAAC,MAAM;IAC9B,UAAU,CAAC;IACX,UAAU,GAAG;IACb,UAAU,MAAM,CAAC;;IAEjB,MAAM,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;IAE1D,MAAM,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;IACtB,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;IAC5C,UAAU,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,UAAU,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,eAAe,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3C,UAAU,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,SAAS;IACT,OAAO;;IAEP,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC;IACN,GAAG;;IAEH,EAAE,SAAS,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;IACxC,IAAI,OAAO,SAAS,MAAM,EAAE;IAC5B,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,UAAU,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;IAC3D,UAAU,IAAI,EAAEC,KAAG,CAAC;IACpB,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;;IAE1C;IACA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;IAEzC;IACA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;IAE9C;IACA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;IACpB,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC;IAC7C,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,IAAI,GAAG,IAAI,CAAC,EAAE;IACtB,UAAU,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/D,UAAU,IAAI,GAAGA,KAAG,GAAG,CAAC,IAAIA,KAAG,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/E,UAAU,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACtC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,SAAS,MAAM;IACf,UAAU,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5D,UAAU,IAAI,GAAGA,KAAG,GAAG,CAAC,IAAIA,KAAG,KAAK,CAAC,GAAGC,MAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAGA,MAAU,CAAC,IAAI,CAAC,CAAC;IACjF,UAAU,IAAI,GAAGC,GAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACnC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,SAAS;IACT,OAAO,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;IACvC,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrE,QAAQF,KAAG,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5F,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,KAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,KAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACjG,OAAO;;IAEP;IACA;IACA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;IACpB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC7B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACzB,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO;;IAEP;IACA,MAAM,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC;IACN,GAAG;;IAEH,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE;IACnD,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM;IAC5B,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM;IACzB,QAAQ,CAAC;IACT,QAAQ,KAAK,CAAC;;IAEd,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;IAClB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;IACpB,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAClC,QAAQ,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,OAAO,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9C,QAAQ,OAAO,CAAC,CAAC,CAAC;IAClB,OAAO;IACP,KAAK;;IAEL,IAAI,OAAO,CAAC,CAAC;IACb,GAAG;;IAEH,EAAE,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,IAAI,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9E,GAAG;;IAEH,EAAE,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACpF,GAAG;;IAEH,EAAE,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACtC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC/E,GAAG;;IAEH,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAClF,GAAG;;IAEH,EAAE,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC7E,GAAG;;IAEH,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC7C,IAAI,OAAO,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,GAAG;;IAEH,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,GAAG;;IAEH,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,GAAG;;IAEH,EAAE,SAAS,kBAAkB,CAAC,CAAC,EAAE;IACjC,IAAI,OAAO,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,GAAG;;IAEH,EAAE,SAAS,aAAa,CAAC,CAAC,EAAE;IAC5B,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,GAAG;;IAEH,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC/B,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,GAAG;;IAEH,EAAE,SAAS,WAAW,CAAC,CAAC,EAAE;IAC1B,IAAI,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,GAAG;;IAEH,EAAE,SAAS,YAAY,CAAC,CAAC,EAAE;IAC3B,IAAI,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,GAAG;;IAEH,EAAE,SAAS,qBAAqB,CAAC,CAAC,EAAE;IACpC,IAAI,OAAO,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,GAAG;;IAEH,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC/B,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1C,GAAG;;IAEH,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE;IAClC,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,GAAG;;IAEH,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE;IAC7B,IAAI,OAAO,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1C,GAAG;;IAEH,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE;IAC9B,IAAI,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,GAAG;;IAEH,EAAE,OAAO;IACT,IAAI,MAAM,EAAE,SAAS,SAAS,EAAE;IAChC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,CAAC,CAAC;IACf,KAAK;IACL,IAAI,KAAK,EAAE,SAAS,SAAS,EAAE;IAC/B,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,CAAC,CAAC;IACf,KAAK;IACL,IAAI,SAAS,EAAE,SAAS,SAAS,EAAE;IACnC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,CAAC,CAAC;IACf,KAAK;IACL,IAAI,QAAQ,EAAE,SAAS,SAAS,EAAE;IAClC,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;IACpD,MAAM,OAAO,CAAC,CAAC;IACf,KAAK;IACL,GAAG,CAAC;IACJ,CAAC;;IAED,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACxC,IAAI,QAAQ,GAAG,SAAS;IACxB,IAAI,SAAS,GAAG,IAAI;IACpB,IAAI,SAAS,GAAG,qBAAqB,CAAC;;IAEtC,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACjC,EAAE,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;IACjC,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,EAAE,OAAO,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9F,CAAC;;IAED,SAAS,OAAO,CAAC,CAAC,EAAE;IACpB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;IAED,SAAS,QAAQ,CAAC,KAAK,EAAE;IACzB,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;;IAED,SAAS,YAAY,CAAC,KAAK,EAAE;IAC7B,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACzC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;IAClD,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;;IAED,SAAS,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAChD,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAChD,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC7C,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC1C,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC7C,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;;IAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,EAAE,IAAI,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;;IAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACxC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;;IAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACvC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACtC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;;IAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACnC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACpC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACpC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;;IAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC3C,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;;IAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC1C,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;;IAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACjD,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;;IAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;;IAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;;IAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;;IAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;IAC/B,EAAE,OAAO,GAAG,CAAC,CAAC,GAAGE,GAAO,CAAC,KAAK,CAACC,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;;IAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;;IAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;;IAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;IACjC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;;IAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;;IAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;;IAED,SAAS,yBAAyB,CAAC,CAAC,EAAE;IACtC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACvB,EAAE,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC7B,CAAC;;IAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;IACtC,EAAE,OAAO,GAAG,CAACC,MAAU,CAAC,KAAK,CAACD,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;;IAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;IACnC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACvB,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAIE,QAAY,CAAC,CAAC,CAAC,GAAGA,QAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,EAAE,OAAO,GAAG,CAACA,QAAY,CAAC,KAAK,CAACF,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIA,IAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;;IAED,SAAS,yBAAyB,CAAC,CAAC,EAAE;IACtC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;;IAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;IACtC,EAAE,OAAO,GAAG,CAACF,MAAU,CAAC,KAAK,CAACE,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;;IAED,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;IAC1B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;;IAED,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;;IAED,SAAS,UAAU,CAAC,CAAC,EAAE;IACvB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;IACtC,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;;IAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;IACnC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;;IAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;IAC/B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;;IAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;IAC/B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;;IAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;IAClC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;;IAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE;IACrC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;;IAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE;IACrC,EAAE,OAAO,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC7C,CAAC;;IAED,SAAS,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE;IACpC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;;IAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;;IAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;;IAED,SAAS,4BAA4B,CAAC,CAAC,EAAE;IACzC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,EAAE,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC7B,CAAC;;IAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;IACzC,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;;IAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;IACtC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC1B,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;;IAED,SAAS,4BAA4B,CAAC,CAAC,EAAE;IACzC,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IACvB,CAAC;;IAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;IACzC,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;;IAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;;IAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;IACjC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC;;IAED,SAAS,aAAa,GAAG;IACzB,EAAE,OAAO,OAAO,CAAC;IACjB,CAAC;;IAED,SAAS,oBAAoB,GAAG;IAChC,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;;IAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;IAChC,EAAE,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;;IAED,SAAS,0BAA0B,CAAC,CAAC,EAAE;IACvC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;;IC7nBD,IAAIG,QAAM,CAAC;AACX,IAAO,IAAI,UAAU,CAAC;AACtB,IAAO,IAAI,SAAS,CAAC;AACrB,IAAO,IAAI,SAAS,CAAC;AACrB,IAAO,IAAI,QAAQ,CAAC;;AAEpBC,mBAAa,CAAC;IACd,EAAE,QAAQ,EAAE,QAAQ;IACpB,EAAE,IAAI,EAAE,YAAY;IACpB,EAAE,IAAI,EAAE,cAAc;IACtB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACvB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;IACtF,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAC9D,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;IACpI,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACnG,CAAC,CAAC,CAAC;;AAEH,IAAe,SAASA,eAAa,CAAC,UAAU,EAAE;IAClD,EAAED,QAAM,GAAGP,cAAY,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,UAAU,GAAGO,QAAM,CAAC,MAAM,CAAC;IAC7B,EAAE,SAAS,GAAGA,QAAM,CAAC,KAAK,CAAC;IAC3B,EAAE,SAAS,GAAGA,QAAM,CAAC,SAAS,CAAC;IAC/B,EAAE,QAAQ,GAAGA,QAAM,CAAC,QAAQ,CAAC;IAC7B,EAAE,OAAOA,QAAM,CAAC;IAChB,CAAC;;ICxBM,IAAI,YAAY,GAAG,uBAAuB,CAAC;;IAElD,SAAS,eAAe,CAAC,IAAI,EAAE;IAC/B,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;;IAED,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IAC1C,MAAM,eAAe;IACrB,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;;ICP9B,SAAS,cAAc,CAAC,MAAM,EAAE;IAChC,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,CAAC;;IAED,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC;IACpD,MAAM,cAAc;IACpB,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;;ICV7B,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;IAChB,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE;IAChB,IAAI,OAAO,GAAG,IAAI;IAClB,IAAI,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC;;IAE/B,SAAS,IAAI,GAAG;IAChB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IACrB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;;IAED,SAAS,IAAI,GAAG;IAChB,EAAE,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;;IAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG;IAClC,EAAE,WAAW,EAAE,IAAI;IACnB,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IACzB,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClF,GAAG;IACH,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;IAC3B,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAC/C,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;IACpB,KAAK;IACL,GAAG;IACH,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IACzB,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,GAAG;IACH,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;IAC3C,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACxF,GAAG;IACH,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;IAChD,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACpH,GAAG;IACH,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;IACrC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG;IACrB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG;IACrB,QAAQ,GAAG,GAAG,EAAE,GAAG,EAAE;IACrB,QAAQ,GAAG,GAAG,EAAE,GAAG,EAAE;IACrB,QAAQ,GAAG,GAAG,EAAE,GAAG,EAAE;IACrB,QAAQ,GAAG,GAAG,EAAE,GAAG,EAAE;IACrB,QAAQ,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;;IAEtC;IACA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;;IAExD;IACA,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;IAC3B,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC9D,KAAK;;IAEL;IACA,SAAS,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;;IAEjC;IACA;IACA;IACA,SAAS,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;IACjE,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC9D,KAAK;;IAEL;IACA,SAAS;IACT,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE;IACvB,UAAU,GAAG,GAAG,EAAE,GAAG,EAAE;IACvB,UAAU,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IACvC,UAAU,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IACvC,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3F,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;IACvB,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;;IAExB;IACA,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE;IACvC,QAAQ,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAClE,OAAO;;IAEP,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACjJ,KAAK;IACL,GAAG;IACH,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE;IACnB,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE;IACnB,QAAQ,EAAE,GAAG,CAAC,GAAG,GAAG;IACpB,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;IAErC;IACA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;;IAExD;IACA,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;IAC3B,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;IACpC,KAAK;;IAEL;IACA,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,EAAE;IACrF,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;IACpC,KAAK;;IAEL;IACA,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO;;IAEnB;IACA,IAAI,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;;IAEpC;IACA,IAAI,IAAI,EAAE,GAAG,UAAU,EAAE;IACzB,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACtK,KAAK;;IAEL;IACA,SAAS,IAAI,EAAE,GAAG,OAAO,EAAE;IAC3B,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACzJ,KAAK;IACL,GAAG;IACH,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/H,GAAG;IACH,EAAE,QAAQ,EAAE,WAAW;IACvB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC;IAClB,GAAG;IACH,CAAC,CAAC;;IC/Ha,mBAAQ,CAAC,CAAC,EAAE;IAC3B,EAAE,OAAO,SAAS,QAAQ,GAAG;IAC7B,IAAI,OAAO,CAAC,CAAC;IACb,GAAG,CAAC;IACJ,CAAC;;ICKM,IAAIE,IAAE,GAAG,IAAI,CAAC,EAAE,CAAC;;ICTxB,SAAS,MAAM,CAAC,OAAO,EAAE;IACzB,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;;IAED,MAAM,CAAC,SAAS,GAAG;IACnB,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,GAAG;IACH,EAAE,OAAO,EAAE,WAAW;IACtB,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,GAAG;IACH,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,GAAG;IACH,EAAE,OAAO,EAAE,WAAW;IACtB,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzF,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,GAAG;IACH,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,QAAQ,IAAI,CAAC,MAAM;IACvB,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IAC3G,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,MAAM,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IACjD,KAAK;IACL,GAAG;IACH,CAAC,CAAC;;AAEF,IAAe,oBAAQ,CAAC,OAAO,EAAE;IACjC,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;;IC9BM,SAAS,CAAC,CAAC,CAAC,EAAE;IACrB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;;AAED,IAAO,SAAS,CAAC,CAAC,CAAC,EAAE;IACrB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;;ICDc,aAAQ,GAAG;IAC1B,EAAE,IAAIC,GAAC,GAAGC,CAAM;IAChB,MAAMC,GAAC,GAAGC,CAAM;IAChB,MAAM,OAAO,GAAGpB,UAAQ,CAAC,IAAI,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI;IACpB,MAAM,KAAK,GAAG,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,CAAC;;IAEpB,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE;IACtB,IAAI,IAAI,CAAC;IACT,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM;IACvB,QAAQ,CAAC;IACT,QAAQ,QAAQ,GAAG,KAAK;IACxB,QAAQ,MAAM,CAAC;;IAEf,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;;IAEzD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;IAC7B,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,QAAQ,EAAE;IAClE,QAAQ,IAAI,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IACrD,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,OAAO;IACP,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAACiB,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAACE,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,KAAK;;IAEL,IAAI,IAAI,MAAM,EAAE,OAAO,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC;IAC1D,GAAG;;IAEH,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE;IACvB,IAAI,OAAO,SAAS,CAAC,MAAM,IAAIF,GAAC,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGjB,UAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAIiB,GAAC,CAAC;IACzF,GAAG,CAAC;;IAEJ,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE;IACvB,IAAI,OAAO,SAAS,CAAC,MAAM,IAAIE,GAAC,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGnB,UAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAImB,GAAC,CAAC;IACzF,GAAG,CAAC;;IAEJ,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE;IAC7B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGnB,UAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC;IACtG,GAAG,CAAC;;IAEJ,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;IAC3B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC;IACtG,GAAG,CAAC;;IAEJ,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE;IAC7B,IAAI,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC;IAClH,GAAG,CAAC;;IAEJ,EAAE,OAAO,IAAI,CAAC;IACd,CAAC;;ICtDD,SAAS,IAAI,CAAC,CAAC,EAAE;IACjB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;;IAED;IACA;IACA;IACA;IACA,SAAS,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IAC9B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG;IACxB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9F,CAAC;;IAED;IACA,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE;IACzB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;;IAED;IACA;IACA;IACA,SAAS,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;IAC7B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG;IACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG;IACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG;IACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG;IACnB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;;IAED,SAAS,SAAS,CAAC,OAAO,EAAE;IAC5B,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;;IAED,SAAS,CAAC,SAAS,GAAG;IACtB,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,GAAG;IACH,EAAE,OAAO,EAAE,WAAW;IACtB,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,GAAG;IACH,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IACvB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IACvB,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,GAAG;IACH,EAAE,OAAO,EAAE,WAAW;IACtB,IAAI,QAAQ,IAAI,CAAC,MAAM;IACvB,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAC9D,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;IACnE,KAAK;IACL,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzF,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,GAAG;IACH,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC;;IAEjB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO;IACjD,IAAI,QAAQ,IAAI,CAAC,MAAM;IACvB,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IAC3G,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;IACrC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;IAC7F,MAAM,SAAS,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;IACrE,KAAK;;IAEL,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,GAAG;IACH,EAAC;;IAED,SAAS,SAAS,CAAC,OAAO,EAAE;IAC5B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;;IAED,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IAClF,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;;IAEF,SAAS,cAAc,CAAC,OAAO,EAAE;IACjC,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;;IAED,cAAc,CAAC,SAAS,GAAG;IAC3B,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACxD,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE;IACtD,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACxD,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACtG,CAAC,CAAC;;IC/FF,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;IAC1B,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACd,CAAC;;IAED,IAAI,CAAC,SAAS,GAAG;IACjB,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,GAAG;IACH,EAAE,OAAO,EAAE,WAAW;IACtB,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACrB,GAAG;IACH,EAAE,SAAS,EAAE,WAAW;IACxB,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,GAAG;IACH,EAAE,OAAO,EAAE,WAAW;IACtB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACzF,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAC5E,GAAG;IACH,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,QAAQ,IAAI,CAAC,MAAM;IACvB,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IAC3G,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,MAAM,SAAS;IACf,QAAQ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;IAC1B,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3C,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,SAAS,MAAM;IACf,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACzD,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtC,SAAS;IACT,QAAQ,MAAM;IACd,OAAO;IACP,KAAK;IACL,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7B,GAAG;IACH,CAAC,CAAC;AACF,AAQA;AACA,IAAO,SAAS,SAAS,CAAC,OAAO,EAAE;IACnC,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;;;;;;;;;;;;;;;;0BCkCkB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;;;oCAApB;;;;;;uCAAA;;;;;;;gDAMO,OAAO,CAAC,IAAI;kDACZ,KAAK,KAAC,OAAO,CAAC,KAAK;gDACnB,MAAM,KAAC,MAAM,CAAC,CAAC,CAAC,CAAC;kDACjB,MAAM,KAAC,MAAM,KAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;6BAC/B,IAAI;;;;;;uCAVX;;;;;;;;;;yBAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;uCAApB;;;;;;;;;;;;+BAAA;;;oBAAA,oBAAA;;;6EAOO,KAAK,KAAC,OAAO,CAAC,KAAK;;;;4FACnB,MAAM,KAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;;gGACjB,MAAM,KAAC,MAAM,KAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;;;8BAC/B,IAAI;;;;;;;;;;;;;;;;;+BAT+B,CAAC;;;;;;;8CAAnC,OAAO,CAAC,IAAI,CAAC,CAAC;8CAAO,MAAM,KAAC,CAAC,CAAC;;;gDAC7B,OAAO,CAAC,IAAI;kDAAQ,KAAK,KAAC,OAAO,CAAC,KAAK;+EAA2B,MAAM,KAAC,CAAC,CAAC;;;;;;;;;;;;0DAD1C,CAAC;;;;wEAAd,MAAM,KAAC,CAAC,CAAC;;;;6EACT,KAAK,KAAC,OAAO,CAAC,KAAK;;;;yGAA2B,MAAM,KAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;yBAHrF,MAAM,CAAC,MAAM;;;;;;qBAFjB,KAAK;;;;;;kDACG,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;yBADpB,KAAK;;;eAED,MAAM,CAAC,MAAM;;;;;;;;;;;;;4EADT,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;QA7EzB,IAAI,KAAK,CAAC;QAEH,MAAI,KAAK,GAAG,cAAE,CAAC;;QAEtB,MAAM,OAAO,GAAG;YACZ,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,EAAE;SACb,CAAC;;QAEF,MAAW,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,aAAC,CAAC;QAUpB,IAAI,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;kDArBT,MAAM,GAAG,KAAK,GAAG,IAAG,CAAC;kEAarB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC;oDAC5E,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC;mEAEjD,MAAM,GAAGqB,QAAW,EAAE;qBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;qBACzB,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAC,CAAC;oDAE/C,SAAS,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,GAAE,CAAC;oEAEjC;4CACC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAC,CAAC;oBACzB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,IAAI,GAAG,SAAS,EAAE;wBAClB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,mKAAC;wBACnC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,mKAAC;wBACnC,gKAAiB,CAAC;qBACrB;iBACJ;sEAEE,MAAM,GAAGA,QAAW,EAAE;qBACpB,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,EAAE;qBACN,UAAU,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,EAAC,CAAC;4BAErD,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;4BACxB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;sEAExB,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAACC,SAAc,EAAC,CAAC;qEACvE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBCvBuC,IAAI;;;;;;;;;;;;wBAAJ,IAAI;;;;;;;;;;;;;;;yBAA5C,IAAI;;;;;;;;;;;qBAAsD,KAAK;;;;;;;;;;2CAFvE,WAAW;8CAAsB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;eAEpC,IAAI;;;;;;;;;;;;;;yBAAsD,KAAK;;;;;;;;4CAFvE,WAAW;+CAAsB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAvB1D,MAAI,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,EAAE,EACT,WAAW,GAAG,iBAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BCIA,IAAI;;;mCAL1B,OAAO;;;gCAGL,OAAO;;;;;;;;;;;;;;;8BAEa,IAAI;;;;oCAL1B,OAAO;;;;iCAGL,OAAO;;;;;;;;;;;;;;;;KAKV,MAAI,gBAAI,CAAC;;MAEhB,IAAI,IAAI,GAAG,EAAE,CAAC;MACd,IAAI,OAAO,GAAG,EAAE,CAAC;MACjB,IAAI,OAAO,GAAG,EAAE,CAAC;;;;;;;;kDAEd,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC;8BAErD,OAAO,GAAG,YAAY,IAAI,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,EAAC,CAAC;+CAE9D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBzB,IACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,OAAO,CAAC;IACvB,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,WAAW,GAAG,oRAAoR,CAAC;;IAEvS,kBAAkB,GAAG;MACnB,MAAM,EAAE,MAAM;MACd,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE;QACJ,KAAK;QACL,MAAM;QACN,SAAS;QACT,OAAO;QACP,WAAW;OACZ,CAAC,CAAC;;IAEL,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IACrC,cAAc,GAAG,MAAM,CAAC;IACxB,gBAAgB,GAAG,QAAQ,CAAC;IAC5B,aAAa,GAAG,KAAK,CAAC;IACtB,cAAc,GAAG,MAAM,CAAC;IACxB,iBAAiB,GAAG,SAAS,CAAC;IAC9B,eAAe,GAAG,OAAO,CAAC;IAC1B,mBAAmB,GAAG,WAAW;;;;;;;;;;;;;;;AC5BjC,IACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,sBAAsB,CAAC;IACtC,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,WAAW,GAAG,kcAAkc,CAAC;;IAErd,kBAAkB,GAAG;MACnB,MAAM,EAAE,MAAM;MACd,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE;QACJ,KAAK;QACL,MAAM;QACN,SAAS;QACT,OAAO;QACP,WAAW;OACZ,CAAC,CAAC;;IAEL,6BAA6B,GAAG,OAAO,CAAC,UAAU,CAAC;IACnD,cAAc,GAAG,MAAM,CAAC;IACxB,gBAAgB,GAAG,QAAQ,CAAC;IAC5B,aAAa,GAAG,KAAK,CAAC;IACtB,cAAc,GAAG,MAAM,CAAC;IACxB,iBAAiB,GAAG,SAAS,CAAC;IAC9B,eAAe,GAAG,OAAO,CAAC;IAC1B,mBAAmB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBCkBaC,SAAO;;;;;;;;;;;;;;;;;;;;;;gDAAPA,SAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAFVC,uBAAqB;;;;;;;;;;;;;;;;;;;;;;8DAArBA,uBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EAW+E,IAAI,KAAK,MAAM,GAAG,QAAQ,OAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;;;;;;;;;+CAA7I,IAAI;;;;;;iDAAwE,MAAM,OAAG,IAAI;;;qDAFjG,MAAM,CAAC,OAAO,KAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yCACtC,MAAM,OAAG,IAAI;;;;;;;;;6CACR,MAAM;;;;;;;iEAAN,MAAM;;;kFAAsF,MAAM,OAAG,IAAI;;;;;sDAFjG,MAAM,CAAC,OAAO,KAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;;0CACtC,MAAM,OAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;cAXlC,MAAM,CAAC,MAAM;;;;;;;0BAQH,KAAK;;;;oCAAV;;;;;;;;;;;;;;;uCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAAK,KAAK;;uCAAV;;;;;;;;;;;;+BAAA;;;oBAAA,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA3CH,MAAI,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EAEX,MAAM,GAAG,kBAAM,CAAC;;QAE3B,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;mDAPhE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gFCgB0G,MAAM,CAAC,KAAK;;;;;;;;;+CAApH,MAAM,CAAC,KAAK;;;;6BAAoC,EAAE;;iDAA+B,KAAK,OAAG,MAAM,CAAC,KAAK;;;2CADzH,KAAK,OAAG,MAAM,CAAC,KAAK;;;;;;;;;6CACf,KAAK;;;;;;;gEAAL,KAAK;;gFAAU,MAAM,CAAC,KAAK;;;;;;qGAAqE,KAAK,OAAG,MAAM,CAAC,KAAK;;;;8DAAG,MAAM,CAAC,KAAK;;;;;4CADxI,KAAK,OAAG,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;0BAF/B,QAAQ;;;;oCAAb;;;;;;;;uCAAA;;;;;;;;;;;;;;;uCAAA;;;;;;;yBAAK,QAAQ;;uCAAb;;;;;;;;;;;;+BAAA;;;oBAAA,oBAAA;;;;;;;;;;;;;;;;;;KAlBE,MAAI,OAAO,GAAG,cAAE,CAAC;KAEjB,MAAI,KAAK,EACL,KAAK,GAAG,cAAE,CAAC;KACtB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;sDAHnD,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCC8IzC,CAAC,YAAY,EAAE,WAAW,CAAC;aAAe,IAAI;oCAAJ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAGV,SAAS;;;;;;;;wCAHH,IAAI;;;;gDAGV,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAMnD,IAAI,GAAG,WAAW;aAAQ,MAAM;qCAAN,MAAM;;aAAM,OAAO;sCAAP,OAAO;;;;;;;;;;;;;;;;;;;6DAA7C,IAAI,GAAG,WAAW;;yCAAQ,MAAM;;;0CAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAMxC,gBAAgB;kCAAhB,gBAAgB;;;;;;;;;;;;;aAChB,MAAM;kCAAN,MAAM;;;;;;;;;;;;;;;;;;;aAGE,KAAK;yCAAL,KAAK;;aAAe,QAAQ;yCAAR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBASlD,IAAI,KAAK,WAAW;oBACtB,QAAQ;;aANb,KAAK;uCAAL,KAAK;;aACL,gBAAgB;kDAAhB,gBAAgB;;aAChB,MAAM;wCAAN,MAAM;;aACN,MAAM;wCAAN,MAAM;;aACN,OAAO;yCAAP,OAAO;;aAGP,SAAS;2CAAT,SAAS;;;;;;;;;;;;;;;;;iBAG0B,KAAK;YAAQ,CAAC;;;;;;;;iBAGb,KAAK;YAAQ,CAAC;;;;;;;;iBAGrB,KAAK;YAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAxBtB,gBAAgB;;;;;;sCAChB,MAAM;;;;;;6CAGE,KAAK;;;6CAAe,QAAQ;;;;;gEASlD,IAAI,KAAK,WAAW;mEACtB,QAAQ;;2CANb,KAAK;;;sDACL,gBAAgB;;;4CAChB,MAAM;;;4CACN,MAAM;;;6CACN,OAAO;;;+CAGP,SAAS;;;;;yDAG0B,KAAK;;;;yDAGJ,KAAK;;;;yDAGZ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAM6D,KAAK,GAAG,KAAK,GAAG,MAAM;;;0BAC/G,KAAK;;;;;;;;;;;;;;;;;;;iDADmD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;qFAAJ,IAAI;;;;;uDAC5D,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAzDE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAzHpC,MAAW,gBAAI,CAAC;;QAEhB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,gBAAgB,GAAG,IAAI,CAAC;;QAE5B,IAAI,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,GAAG,YAAY,CAAC;QACxB,IAAI,QAAQ,GAAG,MAAM,CAAC;;QAEtB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YACtB,iBAAiB,EAAE,CAAC;SACvB;;QAWD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;QAEnE,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,KAAK,GAAG,YAAY,CAAC;;QAEzB,YAAY,CAAC,MAAM;YACf,IAAI,IAAI,KAAK,KAAK,EAAE;gBAChB,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;aACtC;YACD,IAAI,IAAI,KAAK,KAAK,EAAE;gBAChB,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;4CACzC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAE,CAAC;iBACvC;gBACD,KAAK,GAAG,IAAI,CAAC;aAChB;SACJ,CAAC,CAAC;;;;;;;;;;QAUH,SAAS,iBAAiB,GAAG;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,UAAU,CAAC,MAAM;8CACb,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC;yCACtB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,YAAY,GAAG,YAAW,CAAC;oBACrD,KAAK,GAAG,IAAI,CAAC;2CACb,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC;4CACtD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAE,CAAC;qDAC9E,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAG,CAAC;2CACpC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAG,CAAC;iBAC7B,EAAC;aACL,MAAM;gBACH,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;aAC7B;SACJ;;QAED,SAAS,UAAU,GAAG;YAClB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE;;gBAEtC,iBAAiB,EAAE,CAAC;aACvB;SACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uJA1DE,IAAI,GAAG;oBACN,SAAS;oBACT,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC1C,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;oBACjE,gBAAgB,GAAG,CAAC,CAAC,CAAC;oBACtB,MAAM,CAAC,CAAC,CAAC,CAAC;iBACb,CAAC,IAAI,CAAC,GAAG,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICjChB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IACpB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;IACtB,CAAC,KAAK,EAAE;IACR,EAAE,IAAI,EAAE,OAAO;IACf,EAAE;IACF,CAAC,CAAC,CAAC;;;;;;;;"} \ No newline at end of file From 5b2d7bf177c42a2132aee23122ad51f23221f2f5 Mon Sep 17 00:00:00 2001 From: Andrew Ringler Date: Fri, 17 Apr 2020 10:08:54 -0400 Subject: [PATCH 4/6] only perform bezier when number of colors is 2 to 5 --- docs/bundle.css.map | 2 +- docs/bundle.js | 8 ++++---- docs/bundle.js.map | 2 +- src/PalettePreview.svelte | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/bundle.css.map b/docs/bundle.css.map index f35c0fb..1668fb6 100644 --- a/docs/bundle.css.map +++ b/docs/bundle.css.map @@ -15,7 +15,7 @@ ], "sourcesContent": [ "\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
", - "\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
", + "\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n", "\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
", "\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
", "\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n", diff --git a/docs/bundle.js b/docs/bundle.js index 7cc1c1d..c1b5cdf 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -5516,7 +5516,7 @@ var app = (function () { div = element("div"); attr(div, "class", "step svelte-qylrh0"); set_style(div, "background", (ctx.simulate === 'none' ? ctx.step : colorBlindSim(ctx.step, ctx.simulate))); - add_location(div, file$4, 79, 4, 2641); + add_location(div, file$4, 79, 4, 2681); }, m: function mount(target, anchor) { @@ -5556,7 +5556,7 @@ var app = (function () { each_blocks[i].c(); } attr(div, "class", "palette svelte-qylrh0"); - add_location(div, file$4, 77, 0, 2587); + add_location(div, file$4, 77, 0, 2627); }, l: function claim(nodes) { @@ -5665,10 +5665,10 @@ var app = (function () { if ($$dirty.diverging || $$dirty.numColors || $$dirty.even) { $$invalidate('numColorsRight', numColorsRight = diverging ? Math.ceil(numColors/2) + (even?1:0) : 0); } if ($$dirty.colors || $$dirty.numColorsLeft) { $$invalidate('genColors', genColors = colors.length !== 1 ? colors : autoColors(colors[0], numColorsLeft)); } if ($$dirty.colors2 || $$dirty.numColorsRight) { $$invalidate('genColors2', genColors2 = colors2.length !== 1 ? colors2 : autoColors(colors2[0], numColorsRight, true)); } - if ($$dirty.colors || $$dirty.bezier || $$dirty.genColors || $$dirty.correctLightness || $$dirty.numColorsLeft) { $$invalidate('stepsLeft', stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 ? chroma.bezier(genColors) : genColors) + if ($$dirty.colors || $$dirty.bezier || $$dirty.genColors || $$dirty.correctLightness || $$dirty.numColorsLeft) { $$invalidate('stepsLeft', stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 && colors.length<=5 ? chroma.bezier(genColors) : genColors) .correctLightness(correctLightness) .colors(numColorsLeft) : []); } - if ($$dirty.diverging || $$dirty.colors2 || $$dirty.bezier || $$dirty.genColors2 || $$dirty.correctLightness || $$dirty.numColorsRight) { $$invalidate('stepsRight', stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 ? chroma.bezier(genColors2) : genColors2) + if ($$dirty.diverging || $$dirty.colors2 || $$dirty.bezier || $$dirty.genColors2 || $$dirty.correctLightness || $$dirty.numColorsRight) { $$invalidate('stepsRight', stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 &&colors2.length<=5 ? chroma.bezier(genColors2) : genColors2) .correctLightness(correctLightness) .colors(numColorsRight) : []); } if ($$dirty.even || $$dirty.diverging || $$dirty.stepsLeft || $$dirty.stepsRight) { $$invalidate('steps', steps = (even && diverging ? stepsLeft.slice(0, stepsLeft.length-1) : stepsLeft).concat(stepsRight.slice(1))); } diff --git a/docs/bundle.js.map b/docs/bundle.js.map index 5e760f8..c9580e6 100644 --- a/docs/bundle.js.map +++ b/docs/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":"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"} \ No newline at end of file diff --git a/src/PalettePreview.svelte b/src/PalettePreview.svelte index 0d5b929..05aeb71 100644 --- a/src/PalettePreview.svelte +++ b/src/PalettePreview.svelte @@ -21,11 +21,11 @@ $: genColors = colors.length !== 1 ? colors : autoColors(colors[0], numColorsLeft); $: genColors2 = colors2.length !== 1 ? colors2 : autoColors(colors2[0], numColorsRight, true); - $: stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 ? chroma.bezier(genColors) : genColors) + $: stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 && colors.length<=5 ? chroma.bezier(genColors) : genColors) .correctLightness(correctLightness) .colors(numColorsLeft) : []; - $: stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 ? chroma.bezier(genColors2) : genColors2) + $: stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 &&colors2.length<=5 ? chroma.bezier(genColors2) : genColors2) .correctLightness(correctLightness) .colors(numColorsRight) : []; @@ -79,4 +79,4 @@ {#each steps as step}
{/each} - \ No newline at end of file + From 4ba7638e9f89e08759480926af454ae24853ae4f Mon Sep 17 00:00:00 2001 From: Andrew Ringler Date: Fri, 17 Apr 2020 10:17:51 -0400 Subject: [PATCH 5/6] using actual correct arrays for length check in bezier calc --- docs/bundle.css.map | 2 +- docs/bundle.js | 8 ++++---- docs/bundle.js.map | 2 +- src/PalettePreview.svelte | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/bundle.css.map b/docs/bundle.css.map index 1668fb6..9375327 100644 --- a/docs/bundle.css.map +++ b/docs/bundle.css.map @@ -15,7 +15,7 @@ ], "sourcesContent": [ "\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
", - "\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n", + "\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n", "\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
", "\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
", "\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n", diff --git a/docs/bundle.js b/docs/bundle.js index c1b5cdf..f99ad28 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -5516,7 +5516,7 @@ var app = (function () { div = element("div"); attr(div, "class", "step svelte-qylrh0"); set_style(div, "background", (ctx.simulate === 'none' ? ctx.step : colorBlindSim(ctx.step, ctx.simulate))); - add_location(div, file$4, 79, 4, 2681); + add_location(div, file$4, 79, 4, 2693); }, m: function mount(target, anchor) { @@ -5556,7 +5556,7 @@ var app = (function () { each_blocks[i].c(); } attr(div, "class", "palette svelte-qylrh0"); - add_location(div, file$4, 77, 0, 2627); + add_location(div, file$4, 77, 0, 2639); }, l: function claim(nodes) { @@ -5665,10 +5665,10 @@ var app = (function () { if ($$dirty.diverging || $$dirty.numColors || $$dirty.even) { $$invalidate('numColorsRight', numColorsRight = diverging ? Math.ceil(numColors/2) + (even?1:0) : 0); } if ($$dirty.colors || $$dirty.numColorsLeft) { $$invalidate('genColors', genColors = colors.length !== 1 ? colors : autoColors(colors[0], numColorsLeft)); } if ($$dirty.colors2 || $$dirty.numColorsRight) { $$invalidate('genColors2', genColors2 = colors2.length !== 1 ? colors2 : autoColors(colors2[0], numColorsRight, true)); } - if ($$dirty.colors || $$dirty.bezier || $$dirty.genColors || $$dirty.correctLightness || $$dirty.numColorsLeft) { $$invalidate('stepsLeft', stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 && colors.length<=5 ? chroma.bezier(genColors) : genColors) + if ($$dirty.colors || $$dirty.bezier || $$dirty.genColors || $$dirty.correctLightness || $$dirty.numColorsLeft) { $$invalidate('stepsLeft', stepsLeft = colors.length ? chroma.scale(bezier && genColors.length>1 && genColors.length<=5 ? chroma.bezier(genColors) : genColors) .correctLightness(correctLightness) .colors(numColorsLeft) : []); } - if ($$dirty.diverging || $$dirty.colors2 || $$dirty.bezier || $$dirty.genColors2 || $$dirty.correctLightness || $$dirty.numColorsRight) { $$invalidate('stepsRight', stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 &&colors2.length<=5 ? chroma.bezier(genColors2) : genColors2) + if ($$dirty.diverging || $$dirty.colors2 || $$dirty.bezier || $$dirty.genColors2 || $$dirty.correctLightness || $$dirty.numColorsRight) { $$invalidate('stepsRight', stepsRight = diverging && colors2.length ? chroma.scale(bezier&& genColors2.length>1 &&genColors2.length<=5 ? chroma.bezier(genColors2) : genColors2) .correctLightness(correctLightness) .colors(numColorsRight) : []); } if ($$dirty.even || $$dirty.diverging || $$dirty.stepsLeft || $$dirty.stepsRight) { $$invalidate('steps', steps = (even && diverging ? stepsLeft.slice(0, stepsLeft.length-1) : stepsLeft).concat(stepsRight.slice(1))); } diff --git a/docs/bundle.js.map b/docs/bundle.js.map index c9580e6..27e0658 100644 --- a/docs/bundle.js.map +++ b/docs/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":"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"} \ No newline at end of file diff --git a/src/PalettePreview.svelte b/src/PalettePreview.svelte index 05aeb71..c8b738f 100644 --- a/src/PalettePreview.svelte +++ b/src/PalettePreview.svelte @@ -21,11 +21,11 @@ $: genColors = colors.length !== 1 ? colors : autoColors(colors[0], numColorsLeft); $: genColors2 = colors2.length !== 1 ? colors2 : autoColors(colors2[0], numColorsRight, true); - $: stepsLeft = colors.length ? chroma.scale(bezier && colors.length>1 && colors.length<=5 ? chroma.bezier(genColors) : genColors) + $: stepsLeft = colors.length ? chroma.scale(bezier && genColors.length>1 && genColors.length<=5 ? chroma.bezier(genColors) : genColors) .correctLightness(correctLightness) .colors(numColorsLeft) : []; - $: stepsRight = diverging && colors2.length ? chroma.scale(bezier&& colors2.length>1 &&colors2.length<=5 ? chroma.bezier(genColors2) : genColors2) + $: stepsRight = diverging && colors2.length ? chroma.scale(bezier&& genColors2.length>1 &&genColors2.length<=5 ? chroma.bezier(genColors2) : genColors2) .correctLightness(correctLightness) .colors(numColorsRight) : []; From 191dd05e6bde4be52be5a34b95416c22946d82f5 Mon Sep 17 00:00:00 2001 From: Andrew Ringler Date: Fri, 17 Apr 2020 11:20:30 -0400 Subject: [PATCH 6/6] disabled bezier interpolation field when not 2-5 colors, display warning messagE --- docs/bundle.css | 6 +- docs/bundle.css.map | 12 +-- docs/bundle.js | 178 ++++++++++++++++++++++++++++++-------------- docs/bundle.js.map | 2 +- src/App.svelte | 15 +++- src/Checkbox.svelte | 5 +- 6 files changed, 147 insertions(+), 71 deletions(-) diff --git a/docs/bundle.css b/docs/bundle.css index 9108882..9ddefa5 100644 --- a/docs/bundle.css +++ b/docs/bundle.css @@ -1,10 +1,10 @@ -.head.svelte-1cvo05r{margin:1em 0 1em}h1.svelte-1cvo05r{}input[type=number].svelte-1cvo05r{width:4em;text-align:center;margin:0px 0.7ex 5px}.foot.svelte-1cvo05r{margin-bottom:1em}.fa-svelte{vertical-align:sub}kbd.svelte-1cvo05r{-moz-border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;-webkit-border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;background-color:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;color:#333;display:inline-block;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff} +.head.svelte-10wwa0d{margin:1em 0 1em}h1.svelte-10wwa0d{}.warning.svelte-10wwa0d{font-size:0.8em;color:orange;font-weight:bold;display:block}input[type=number].svelte-10wwa0d{width:4em;text-align:center;margin:0px 0.7ex 5px}.foot.svelte-10wwa0d{margin-bottom:1em}.fa-svelte{vertical-align:sub}kbd.svelte-10wwa0d{-moz-border-radius:3px;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;-webkit-border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;background-color:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,0.2),0 0 0 2px #fff inset;color:#333;display:inline-block;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff} .palette.svelte-qylrh0{background:#eee;padding:10px;display:flex;height:100px}.step.svelte-qylrh0{height:100%;display:block;flex-grow:1} pre.svelte-1rj5ek4{padding:1ex;background:#eee;white-space:pre-wrap} -h4.svelte-1cvjt29{font-size:1rem}svg.svelte-1cvjt29{width:100%}path.svelte-1cvjt29{fill:none;stroke:black;stroke-width:2}text.svelte-1cvjt29{dominant-baseline:central;font-size:13px;text-anchor:end}line.svelte-1cvjt29{fill:none;stroke:#ddd}line.direct.svelte-1cvjt29{stroke-width:2;stroke:#ccc;stroke-dasharray:6,4} -.card.svelte-ruts6u{margin-bottom:20px}span.step.svelte-ruts6u{display:inline-block;background:#f3f3f3;border:1px solid #ddd;color:#bbb;width:1.5em;height:1.5em;line-height:1.5em;text-align:center;margin-right:1ex;font-size:1.35rem} @media(min-width: 720px){.colorblind-sim.svelte-ylsdbc{text-align:right;position:absolute;right:20px;top:-46px}.res.svelte-ylsdbc{text-align:right}}.text-muted.svelte-ylsdbc{padding-right:1em;font-size:0.85rem;display:inline-block;padding-top:6px}.c1.svelte-ylsdbc{margin-top:-15px} .fa-svelte.svelte-p8vizn{width:1em;height:1em;overflow:visible;display:inline-block} +h4.svelte-1cvjt29{font-size:1rem}svg.svelte-1cvjt29{width:100%}path.svelte-1cvjt29{fill:none;stroke:black;stroke-width:2}text.svelte-1cvjt29{dominant-baseline:central;font-size:13px;text-anchor:end}line.svelte-1cvjt29{fill:none;stroke:#ddd}line.direct.svelte-1cvjt29{stroke-width:2;stroke:#ccc;stroke-dasharray:6,4} +.card.svelte-ruts6u{margin-bottom:20px}span.step.svelte-ruts6u{display:inline-block;background:#f3f3f3;border:1px solid #ddd;color:#bbb;width:1.5em;height:1.5em;line-height:1.5em;text-align:center;margin-right:1ex;font-size:1.35rem} .btn-group.svelte-t0e0bc{position:relative;top:-4px;padding-left:1ex;padding-right:1ex} div.form-control.svelte-r8qk73{cursor:text;height:auto}.hidden.svelte-r8qk73{position:absolute;opacity:0;left:-99999px}span.inv.svelte-r8qk73{display:inline-block;width:60px;background:white;height:100%;vertical-align:bottom} span.badge.svelte-fua55c{font-weight:normal;font-size:100%;color:#000;position:relative}.badge+.badge.svelte-fua55c{margin-left:1ex}span.inverted.svelte-fua55c{color:white}.popover.svelte-fua55c{position:absolute;top:30px;left:-100px;width:300px}.color-row.svelte-fua55c{display:flex;margin-bottom:3px}span.lbl.svelte-fua55c{width:8.333% diff --git a/docs/bundle.css.map b/docs/bundle.css.map index 9375327..2b98a58 100644 --- a/docs/bundle.css.map +++ b/docs/bundle.css.map @@ -5,26 +5,26 @@ "..\\src\\App.svelte", "..\\src\\PalettePreview.svelte", "..\\src\\Export.svelte", - "..\\src\\StepChart.svelte", - "..\\src\\Card.svelte", "..\\src\\ColorBlindCheck.svelte", "..\\node_modules\\fa-svelte\\src\\Icon.html", + "..\\src\\StepChart.svelte", + "..\\src\\Card.svelte", "..\\src\\ButtonGroup.svelte", "..\\src\\ColorList.svelte", "..\\src\\Color.svelte" ], "sourcesContent": [ - "\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
", + "\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n {#if bezierDisabled}\r\n * Bezier interpolation requires 2-5 input colors\r\n {/if}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
\r\n", "\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n", "\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
", - "\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
", - "\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n", "\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n", "\r\n \r\n\r\n\r\n\r\n", + "\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
", + "\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n", "\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
", "\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}", "\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/docs/bundle.js b/docs/bundle.js index f99ad28..d3b9d16 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -3620,16 +3620,17 @@ var app = (function () { t0 = space(); label_1 = element("label"); t1 = text(ctx.label); + input.disabled = ctx.disabled; attr(input, "type", "checkbox"); attr(input, "class", "custom-control-input"); attr(input, "id", ctx.id); - add_location(input, file, 8, 4, 260); + add_location(input, file, 9, 4, 294); attr(label_1, "class", "custom-control-label"); attr(label_1, "for", ctx.id); - add_location(label_1, file, 9, 4, 349); + add_location(label_1, file, 10, 4, 394); attr(div, "class", "custom-control custom-checkbox"); toggle_class(div, "custom-control-inline", ctx.inline); - add_location(div, file, 7, 0, 173); + add_location(div, file, 8, 0, 207); dispose = listen(input, "change", ctx.input_change_handler); }, @@ -3651,6 +3652,10 @@ var app = (function () { p: function update(changed, ctx) { if (changed.value) input.checked = ctx.value; + if (changed.disabled) { + input.disabled = ctx.disabled; + } + if (changed.label) { set_data(t1, ctx.label); } @@ -3674,10 +3679,10 @@ var app = (function () { } function instance($$self, $$props, $$invalidate) { - let { value = false, inline = true, label = '' } = $$props; + let { value = false, disabled = false, inline = true, label = '' } = $$props; const id = Math.round(Math.random()*1e7).toString(36); - const writable_props = ['value', 'inline', 'label']; + const writable_props = ['value', 'disabled', 'inline', 'label']; Object.keys($$props).forEach(key => { if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`); }); @@ -3689,12 +3694,14 @@ var app = (function () { $$self.$set = $$props => { if ('value' in $$props) $$invalidate('value', value = $$props.value); + if ('disabled' in $$props) $$invalidate('disabled', disabled = $$props.disabled); if ('inline' in $$props) $$invalidate('inline', inline = $$props.inline); if ('label' in $$props) $$invalidate('label', label = $$props.label); }; return { value, + disabled, inline, label, id, @@ -3705,7 +3712,7 @@ var app = (function () { class Checkbox extends SvelteComponentDev { constructor(options) { super(options); - init(this, options, instance, create_fragment, safe_not_equal, ["value", "inline", "label"]); + init(this, options, instance, create_fragment, safe_not_equal, ["value", "disabled", "inline", "label"]); } get value() { @@ -3716,6 +3723,14 @@ var app = (function () { throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); } + get disabled() { + throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); + } + + set disabled(value) { + throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''"); + } + get inline() { throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''"); } @@ -9961,7 +9976,7 @@ var app = (function () { const file$b = "src\\App.svelte"; - // (141:4) + // (149:4) function create_default_slot_3(ctx) { var div2, div0, t0, updating_value, t1, div1, t2, input, current, dispose; @@ -9990,15 +10005,15 @@ var app = (function () { t2 = text("Number of colors: "); input = element("input"); attr(div0, "class", "col-md"); - add_location(div0, file$b, 142, 12, 4441); + add_location(div0, file$b, 150, 12, 4725); attr(input, "type", "number"); attr(input, "min", "2"); - attr(input, "class", "svelte-1cvo05r"); - add_location(input, file$b, 147, 34, 4673); + attr(input, "class", "svelte-10wwa0d"); + add_location(input, file$b, 155, 34, 4957); attr(div1, "class", "col-md"); - add_location(div1, file$b, 146, 12, 4617); + add_location(div1, file$b, 154, 12, 4901); attr(div2, "class", "row"); - add_location(div2, file$b, 141, 8, 4410); + add_location(div2, file$b, 149, 8, 4694); dispose = listen(input, "input", ctx.input_input_handler); }, @@ -10051,7 +10066,7 @@ var app = (function () { }; } - // (153:4) + // (161:4) function create_default_slot_2(ctx) { var updating_colors, updating_colors2, current; @@ -10119,9 +10134,33 @@ var app = (function () { }; } - // (157:4) + // (170:16) {#if bezierDisabled} + function create_if_block$6(ctx) { + var span; + + return { + c: function create() { + span = element("span"); + span.textContent = "* Bezier interpolation requires 2-5 input colors"; + attr(span, "class", "warning svelte-10wwa0d"); + add_location(span, file$b, 170, 16, 5628); + }, + + m: function mount(target, anchor) { + insert(target, span, anchor); + }, + + d: function destroy(detaching) { + if (detaching) { + detach(span); + } + } + }; + } + + // (165:4) function create_default_slot_1(ctx) { - var div2, div0, updating_value, t0, updating_value_1, t1, div1, updating_colors, updating_active, t2, updating_steps, updating_correctLightness, updating_bezier, updating_colors_1, updating_colors2, updating_numColors, t3, div6, div3, t4, div4, t5, div5, current; + var div2, div0, updating_value, t0, updating_value_1, t1, t2, div1, updating_colors, updating_active, t3, updating_steps, updating_correctLightness, updating_bezier, updating_colors_1, updating_colors2, updating_numColors, t4, div6, div3, t5, div4, t6, div5, current; function checkbox0_value_binding(value) { ctx.checkbox0_value_binding.call(null, value); @@ -10143,7 +10182,10 @@ var app = (function () { add_flush_callback(() => updating_value_1 = false); } - let checkbox1_props = { label: "bezier interpolation" }; + let checkbox1_props = { + label: "bezier interpolation", + disabled: ctx.bezierDisabled + }; if (ctx.bezier !== void 0) { checkbox1_props.value = ctx.bezier; } @@ -10151,6 +10193,8 @@ var app = (function () { add_binding_callback(() => bind(checkbox1, 'value', checkbox1_value_binding)); + var if_block = (ctx.bezierDisabled) && create_if_block$6(); + function colorblindcheck_colors_binding(value_2) { ctx.colorblindcheck_colors_binding.call(null, value_2); updating_colors = true; @@ -10283,35 +10327,37 @@ var app = (function () { t0 = space(); checkbox1.$$.fragment.c(); t1 = space(); + if (if_block) if_block.c(); + t2 = space(); div1 = element("div"); colorblindcheck.$$.fragment.c(); - t2 = space(); - palettepreview.$$.fragment.c(); t3 = space(); + palettepreview.$$.fragment.c(); + t4 = space(); div6 = element("div"); div3 = element("div"); stepchart0.$$.fragment.c(); - t4 = space(); + t5 = space(); div4 = element("div"); stepchart1.$$.fragment.c(); - t5 = space(); + t6 = space(); div5 = element("div"); stepchart2.$$.fragment.c(); attr(div0, "class", "col-md"); - add_location(div0, file$b, 158, 12, 5077); + add_location(div0, file$b, 166, 12, 5361); attr(div1, "class", "col-md"); - add_location(div1, file$b, 162, 12, 5296); + add_location(div1, file$b, 173, 12, 5762); attr(div2, "class", "row"); set_style(div2, "margin-bottom", "10px"); - add_location(div2, file$b, 157, 8, 5018); + add_location(div2, file$b, 165, 8, 5302); attr(div3, "class", "col-md"); - add_location(div3, file$b, 176, 12, 5745); + add_location(div3, file$b, 187, 12, 6211); attr(div4, "class", "col-md"); - add_location(div4, file$b, 179, 12, 5871); + add_location(div4, file$b, 190, 12, 6337); attr(div5, "class", "col-md"); - add_location(div5, file$b, 182, 12, 5998); + add_location(div5, file$b, 193, 12, 6464); attr(div6, "class", "row"); - add_location(div6, file$b, 175, 8, 5714); + add_location(div6, file$b, 186, 8, 6180); }, m: function mount(target, anchor) { @@ -10320,19 +10366,21 @@ var app = (function () { mount_component(checkbox0, div0, null); append(div0, t0); mount_component(checkbox1, div0, null); - append(div2, t1); + append(div0, t1); + if (if_block) if_block.m(div0, null); + append(div2, t2); append(div2, div1); mount_component(colorblindcheck, div1, null); - insert(target, t2, anchor); - mount_component(palettepreview, target, anchor); insert(target, t3, anchor); + mount_component(palettepreview, target, anchor); + insert(target, t4, anchor); insert(target, div6, anchor); append(div6, div3); mount_component(stepchart0, div3, null); - append(div6, t4); + append(div6, t5); append(div6, div4); mount_component(stepchart1, div4, null); - append(div6, t5); + append(div6, t6); append(div6, div5); mount_component(stepchart2, div5, null); current = true; @@ -10346,11 +10394,23 @@ var app = (function () { checkbox0.$set(checkbox0_changes); var checkbox1_changes = {}; + if (changed.bezierDisabled) checkbox1_changes.disabled = ctx.bezierDisabled; if (!updating_value_1 && changed.bezier) { checkbox1_changes.value = ctx.bezier; } checkbox1.$set(checkbox1_changes); + if (ctx.bezierDisabled) { + if (!if_block) { + if_block = create_if_block$6(); + if_block.c(); + if_block.m(div0, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + var colorblindcheck_changes = {}; if (!updating_colors && changed.steps) { colorblindcheck_changes.colors = ctx.steps; @@ -10435,16 +10495,18 @@ var app = (function () { destroy_component(checkbox1, ); + if (if_block) if_block.d(); + destroy_component(colorblindcheck, ); if (detaching) { - detach(t2); + detach(t3); } destroy_component(palettepreview, detaching); if (detaching) { - detach(t3); + detach(t4); detach(div6); } @@ -10457,7 +10519,7 @@ var app = (function () { }; } - // (189:4) + // (200:4) function create_default_slot(ctx) { var p, t0, a, t1, a_href_value, t2, kbd0, t3_value = ctx.isMac ? 'cmd' : 'ctrl', t3, t4, kbd1, t6, t7, current; @@ -10482,12 +10544,12 @@ var app = (function () { t7 = space(); export_1.$$.fragment.c(); attr(a, "href", a_href_value = "#/" + ctx.hash); - add_location(a, file$b, 189, 67, 6275); - attr(kbd0, "class", "svelte-1cvo05r"); - add_location(kbd0, file$b, 189, 106, 6314); - attr(kbd1, "class", "svelte-1cvo05r"); - add_location(kbd1, file$b, 189, 142, 6350); - add_location(p, file$b, 189, 8, 6216); + add_location(a, file$b, 200, 67, 6741); + attr(kbd0, "class", "svelte-10wwa0d"); + add_location(kbd0, file$b, 200, 106, 6780); + attr(kbd1, "class", "svelte-10wwa0d"); + add_location(kbd1, file$b, 200, 142, 6816); + add_location(p, file$b, 200, 8, 6682); }, m: function mount(target, anchor) { @@ -10617,27 +10679,27 @@ var app = (function () { a3 = element("a"); a3.textContent = "fork on Github"; t17 = text("."); - attr(h1, "class", "svelte-1cvo05r"); - add_location(h1, file$b, 137, 8, 4009); + attr(h1, "class", "svelte-10wwa0d"); + add_location(h1, file$b, 145, 8, 4293); attr(a0, "href", "https://github.com/gka/chroma.js"); attr(a0, "target", "_blank"); - add_location(a0, file$b, 138, 16, 4066); + add_location(a0, file$b, 146, 16, 4350); attr(a1, "target", "_blank"); attr(a1, "href", "http://vis4.net/blog/posts/mastering-multi-hued-color-scales/"); - add_location(a1, file$b, 138, 122, 4172); - add_location(p0, file$b, 138, 8, 4058); - attr(div0, "class", "head svelte-1cvo05r"); - add_location(div0, file$b, 136, 4, 3981); - add_location(hr, file$b, 193, 8, 6448); + add_location(a1, file$b, 146, 122, 4456); + add_location(p0, file$b, 146, 8, 4342); + attr(div0, "class", "head svelte-10wwa0d"); + add_location(div0, file$b, 144, 4, 4265); + add_location(hr, file$b, 204, 8, 6914); attr(a2, "href", "https://vis4.net/blog"); - add_location(a2, file$b, 194, 22, 6476); + add_location(a2, file$b, 205, 22, 6942); attr(a3, "href", "https://github.com/gka/palettes"); - add_location(a3, file$b, 195, 68, 6617); - add_location(p1, file$b, 194, 8, 6462); - attr(div1, "class", "foot svelte-1cvo05r"); - add_location(div1, file$b, 192, 4, 6420); + add_location(a3, file$b, 206, 68, 7083); + add_location(p1, file$b, 205, 8, 6928); + attr(div1, "class", "foot svelte-10wwa0d"); + add_location(div1, file$b, 203, 4, 6886); attr(div2, "class", "container"); - add_location(div2, file$b, 135, 0, 3952); + add_location(div2, file$b, 143, 0, 4236); dispose = listen(window, "hashchange", ctx.hashChange); }, @@ -10687,7 +10749,7 @@ var app = (function () { card1.$set(card1_changes); var card2_changes = {}; - if (changed.$$scope || changed.steps || changed.mode || changed.simulate || changed.correctLightness || changed.bezier || changed.colors || changed.colors2 || changed.numColors) card2_changes.$$scope = { changed, ctx }; + if (changed.$$scope || changed.steps || changed.mode || changed.simulate || changed.correctLightness || changed.bezier || changed.colors || changed.colors2 || changed.numColors || changed.bezierDisabled) card2_changes.$$scope = { changed, ctx }; card2.$set(card2_changes); var card3_changes = {}; @@ -10882,7 +10944,7 @@ var app = (function () { if ('name' in $$props) $$invalidate('name', name = $$props.name); }; - let hash; + let hash, bezierDisabled; $$self.$$.update = ($$dirty = { numColors: 1, mode: 1, colors: 1, colors2: 1, correctLightness: 1, bezier: 1 }) => { if ($$dirty.numColors || $$dirty.mode || $$dirty.colors || $$dirty.colors2 || $$dirty.correctLightness || $$dirty.bezier) { $$invalidate('hash', hash = [ @@ -10893,6 +10955,7 @@ var app = (function () { correctLightness ? 1:0, bezier?1:0 ].join('|')); } + if ($$dirty.mode || $$dirty.colors || $$dirty.colors2) { $$invalidate('bezierDisabled', bezierDisabled = mode==='sequential' ? !(colors.length>1&&colors.length<=5) : !(colors2.length>1&&colors2.length<=5 || colors.length>1&&colors.length<=5)); } }; return { @@ -10908,6 +10971,7 @@ var app = (function () { isMac, hashChange, hash, + bezierDisabled, buttongroup_value_binding, input_input_handler, inputcolors_colors_binding, diff --git a/docs/bundle.js.map b/docs/bundle.js.map index 27e0658..1bde4ca 100644 --- a/docs/bundle.js.map +++ b/docs/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/chroma-js/chroma.js","../../src/Checkbox.svelte","../../node_modules/lodash-es/_baseRange.js","../../node_modules/lodash-es/eq.js","../../node_modules/lodash-es/_freeGlobal.js","../../node_modules/lodash-es/_root.js","../../node_modules/lodash-es/_Symbol.js","../../node_modules/lodash-es/_getRawTag.js","../../node_modules/lodash-es/_objectToString.js","../../node_modules/lodash-es/_baseGetTag.js","../../node_modules/lodash-es/isObject.js","../../node_modules/lodash-es/isFunction.js","../../node_modules/lodash-es/isLength.js","../../node_modules/lodash-es/isArrayLike.js","../../node_modules/lodash-es/_isIndex.js","../../node_modules/lodash-es/_isIterateeCall.js","../../node_modules/lodash-es/isObjectLike.js","../../node_modules/lodash-es/isSymbol.js","../../node_modules/lodash-es/toNumber.js","../../node_modules/lodash-es/toFinite.js","../../node_modules/lodash-es/_createRange.js","../../node_modules/lodash-es/range.js","../../src/Color.svelte","../../src/ColorList.svelte","../../src/InputColors.svelte","../../src/colorBlind.js","../../src/PalettePreview.svelte","../../src/Export.svelte","../../node_modules/d3-array/src/ascending.js","../../node_modules/d3-array/src/bisector.js","../../node_modules/d3-array/src/bisect.js","../../node_modules/d3-array/src/extent.js","../../node_modules/d3-array/src/ticks.js","../../node_modules/d3-scale/src/init.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-color/src/math.js","../../node_modules/d3-color/src/lab.js","../../node_modules/d3-color/src/cubehelix.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/array.js","../../node_modules/d3-interpolate/src/date.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/object.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/value.js","../../node_modules/d3-interpolate/src/round.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/zoom.js","../../node_modules/d3-scale/src/constant.js","../../node_modules/d3-scale/src/number.js","../../node_modules/d3-scale/src/continuous.js","../../node_modules/d3-format/src/formatDecimal.js","../../node_modules/d3-format/src/exponent.js","../../node_modules/d3-format/src/formatGroup.js","../../node_modules/d3-format/src/formatNumerals.js","../../node_modules/d3-format/src/formatSpecifier.js","../../node_modules/d3-format/src/formatTrim.js","../../node_modules/d3-format/src/formatPrefixAuto.js","../../node_modules/d3-format/src/formatRounded.js","../../node_modules/d3-format/src/formatTypes.js","../../node_modules/d3-format/src/identity.js","../../node_modules/d3-format/src/locale.js","../../node_modules/d3-format/src/defaultLocale.js","../../node_modules/d3-format/src/precisionFixed.js","../../node_modules/d3-format/src/precisionPrefix.js","../../node_modules/d3-format/src/precisionRound.js","../../node_modules/d3-scale/src/tickFormat.js","../../node_modules/d3-scale/src/linear.js","../../node_modules/d3-time/src/interval.js","../../node_modules/d3-time/src/millisecond.js","../../node_modules/d3-time/src/duration.js","../../node_modules/d3-time/src/second.js","../../node_modules/d3-time/src/minute.js","../../node_modules/d3-time/src/hour.js","../../node_modules/d3-time/src/day.js","../../node_modules/d3-time/src/week.js","../../node_modules/d3-time/src/month.js","../../node_modules/d3-time/src/year.js","../../node_modules/d3-time/src/utcMinute.js","../../node_modules/d3-time/src/utcHour.js","../../node_modules/d3-time/src/utcDay.js","../../node_modules/d3-time/src/utcWeek.js","../../node_modules/d3-time/src/utcMonth.js","../../node_modules/d3-time/src/utcYear.js","../../node_modules/d3-time-format/src/locale.js","../../node_modules/d3-time-format/src/defaultLocale.js","../../node_modules/d3-time-format/src/isoFormat.js","../../node_modules/d3-time-format/src/isoParse.js","../../node_modules/d3-path/src/path.js","../../node_modules/d3-shape/src/constant.js","../../node_modules/d3-shape/src/math.js","../../node_modules/d3-shape/src/curve/linear.js","../../node_modules/d3-shape/src/point.js","../../node_modules/d3-shape/src/line.js","../../node_modules/d3-shape/src/curve/monotone.js","../../node_modules/d3-shape/src/curve/step.js","../../src/StepChart.svelte","../../src/Card.svelte","../../node_modules/fa-svelte/src/Icon.html","../../node_modules/@fortawesome/free-solid-svg-icons/faCheck.js","../../node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","../../src/ColorBlindCheck.svelte","../../src/ButtonGroup.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(component, store, callback) {\n const unsub = store.subscribe(callback);\n component.$$.on_destroy.push(unsub.unsubscribe\n ? () => unsub.unsubscribe()\n : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = cb => requestAnimationFrame(cb);\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction detach_before(after) {\n while (after.previousSibling) {\n after.parentNode.removeChild(after.previousSibling);\n }\n}\nfunction detach_after(before) {\n while (before.nextSibling) {\n before.parentNode.removeChild(before.nextSibling);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value) {\n node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now$$1 => {\n if (!started && now$$1 >= start_time) {\n started = true;\n }\n if (started && now$$1 >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now$$1 - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.shift()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n while (render_callbacks.length) {\n const callback = render_callbacks.pop();\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_render);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_render.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n remaining: 0,\n callbacks: []\n };\n}\nfunction check_outros() {\n if (!outros.remaining) {\n run_all(outros.callbacks);\n }\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.callbacks.push(() => {\n outroing.delete(block);\n if (callback) {\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick$$1(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.remaining += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now$$1 => {\n if (running) {\n if (now$$1 >= end_time) {\n tick$$1(0, 1);\n dispatch(node, false, 'end');\n if (!--group.remaining) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.callbacks);\n }\n return false;\n }\n if (now$$1 >= start_time) {\n const t = easing((now$$1 - start_time) / duration);\n tick$$1(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.remaining += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick$$1(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now$$1 => {\n if (pending_program && now$$1 > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now$$1 >= running_program.end) {\n tick$$1(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.remaining)\n run_all(running_program.group.callbacks);\n }\n }\n running_program = null;\n }\n else if (now$$1 >= running_program.start) {\n const p = now$$1 - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick$$1(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n promise.then(value => {\n update(info.then, 1, info.value, value);\n }, error => {\n update(info.catch, 2, info.error, error);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_render: [],\n after_render: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction get_store_value(store) {\n let value;\n store.subscribe(_ => value = _)();\n return value;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_render } = component.$$;\n fragment.m(target, anchor);\n // onMount happens after the initial afterUpdate. Because\n // afterUpdate callbacks happen in reverse order (inner first)\n // we schedule onMount callbacks before afterUpdate callbacks\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_render.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n if (detaching)\n component.$$.fragment.d(1);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal: not_equal$$1,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_render: [],\n after_render: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, value) => {\n if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_render);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr$$1, _oldValue, newValue) {\n this[attr$$1] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { create_animation, fix_position, add_transform, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, is_client, now, raf, set_now, set_raf, destroy_block, outro_and_destroy_block, fix_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, transition_in, transition_out, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, once, bind, mount_component, destroy_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n var limit = function (x, min, max) {\n if ( min === void 0 ) min=0;\n if ( max === void 0 ) max=1;\n\n return x < min ? min : x > max ? max : x;\n };\n\n var clip_rgb = function (rgb) {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (var i=0; i<=3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n };\n\n // ported from jQuery's $.type\n var classToType = {};\n for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n var name = list[i];\n\n classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n }\n var type = function(obj) {\n return classToType[Object.prototype.toString.call(obj)] || \"object\";\n };\n\n var unpack = function (args, keyOrder) {\n if ( keyOrder === void 0 ) keyOrder=null;\n\n \t// if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) { return Array.prototype.slice.call(args); }\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n \tif (type(args[0]) == 'object' && keyOrder) {\n \t\treturn keyOrder.split('')\n \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n \t\t\t.map(function (k) { return args[0][k]; });\n \t}\n \t// otherwise we just return the first argument\n \t// (which we suppose is an array of args)\n return args[0];\n };\n\n var last = function (args) {\n if (args.length < 2) { return null; }\n var l = args.length-1;\n if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n return null;\n };\n\n var PI = Math.PI;\n\n var utils = {\n \tclip_rgb: clip_rgb,\n \tlimit: limit,\n \ttype: type,\n \tunpack: unpack,\n \tlast: last,\n \tPI: PI,\n \tTWOPI: PI*2,\n \tPITHIRD: PI/3,\n \tDEG2RAD: PI / 180,\n \tRAD2DEG: 180 / PI\n };\n\n var input = {\n \tformat: {},\n \tautodetect: []\n };\n\n var last$1 = utils.last;\n var clip_rgb$1 = utils.clip_rgb;\n var type$1 = utils.type;\n\n\n var Color = function Color() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var me = this;\n if (type$1(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor) {\n // the argument is already a Color instance\n return args[0];\n }\n\n // last argument could be the mode\n var mode = last$1(args);\n var autodetect = false;\n\n if (!mode) {\n autodetect = true;\n if (!input.sorted) {\n input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n input.sorted = true;\n }\n // auto-detect format\n for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n var chk = list[i];\n\n mode = chk.test.apply(chk, args);\n if (mode) { break; }\n }\n }\n\n if (input.format[mode]) {\n var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n me._rgb = clip_rgb$1(rgb);\n } else {\n throw new Error('unknown format: '+args);\n }\n\n // add alpha channel\n if (me._rgb.length === 3) { me._rgb.push(1); }\n };\n\n Color.prototype.toString = function toString () {\n if (type$1(this.hex) == 'function') { return this.hex(); }\n return (\"[\" + (this._rgb.join(',')) + \"]\");\n };\n\n var Color_1 = Color;\n\n var chroma = function () {\n \tvar args = [], len = arguments.length;\n \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n };\n\n chroma.Color = Color_1;\n chroma.version = '2.0.4';\n\n var chroma_1 = chroma;\n\n var unpack$1 = utils.unpack;\n var max = Math.max;\n\n var rgb2cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$1(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r = r / 255;\n g = g / 255;\n b = b / 255;\n var k = 1 - max(r,max(g,b));\n var f = k < 1 ? 1 / (1-k) : 0;\n var c = (1-r-k) * f;\n var m = (1-g-k) * f;\n var y = (1-b-k) * f;\n return [c,m,y,k];\n };\n\n var rgb2cmyk_1 = rgb2cmyk;\n\n var unpack$2 = utils.unpack;\n\n var cmyk2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$2(args, 'cmyk');\n var c = args[0];\n var m = args[1];\n var y = args[2];\n var k = args[3];\n var alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) { return [0,0,0,alpha]; }\n return [\n c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n alpha\n ];\n };\n\n var cmyk2rgb_1 = cmyk2rgb;\n\n var unpack$3 = utils.unpack;\n var type$2 = utils.type;\n\n\n\n Color_1.prototype.cmyk = function() {\n return rgb2cmyk_1(this._rgb);\n };\n\n chroma_1.cmyk = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n };\n\n input.format.cmyk = cmyk2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$3(args, 'cmyk');\n if (type$2(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n });\n\n var unpack$4 = utils.unpack;\n var last$2 = utils.last;\n var rnd = function (a) { return Math.round(a*100)/100; };\n\n /*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\n var hsl2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hsla = unpack$4(args, 'hsla');\n var mode = last$2(args) || 'lsa';\n hsla[0] = rnd(hsla[0] || 0);\n hsla[1] = rnd(hsla[1]*100) + '%';\n hsla[2] = rnd(hsla[2]*100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return (mode + \"(\" + (hsla.join(',')) + \")\");\n };\n\n var hsl2css_1 = hsl2css;\n\n var unpack$5 = utils.unpack;\n\n /*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\n var rgb2hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$5(args, 'rgba');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n\n var l = (max + min) / 2;\n var s, h;\n\n if (max === min){\n s = 0;\n h = Number.NaN;\n } else {\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n }\n\n if (r == max) { h = (g - b) / (max - min); }\n else if (g == max) { h = 2 + (b - r) / (max - min); }\n else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n h *= 60;\n if (h < 0) { h += 360; }\n if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n return [h,s,l];\n };\n\n var rgb2hsl_1 = rgb2hsl;\n\n var unpack$6 = utils.unpack;\n var last$3 = utils.last;\n\n\n var round = Math.round;\n\n /*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\n var rgb2css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$6(args, 'rgba');\n var mode = last$3(args) || 'rgb';\n if (mode.substr(0,3) == 'hsl') {\n return hsl2css_1(rgb2hsl_1(rgba), mode);\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n mode = 'rgba';\n }\n return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n };\n\n var rgb2css_1 = rgb2css;\n\n var unpack$7 = utils.unpack;\n var round$1 = Math.round;\n\n var hsl2rgb = function () {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$7(args, 'hsl');\n var h = args[0];\n var s = args[1];\n var l = args[2];\n var r,g,b;\n if (s === 0) {\n r = g = b = l*255;\n } else {\n var t3 = [0,0,0];\n var c = [0,0,0];\n var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n var t1 = 2 * l - t2;\n var h_ = h / 360;\n t3[0] = h_ + 1/3;\n t3[1] = h_;\n t3[2] = h_ - 1/3;\n for (var i=0; i<3; i++) {\n if (t3[i] < 0) { t3[i] += 1; }\n if (t3[i] > 1) { t3[i] -= 1; }\n if (6 * t3[i] < 1)\n { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n else if (2 * t3[i] < 1)\n { c[i] = t2; }\n else if (3 * t3[i] < 2)\n { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n else\n { c[i] = t1; }\n }\n (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r,g,b,args[3]];\n }\n return [r,g,b,1];\n };\n\n var hsl2rgb_1 = hsl2rgb;\n\n var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n var round$2 = Math.round;\n\n var css2rgb = function (css) {\n css = css.toLowerCase().trim();\n var m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n } catch (e) {\n // eslint-disable-next-line\n }\n }\n\n // rgb(250,20,0)\n if ((m = css.match(RE_RGB))) {\n var rgb = m.slice(1,4);\n for (var i=0; i<3; i++) {\n rgb[i] = +rgb[i];\n }\n rgb[3] = 1; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA))) {\n var rgb$1 = m.slice(1,5);\n for (var i$1=0; i$1<4; i$1++) {\n rgb$1[i$1] = +rgb$1[i$1];\n }\n return rgb$1;\n }\n\n // rgb(100%,0%,0%)\n if ((m = css.match(RE_RGB_PCT))) {\n var rgb$2 = m.slice(1,4);\n for (var i$2=0; i$2<3; i$2++) {\n rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n }\n rgb$2[3] = 1; // default alpha\n return rgb$2;\n }\n\n // rgba(100%,0%,0%,0.4)\n if ((m = css.match(RE_RGBA_PCT))) {\n var rgb$3 = m.slice(1,5);\n for (var i$3=0; i$3<3; i$3++) {\n rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n }\n rgb$3[3] = +rgb$3[3];\n return rgb$3;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL))) {\n var hsl = m.slice(1,4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n var rgb$4 = hsl2rgb_1(hsl);\n rgb$4[3] = 1;\n return rgb$4;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA))) {\n var hsl$1 = m.slice(1,4);\n hsl$1[1] *= 0.01;\n hsl$1[2] *= 0.01;\n var rgb$5 = hsl2rgb_1(hsl$1);\n rgb$5[3] = +m[4]; // default alpha = 1\n return rgb$5;\n }\n };\n\n css2rgb.test = function (s) {\n return RE_RGB.test(s) ||\n RE_RGBA.test(s) ||\n RE_RGB_PCT.test(s) ||\n RE_RGBA_PCT.test(s) ||\n RE_HSL.test(s) ||\n RE_HSLA.test(s);\n };\n\n var css2rgb_1 = css2rgb;\n\n var type$3 = utils.type;\n\n\n\n\n Color_1.prototype.css = function(mode) {\n return rgb2css_1(this._rgb, mode);\n };\n\n chroma_1.css = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n };\n\n input.format.css = css2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n return 'css';\n }\n }\n });\n\n var unpack$8 = utils.unpack;\n\n input.format.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$8(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n };\n\n chroma_1.gl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n };\n\n Color_1.prototype.gl = function() {\n var rgb = this._rgb;\n return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n };\n\n var unpack$9 = utils.unpack;\n\n var rgb2hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$9(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var c = delta * 100 / 255;\n var _g = min / (255 - delta) * 100;\n var h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === max) { h = (g - b) / delta; }\n if (g === max) { h = 2+(b - r) / delta; }\n if (b === max) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, c, _g];\n };\n\n var rgb2hcg_1 = rgb2hcg;\n\n var unpack$a = utils.unpack;\n var floor = Math.floor;\n\n /*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\n var hcg2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$a(args, 'hcg');\n var h = args[0];\n var c = args[1];\n var _g = args[2];\n var r,g,b;\n _g = _g * 255;\n var _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n var i = floor(h);\n var f = h - i;\n var p = _g * (1 - c);\n var q = p + _c * (1 - f);\n var t = p + _c * f;\n var v = p + _c;\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var hcg2rgb_1 = hcg2rgb;\n\n var unpack$b = utils.unpack;\n var type$4 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hcg = function() {\n return rgb2hcg_1(this._rgb);\n };\n\n chroma_1.hcg = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n };\n\n input.format.hcg = hcg2rgb_1;\n\n input.autodetect.push({\n p: 1,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$b(args, 'hcg');\n if (type$4(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n });\n\n var unpack$c = utils.unpack;\n var last$4 = utils.last;\n var round$3 = Math.round;\n\n var rgb2hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$c(args, 'rgba');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n var mode = last$4(args) || 'auto';\n if (a === undefined) { a = 1; }\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round$3(r);\n g = round$3(g);\n b = round$3(b);\n var u = r << 16 | g << 8 | b;\n var str = \"000000\" + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n var hxa = '0' + round$3(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba': return (\"#\" + str + hxa);\n case 'argb': return (\"#\" + hxa + str);\n default: return (\"#\" + str);\n }\n };\n\n var rgb2hex_1 = rgb2hex;\n\n var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n var RE_HEXA = /^#?([A-Fa-f0-9]{8})$/;\n\n var hex2rgb = function (hex) {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n }\n var u = parseInt(hex, 16);\n var r = u >> 16;\n var g = u >> 8 & 0xFF;\n var b = u & 0xFF;\n return [r,g,b,1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n var u$1 = parseInt(hex, 16);\n var r$1 = u$1 >> 24 & 0xFF;\n var g$1 = u$1 >> 16 & 0xFF;\n var b$1 = u$1 >> 8 & 0xFF;\n var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n return [r$1,g$1,b$1,a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error((\"unknown hex color: \" + hex));\n };\n\n var hex2rgb_1 = hex2rgb;\n\n var type$5 = utils.type;\n\n\n\n\n Color_1.prototype.hex = function(mode) {\n return rgb2hex_1(this._rgb, mode);\n };\n\n chroma_1.hex = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n };\n\n input.format.hex = hex2rgb_1;\n input.autodetect.push({\n p: 4,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$5(h) === 'string' && [3,4,6,7,8,9].includes(h.length)) {\n return 'hex';\n }\n }\n });\n\n var unpack$d = utils.unpack;\n var TWOPI = utils.TWOPI;\n var min = Math.min;\n var sqrt = Math.sqrt;\n var acos = Math.acos;\n\n var rgb2hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n var ref = unpack$d(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n r /= 255;\n g /= 255;\n b /= 255;\n var h;\n var min_ = min(r,g,b);\n var i = (r+g+b) / 3;\n var s = i > 0 ? 1 - min_/i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = ((r-g)+(r-b)) / 2;\n h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h*360,s,i];\n };\n\n var rgb2hsi_1 = rgb2hsi;\n\n var unpack$e = utils.unpack;\n var limit$1 = utils.limit;\n var TWOPI$1 = utils.TWOPI;\n var PITHIRD = utils.PITHIRD;\n var cos = Math.cos;\n\n /*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\n var hsi2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack$e(args, 'hsi');\n var h = args[0];\n var s = args[1];\n var i = args[2];\n var r,g,b;\n\n if (isNaN(h)) { h = 0; }\n if (isNaN(s)) { s = 0; }\n // normalize hue\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 360;\n if (h < 1/3) {\n b = (1-s)/3;\n r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n g = 1 - (b+r);\n } else if (h < 2/3) {\n h -= 1/3;\n r = (1-s)/3;\n g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n b = 1 - (r+g);\n } else {\n h -= 2/3;\n g = (1-s)/3;\n b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n r = 1 - (g+b);\n }\n r = limit$1(i*r*3);\n g = limit$1(i*g*3);\n b = limit$1(i*b*3);\n return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n };\n\n var hsi2rgb_1 = hsi2rgb;\n\n var unpack$f = utils.unpack;\n var type$6 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsi = function() {\n return rgb2hsi_1(this._rgb);\n };\n\n chroma_1.hsi = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n };\n\n input.format.hsi = hsi2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$f(args, 'hsi');\n if (type$6(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n });\n\n var unpack$g = utils.unpack;\n var type$7 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsl = function() {\n return rgb2hsl_1(this._rgb);\n };\n\n chroma_1.hsl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n };\n\n input.format.hsl = hsl2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$g(args, 'hsl');\n if (type$7(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n });\n\n var unpack$h = utils.unpack;\n var min$1 = Math.min;\n var max$1 = Math.max;\n\n /*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\n var rgb2hsl$1 = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$h(args, 'rgb');\n var r = args[0];\n var g = args[1];\n var b = args[2];\n var min_ = min$1(r, g, b);\n var max_ = max$1(r, g, b);\n var delta = max_ - min_;\n var h,s,v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) { h = (g - b) / delta; }\n if (g === max_) { h = 2+(b - r) / delta; }\n if (b === max_) { h = 4+(r - g) / delta; }\n h *= 60;\n if (h < 0) { h += 360; }\n }\n return [h, s, v]\n };\n\n var rgb2hsv = rgb2hsl$1;\n\n var unpack$i = utils.unpack;\n var floor$1 = Math.floor;\n\n var hsv2rgb = function () {\n var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n args = unpack$i(args, 'hsv');\n var h = args[0];\n var s = args[1];\n var v = args[2];\n var r,g,b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) { h = 0; }\n if (h > 360) { h -= 360; }\n if (h < 0) { h += 360; }\n h /= 60;\n\n var i = floor$1(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n }\n }\n return [r,g,b,args.length > 3?args[3]:1];\n };\n\n var hsv2rgb_1 = hsv2rgb;\n\n var unpack$j = utils.unpack;\n var type$8 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.hsv = function() {\n return rgb2hsv(this._rgb);\n };\n\n chroma_1.hsv = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n };\n\n input.format.hsv = hsv2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$j(args, 'hsv');\n if (type$8(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n });\n\n var labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n Xn: 0.950470,\n Yn: 1,\n Zn: 1.088830,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1\n };\n\n var unpack$k = utils.unpack;\n var pow = Math.pow;\n\n var rgb2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$k(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2xyz(r,g,b);\n var x = ref$1[0];\n var y = ref$1[1];\n var z = ref$1[2];\n var l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n };\n\n var rgb_xyz = function (r) {\n if ((r /= 255) <= 0.04045) { return r / 12.92; }\n return pow((r + 0.055) / 1.055, 2.4);\n };\n\n var xyz_lab = function (t) {\n if (t > labConstants.t3) { return pow(t, 1 / 3); }\n return t / labConstants.t2 + labConstants.t0;\n };\n\n var rgb2xyz = function (r,g,b) {\n r = rgb_xyz(r);\n g = rgb_xyz(g);\n b = rgb_xyz(b);\n var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n return [x,y,z];\n };\n\n var rgb2lab_1 = rgb2lab;\n\n var unpack$l = utils.unpack;\n var pow$1 = Math.pow;\n\n /*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\n var lab2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$l(args, 'lab');\n var l = args[0];\n var a = args[1];\n var b = args[2];\n var x,y,z, r,g,b_;\n\n y = (l + 16) / 116;\n x = isNaN(a) ? y : y + a / 500;\n z = isNaN(b) ? y : y - b / 200;\n\n y = labConstants.Yn * lab_xyz(y);\n x = labConstants.Xn * lab_xyz(x);\n z = labConstants.Zn * lab_xyz(z);\n\n r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n return [r,g,b_,args.length > 3 ? args[3] : 1];\n };\n\n var xyz_rgb = function (r) {\n return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n };\n\n var lab_xyz = function (t) {\n return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n };\n\n var lab2rgb_1 = lab2rgb;\n\n var unpack$m = utils.unpack;\n var type$9 = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lab = function() {\n return rgb2lab_1(this._rgb);\n };\n\n chroma_1.lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n };\n\n input.format.lab = lab2rgb_1;\n\n input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$m(args, 'lab');\n if (type$9(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n });\n\n var unpack$n = utils.unpack;\n var RAD2DEG = utils.RAD2DEG;\n var sqrt$1 = Math.sqrt;\n var atan2 = Math.atan2;\n var round$4 = Math.round;\n\n var lab2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$n(args, 'lab');\n var l = ref[0];\n var a = ref[1];\n var b = ref[2];\n var c = sqrt$1(a * a + b * b);\n var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round$4(c*10000) === 0) { h = Number.NaN; }\n return [l, c, h];\n };\n\n var lab2lch_1 = lab2lch;\n\n var unpack$o = utils.unpack;\n\n\n\n var rgb2lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$o(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var ref$1 = rgb2lab_1(r,g,b);\n var l = ref$1[0];\n var a = ref$1[1];\n var b_ = ref$1[2];\n return lab2lch_1(l,a,b_);\n };\n\n var rgb2lch_1 = rgb2lch;\n\n var unpack$p = utils.unpack;\n var DEG2RAD = utils.DEG2RAD;\n var sin = Math.sin;\n var cos$1 = Math.cos;\n\n var lch2lab = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n var ref = unpack$p(args, 'lch');\n var l = ref[0];\n var c = ref[1];\n var h = ref[2];\n if (isNaN(h)) { h = 0; }\n h = h * DEG2RAD;\n return [l, cos$1(h) * c, sin(h) * c]\n };\n\n var lch2lab_1 = lch2lab;\n\n var unpack$q = utils.unpack;\n\n\n\n var lch2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$q(args, 'lch');\n var l = args[0];\n var c = args[1];\n var h = args[2];\n var ref = lch2lab_1 (l,c,h);\n var L = ref[0];\n var a = ref[1];\n var b_ = ref[2];\n var ref$1 = lab2rgb_1 (L,a,b_);\n var r = ref$1[0];\n var g = ref$1[1];\n var b = ref$1[2];\n return [r, g, b, args.length > 3 ? args[3] : 1];\n };\n\n var lch2rgb_1 = lch2rgb;\n\n var unpack$r = utils.unpack;\n\n\n var hcl2rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var hcl = unpack$r(args, 'hcl').reverse();\n return lch2rgb_1.apply(void 0, hcl);\n };\n\n var hcl2rgb_1 = hcl2rgb;\n\n var unpack$s = utils.unpack;\n var type$a = utils.type;\n\n\n\n\n\n\n Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n chroma_1.lch = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n };\n chroma_1.hcl = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n };\n\n input.format.lch = lch2rgb_1;\n input.format.hcl = hcl2rgb_1;\n\n ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n p: 2,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$s(args, m);\n if (type$a(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n }); });\n\n /**\n \tX11 color names\n\n \thttp://www.w3.org/TR/css3-color/#svg-color\n */\n\n var w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflower: '#6495ed',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n };\n\n var w3cx11_1 = w3cx11;\n\n var type$b = utils.type;\n\n\n\n\n\n Color_1.prototype.name = function() {\n var hex = rgb2hex_1(this._rgb, 'rgb');\n for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n var n = list[i];\n\n if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n }\n return hex;\n };\n\n input.format.named = function (name) {\n name = name.toLowerCase();\n if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n throw new Error('unknown color name: '+name);\n };\n\n input.autodetect.push({\n p: 5,\n test: function (h) {\n var rest = [], len = arguments.length - 1;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n return 'named';\n }\n }\n });\n\n var unpack$t = utils.unpack;\n\n var rgb2num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var ref = unpack$t(args, 'rgb');\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n return (r << 16) + (g << 8) + b;\n };\n\n var rgb2num_1 = rgb2num;\n\n var type$c = utils.type;\n\n var num2rgb = function (num) {\n if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n var r = num >> 16;\n var g = (num >> 8) & 0xFF;\n var b = num & 0xFF;\n return [r,g,b,1];\n }\n throw new Error(\"unknown num color: \"+num);\n };\n\n var num2rgb_1 = num2rgb;\n\n var type$d = utils.type;\n\n\n\n Color_1.prototype.num = function() {\n return rgb2num_1(this._rgb);\n };\n\n chroma_1.num = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n };\n\n input.format.num = num2rgb_1;\n\n input.autodetect.push({\n p: 5,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n return 'num';\n }\n }\n });\n\n var unpack$u = utils.unpack;\n var type$e = utils.type;\n var round$5 = Math.round;\n\n Color_1.prototype.rgb = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n if (rnd === false) { return this._rgb.slice(0,3); }\n return this._rgb.slice(0,3).map(round$5);\n };\n\n Color_1.prototype.rgba = function(rnd) {\n if ( rnd === void 0 ) rnd=true;\n\n return this._rgb.slice(0,4).map(function (v,i) {\n return i<3 ? (rnd === false ? v : round$5(v)) : v;\n });\n };\n\n chroma_1.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n };\n\n input.format.rgb = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgba = unpack$u(args, 'rgba');\n if (rgba[3] === undefined) { rgba[3] = 1; }\n return rgba;\n };\n\n input.autodetect.push({\n p: 3,\n test: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n args = unpack$u(args, 'rgba');\n if (type$e(args) === 'array' && (args.length === 3 ||\n args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n return 'rgb';\n }\n }\n });\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\n var log = Math.log;\n\n var temperature2rgb = function (kelvin) {\n var temp = kelvin / 100;\n var r,g,b;\n if (temp < 66) {\n r = 255;\n g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n } else {\n r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n b = 255;\n }\n return [r,g,b,1];\n };\n\n var temperature2rgb_1 = temperature2rgb;\n\n /*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\n\n var unpack$v = utils.unpack;\n var round$6 = Math.round;\n\n var rgb2temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var rgb = unpack$v(args, 'rgb');\n var r = rgb[0], b = rgb[2];\n var minTemp = 1000;\n var maxTemp = 40000;\n var eps = 0.4;\n var temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n var rgb$1 = temperature2rgb_1(temp);\n if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round$6(temp);\n };\n\n var rgb2temperature_1 = rgb2temperature;\n\n Color_1.prototype.temp =\n Color_1.prototype.kelvin =\n Color_1.prototype.temperature = function() {\n return rgb2temperature_1(this._rgb);\n };\n\n chroma_1.temp =\n chroma_1.kelvin =\n chroma_1.temperature = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n };\n\n input.format.temp =\n input.format.kelvin =\n input.format.temperature = temperature2rgb_1;\n\n var type$f = utils.type;\n\n Color_1.prototype.alpha = function(a, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n if (a !== undefined && type$f(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n };\n\n Color_1.prototype.clipped = function() {\n return this._rgb._clipped || false;\n };\n\n Color_1.prototype.darken = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lab = me.lab();\n \tlab[0] -= labConstants.Kn * amount;\n \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.brighten = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.darken(-amount);\n };\n\n Color_1.prototype.darker = Color_1.prototype.darken;\n Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n Color_1.prototype.get = function(mc) {\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) { return src[i]; }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var type$g = utils.type;\n var pow$2 = Math.pow;\n\n var EPS = 1e-7;\n var MAX_ITER = 20;\n\n Color_1.prototype.luminance = function(lum) {\n if (lum !== undefined && type$g(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n }\n // compute new color using...\n var cur_lum = this.luminance();\n var mode = 'rgb';\n var max_iter = MAX_ITER;\n\n var test = function (low, high) {\n var mid = low.interpolate(high, 0.5, mode);\n var lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n return new Color_1(rgb.concat( [this._rgb[3]]));\n }\n return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n };\n\n\n var rgb2luminance = function (r,g,b) {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n };\n\n var luminance_x = function (x) {\n x /= 255;\n return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n };\n\n var interpolator = {};\n\n var type$h = utils.type;\n\n\n var mix = function (col1, col2, f) {\n if ( f === void 0 ) f=0.5;\n var rest = [], len = arguments.length - 3;\n while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n var mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n }\n if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n return interpolator[mode](col1, col2, f)\n .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n };\n\n Color_1.prototype.mix =\n Color_1.prototype.interpolate = function(col2, f) {\n \tif ( f === void 0 ) f=0.5;\n \tvar rest = [], len = arguments.length - 2;\n \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n };\n\n Color_1.prototype.premultiply = function(mutate) {\n \tif ( mutate === void 0 ) mutate=false;\n\n \tvar rgb = this._rgb;\n \tvar a = rgb[3];\n \tif (mutate) {\n \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n \t\treturn this;\n \t} else {\n \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n \t}\n };\n\n Color_1.prototype.saturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \tvar me = this;\n \tvar lch = me.lch();\n \tlch[1] += labConstants.Kn * amount;\n \tif (lch[1] < 0) { lch[1] = 0; }\n \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n };\n\n Color_1.prototype.desaturate = function(amount) {\n \tif ( amount === void 0 ) amount=1;\n\n \treturn this.saturate(-amount);\n };\n\n var type$i = utils.type;\n\n Color_1.prototype.set = function(mc, value, mutate) {\n if ( mutate === void 0 ) mutate=false;\n\n var ref = mc.split('.');\n var mode = ref[0];\n var channel = ref[1];\n var src = this[mode]();\n if (channel) {\n var i = mode.indexOf(channel);\n if (i > -1) {\n if (type$i(value) == 'string') {\n switch(value.charAt(0)) {\n case '+': src[i] += +value; break;\n case '-': src[i] += +value; break;\n case '*': src[i] *= +(value.substr(1)); break;\n case '/': src[i] /= +(value.substr(1)); break;\n default: src[i] = +value;\n }\n } else if (type$i(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(\"unsupported value for Color.set\");\n }\n var out = new Color_1(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n } else {\n return src;\n }\n };\n\n var rgb$1 = function (col1, col2, f) {\n var xyz0 = col1._rgb;\n var xyz1 = col2._rgb;\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.rgb = rgb$1;\n\n var sqrt$2 = Math.sqrt;\n var pow$3 = Math.pow;\n\n var lrgb = function (col1, col2, f) {\n var ref = col1._rgb;\n var x1 = ref[0];\n var y1 = ref[1];\n var z1 = ref[2];\n var ref$1 = col2._rgb;\n var x2 = ref$1[0];\n var y2 = ref$1[1];\n var z2 = ref$1[2];\n return new Color_1(\n sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n 'rgb'\n )\n };\n\n // register interpolator\n interpolator.lrgb = lrgb;\n\n var lab$1 = function (col1, col2, f) {\n var xyz0 = col1.lab();\n var xyz1 = col2.lab();\n return new Color_1(\n xyz0[0] + f * (xyz1[0]-xyz0[0]),\n xyz0[1] + f * (xyz1[1]-xyz0[1]),\n xyz0[2] + f * (xyz1[2]-xyz0[2]),\n 'lab'\n )\n };\n\n // register interpolator\n interpolator.lab = lab$1;\n\n var _hsx = function (col1, col2, f, m) {\n var assign, assign$1;\n\n var xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n }\n\n var hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h') {\n (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n }\n\n var sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1-(hue0+360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1+360-hue0;\n } else{\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n lbv = lbv0 + f * (lbv1-lbv0);\n return new Color_1([hue, sat, lbv], m);\n };\n\n var lch$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'lch');\n };\n\n // register interpolator\n interpolator.lch = lch$1;\n interpolator.hcl = lch$1;\n\n var num$1 = function (col1, col2, f) {\n var c1 = col1.num();\n var c2 = col2.num();\n return new Color_1(c1 + f * (c2-c1), 'num')\n };\n\n // register interpolator\n interpolator.num = num$1;\n\n var hcg$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hcg');\n };\n\n // register interpolator\n interpolator.hcg = hcg$1;\n\n var hsi$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsi');\n };\n\n // register interpolator\n interpolator.hsi = hsi$1;\n\n var hsl$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsl');\n };\n\n // register interpolator\n interpolator.hsl = hsl$1;\n\n var hsv$1 = function (col1, col2, f) {\n \treturn _hsx(col1, col2, f, 'hsv');\n };\n\n // register interpolator\n interpolator.hsv = hsv$1;\n\n var clip_rgb$2 = utils.clip_rgb;\n var pow$4 = Math.pow;\n var sqrt$3 = Math.sqrt;\n var PI$1 = Math.PI;\n var cos$2 = Math.cos;\n var sin$1 = Math.sin;\n var atan2$1 = Math.atan2;\n\n var average = function (colors, mode) {\n if ( mode === void 0 ) mode='lrgb';\n\n var l = colors.length;\n // convert colors to Color objects\n colors = colors.map(function (c) { return new Color_1(c); });\n if (mode === 'lrgb') {\n return _average_lrgb(colors)\n }\n var first = colors.shift();\n var xyz = first.get(mode);\n var cnt = [];\n var dx = 0;\n var dy = 0;\n // initial color\n for (var i=0; i= 360) { A$1 -= 360; }\n xyz[i$1] = A$1;\n } else {\n xyz[i$1] = xyz[i$1]/cnt[i$1];\n }\n }\n alpha /= l;\n return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n };\n\n\n var _average_lrgb = function (colors) {\n var l = colors.length;\n var f = 1/l;\n var xyz = [0,0,0,0];\n for (var i = 0, list = colors; i < list.length; i += 1) {\n var col = list[i];\n\n var rgb = col._rgb;\n xyz[0] += pow$4(rgb[0],2) * f;\n xyz[1] += pow$4(rgb[1],2) * f;\n xyz[2] += pow$4(rgb[2],2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt$3(xyz[0]);\n xyz[1] = sqrt$3(xyz[1]);\n xyz[2] = sqrt$3(xyz[2]);\n if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n return new Color_1(clip_rgb$2(xyz));\n };\n\n // minimal multi-purpose interface\n\n // @requires utils color analyze\n\n\n var type$j = utils.type;\n\n var pow$5 = Math.pow;\n\n var scale = function(colors) {\n\n // constructor\n var _mode = 'rgb';\n var _nacol = chroma_1('#ccc');\n var _spread = 0;\n // const _fixed = false;\n var _domain = [0, 1];\n var _pos = [];\n var _padding = [0,0];\n var _classes = false;\n var _colors = [];\n var _out = false;\n var _min = 0;\n var _max = 1;\n var _correctLightness = false;\n var _colorCache = {};\n var _useCache = true;\n var _gamma = 1;\n\n // private methods\n\n var setColors = function(colors) {\n colors = colors || ['#fff', '#000'];\n if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n chroma_1.brewer[colors.toLowerCase()]) {\n colors = chroma_1.brewer[colors.toLowerCase()];\n }\n if (type$j(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (var c=0; c= _classes[i]) {\n i++;\n }\n return i-1;\n }\n return 0;\n };\n\n var tmap = function (t) { return t; };\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n var getColor = function(val, bypassMap) {\n var col, t;\n if (bypassMap == null) { bypassMap = false; }\n if (isNaN(val) || (val === null)) { return _nacol; }\n if (!bypassMap) {\n if (_classes && (_classes.length > 2)) {\n // find the class\n var c = getClass(val);\n t = c / (_classes.length-2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n if (!bypassMap) {\n t = tmap(t); // lightness correction\n }\n\n if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n t = Math.min(1, Math.max(0, t));\n\n var k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type$j(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (var i=0; i<_pos.length; i++) {\n var p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if ((t >= p) && (i === (_pos.length-1))) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i+1]) {\n t = (t-p)/(_pos[i+1]-p);\n col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n break;\n }\n }\n } else if (type$j(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) { _colorCache[k] = col; }\n }\n return col;\n };\n\n var resetCache = function () { return _colorCache = {}; };\n\n setColors(colors);\n\n // public interface\n\n var f = function(v) {\n var c = chroma_1(getColor(v));\n if (_out && c[_out]) { return c[_out](); } else { return c; }\n };\n\n f.classes = function(classes) {\n if (classes != null) {\n if (type$j(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length-1]];\n } else {\n var d = chroma_1.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma_1.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n\n f.domain = function(domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length-1];\n _pos = [];\n var k = _colors.length;\n if ((domain.length === k) && (_min !== _max)) {\n // update positions\n for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n var d = list[i];\n\n _pos.push((d-_min) / (_max-_min));\n }\n } else {\n for (var c=0; c L1;\n var L_actual = getColor(t, true).lab()[0];\n var L_ideal = L0 + ((L1 - L0) * t);\n var L_diff = L_actual - L_ideal;\n var t0 = 0;\n var t1 = 1;\n var max_iter = 20;\n while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n (function() {\n if (pol) { L_diff *= -1; }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return L_diff = L_actual - L_ideal;\n })();\n }\n return t;\n };\n } else {\n tmap = function (t) { return t; };\n }\n return f;\n };\n\n f.padding = function(p) {\n if (p != null) {\n if (type$j(p) === 'number') {\n p = [p,p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function(numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) { out = 'hex'; }\n var result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n\n } else if (numColors === 1) {\n result = [f(0.5)];\n\n } else if (numColors > 1) {\n var dm = _domain[0];\n var dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n } else { // returns all colors based on the defined classes\n colors = [];\n var samples = [];\n if (_classes && (_classes.length > 2)) {\n for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n samples.push((_classes[i-1]+_classes[i])*0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map(function (v) { return f(v); });\n }\n\n if (chroma_1[out]) {\n result = result.map(function (c) { return c[out](); });\n }\n return result;\n };\n\n f.cache = function(c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function(g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function(d) {\n if (d != null) {\n _nacol = chroma_1(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n };\n\n function __range__(left, right, inclusive) {\n var range = [];\n var ascending = left < right;\n var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n }\n\n //\n // interpolates between a set of colors uzing a bezier spline\n //\n\n // @requires utils lab\n\n\n\n\n var bezier = function(colors) {\n var assign, assign$1, assign$2;\n\n var I, lab0, lab1, lab2;\n colors = colors.map(function (c) { return new Color_1(c); });\n if (colors.length === 2) {\n // linear interpolation\n (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n var lab3;\n (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n I = function(t) {\n var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n return new Color_1(lab, 'lab');\n };\n } else if (colors.length === 5) {\n var I0 = bezier(colors.slice(0, 3));\n var I1 = bezier(colors.slice(2, 5));\n I = function(t) {\n if (t < 0.5) {\n return I0(t*2);\n } else {\n return I1((t-0.5)*2);\n }\n };\n }\n return I;\n };\n\n var bezier_1 = function (colors) {\n var f = bezier(colors);\n f.scale = function () { return scale(f); };\n return f;\n };\n\n /*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\n\n\n\n var blend = function (bottom, top, mode) {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n };\n\n var blend_f = function (f) { return function (bottom,top) {\n var c0 = chroma_1(top).rgb();\n var c1 = chroma_1(bottom).rgb();\n return chroma_1.rgb(f(c0, c1));\n }; };\n\n var each = function (f) { return function (c0, c1) {\n var out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n }; };\n\n var normal = function (a) { return a; };\n var multiply = function (a,b) { return a * b / 255; };\n var darken$1 = function (a,b) { return a > b ? b : a; };\n var lighten = function (a,b) { return a > b ? a : b; };\n var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n var dodge = function (a,b) {\n if (a === 255) { return 255; }\n a = 255 * (b / 255) / (1 - a / 255);\n return a > 255 ? 255 : a\n };\n\n // # add = (a,b) ->\n // # if (a + b > 255) then 255 else a + b\n\n blend.normal = blend_f(each(normal));\n blend.multiply = blend_f(each(multiply));\n blend.screen = blend_f(each(screen));\n blend.overlay = blend_f(each(overlay));\n blend.darken = blend_f(each(darken$1));\n blend.lighten = blend_f(each(lighten));\n blend.dodge = blend_f(each(dodge));\n blend.burn = blend_f(each(burn));\n // blend.add = blend_f(each(add));\n\n var blend_1 = blend;\n\n // cubehelix interpolation\n // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n var type$k = utils.type;\n var clip_rgb$3 = utils.clip_rgb;\n var TWOPI$2 = utils.TWOPI;\n var pow$6 = Math.pow;\n var sin$2 = Math.sin;\n var cos$3 = Math.cos;\n\n\n var cubehelix = function(start, rotations, hue, gamma, lightness) {\n if ( start === void 0 ) start=300;\n if ( rotations === void 0 ) rotations=-1.5;\n if ( hue === void 0 ) hue=1;\n if ( gamma === void 0 ) gamma=1;\n if ( lightness === void 0 ) lightness=[0,1];\n\n var dh = 0, dl;\n if (type$k(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n\n var f = function(fract) {\n var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n var l = pow$6(lightness[0] + (dl * fract), gamma);\n var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n var amp = (h * l * (1-l)) / 2;\n var cos_a = cos$3(a);\n var sin_a = sin$2(a);\n var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n var b = l + (amp * (+1.97294 * cos_a));\n return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n };\n\n f.start = function(s) {\n if ((s == null)) { return start; }\n start = s;\n return f;\n };\n\n f.rotations = function(r) {\n if ((r == null)) { return rotations; }\n rotations = r;\n return f;\n };\n\n f.gamma = function(g) {\n if ((g == null)) { return gamma; }\n gamma = g;\n return f;\n };\n\n f.hue = function(h) {\n if ((h == null)) { return hue; }\n hue = h;\n if (type$k(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) { hue = hue[1]; }\n } else {\n dh = 0;\n }\n return f;\n };\n\n f.lightness = function(h) {\n if ((h == null)) { return lightness; }\n if (type$k(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h,h];\n dl = 0;\n }\n return f;\n };\n\n f.scale = function () { return chroma_1.scale(f); };\n\n f.hue(hue);\n\n return f;\n };\n\n var digits = '0123456789abcdef';\n\n var floor$2 = Math.floor;\n var random = Math.random;\n\n var random_1 = function () {\n var code = '#';\n for (var i=0; i<6; i++) {\n code += digits.charAt(floor$2(random() * 16));\n }\n return new Color_1(code, 'hex');\n };\n\n var log$1 = Math.log;\n var pow$7 = Math.pow;\n var floor$3 = Math.floor;\n var abs = Math.abs;\n\n\n var analyze = function (data, key) {\n if ( key === void 0 ) key=null;\n\n var r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE*-1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach(function (val) {\n if (key && type(val) === 'object') { val = val[key]; }\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) { r.min = val; }\n if (val > r.max) { r.max = val; }\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = function (mode, num) { return limits(r, mode, num); };\n\n return r;\n };\n\n\n var limits = function (data, mode, num) {\n if ( mode === void 0 ) mode='equal';\n if ( num === void 0 ) num=7;\n\n if (type(data) == 'array') {\n data = analyze(data);\n }\n var min = data.min;\n var max = data.max;\n var values = data.values.sort(function (a,b) { return a-b; });\n\n if (num === 1) { return [min,max]; }\n\n var limits = [];\n\n if (mode.substr(0,1) === 'c') { // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0,1) === 'e') { // equal interval\n limits.push(min);\n for (var i=1; i 0');\n }\n var min_log = Math.LOG10E * log$1(min);\n var max_log = Math.LOG10E * log$1(max);\n limits.push(min);\n for (var i$1=1; i$1 pb\n var pr = p - pb;\n limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n }\n }\n limits.push(max);\n\n }\n\n else if (mode.substr(0,1) === 'k') { // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n var cluster;\n var n = values.length;\n var assignments = new Array(n);\n var clusterSizes = new Array(num);\n var repeat = true;\n var nb_iters = 0;\n var centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (var i$3=1; i$3 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n var kClusters = {};\n for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n };\n\n var sqrt$4 = Math.sqrt;\n var atan2$2 = Math.atan2;\n var abs$1 = Math.abs;\n var cos$4 = Math.cos;\n var PI$2 = Math.PI;\n\n var deltaE = function(a, b, L, C) {\n if ( L === void 0 ) L=1;\n if ( C === void 0 ) C=1;\n\n // Delta E (CMC)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n a = new Color_1(a);\n b = new Color_1(b);\n var ref = Array.from(a.lab());\n var L1 = ref[0];\n var a1 = ref[1];\n var b1 = ref[2];\n var ref$1 = Array.from(b.lab());\n var L2 = ref$1[0];\n var a2 = ref$1[1];\n var b2 = ref$1[2];\n var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n while (h1 < 0) { h1 += 360; }\n while (h1 >= 360) { h1 -= 360; }\n var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n var c4 = c1 * c1 * c1 * c1;\n var f = sqrt$4(c4 / (c4 + 1900.0));\n var sh = sc * (((f * t) + 1.0) - f);\n var delL = L1 - L2;\n var delC = c1 - c2;\n var delA = a1 - a2;\n var delB = b1 - b2;\n var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n var v1 = delL / (L * sl);\n var v2 = delC / (C * sc);\n var v3 = sh;\n return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n };\n\n // simple Euclidean distance\n var distance = function(a, b, mode) {\n if ( mode === void 0 ) mode='lab';\n\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color_1(a);\n b = new Color_1(b);\n var l1 = a.get(mode);\n var l2 = b.get(mode);\n var sum_sq = 0;\n for (var i in l1) {\n var d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d*d;\n }\n return Math.sqrt(sum_sq);\n };\n\n var valid = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n try {\n new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // some pre-defined color scales:\n\n\n\n\n var scales = {\n \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n };\n\n /**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n */\n\n var colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n };\n\n // add lowercase aliases for case-insensitive matches\n for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n var key = list$1[i$1];\n\n colorbrewer[key.toLowerCase()] = colorbrewer[key];\n }\n\n var colorbrewer_1 = colorbrewer;\n\n // feel free to comment out anything to rollup\n // a smaller chroma.js built\n\n // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n // interpolators\n\n\n\n\n\n\n\n\n\n\n // generators -- > create new colors\n chroma_1.average = average;\n chroma_1.bezier = bezier_1;\n chroma_1.blend = blend_1;\n chroma_1.cubehelix = cubehelix;\n chroma_1.mix = chroma_1.interpolate = mix;\n chroma_1.random = random_1;\n chroma_1.scale = scale;\n\n // other utility methods\n chroma_1.analyze = analyze_1.analyze;\n chroma_1.contrast = contrast;\n chroma_1.deltaE = deltaE;\n chroma_1.distance = distance;\n chroma_1.limits = analyze_1.limits;\n chroma_1.valid = valid;\n\n // scale\n chroma_1.scales = scales;\n\n // colors\n chroma_1.colors = w3cx11_1;\n chroma_1.brewer = colorbrewer_1;\n\n var chroma_js = chroma_1;\n\n return chroma_js;\n\n})));\n","\r\n\r\n
\r\n \r\n \r\n
\r\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nexport default baseRange;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import baseRange from './_baseRange.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport toFinite from './toFinite.js';\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nexport default createRange;\n","import createRange from './_createRange.js';\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nexport default range;\n","\r\n\r\n\r\n dragging = true}\"\r\n on:dragend=\"{(event) => dragging = false, open = false}\"\r\n draggable=\"true\"\r\n on:mouseenter={toggleEditOpen}\r\n on:mouseleave={toggleEditClose}\r\n on:click|stopPropagation=\"{() => false}\"\r\n class:inverted={value.lab()[0]<50}\r\n class=\"badge shadow-sm\"\r\n style=\"background: {value.hex()}\">\r\n {value.hex().substr(1)}\r\n {#if open && !dragging}\r\n
\r\n \r\n
\r\n

\r\n
\r\n
\r\n L\r\n {#each lightness as l}\r\n value = l}\" class=\"color\" style=\"background: {l.hex()}\">\r\n {/each}\r\n
\r\n
\r\n S\r\n {#each saturation as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n H\r\n {#each hue as c}\r\n value = c}\" class=\"color\" style=\"background: {c.hex()}\">\r\n {/each}\r\n
\r\n
\r\n
\r\n \r\n {/if}\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n{#if !edit}\r\n drop(event)}\"\r\n on:dragover|preventDefault=\"{(event) => dragover(event)}\"\r\n class=\"form-control\"\r\n on:click={enterEditMode}>\r\n {#each colors as color,i}\r\n dragstart(event, i)}\" />\r\n {/each}\r\n \r\n\r\n{/if}","\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {#if diverging}\r\n
\r\n \r\n
\r\n {/if}\r\n
","/* globals blinder */\r\nimport chroma from \"chroma-js\";\r\n\r\nexport function colorBlindCheck(colors) {\r\n const types = [\"deuteranopia\", \"protanopia\", \"tritanopia\"];\r\n const invalid = [];\r\n for (let i = 0; i < types.length; i++) {\r\n if (!checkType(colors, types[i])) invalid.push(types[i]);\r\n }\r\n return invalid;\r\n}\r\n\r\nexport function colorBlindSim(color, type) {\r\n return blinder[type](chroma(color).hex());\r\n}\r\n\r\nfunction checkType(colors, type) {\r\n // let ok = 0;\r\n let notok = 0;\r\n let ratioThreshold = 5;\r\n let smallestPerceivableDistance = 9;\r\n let k = colors.length;\r\n if (!k) {\r\n // console.log('no colors', type);\r\n return true;\r\n }\r\n // compute distances between colors\r\n for (let a = 0; a < k; a++) {\r\n for (let b = a + 1; b < k; b++) {\r\n let colorA = chroma(colors[a]);\r\n let colorB = chroma(colors[b]);\r\n let distanceNorm = difference(colorA, colorB);\r\n if (distanceNorm < smallestPerceivableDistance) continue;\r\n let aSim = blinder[type](colorA.hex());\r\n let bSim = blinder[type](colorB.hex());\r\n let distanceSim = difference(aSim, bSim);\r\n let isNotOk =\r\n distanceNorm / distanceSim > ratioThreshold &&\r\n distanceSim < smallestPerceivableDistance;\r\n if (isNotOk) {\r\n // console.log(type, colors[a],colors[b],aSim+'',bSim+'', distanceNorm, distanceSim, distanceNorm/distanceSim);\r\n }\r\n // count combinations that are problematic\r\n if (isNotOk) notok++;\r\n // else ok++;\r\n }\r\n }\r\n // console.log(type, notok/(ok+notok));\r\n // compute share of problematic colorss\r\n return notok === 0;\r\n}\r\n\r\nfunction difference(colorA, colorB) {\r\n return (\r\n 0.5 * (chroma.deltaE(colorA, colorB) + chroma.deltaE(colorB, colorA))\r\n );\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n {#each steps as step}\r\n
\r\n {/each}\r\n
\r\n","\r\n\r\n\r\n\r\n
{steps}
\r\n
'{steps.join(`', '`)}'
\r\n
['{steps.join(`', '`)}']
\r\n
{steps.join('\\n')}
\r\n
[{steps.map(c => '0x'+c.substr(1)).join(`,`)}]
\r\n
\r\nimport { scaleThreshold } from 'd3-scale';\r\n\r\nfunction palette(min, max) {\r\n    const d = (max-min)/{steps.length};\r\n    return = scaleThreshold()\r\n        .range(['{steps.join(`', '`)}'])\r\n        .domain([{steps.slice(1).map((v,i) => `min + d*${i+1}`)}]);\r\n}\r\n
","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationSecond} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","\r\n\r\n\r\n\r\n
\r\n

{title}

\r\n \r\n {#if values.length}\r\n {#each yScale.ticks(6) as y}\r\n {y}\r\n \r\n {/each}\r\n \r\n \r\n {/if}\r\n \r\n
","\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t
{#if step}{step}{/if}{title}
\r\n\t\t\r\n\t
\r\n
\r\n","\r\n \r\n\r\n\r\n\r\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'check';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00c';\nvar svgPathData = 'M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faCheck = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = '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';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n ligatures,\n unicode,\n svgPathData\n ]};\n\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","\r\n\r\n\r\n\r\n\r\n
\r\n {#if result.length}\r\n

This palette is not colorblind-safe.

\r\n {:else}\r\n

This palette is colorblind-safe.

\r\n {/if}\r\n
\r\n
simulate:
\r\n
\r\n {#each types as type}\r\n \r\n {/each}\r\n
\r\n
\r\n
\r\n","\r\n\r\n\r\n\r\n
\r\n {#each options2 as option}\r\n \r\n {/each}\r\n
","\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Chroma.js Color Palette Helper

\r\n

This chroma.js-powered tool is here to help us mastering multi-hued, multi-stops color scales.

\r\n
\r\n \r\n
\r\n
\r\n Palette type:\r\n \r\n
\r\n
\r\n Number of colors: \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n {#if bezierDisabled}\r\n * Bezier interpolation requires 2-5 input colors\r\n {/if}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n

You can also save your palette for later by bookmarking this page using {isMac ? 'cmd' : 'ctrl'}+d.

\r\n \r\n
\r\n
\r\n
\r\n

Created by Gregor Aisch for the sake of better\r\n use of colors in maps and data visualizations. Feel free to fork on Github.

\r\n
\r\n
\r\n","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {\r\n\t\tname: 'world'\r\n\t}\r\n});\r\n\r\nexport default app;"],"names":["this","objectProto","nativeObjectToString","symToStringTag","MAX_SAFE_INTEGER","range","_range","Color","rgb","colorRgb","value","number","constant","bisect","identity","linear","t0","t1","interval","formatLocale","day","timeMonday","timeDay","timeYear","timeSunday","timeThursday","locale","defaultLocale","pi","x","pointX","y","pointY","scaleLinear","curveStepAfter","faCheck","faExclamationTriangle"],"mappings":"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"} \ No newline at end of file diff --git a/src/App.svelte b/src/App.svelte index 558e982..83a5068 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -35,6 +35,8 @@ bezier?1:0 ].join('|'); + $: bezierDisabled = mode==='sequential' ? !(colors.length>1&&colors.length<=5) : !(colors2.length>1&&colors2.length<=5 || colors.length>1&&colors.length<=5); + const isMac = navigator.platform.toUpperCase().indexOf('MAC') > -1; let _hash = ''; @@ -93,6 +95,12 @@ } h1 { } + .warning { + font-size: 0.8em; + color: orange; + font-weight: bold; + display: block; + } select.custom-select { display: inline-block; width: auto; @@ -158,7 +166,10 @@
- + + {#if bezierDisabled} + * Bezier interpolation requires 2-5 input colors + {/if}
@@ -195,4 +206,4 @@

Created by Gregor Aisch for the sake of better use of colors in maps and data visualizations. Feel free to fork on Github.

-
\ No newline at end of file + diff --git a/src/Checkbox.svelte b/src/Checkbox.svelte index 7d7a2bf..52ada0c 100644 --- a/src/Checkbox.svelte +++ b/src/Checkbox.svelte @@ -1,11 +1,12 @@
- + -
\ No newline at end of file +