summaryrefslogtreecommitdiff
path: root/themes/blowfish/assets/lib/mermaid/config-e567ef17.js.map
blob: 8661abf723948129f997f32edb63a043a46e7c12 (plain)
1
{"version":3,"file":"config-e567ef17.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/dayjs.min.js","../src/logger.ts","../../../node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespaces.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/namespace.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/creator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selector.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/select.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/array.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selectorAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/matcher.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChild.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectChildren.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/filter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/enter.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/data.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/exit.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/join.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/merge.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/order.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/call.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/size.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/empty.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/attr.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/window.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/style.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/property.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/classed.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/text.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/html.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/raise.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/lower.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/append.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/insert.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/remove.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/clone.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/datum.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/iterator.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/index.js","../../../node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/define.js","../../../node_modules/.pnpm/d3-color@3.1.0/node_modules/d3-color/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/constant.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/color.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/rgb.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/number.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/string.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/decompose.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/parse.js","../../../node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timer.js","../../../node_modules/.pnpm/d3-timer@3.0.1/node_modules/d3-timer/src/timeout.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/interrupt.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/tween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attr.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/delay.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/duration.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/ease.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/easeVarying.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/merge.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/on.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/remove.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/select.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selectAll.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/style.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/styleTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/text.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/textTween.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/end.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/index.js","../../../node_modules/.pnpm/d3-ease@3.0.1/node_modules/d3-ease/src/cubic.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js","../../../node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/index.js","../../../node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js","../../../node_modules/.pnpm/dompurify@2.4.3/node_modules/dompurify/dist/purify.es.js","../src/diagrams/common/common.ts","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/channel.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/lang.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/unit.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/utils/index.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/constants.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/channels/type.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/channels/index.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/channels/reusable.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/hex.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/hsl.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/keyword.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/rgb.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/color/index.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/change.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/rgba.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/adjust_channel.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/lighten.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/darken.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/adjust.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/mix.js","../../../node_modules/.pnpm/khroma@2.0.0/node_modules/khroma/dist/methods/invert.js","../src/themes/theme-helpers.js","../src/themes/erDiagram-oldHardcodedValues.ts","../src/themes/theme-base.js","../src/themes/theme-dark.js","../src/themes/theme-default.js","../src/themes/theme-forest.js","../src/themes/theme-neutral.js","../src/themes/index.js","../src/defaultConfig.ts","../src/assignWithDepth.js","../src/config.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable no-console */\nimport dayjs from 'dayjs';\n\nexport type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';\n\nexport const LEVELS: Record<LogLevel, number> = {\n  trace: 0,\n  debug: 1,\n  info: 2,\n  warn: 3,\n  error: 4,\n  fatal: 5,\n};\n\nexport const log: Record<keyof typeof LEVELS, typeof console.log> = {\n  trace: (..._args: any[]) => {},\n  debug: (..._args: any[]) => {},\n  info: (..._args: any[]) => {},\n  warn: (..._args: any[]) => {},\n  error: (..._args: any[]) => {},\n  fatal: (..._args: any[]) => {},\n};\n\n/**\n * Sets a log level\n *\n * @param level - The level to set the logging to. Default is `\"fatal\"`\n */\nexport const setLogLevel = function (level: keyof typeof LEVELS | number | string = 'fatal') {\n  let numericLevel: number = LEVELS.fatal;\n  if (typeof level === 'string') {\n    level = level.toLowerCase();\n    if (level in LEVELS) {\n      numericLevel = LEVELS[level as keyof typeof LEVELS];\n    }\n  } else if (typeof level === 'number') {\n    numericLevel = level;\n  }\n  log.trace = () => {};\n  log.debug = () => {};\n  log.info = () => {};\n  log.warn = () => {};\n  log.error = () => {};\n  log.fatal = () => {};\n\n  if (numericLevel <= LEVELS.fatal) {\n    log.fatal = console.error\n      ? console.error.bind(console, format('FATAL'), 'color: orange')\n      : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n  }\n  if (numericLevel <= LEVELS.error) {\n    log.error = console.error\n      ? console.error.bind(console, format('ERROR'), 'color: orange')\n      : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n  }\n  if (numericLevel <= LEVELS.warn) {\n    log.warn = console.warn\n      ? console.warn.bind(console, format('WARN'), 'color: orange')\n      : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n  }\n  if (numericLevel <= LEVELS.info) {\n    log.info = console.info\n      ? console.info.bind(console, format('INFO'), 'color: lightblue')\n      : console.log.bind(console, '\\x1b[34m', format('INFO'));\n  }\n  if (numericLevel <= LEVELS.debug) {\n    log.debug = console.debug\n      ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n      : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n  }\n  if (numericLevel <= LEVELS.trace) {\n    log.trace = console.debug\n      ? console.debug.bind(console, format('TRACE'), 'color: lightgreen')\n      : console.log.bind(console, '\\x1b[32m', format('TRACE'));\n  }\n};\n\n/**\n * Returns a format with the timestamp and the log level\n *\n * @param level - The level for the log format\n * @returns The format with the timestamp and log level\n */\nconst format = (level: Uppercase<LogLevel>): string => {\n  const time = dayjs().format('ss.SSS');\n  return `%c${time} : ${level} : `;\n};\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\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.js\";\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    reHex = /^#([0-9a-f]{3,8})$/,\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  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\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]) // eslint-disable-line no-prototype-builtins\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(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(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() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\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(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(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() {\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  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\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  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\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 default x => () => x;\n","import constant from \"./constant.js\";\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.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\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","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import number from \"./number.js\";\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","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","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","/*! @license DOMPurify 2.4.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.3/LICENSE */\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return _construct.apply(null, arguments);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar hasOwnProperty = Object.hasOwnProperty,\n    setPrototypeOf = Object.setPrototypeOf,\n    isFrozen = Object.isFrozen,\n    getPrototypeOf = Object.getPrototypeOf,\n    getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n    seal = Object.seal,\n    create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n    apply = _ref.apply,\n    construct = _ref.construct;\n\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\n\nif (!construct) {\n  construct = function construct(Func, args) {\n    return _construct(Func, _toConsumableArray(args));\n  };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n  return function (thisArg) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return apply(func, thisArg, args);\n  };\n}\nfunction unconstruct(func) {\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return construct(func, args);\n  };\n}\n/* Add properties to a lookup table */\n\nfunction addToSet(set, array, transformCaseFunc) {\n  transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  var l = array.length;\n\n  while (l--) {\n    var element = array[l];\n\n    if (typeof element === 'string') {\n      var lcElement = transformCaseFunc(element);\n\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n/* Shallow clone an object */\n\nfunction clone(object) {\n  var newObject = create(null);\n  var property;\n\n  for (property in object) {\n    if (apply(hasOwnProperty, object, [property]) === true) {\n      newObject[property] = object[property];\n    }\n  }\n\n  return newObject;\n}\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    var desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(element) {\n    console.warn('fallback value for', element);\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nvar html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\nvar svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\n\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nvar mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\n\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nvar text = freeze(['#text']);\n\nvar html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\nvar svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nvar mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nvar DOCTYPE_NAME = seal(/^html$/i);\n\nvar getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n  if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  } // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n\n\n  var suffix = null;\n  var ATTR_NAME = 'data-tt-policy-suffix';\n\n  if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n    suffix = document.currentScript.getAttribute(ATTR_NAME);\n  }\n\n  var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML: function createHTML(html) {\n        return html;\n      },\n      createScriptURL: function createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\n\nfunction createDOMPurify() {\n  var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n  var DOMPurify = function DOMPurify(root) {\n    return createDOMPurify(root);\n  };\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n\n\n  DOMPurify.version = '2.4.3';\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n\n  DOMPurify.removed = [];\n\n  if (!window || !window.document || window.document.nodeType !== 9) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n\n  var originalDocument = window.document;\n  var document = window.document;\n  var DocumentFragment = window.DocumentFragment,\n      HTMLTemplateElement = window.HTMLTemplateElement,\n      Node = window.Node,\n      Element = window.Element,\n      NodeFilter = window.NodeFilter,\n      _window$NamedNodeMap = window.NamedNodeMap,\n      NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n      HTMLFormElement = window.HTMLFormElement,\n      DOMParser = window.DOMParser,\n      trustedTypes = window.trustedTypes;\n  var ElementPrototype = Element.prototype;\n  var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n\n  if (typeof HTMLTemplateElement === 'function') {\n    var template = document.createElement('template');\n\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n  var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n  var _document = document,\n      implementation = _document.implementation,\n      createNodeIterator = _document.createNodeIterator,\n      createDocumentFragment = _document.createDocumentFragment,\n      getElementsByTagName = _document.getElementsByTagName;\n  var importNode = originalDocument.importNode;\n  var documentMode = {};\n\n  try {\n    documentMode = clone(document).documentMode ? document.documentMode : {};\n  } catch (_) {}\n\n  var hooks = {};\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n\n  DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n  var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n      ERB_EXPR$1 = ERB_EXPR,\n      TMPLIT_EXPR$1 = TMPLIT_EXPR,\n      DATA_ATTR$1 = DATA_ATTR,\n      ARIA_ATTR$1 = ARIA_ATTR,\n      IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n      ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n  var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n\n  var ALLOWED_TAGS = null;\n  var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n  /* Allowed attribute names */\n\n  var ALLOWED_ATTR = null;\n  var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n  /*\n   * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n\n  var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n  var FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n  var FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n\n  var ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n\n  var ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n\n  var ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n\n  var SAFE_FOR_TEMPLATES = false;\n  /* Decide if document with <html>... should be returned */\n\n  var WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n\n  var SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n\n  var FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n\n  var RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n\n  var RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n\n  var RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n\n  var SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n\n  var SANITIZE_NAMED_PROPS = false;\n  var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n\n  var KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n\n  var IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n\n  var USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n\n  var FORBID_CONTENTS = null;\n  var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n\n  var DATA_URI_TAGS = null;\n  var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n\n  var URI_SAFE_ATTRIBUTES = null;\n  var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n\n  var NAMESPACE = HTML_NAMESPACE;\n  var IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n\n  var ALLOWED_NAMESPACES = null;\n  var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  /* Parsing of strict XHTML documents */\n\n  var PARSER_MEDIA_TYPE;\n  var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  var transformCaseFunc;\n  /* Keep a reference to config to pass to hooks */\n\n  var CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n\n  /* ______________________________________________ */\n\n  var formElement = document.createElement('form');\n\n  var isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n\n\n  var _parseConfig = function _parseConfig(cfg) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n\n\n    if (!cfg || _typeof(cfg) !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n\n\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n\n    ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n    cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n    transformCaseFunc // eslint-disable-line indent\n    ) // eslint-disable-line indent\n    : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n    cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n    transformCaseFunc // eslint-disable-line indent\n    ) // eslint-disable-line indent\n    : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n\n\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n      ALLOWED_ATTR = [];\n\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n\n\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n\n\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    } // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n\n\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n\n  var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n\n  var ALL_SVG_TAGS = addToSet({}, svg$1);\n  addToSet(ALL_SVG_TAGS, svgFilters);\n  addToSet(ALL_SVG_TAGS, svgDisallowed);\n  var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n  addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n  /**\n   *\n   *\n   * @param  {Element} element a DOM element whose namespace is being checked\n   * @returns {boolean} Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n\n  var _checkValidNamespace = function _checkValidNamespace(element) {\n    var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n\n    var tagName = stringToLowerCase(element.tagName);\n    var parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      } // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n\n\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      } // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n\n\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      } // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n\n\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      } // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n\n\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      } // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n\n\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    } // For XHTML and XML documents that support custom namespaces\n\n\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    } // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n\n\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n\n\n  var _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      node.parentNode.removeChild(node);\n    } catch (_) {\n      try {\n        node.outerHTML = emptyHTML;\n      } catch (_) {\n        node.remove();\n      }\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n\n\n  var _removeAttribute = function _removeAttribute(name, node) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: node.getAttributeNode(name),\n        from: node\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: node\n      });\n    }\n\n    node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n    if (name === 'is' && !ALLOWED_ATTR[name]) {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(node);\n        } catch (_) {}\n      } else {\n        try {\n          node.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n\n\n  var _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    var doc;\n    var leadingWhitespace;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n\n    var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n\n\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {// Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    var body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n\n\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * _createIterator\n   *\n   * @param  {Document} root document/fragment to create iterator for\n   * @return {Iterator} iterator instance\n   */\n\n\n  var _createIterator = function _createIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n\n\n  var _isClobbered = function _isClobbered(elm) {\n    return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n  };\n  /**\n   * _isNode\n   *\n   * @param  {Node} obj object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n\n\n  var _isNode = function _isNode(object) {\n    return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n  };\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n\n\n  var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n\n    arrayForEach(hooks[entryPoint], function (hook) {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n\n\n  var _sanitizeElements = function _sanitizeElements(currentNode) {\n    var content;\n    /* Execute a hook if present */\n\n    _executeHook('beforeSanitizeElements', currentNode, null);\n    /* Check if element is clobbered or can clobber */\n\n\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n\n      return true;\n    }\n    /* Check if tagname contains Unicode */\n\n\n    if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n      _forceRemove(currentNode);\n\n      return true;\n    }\n    /* Now let's check the element's type and name */\n\n\n    var tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName: tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n\n\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n\n      return true;\n    }\n    /* Mitigate a problem with templates inside select */\n\n\n    if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n\n\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n      }\n      /* Keep content except for bad-listed elements */\n\n\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          var childCount = childNodes.length;\n\n          for (var i = childCount - 1; i >= 0; --i) {\n            parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n\n\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n\n      return true;\n    }\n\n    if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n\n\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n      content = stringReplace(content, ERB_EXPR$1, ' ');\n      content = stringReplace(content, TMPLIT_EXPR$1, ' ');\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n\n\n    _executeHook('afterSanitizeElements', currentNode, null);\n\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n\n\n  var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n\n\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (!value) ; else {\n      return false;\n    }\n\n    return true;\n  };\n  /**\n   * _basicCustomElementCheck\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   * @param {string} tagName name of the tag of the node to sanitize\n   */\n\n\n  var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n    return tagName.indexOf('-') > 0;\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n\n\n  var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    var attr;\n    var value;\n    var lcName;\n    var l;\n    /* Execute a hook if present */\n\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n    var attributes = currentNode.attributes;\n    /* Check if we have attributes; if not we might have a text node */\n\n    if (!attributes) {\n      return;\n    }\n\n    var hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR\n    };\n    l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n\n    while (l--) {\n      attr = attributes[l];\n      var _attr = attr,\n          name = _attr.name,\n          namespaceURI = _attr.namespaceURI;\n      value = name === 'value' ? attr.value : stringTrim(attr.value);\n      lcName = transformCaseFunc(name);\n      /* Execute a hook if present */\n\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n      value = hookEvent.attrValue;\n      /* Did the hooks approve of the attribute? */\n\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Remove attribute */\n\n\n      _removeAttribute(name, currentNode);\n      /* Did the hooks approve of the attribute? */\n\n\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n\n\n      if (regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n\n\n      if (SAFE_FOR_TEMPLATES) {\n        value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n        value = stringReplace(value, ERB_EXPR$1, ' ');\n        value = stringReplace(value, TMPLIT_EXPR$1, ' ');\n      }\n      /* Is `value` valid for this attribute? */\n\n\n      var lcTag = transformCaseFunc(currentNode.nodeName);\n\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n\n\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Handle attributes that require Trusted Types */\n\n\n      if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              value = trustedTypesPolicy.createHTML(value);\n              break;\n\n            case 'TrustedScriptURL':\n              value = trustedTypesPolicy.createScriptURL(value);\n              break;\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n\n\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n\n        arrayPop(DOMPurify.removed);\n      } catch (_) {}\n    }\n    /* Execute a hook if present */\n\n\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n\n\n  var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    var shadowNode;\n\n    var shadowIterator = _createIterator(fragment);\n    /* Execute a hook if present */\n\n\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n      /* Sanitize tags and elements */\n\n\n      if (_sanitizeElements(shadowNode)) {\n        continue;\n      }\n      /* Deep shadow DOM detected */\n\n\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n      /* Check attributes, sanitize if necessary */\n\n\n      _sanitizeAttributes(shadowNode);\n    }\n    /* Execute a hook if present */\n\n\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} configuration object\n   */\n  // eslint-disable-next-line complexity\n\n\n  DOMPurify.sanitize = function (dirty) {\n    var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var body;\n    var importedNode;\n    var currentNode;\n    var oldNode;\n    var returnNode;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n\n    IS_EMPTY_INPUT = !dirty;\n\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n\n\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      // eslint-disable-next-line no-negated-condition\n      if (typeof dirty.toString !== 'function') {\n        throw typeErrorCreate('toString is not a function');\n      } else {\n        dirty = dirty.toString();\n\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      }\n    }\n    /* Check we can run. Otherwise fall back or ignore */\n\n\n    if (!DOMPurify.isSupported) {\n      if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n        if (typeof dirty === 'string') {\n          return window.toStaticHTML(dirty);\n        }\n\n        if (_isNode(dirty)) {\n          return window.toStaticHTML(dirty.outerHTML);\n        }\n      }\n\n      return dirty;\n    }\n    /* Assign config vars */\n\n\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n\n\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        var tagName = transformCaseFunc(dirty.nodeName);\n\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n\n      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n\n\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n\n\n    var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n\n\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Fix IE's strange behavior with manipulated textNodes #89 */\n      if (currentNode.nodeType === 3 && currentNode === oldNode) {\n        continue;\n      }\n      /* Sanitize tags and elements */\n\n\n      if (_sanitizeElements(currentNode)) {\n        continue;\n      }\n      /* Shadow DOM detected, sanitize it */\n\n\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n      /* Check attributes, sanitize if necessary */\n\n\n      _sanitizeAttributes(currentNode);\n\n      oldNode = currentNode;\n    }\n\n    oldNode = null;\n    /* If we sanitized `dirty` in-place, return it. */\n\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n\n\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n\n\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n      serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n      serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, ' ');\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n\n\n  DOMPurify.setConfig = function (cfg) {\n    _parseConfig(cfg);\n\n    SET_CONFIG = true;\n  };\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n\n\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {string} tag Tag name of containing element.\n   * @param  {string} attr Attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n\n\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    var lcTag = transformCaseFunc(tag);\n    var lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n\n\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   * @return {Function} removed(popped) hook\n   */\n\n\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      return arrayPop(hooks[entryPoint]);\n    }\n  };\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n\n\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   *\n   */\n\n\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n\n  return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.js.map\n","import DOMPurify from 'dompurify';\nimport { MermaidConfig } from '../../config.type';\n\n/**\n * Gets the rows of lines in a string\n *\n * @param s - The string to check the lines for\n * @returns The rows in that string\n */\nexport const getRows = (s?: string): string[] => {\n  if (!s) {\n    return [''];\n  }\n  const str = breakToPlaceholder(s).replace(/\\\\n/g, '#br#');\n  return str.split('#br#');\n};\n\n/**\n * Removes script tags from a text\n *\n * @param txt - The text to sanitize\n * @returns The safer text\n */\nexport const removeScript = (txt: string): string => {\n  return DOMPurify.sanitize(txt);\n};\n\nconst sanitizeMore = (text: string, config: MermaidConfig) => {\n  if (config.flowchart?.htmlLabels !== false) {\n    const level = config.securityLevel;\n    if (level === 'antiscript' || level === 'strict') {\n      text = removeScript(text);\n    } else if (level !== 'loose') {\n      text = breakToPlaceholder(text);\n      text = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n      text = text.replace(/=/g, '&equals;');\n      text = placeholderToBreak(text);\n    }\n  }\n  return text;\n};\n\nexport const sanitizeText = (text: string, config: MermaidConfig): string => {\n  if (!text) {\n    return text;\n  }\n  if (config.dompurifyConfig) {\n    text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString();\n  } else {\n    text = DOMPurify.sanitize(sanitizeMore(text, config), {\n      FORBID_TAGS: ['style'],\n    }).toString();\n  }\n  return text;\n};\n\nexport const sanitizeTextOrArray = (\n  a: string | string[] | string[][],\n  config: MermaidConfig\n): string | string[] => {\n  if (typeof a === 'string') {\n    return sanitizeText(a, config);\n  }\n  // TODO: Refactor to avoid flat.\n  return a.flat().map((x: string) => sanitizeText(x, config));\n};\n\nexport const lineBreakRegex = /<br\\s*\\/?>/gi;\n\n/**\n * Whether or not a text has any line breaks\n *\n * @param text - The text to test\n * @returns Whether or not the text has breaks\n */\nexport const hasBreaks = (text: string): boolean => {\n  return lineBreakRegex.test(text);\n};\n\n/**\n * Splits on <br> tags\n *\n * @param text - Text to split\n * @returns List of lines as strings\n */\nexport const splitBreaks = (text: string): string[] => {\n  return text.split(lineBreakRegex);\n};\n\n/**\n * Converts placeholders to line breaks in HTML\n *\n * @param s - HTML with placeholders\n * @returns HTML with breaks instead of placeholders\n */\nconst placeholderToBreak = (s: string): string => {\n  return s.replace(/#br#/g, '<br/>');\n};\n\n/**\n * Opposite of `placeholderToBreak`, converts breaks to placeholders\n *\n * @param s - HTML string\n * @returns String with placeholders\n */\nconst breakToPlaceholder = (s: string): string => {\n  return s.replace(lineBreakRegex, '#br#');\n};\n\n/**\n * Gets the current URL\n *\n * @param useAbsolute - Whether to return the absolute URL or not\n * @returns The current URL\n */\nconst getUrl = (useAbsolute: boolean): string => {\n  let url = '';\n  if (useAbsolute) {\n    url =\n      window.location.protocol +\n      '//' +\n      window.location.host +\n      window.location.pathname +\n      window.location.search;\n    url = url.replaceAll(/\\(/g, '\\\\(');\n    url = url.replaceAll(/\\)/g, '\\\\)');\n  }\n\n  return url;\n};\n\n/**\n * Converts a string/boolean into a boolean\n *\n * @param val - String or boolean to convert\n * @returns The result from the input\n */\nexport const evaluate = (val?: string | boolean): boolean =>\n  val === false || ['false', 'null', '0'].includes(String(val).trim().toLowerCase()) ? false : true;\n\n/**\n * Makes generics in typescript syntax\n *\n * @example\n * Array of array of strings in typescript syntax\n *\n * ```js\n * // returns \"Array<Array<string>>\"\n * parseGenericTypes('Array~Array~string~~');\n * ```\n * @param text - The text to convert\n * @returns The converted string\n */\nexport const parseGenericTypes = function (text: string): string {\n  let cleanedText = text;\n\n  if (text.split('~').length - 1 >= 2) {\n    let newCleanedText = cleanedText;\n\n    // use a do...while loop instead of replaceAll to detect recursion\n    // e.g. Array~Array~T~~\n    do {\n      cleanedText = newCleanedText;\n      newCleanedText = cleanedText.replace(/~([^\\s,:;]+)~/, '<$1>');\n    } while (newCleanedText != cleanedText);\n\n    return parseGenericTypes(newCleanedText);\n  } else {\n    return cleanedText;\n  }\n};\n\nexport default {\n  getRows,\n  sanitizeText,\n  sanitizeTextOrArray,\n  hasBreaks,\n  splitBreaks,\n  lineBreakRegex,\n  removeScript,\n  getUrl,\n  evaluate,\n};\n","/* IMPORT */\n/* MAIN */\nconst Channel = {\n    /* CLAMP */\n    min: {\n        r: 0,\n        g: 0,\n        b: 0,\n        s: 0,\n        l: 0,\n        a: 0\n    },\n    max: {\n        r: 255,\n        g: 255,\n        b: 255,\n        h: 360,\n        s: 100,\n        l: 100,\n        a: 1\n    },\n    clamp: {\n        r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n        g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n        b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n        h: (h) => h % 360,\n        s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n        l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n        a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n    },\n    /* CONVERSION */\n    //SOURCE: https://planetcalc.com/7779\n    toLinear: (c) => {\n        const n = c / 255;\n        return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n    },\n    //SOURCE: https://gist.github.com/mjackson/5311256\n    hue2rgb: (p, q, t) => {\n        if (t < 0)\n            t += 1;\n        if (t > 1)\n            t -= 1;\n        if (t < 1 / 6)\n            return p + (q - p) * 6 * t;\n        if (t < 1 / 2)\n            return q;\n        if (t < 2 / 3)\n            return p + (q - p) * (2 / 3 - t) * 6;\n        return p;\n    },\n    hsl2rgb: ({ h, s, l }, channel) => {\n        if (!s)\n            return l * 2.55; // Achromatic\n        h /= 360;\n        s /= 100;\n        l /= 100;\n        const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n        const p = 2 * l - q;\n        switch (channel) {\n            case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n            case 'g': return Channel.hue2rgb(p, q, h) * 255;\n            case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n        }\n    },\n    rgb2hsl: ({ r, g, b }, channel) => {\n        r /= 255;\n        g /= 255;\n        b /= 255;\n        const max = Math.max(r, g, b);\n        const min = Math.min(r, g, b);\n        const l = (max + min) / 2;\n        if (channel === 'l')\n            return l * 100;\n        if (max === min)\n            return 0; // Achromatic\n        const d = max - min;\n        const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n        if (channel === 's')\n            return s * 100;\n        switch (max) {\n            case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n            case g: return ((b - r) / d + 2) * 60;\n            case b: return ((r - g) / d + 4) * 60;\n            default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n        }\n    }\n};\n/* EXPORT */\nexport default Channel;\n","/* MAIN */\nconst Lang = {\n    /* API */\n    clamp: (number, lower, upper) => {\n        if (lower > upper)\n            return Math.min(lower, Math.max(upper, number));\n        return Math.min(upper, Math.max(lower, number));\n    },\n    round: (number) => {\n        return Math.round(number * 10000000000) / 10000000000;\n    }\n};\n/* EXPORT */\nexport default Lang;\n","/* MAIN */\nconst Unit = {\n    /* API */\n    dec2hex: (dec) => {\n        const hex = Math.round(dec).toString(16);\n        return hex.length > 1 ? hex : `0${hex}`;\n    }\n};\n/* EXPORT */\nexport default Unit;\n","/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n    channel,\n    lang,\n    unit\n};\n/* EXPORT */\nexport default Utils;\n","/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n    DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n    ALL: 0,\n    RGB: 1,\n    HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n","/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n    constructor() {\n        /* VARIABLES */\n        this.type = TYPE.ALL;\n    }\n    /* API */\n    get() {\n        return this.type;\n    }\n    set(type) {\n        if (this.type && this.type !== type)\n            throw new Error('Cannot change both RGB and HSL channels at the same time');\n        this.type = type;\n    }\n    reset() {\n        this.type = TYPE.ALL;\n    }\n    is(type) {\n        return this.type === type;\n    }\n}\n/* EXPORT */\nexport default Type;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n    /* CONSTRUCTOR */\n    constructor(data, color) {\n        this.color = color;\n        this.changed = false;\n        this.data = data; //TSC\n        this.type = new Type();\n    }\n    /* API */\n    set(data, color) {\n        this.color = color;\n        this.changed = false;\n        this.data = data; //TSC\n        this.type.type = TYPE.ALL;\n        return this;\n    }\n    /* HELPERS */\n    _ensureHSL() {\n        const data = this.data;\n        const { h, s, l } = data;\n        if (h === undefined)\n            data.h = _.channel.rgb2hsl(data, 'h');\n        if (s === undefined)\n            data.s = _.channel.rgb2hsl(data, 's');\n        if (l === undefined)\n            data.l = _.channel.rgb2hsl(data, 'l');\n    }\n    _ensureRGB() {\n        const data = this.data;\n        const { r, g, b } = data;\n        if (r === undefined)\n            data.r = _.channel.hsl2rgb(data, 'r');\n        if (g === undefined)\n            data.g = _.channel.hsl2rgb(data, 'g');\n        if (b === undefined)\n            data.b = _.channel.hsl2rgb(data, 'b');\n    }\n    /* GETTERS */\n    get r() {\n        const data = this.data;\n        const r = data.r;\n        if (!this.type.is(TYPE.HSL) && r !== undefined)\n            return r;\n        this._ensureHSL();\n        return _.channel.hsl2rgb(data, 'r');\n    }\n    get g() {\n        const data = this.data;\n        const g = data.g;\n        if (!this.type.is(TYPE.HSL) && g !== undefined)\n            return g;\n        this._ensureHSL();\n        return _.channel.hsl2rgb(data, 'g');\n    }\n    get b() {\n        const data = this.data;\n        const b = data.b;\n        if (!this.type.is(TYPE.HSL) && b !== undefined)\n            return b;\n        this._ensureHSL();\n        return _.channel.hsl2rgb(data, 'b');\n    }\n    get h() {\n        const data = this.data;\n        const h = data.h;\n        if (!this.type.is(TYPE.RGB) && h !== undefined)\n            return h;\n        this._ensureRGB();\n        return _.channel.rgb2hsl(data, 'h');\n    }\n    get s() {\n        const data = this.data;\n        const s = data.s;\n        if (!this.type.is(TYPE.RGB) && s !== undefined)\n            return s;\n        this._ensureRGB();\n        return _.channel.rgb2hsl(data, 's');\n    }\n    get l() {\n        const data = this.data;\n        const l = data.l;\n        if (!this.type.is(TYPE.RGB) && l !== undefined)\n            return l;\n        this._ensureRGB();\n        return _.channel.rgb2hsl(data, 'l');\n    }\n    get a() {\n        return this.data.a;\n    }\n    /* SETTERS */\n    set r(r) {\n        this.type.set(TYPE.RGB);\n        this.changed = true;\n        this.data.r = r;\n    }\n    set g(g) {\n        this.type.set(TYPE.RGB);\n        this.changed = true;\n        this.data.g = g;\n    }\n    set b(b) {\n        this.type.set(TYPE.RGB);\n        this.changed = true;\n        this.data.b = b;\n    }\n    set h(h) {\n        this.type.set(TYPE.HSL);\n        this.changed = true;\n        this.data.h = h;\n    }\n    set s(s) {\n        this.type.set(TYPE.HSL);\n        this.changed = true;\n        this.data.s = s;\n    }\n    set l(l) {\n        this.type.set(TYPE.HSL);\n        this.changed = true;\n        this.data.l = l;\n    }\n    set a(a) {\n        this.changed = true;\n        this.data.a = a;\n    }\n}\n/* EXPORT */\nexport default Channels;\n","/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n    /* VARIABLES */\n    re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n    /* API */\n    parse: (color) => {\n        if (color.charCodeAt(0) !== 35)\n            return; // '#'\n        const match = color.match(Hex.re);\n        if (!match)\n            return;\n        const hex = match[1];\n        const dec = parseInt(hex, 16);\n        const length = hex.length;\n        const hasAlpha = length % 4 === 0;\n        const isFullLength = length > 4;\n        const multiplier = isFullLength ? 1 : 17;\n        const bits = isFullLength ? 8 : 4;\n        const bitsOffset = hasAlpha ? 0 : -1;\n        const mask = isFullLength ? 255 : 15;\n        return ChannelsReusable.set({\n            r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n            g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n            b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n            a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n        }, color);\n    },\n    stringify: (channels) => {\n        const { r, g, b, a } = channels;\n        if (a < 1) { // #RRGGBBAA\n            return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n        }\n        else { // #RRGGBB\n            return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n        }\n    }\n};\n/* EXPORT */\nexport default Hex;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n    /* VARIABLES */\n    re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n    hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n    /* HELPERS */\n    _hue2deg: (hue) => {\n        const match = hue.match(HSL.hueRe);\n        if (match) {\n            const [, number, unit] = match;\n            switch (unit) {\n                case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n                case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n                case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n            }\n        }\n        return _.channel.clamp.h(parseFloat(hue));\n    },\n    /* API */\n    parse: (color) => {\n        const charCode = color.charCodeAt(0);\n        if (charCode !== 104 && charCode !== 72)\n            return; // 'h'/'H'\n        const match = color.match(HSL.re);\n        if (!match)\n            return;\n        const [, h, s, l, a, isAlphaPercentage] = match;\n        return ChannelsReusable.set({\n            h: HSL._hue2deg(h),\n            s: _.channel.clamp.s(parseFloat(s)),\n            l: _.channel.clamp.l(parseFloat(l)),\n            a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n        }, color);\n    },\n    stringify: (channels) => {\n        const { h, s, l, a } = channels;\n        if (a < 1) { // HSLA\n            return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n        }\n        else { // HSL\n            return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n        }\n    }\n};\n/* EXPORT */\nexport default HSL;\n","/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n    /* VARIABLES */\n    colors: {\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        cornflowerblue: '#6495ed',\n        cornsilk: '#fff8dc',\n        crimson: '#dc143c',\n        cyanaqua: '#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        lavender: '#e6e6fa',\n        lavenderblush: '#fff0f5',\n        lawngreen: '#7cfc00',\n        lemonchiffon: '#fffacd',\n        lightblue: '#add8e6',\n        lightcoral: '#f08080',\n        lightcyan: '#e0ffff',\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        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        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        tan: '#d2b48c',\n        teal: '#008080',\n        thistle: '#d8bfd8',\n        transparent: '#00000000',\n        turquoise: '#40e0d0',\n        violet: '#ee82ee',\n        wheat: '#f5deb3',\n        white: '#ffffff',\n        whitesmoke: '#f5f5f5',\n        yellow: '#ffff00',\n        yellowgreen: '#9acd32'\n    },\n    /* API */\n    parse: (color) => {\n        color = color.toLowerCase();\n        const hex = Keyword.colors[color];\n        if (!hex)\n            return;\n        return Hex.parse(hex);\n    },\n    stringify: (channels) => {\n        const hex = Hex.stringify(channels);\n        for (const name in Keyword.colors) {\n            if (Keyword.colors[name] === hex)\n                return name;\n        }\n        return;\n    }\n};\n/* EXPORT */\nexport default Keyword;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n    /* VARIABLES */\n    re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n    /* API */\n    parse: (color) => {\n        const charCode = color.charCodeAt(0);\n        if (charCode !== 114 && charCode !== 82)\n            return; // 'r'/'R'\n        const match = color.match(RGB.re);\n        if (!match)\n            return;\n        const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n        return ChannelsReusable.set({\n            r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n            g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n            b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n            a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n        }, color);\n    },\n    stringify: (channels) => {\n        const { r, g, b, a } = channels;\n        if (a < 1) { // RGBA\n            return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n        }\n        else { // RGB\n            return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n        }\n    }\n};\n/* EXPORT */\nexport default RGB;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n    /* VARIABLES */\n    format: {\n        keyword: Keyword,\n        hex: Hex,\n        rgb: RGB,\n        rgba: RGB,\n        hsl: HSL,\n        hsla: HSL\n    },\n    /* API */\n    parse: (color) => {\n        if (typeof color !== 'string')\n            return color;\n        const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n        if (channels)\n            return channels;\n        throw new Error(`Unsupported color format: \"${color}\"`);\n    },\n    stringify: (channels) => {\n        // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n        if (!channels.changed && channels.color)\n            return channels.color;\n        if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n            return HSL.stringify(channels);\n        }\n        else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n            return RGB.stringify(channels);\n        }\n        else {\n            return Hex.stringify(channels);\n        }\n    }\n};\n/* EXPORT */\nexport default Color;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n    const ch = Color.parse(color);\n    for (const c in channels) {\n        ch[c] = _.channel.clamp[c](channels[c]);\n    }\n    return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n    if (typeof r !== 'number')\n        return change(r, { a: g });\n    const channels = ChannelsReusable.set({\n        r: _.channel.clamp.r(r),\n        g: _.channel.clamp.g(g),\n        b: _.channel.clamp.b(b),\n        a: _.channel.clamp.a(a)\n    });\n    return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n    const channels = Color.parse(color);\n    const amountCurrent = channels[channel];\n    const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n    if (amountCurrent !== amountNext)\n        channels[channel] = amountNext;\n    return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n    return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n    return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n    const ch = Color.parse(color);\n    const changes = {};\n    for (const c in channels) {\n        if (!channels[c])\n            continue;\n        changes[c] = ch[c] + channels[c];\n    }\n    return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n    const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n    const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n    const weightScale = weight / 100;\n    const weightNormalized = (weightScale * 2) - 1;\n    const alphaDelta = a1 - a2;\n    const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n    const weight1 = (weight1combined + 1) / 2;\n    const weight2 = 1 - weight1;\n    const r = (r1 * weight1) + (r2 * weight2);\n    const g = (g1 * weight1) + (g2 * weight2);\n    const b = (b1 * weight1) + (b2 * weight2);\n    const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n    return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n    const inverse = Color.parse(color);\n    inverse.r = 255 - inverse.r;\n    inverse.g = 255 - inverse.g;\n    inverse.b = 255 - inverse.b;\n    return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n","import { adjust } from 'khroma';\n\nexport const mkBorder = (col, darkMode) =>\n  darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\n","/**\n * Values that have been hardcoded in src/diagrams/er/styles.js. These can be used by\n *   theme-_._ files to maintain display styles until themes, styles, renderers are revised. --\n *   2022-09-22\n */\nexport const oldAttributeBackgroundColorOdd = '#ffffff';\nexport const oldAttributeBackgroundColorEven = '#f2f2f2';\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n  oldAttributeBackgroundColorEven,\n  oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n  constructor() {\n    /** # Base variables */\n    /**\n     * - Background - used to know what the background color is of the diagram. This is used for\n     *   deducing colors for instance line color. Default value is #f4f4f4.\n     */\n    this.background = '#f4f4f4';\n\n    this.primaryColor = '#fff4dd';\n\n    this.noteBkgColor = '#fff5ad';\n    this.noteTextColor = '#333';\n\n    this.THEME_COLOR_LIMIT = 12;\n\n    // dark\n\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = '16px';\n  }\n  updateColors() {\n    // The || is to make sure that if the variable has been defined by a user override that value is to be used\n\n    /* Main */\n    this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n    this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n    this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n    this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor =\n      this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor =\n      this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n    this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n    this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n    this.noteTextColor = this.noteTextColor || '#333';\n\n    this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n    this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n    this.lineColor = this.lineColor || invert(this.background);\n    this.textColor = this.textColor || this.primaryTextColor;\n\n    /* Flowchart variables */\n    this.nodeBkg = this.nodeBkg || this.primaryColor;\n    this.mainBkg = this.mainBkg || this.primaryColor;\n    this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n    this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n    this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n    this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n    this.titleColor = this.titleColor || this.tertiaryTextColor;\n    this.edgeLabelBackground =\n      this.edgeLabelBackground ||\n      (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n    this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n    /* Sequence Diagram variables */\n\n    // this.actorBorder = lighten(this.border1, 0.5);\n    this.actorBorder = this.actorBorder || this.primaryBorderColor;\n    this.actorBkg = this.actorBkg || this.mainBkg;\n    this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n    this.actorLineColor = this.actorLineColor || 'grey';\n    this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n    this.signalColor = this.signalColor || this.textColor;\n    this.signalTextColor = this.signalTextColor || this.textColor;\n    this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n    this.labelTextColor = this.labelTextColor || this.actorTextColor;\n    this.loopTextColor = this.loopTextColor || this.actorTextColor;\n    this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n    this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n    this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n    /* Gantt chart variables */\n\n    this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n    this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n    this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n    this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n    this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n    this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n    this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n    this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n    this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n    this.gridColor = this.gridColor || 'lightgrey';\n    this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n    this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n    this.critBorderColor = this.critBorderColor || '#ff8888';\n    this.critBkgColor = this.critBkgColor || 'red';\n    this.todayLineColor = this.todayLineColor || 'red';\n    this.taskTextColor = this.taskTextColor || this.textColor;\n    this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n    this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n    this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n    this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n    this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n    /* Sequence Diagram variables */\n\n    this.personBorder = this.personBorder || this.primaryBorderColor;\n    this.personBkg = this.personBkg || this.mainBkg;\n\n    /* state colors */\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    /* The color of the text tables of the states*/\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || this.tertiaryColor;\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.nodeBorder;\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.specialStateColor = this.lineColor;\n\n    /* Color Scale */\n    /* Each color-set will have a background, a foreground and a border color */\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n    this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n    if (this.darkMode) {\n      for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n        this['cScale' + i] = darken(this['cScale' + i], 75);\n      }\n    } else {\n      for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n        this['cScale' + i] = darken(this['cScale' + i], 25);\n      }\n    }\n\n    // Setup the inverted color for the set\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n    }\n    // Setup the peer color for the set, useful for borders\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      if (this.darkMode) {\n        this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n      } else {\n        this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n      }\n    }\n\n    // Setup teh label color for the set\n    this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n    }\n\n    const multiplier = this.darkMode ? -4 : -1;\n    for (let i = 0; i < 5; i++) {\n      this['surface' + i] =\n        this['surface' + i] ||\n        adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n      this['surfacePeer' + i] =\n        this['surfacePeer' + i] ||\n        adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n    }\n\n    /* class */\n    this.classText = this.classText || this.textColor;\n\n    /* user-journey */\n    this.fillType0 = this.fillType0 || this.primaryColor;\n    this.fillType1 = this.fillType1 || this.secondaryColor;\n    this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n    this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n    this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n    this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n    this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n    this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n    /* pie */\n    this.pie1 = this.pie1 || this.primaryColor;\n    this.pie2 = this.pie2 || this.secondaryColor;\n    this.pie3 = this.pie3 || this.tertiaryColor;\n    this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n    this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n    this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n    this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n    this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n    this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n    this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n    this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n    this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n    this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || 'black';\n    this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n    this.pieOpacity = this.pieOpacity || '0.7';\n\n    /* requirement-diagram */\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground =\n      this.relationLabelBackground ||\n      (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n    /* git */\n    this.git0 = this.git0 || this.primaryColor;\n    this.git1 = this.git1 || this.secondaryColor;\n    this.git2 = this.git2 || this.tertiaryColor;\n    this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n    this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n    this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n    this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n    this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n    if (this.darkMode) {\n      this.git0 = lighten(this.git0, 25);\n      this.git1 = lighten(this.git1, 25);\n      this.git2 = lighten(this.git2, 25);\n      this.git3 = lighten(this.git3, 25);\n      this.git4 = lighten(this.git4, 25);\n      this.git5 = lighten(this.git5, 25);\n      this.git6 = lighten(this.git6, 25);\n      this.git7 = lighten(this.git7, 25);\n    } else {\n      this.git0 = darken(this.git0, 25);\n      this.git1 = darken(this.git1, 25);\n      this.git2 = darken(this.git2, 25);\n      this.git3 = darken(this.git3, 25);\n      this.git4 = darken(this.git4, 25);\n      this.git5 = darken(this.git5, 25);\n      this.git6 = darken(this.git6, 25);\n      this.git7 = darken(this.git7, 25);\n    }\n    this.gitInv0 = this.gitInv0 || invert(this.git0);\n    this.gitInv1 = this.gitInv1 || invert(this.git1);\n    this.gitInv2 = this.gitInv2 || invert(this.git2);\n    this.gitInv3 = this.gitInv3 || invert(this.git3);\n    this.gitInv4 = this.gitInv4 || invert(this.git4);\n    this.gitInv5 = this.gitInv5 || invert(this.git5);\n    this.gitInv6 = this.gitInv6 || invert(this.git6);\n    this.gitInv7 = this.gitInv7 || invert(this.git7);\n    this.branchLabelColor =\n      this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n    this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n    this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n    this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n    this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n    this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n    this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n    this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n    this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n    /* -------------------------------------------------- */\n    /* EntityRelationship diagrams                        */\n\n    this.attributeBackgroundColorOdd =\n      this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven =\n      this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n    /* -------------------------------------------------- */\n  }\n  calculate(overrides) {\n    if (typeof overrides !== 'object') {\n      // Calculate colors form base colors\n      this.updateColors();\n      return;\n    }\n\n    const keys = Object.keys(overrides);\n\n    // Copy values from overrides, this is mainly for base colors\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n\n    // Calculate colors form base colors\n    this.updateColors();\n    // Copy values from overrides again in case of an override of derived value\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n  const theme = new Theme();\n  theme.calculate(userOverrides);\n  return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\nclass Theme {\n  constructor() {\n    this.background = '#333';\n    this.primaryColor = '#1f2020';\n    this.secondaryColor = lighten(this.primaryColor, 16);\n\n    this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n    this.primaryBorderColor = invert(this.background);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    this.primaryTextColor = invert(this.primaryColor);\n    this.secondaryTextColor = invert(this.secondaryColor);\n    this.tertiaryTextColor = invert(this.tertiaryColor);\n    this.lineColor = invert(this.background);\n    this.textColor = invert(this.background);\n\n    this.mainBkg = '#1f2020';\n    this.secondBkg = 'calculated';\n    this.mainContrastColor = 'lightgrey';\n    this.darkTextColor = lighten(invert('#323D47'), 10);\n    this.lineColor = 'calculated';\n    this.border1 = '#81B1DB';\n    this.border2 = rgba(255, 255, 255, 0.25);\n    this.arrowheadColor = 'calculated';\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = '16px';\n    this.labelBackground = '#181818';\n    this.textColor = '#ccc';\n    this.THEME_COLOR_LIMIT = 12;\n\n    /* Flowchart variables */\n    this.nodeBkg = 'calculated';\n    this.nodeBorder = 'calculated';\n    this.clusterBkg = 'calculated';\n    this.clusterBorder = 'calculated';\n    this.defaultLinkColor = 'calculated';\n    this.titleColor = '#F9FFFE';\n    this.edgeLabelBackground = 'calculated';\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = 'calculated';\n    this.actorBkg = 'calculated';\n    this.actorTextColor = 'calculated';\n    this.actorLineColor = 'calculated';\n    this.signalColor = 'calculated';\n    this.signalTextColor = 'calculated';\n    this.labelBoxBkgColor = 'calculated';\n    this.labelBoxBorderColor = 'calculated';\n    this.labelTextColor = 'calculated';\n    this.loopTextColor = 'calculated';\n    this.noteBorderColor = 'calculated';\n    this.noteBkgColor = '#fff5ad';\n    this.noteTextColor = 'calculated';\n    this.activationBorderColor = 'calculated';\n    this.activationBkgColor = 'calculated';\n    this.sequenceNumberColor = 'black';\n\n    /* Gantt chart variables */\n\n    this.sectionBkgColor = darken('#EAE8D9', 30);\n    this.altSectionBkgColor = 'calculated';\n    this.sectionBkgColor2 = '#EAE8D9';\n    this.taskBorderColor = rgba(255, 255, 255, 70);\n    this.taskBkgColor = 'calculated';\n    this.taskTextColor = 'calculated';\n    this.taskTextLightColor = 'calculated';\n    this.taskTextOutsideColor = 'calculated';\n    this.taskTextClickableColor = '#003163';\n    this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n    this.activeTaskBkgColor = '#81B1DB';\n    this.gridColor = 'calculated';\n    this.doneTaskBkgColor = 'calculated';\n    this.doneTaskBorderColor = 'grey';\n    this.critBorderColor = '#E83737';\n    this.critBkgColor = '#E83737';\n    this.taskTextDarkColor = 'calculated';\n    this.todayLineColor = '#DB5757';\n\n    /* C4 Context Diagram variables */\n\n    this.personBorder = 'calculated';\n    this.personBkg = 'calculated';\n\n    /* state colors */\n    this.labelColor = 'calculated';\n\n    this.errorBkgColor = '#a44141';\n    this.errorTextColor = '#ddd';\n  }\n  updateColors() {\n    this.secondBkg = lighten(this.mainBkg, 16);\n    this.lineColor = this.mainContrastColor;\n    this.arrowheadColor = this.mainContrastColor;\n    /* Flowchart variables */\n\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = this.border1;\n    this.actorBkg = this.mainBkg;\n    this.actorTextColor = this.mainContrastColor;\n    this.actorLineColor = this.mainContrastColor;\n    this.signalColor = this.mainContrastColor;\n    this.signalTextColor = this.mainContrastColor;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.labelBoxBorderColor = this.actorBorder;\n    this.labelTextColor = this.mainContrastColor;\n    this.loopTextColor = this.mainContrastColor;\n    this.noteBorderColor = this.secondaryBorderColor;\n    this.noteBkgColor = this.secondBkg;\n    this.noteTextColor = this.secondaryTextColor;\n    this.activationBorderColor = this.border1;\n    this.activationBkgColor = this.secondBkg;\n\n    /* Gantt chart variables */\n\n    this.altSectionBkgColor = this.background;\n    this.taskBkgColor = lighten(this.mainBkg, 23);\n    this.taskTextColor = this.darkTextColor;\n    this.taskTextLightColor = this.mainContrastColor;\n    this.taskTextOutsideColor = this.taskTextLightColor;\n    this.gridColor = this.mainContrastColor;\n    this.doneTaskBkgColor = this.mainContrastColor;\n    this.taskTextDarkColor = this.darkTextColor;\n\n    /* state colors */\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || '#555';\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.primaryBorderColor;\n    this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n    /* cScale */\n    this.cScale1 = this.cScale1 || '#0b0000';\n    this.cScale2 = this.cScale2 || '#4d1037';\n    this.cScale3 = this.cScale3 || '#3f5258';\n    this.cScale4 = this.cScale4 || '#4f2f1b';\n    this.cScale5 = this.cScale5 || '#6e0a0a';\n    this.cScale6 = this.cScale6 || '#3b0048';\n    this.cScale7 = this.cScale7 || '#995a01';\n    this.cScale8 = this.cScale8 || '#154706';\n    this.cScale9 = this.cScale9 || '#161722';\n    this.cScale10 = this.cScale10 || '#00296f';\n    this.cScale11 = this.cScale11 || '#01629c';\n    this.cScale12 = this.cScale12 || '#010029';\n\n    /* Color Scale */\n    /* Each color-set will have a background, a foreground and a border color */\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n    this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n\n    // Setup the inverted color for the set\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n    }\n    // Setup the peer color for the set, useful for borders\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n    }\n\n    for (let i = 0; i < 5; i++) {\n      this['surface' + i] =\n        this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n      this['surfacePeer' + i] =\n        this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n    }\n\n    // Setup teh label color for the set\n    this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n    }\n\n    /* Pie diagram */\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['pie' + i] = this['cScale' + i];\n    }\n    this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || 'black';\n    this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n    this.pieOpacity = this.pieOpacity || '0.7';\n\n    /* class */\n    this.classText = this.primaryTextColor;\n\n    /* requirement-diagram */\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground =\n      this.relationLabelBackground ||\n      (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n    /* git */\n    this.git0 = lighten(this.secondaryColor, 20);\n    this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n    this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n    this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n    this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n    this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n    this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n    this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n    this.gitInv0 = this.gitInv0 || invert(this.git0);\n    this.gitInv1 = this.gitInv1 || invert(this.git1);\n    this.gitInv2 = this.gitInv2 || invert(this.git2);\n    this.gitInv3 = this.gitInv3 || invert(this.git3);\n    this.gitInv4 = this.gitInv4 || invert(this.git4);\n    this.gitInv5 = this.gitInv5 || invert(this.git5);\n    this.gitInv6 = this.gitInv6 || invert(this.git6);\n    this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n    /* -------------------------------------------------- */\n    /* EntityRelationship diagrams                        */\n\n    this.attributeBackgroundColorOdd =\n      this.attributeBackgroundColorOdd || lighten(this.background, 12);\n    this.attributeBackgroundColorEven =\n      this.attributeBackgroundColorEven || lighten(this.background, 2);\n    /* -------------------------------------------------- */\n  }\n  calculate(overrides) {\n    if (typeof overrides !== 'object') {\n      // Calculate colors form base colors\n      this.updateColors();\n      return;\n    }\n\n    const keys = Object.keys(overrides);\n\n    // Copy values from overrides, this is mainly for base colors\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n\n    // Calculate colors form base colors\n    this.updateColors();\n    // Copy values from overrides again in case of an override of derived value\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n  const theme = new Theme();\n  theme.calculate(userOverrides);\n  return theme;\n};\n","import { invert, lighten, rgba, adjust, darken } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n  oldAttributeBackgroundColorEven,\n  oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n  constructor() {\n    /* Base variables */\n    this.background = '#f4f4f4';\n    this.primaryColor = '#ECECFF';\n\n    this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n    this.secondaryColor = '#ffffde';\n    this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n    this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n    this.primaryTextColor = invert(this.primaryColor);\n    this.secondaryTextColor = invert(this.secondaryColor);\n    this.tertiaryTextColor = invert(this.tertiaryColor);\n    this.lineColor = invert(this.background);\n    this.textColor = invert(this.background);\n\n    this.background = 'white';\n    this.mainBkg = '#ECECFF';\n    this.secondBkg = '#ffffde';\n    this.lineColor = '#333333';\n    this.border1 = '#9370DB';\n    this.border2 = '#aaaa33';\n    this.arrowheadColor = '#333333';\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = '16px';\n    this.labelBackground = '#e8e8e8';\n    this.textColor = '#333';\n    this.THEME_COLOR_LIMIT = 12;\n\n    /* Flowchart variables */\n\n    this.nodeBkg = 'calculated';\n    this.nodeBorder = 'calculated';\n    this.clusterBkg = 'calculated';\n    this.clusterBorder = 'calculated';\n    this.defaultLinkColor = 'calculated';\n    this.titleColor = 'calculated';\n    this.edgeLabelBackground = 'calculated';\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = 'calculated';\n    this.actorBkg = 'calculated';\n    this.actorTextColor = 'black';\n    this.actorLineColor = 'grey';\n    this.signalColor = 'calculated';\n    this.signalTextColor = 'calculated';\n    this.labelBoxBkgColor = 'calculated';\n    this.labelBoxBorderColor = 'calculated';\n    this.labelTextColor = 'calculated';\n    this.loopTextColor = 'calculated';\n    this.noteBorderColor = 'calculated';\n    this.noteBkgColor = '#fff5ad';\n    this.noteTextColor = 'calculated';\n    this.activationBorderColor = '#666';\n    this.activationBkgColor = '#f4f4f4';\n    this.sequenceNumberColor = 'white';\n\n    /* Gantt chart variables */\n\n    this.sectionBkgColor = 'calculated';\n    this.altSectionBkgColor = 'calculated';\n    this.sectionBkgColor2 = 'calculated';\n    this.excludeBkgColor = '#eeeeee';\n    this.taskBorderColor = 'calculated';\n    this.taskBkgColor = 'calculated';\n    this.taskTextLightColor = 'calculated';\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextDarkColor = 'calculated';\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.taskTextClickableColor = 'calculated';\n    this.activeTaskBorderColor = 'calculated';\n    this.activeTaskBkgColor = 'calculated';\n    this.gridColor = 'calculated';\n    this.doneTaskBkgColor = 'calculated';\n    this.doneTaskBorderColor = 'calculated';\n    this.critBorderColor = 'calculated';\n    this.critBkgColor = 'calculated';\n    this.todayLineColor = 'calculated';\n\n    this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n    this.altSectionBkgColor = 'white';\n    this.sectionBkgColor2 = '#fff400';\n    this.taskBorderColor = '#534fbc';\n    this.taskBkgColor = '#8a90dd';\n    this.taskTextLightColor = 'white';\n    this.taskTextColor = 'calculated';\n    this.taskTextDarkColor = 'black';\n    this.taskTextOutsideColor = 'calculated';\n    this.taskTextClickableColor = '#003163';\n    this.activeTaskBorderColor = '#534fbc';\n    this.activeTaskBkgColor = '#bfc7ff';\n    this.gridColor = 'lightgrey';\n    this.doneTaskBkgColor = 'lightgrey';\n    this.doneTaskBorderColor = 'grey';\n    this.critBorderColor = '#ff8888';\n    this.critBkgColor = 'red';\n    this.todayLineColor = 'red';\n\n    /* C4 Context Diagram variables */\n\n    this.personBorder = 'calculated';\n    this.personBkg = 'calculated';\n\n    /* state colors */\n    this.labelColor = 'black';\n    this.errorBkgColor = '#552222';\n    this.errorTextColor = '#552222';\n    this.updateColors();\n  }\n  updateColors() {\n    /* Color Scale */\n    /* Each color-set will have a background, a foreground and a border color */\n\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n    this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n    this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n    this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      // Setup the peer color for the set, useful for borders\n      this['cScale' + i] = darken(this['cScale' + i], 10);\n      this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n    }\n    // Setup the inverted color for the set\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n    }\n\n    for (let i = 0; i < 5; i++) {\n      this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n      this['surfacePeer' + i] =\n        this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n    }\n    // Setup the label color for the set\n    this.scaleLabelColor =\n      this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n        ? this.scaleLabelColor\n        : this.labelTextColor;\n\n    if (this.labelTextColor !== 'calculated') {\n      this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n      this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n      for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n        this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.labelTextColor;\n      }\n    }\n\n    /* Flowchart variables */\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1; // border 1\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.titleColor = this.textColor;\n    this.edgeLabelBackground = this.labelBackground;\n\n    /* Sequence Diagram variables */\n\n    // this.actorBorder = lighten(this.border1, 0.5);\n    this.actorBorder = lighten(this.border1, 23);\n    this.actorBkg = this.mainBkg;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.signalColor = this.textColor;\n    this.signalTextColor = this.textColor;\n    this.labelBoxBorderColor = this.actorBorder;\n    this.labelTextColor = this.actorTextColor;\n    this.loopTextColor = this.actorTextColor;\n    this.noteBorderColor = this.border2;\n    this.noteTextColor = this.actorTextColor;\n\n    /* Gantt chart variables */\n\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n\n    /* state colors */\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || '#f0f0f0';\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.nodeBorder;\n    this.specialStateColor = this.lineColor;\n\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    /* class */\n    this.classText = this.primaryTextColor;\n    /* journey */\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n    /* pie */\n    this.pie1 = this.pie1 || this.primaryColor;\n    this.pie2 = this.pie2 || this.secondaryColor;\n    this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n    this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n    this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n    this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n    this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n    this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n    this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n    this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n    this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n    this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n    this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || 'black';\n    this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n    this.pieOpacity = this.pieOpacity || '0.7';\n\n    /* requirement-diagram */\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n    /* git */\n    this.git0 = this.git0 || this.primaryColor;\n    this.git1 = this.git1 || this.secondaryColor;\n    this.git2 = this.git2 || this.tertiaryColor;\n    this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n    this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n    this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n    this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n    this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n    if (this.darkMode) {\n      this.git0 = lighten(this.git0, 25);\n      this.git1 = lighten(this.git1, 25);\n      this.git2 = lighten(this.git2, 25);\n      this.git3 = lighten(this.git3, 25);\n      this.git4 = lighten(this.git4, 25);\n      this.git5 = lighten(this.git5, 25);\n      this.git6 = lighten(this.git6, 25);\n      this.git7 = lighten(this.git7, 25);\n    } else {\n      this.git0 = darken(this.git0, 25);\n      this.git1 = darken(this.git1, 25);\n      this.git2 = darken(this.git2, 25);\n      this.git3 = darken(this.git3, 25);\n      this.git4 = darken(this.git4, 25);\n      this.git5 = darken(this.git5, 25);\n      this.git6 = darken(this.git6, 25);\n      this.git7 = darken(this.git7, 25);\n    }\n    this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n    this.gitInv1 = this.gitInv1 || invert(this.git1);\n    this.gitInv2 = this.gitInv2 || invert(this.git2);\n    this.gitInv3 = this.gitInv3 || invert(this.git3);\n    this.gitInv4 = this.gitInv4 || invert(this.git4);\n    this.gitInv5 = this.gitInv5 || invert(this.git5);\n    this.gitInv6 = this.gitInv6 || invert(this.git6);\n    this.gitInv7 = this.gitInv7 || invert(this.git7);\n    this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n    this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n    this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n    this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n    this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n    this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n    this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n    this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n    /* -------------------------------------------------- */\n    /* EntityRelationship diagrams                        */\n\n    this.attributeBackgroundColorOdd =\n      this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven =\n      this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n    /* -------------------------------------------------- */\n  }\n  calculate(overrides) {\n    if (typeof overrides !== 'object') {\n      // Calculate colors form base colors\n      this.updateColors();\n      return;\n    }\n\n    const keys = Object.keys(overrides);\n\n    // Copy values from overrides, this is mainly for base colors\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n\n    // Calculate colors form base colors\n    this.updateColors();\n    // Copy values from overrides again in case of an override of derived value\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n  const theme = new Theme();\n  theme.calculate(userOverrides);\n  return theme;\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n  oldAttributeBackgroundColorEven,\n  oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\nclass Theme {\n  constructor() {\n    /* Base vales */\n    this.background = '#f4f4f4';\n    this.primaryColor = '#cde498';\n    this.secondaryColor = '#cdffb2';\n    this.background = 'white';\n    this.mainBkg = '#cde498';\n    this.secondBkg = '#cdffb2';\n    this.lineColor = 'green';\n    this.border1 = '#13540c';\n    this.border2 = '#6eaa49';\n    this.arrowheadColor = 'green';\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = '16px';\n\n    this.tertiaryColor = lighten('#cde498', 10);\n    this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    this.primaryTextColor = invert(this.primaryColor);\n    this.secondaryTextColor = invert(this.secondaryColor);\n    this.tertiaryTextColor = invert(this.primaryColor);\n    this.lineColor = invert(this.background);\n    this.textColor = invert(this.background);\n    this.THEME_COLOR_LIMIT = 12;\n\n    /* Flowchart variables */\n    this.nodeBkg = 'calculated';\n    this.nodeBorder = 'calculated';\n    this.clusterBkg = 'calculated';\n    this.clusterBorder = 'calculated';\n    this.defaultLinkColor = 'calculated';\n    this.titleColor = '#333';\n    this.edgeLabelBackground = '#e8e8e8';\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = 'calculated';\n    this.actorBkg = 'calculated';\n    this.actorTextColor = 'black';\n    this.actorLineColor = 'grey';\n    this.signalColor = '#333';\n    this.signalTextColor = '#333';\n    this.labelBoxBkgColor = 'calculated';\n    this.labelBoxBorderColor = '#326932';\n    this.labelTextColor = 'calculated';\n    this.loopTextColor = 'calculated';\n    this.noteBorderColor = 'calculated';\n    this.noteBkgColor = '#fff5ad';\n    this.noteTextColor = 'calculated';\n    this.activationBorderColor = '#666';\n    this.activationBkgColor = '#f4f4f4';\n    this.sequenceNumberColor = 'white';\n\n    /* Gantt chart variables */\n\n    this.sectionBkgColor = '#6eaa49';\n    this.altSectionBkgColor = 'white';\n    this.sectionBkgColor2 = '#6eaa49';\n    this.excludeBkgColor = '#eeeeee';\n    this.taskBorderColor = 'calculated';\n    this.taskBkgColor = '#487e3a';\n    this.taskTextLightColor = 'white';\n    this.taskTextColor = 'calculated';\n    this.taskTextDarkColor = 'black';\n    this.taskTextOutsideColor = 'calculated';\n    this.taskTextClickableColor = '#003163';\n    this.activeTaskBorderColor = 'calculated';\n    this.activeTaskBkgColor = 'calculated';\n    this.gridColor = 'lightgrey';\n    this.doneTaskBkgColor = 'lightgrey';\n    this.doneTaskBorderColor = 'grey';\n    this.critBorderColor = '#ff8888';\n    this.critBkgColor = 'red';\n    this.todayLineColor = 'red';\n\n    /* C4 Context Diagram variables */\n\n    this.personBorder = 'calculated';\n    this.personBkg = 'calculated';\n\n    /* state colors */\n    this.labelColor = 'black';\n\n    this.errorBkgColor = '#552222';\n    this.errorTextColor = '#552222';\n  }\n  updateColors() {\n    /* Each color-set will have a background, a foreground and a border color */\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n    this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n    this['cScalePeer' + 1] = this['cScalePeer' + 1] || darken(this.secondaryColor, 45);\n    this['cScalePeer' + 2] = this['cScalePeer' + 2] || darken(this.tertiaryColor, 40);\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      // Setup the peer color for the set, useful for borders\n      this['cScale' + i] = darken(this['cScale' + i], 10);\n      this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 25);\n    }\n\n    // Setup the inverted color for the set\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleInv' + i] = this['cScaleInv' + i] || adjust(this['cScale' + i], { h: 180 });\n    }\n\n    // Setup teh label color for the set\n    this.scaleLabelColor =\n      this.scaleLabelColor !== 'calculated' && this.scaleLabelColor\n        ? this.scaleLabelColor\n        : this.labelTextColor;\n\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n    }\n\n    for (let i = 0; i < 5; i++) {\n      this['surface' + i] =\n        this['surface' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n      this['surfacePeer' + i] =\n        this['surfacePeer' + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n    }\n\n    /* Flowchart variables */\n\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = darken(this.mainBkg, 20);\n    this.actorBkg = this.mainBkg;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.labelTextColor = this.actorTextColor;\n    this.loopTextColor = this.actorTextColor;\n    this.noteBorderColor = this.border2;\n    this.noteTextColor = this.actorTextColor;\n\n    /* Gantt chart variables */\n\n    this.taskBorderColor = this.border1;\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.activeTaskBorderColor = this.taskBorderColor;\n    this.activeTaskBkgColor = this.mainBkg;\n\n    /* state colors */\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || '#f0f0f0';\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.primaryBorderColor;\n    this.specialStateColor = this.lineColor;\n\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    /* class */\n    this.classText = this.primaryTextColor;\n    /* journey */\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n    /* pie */\n    this.pie1 = this.pie1 || this.primaryColor;\n    this.pie2 = this.pie2 || this.secondaryColor;\n    this.pie3 = this.pie3 || this.tertiaryColor;\n    this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n    this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n    this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n    this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n    this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n    this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n    this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n    this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n    this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n    this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || 'black';\n    this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n    this.pieOpacity = this.pieOpacity || '0.7';\n\n    /* requirement-diagram */\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n    /* git */\n    this.git0 = this.git0 || this.primaryColor;\n    this.git1 = this.git1 || this.secondaryColor;\n    this.git2 = this.git2 || this.tertiaryColor;\n    this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n    this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n    this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n    this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n    this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n    if (this.darkMode) {\n      this.git0 = lighten(this.git0, 25);\n      this.git1 = lighten(this.git1, 25);\n      this.git2 = lighten(this.git2, 25);\n      this.git3 = lighten(this.git3, 25);\n      this.git4 = lighten(this.git4, 25);\n      this.git5 = lighten(this.git5, 25);\n      this.git6 = lighten(this.git6, 25);\n      this.git7 = lighten(this.git7, 25);\n    } else {\n      this.git0 = darken(this.git0, 25);\n      this.git1 = darken(this.git1, 25);\n      this.git2 = darken(this.git2, 25);\n      this.git3 = darken(this.git3, 25);\n      this.git4 = darken(this.git4, 25);\n      this.git5 = darken(this.git5, 25);\n      this.git6 = darken(this.git6, 25);\n      this.git7 = darken(this.git7, 25);\n    }\n    this.gitInv0 = this.gitInv0 || invert(this.git0);\n    this.gitInv1 = this.gitInv1 || invert(this.git1);\n    this.gitInv2 = this.gitInv2 || invert(this.git2);\n    this.gitInv3 = this.gitInv3 || invert(this.git3);\n    this.gitInv4 = this.gitInv4 || invert(this.git4);\n    this.gitInv5 = this.gitInv5 || invert(this.git5);\n    this.gitInv6 = this.gitInv6 || invert(this.git6);\n    this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n    /* -------------------------------------------------- */\n    /* EntityRelationship diagrams                        */\n\n    this.attributeBackgroundColorOdd =\n      this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven =\n      this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n    /* -------------------------------------------------- */\n  }\n  calculate(overrides) {\n    if (typeof overrides !== 'object') {\n      // Calculate colors form base colors\n      this.updateColors();\n      return;\n    }\n\n    const keys = Object.keys(overrides);\n\n    // Copy values from overrides, this is mainly for base colors\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n\n    // Calculate colors form base colors\n    this.updateColors();\n    // Copy values from overrides again in case of an override of derived value\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n  const theme = new Theme();\n  theme.calculate(userOverrides);\n  return theme;\n};\n","import { invert, darken, lighten, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nimport {\n  oldAttributeBackgroundColorEven,\n  oldAttributeBackgroundColorOdd,\n} from './erDiagram-oldHardcodedValues';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n  constructor() {\n    this.primaryColor = '#eee';\n    this.contrast = '#707070';\n    this.secondaryColor = lighten(this.contrast, 55);\n    this.background = '#ffffff';\n\n    // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n    this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n    this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n    this.primaryTextColor = invert(this.primaryColor);\n    this.secondaryTextColor = invert(this.secondaryColor);\n    this.tertiaryTextColor = invert(this.tertiaryColor);\n    this.lineColor = invert(this.background);\n    this.textColor = invert(this.background);\n\n    // this.altBackground = lighten(this.contrast, 55);\n    this.mainBkg = '#eee';\n    this.secondBkg = 'calculated';\n    this.lineColor = '#666';\n    this.border1 = '#999';\n    this.border2 = 'calculated';\n    this.note = '#ffa';\n    this.text = '#333';\n    this.critical = '#d42';\n    this.done = '#bbb';\n    this.arrowheadColor = '#333333';\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = '16px';\n    this.THEME_COLOR_LIMIT = 12;\n\n    /* Flowchart variables */\n\n    this.nodeBkg = 'calculated';\n    this.nodeBorder = 'calculated';\n    this.clusterBkg = 'calculated';\n    this.clusterBorder = 'calculated';\n    this.defaultLinkColor = 'calculated';\n    this.titleColor = 'calculated';\n    this.edgeLabelBackground = 'white';\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = 'calculated';\n    this.actorBkg = 'calculated';\n    this.actorTextColor = 'calculated';\n    this.actorLineColor = 'calculated';\n    this.signalColor = 'calculated';\n    this.signalTextColor = 'calculated';\n    this.labelBoxBkgColor = 'calculated';\n    this.labelBoxBorderColor = 'calculated';\n    this.labelTextColor = 'calculated';\n    this.loopTextColor = 'calculated';\n    this.noteBorderColor = 'calculated';\n    this.noteBkgColor = 'calculated';\n    this.noteTextColor = 'calculated';\n    this.activationBorderColor = '#666';\n    this.activationBkgColor = '#f4f4f4';\n    this.sequenceNumberColor = 'white';\n\n    /* Gantt chart variables */\n\n    this.sectionBkgColor = 'calculated';\n    this.altSectionBkgColor = 'white';\n    this.sectionBkgColor2 = 'calculated';\n    this.excludeBkgColor = '#eeeeee';\n    this.taskBorderColor = 'calculated';\n    this.taskBkgColor = 'calculated';\n    this.taskTextLightColor = 'white';\n    this.taskTextColor = 'calculated';\n    this.taskTextDarkColor = 'calculated';\n    this.taskTextOutsideColor = 'calculated';\n    this.taskTextClickableColor = '#003163';\n    this.activeTaskBorderColor = 'calculated';\n    this.activeTaskBkgColor = 'calculated';\n    this.gridColor = 'calculated';\n    this.doneTaskBkgColor = 'calculated';\n    this.doneTaskBorderColor = 'calculated';\n    this.critBkgColor = 'calculated';\n    this.critBorderColor = 'calculated';\n    this.todayLineColor = 'calculated';\n\n    /* C4 Context Diagram variables */\n\n    this.personBorder = 'calculated';\n    this.personBkg = 'calculated';\n\n    /* state colors */\n    this.labelColor = 'black';\n\n    this.errorBkgColor = '#552222';\n    this.errorTextColor = '#552222';\n  }\n  updateColors() {\n    this.secondBkg = lighten(this.contrast, 55);\n    this.border2 = this.contrast;\n\n    /* Color Scale */\n    /* Each color-set will have a background, a foreground and a border color */\n\n    this.cScale0 = this.cScale0 || '#555';\n    this.cScale1 = this.cScale1 || '#F4F4F4';\n    this.cScale2 = this.cScale2 || '#555';\n    this.cScale3 = this.cScale3 || '#BBB';\n    this.cScale4 = this.cScale4 || '#777';\n    this.cScale5 = this.cScale5 || '#999';\n    this.cScale6 = this.cScale6 || '#DDD';\n    this.cScale7 = this.cScale7 || '#FFF';\n    this.cScale8 = this.cScale8 || '#DDD';\n    this.cScale9 = this.cScale9 || '#BBB';\n    this.cScale10 = this.cScale10 || '#999';\n    this.cScale11 = this.cScale11 || '#777';\n\n    // Setup the inverted color for the set\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleInv' + i] = this['cScaleInv' + i] || invert(this['cScale' + i]);\n    }\n    // Setup the peer color for the set, useful for borders\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      if (this.darkMode) {\n        this['cScalePeer' + i] = this['cScalePeer' + i] || lighten(this['cScale' + i], 10);\n      } else {\n        this['cScalePeer' + i] = this['cScalePeer' + i] || darken(this['cScale' + i], 10);\n      }\n    }\n\n    // Setup the label color for the set\n    this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n\n    this['cScaleLabel0'] = this['cScaleLabel0'] || this.cScale1;\n    this['cScaleLabel2'] = this['cScaleLabel2'] || this.cScale1;\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['cScaleLabel' + i] = this['cScaleLabel' + i] || this.scaleLabelColor;\n    }\n\n    for (let i = 0; i < 5; i++) {\n      this['surface' + i] = this['surface' + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n      this['surfacePeer' + i] =\n        this['surfacePeer' + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n    }\n\n    /* Flowchart variables */\n\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.titleColor = this.text;\n\n    /* Sequence Diagram variables */\n\n    this.actorBorder = lighten(this.border1, 23);\n    this.actorBkg = this.mainBkg;\n    this.actorTextColor = this.text;\n    this.actorLineColor = this.lineColor;\n    this.signalColor = this.text;\n    this.signalTextColor = this.text;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.labelBoxBorderColor = this.actorBorder;\n    this.labelTextColor = this.text;\n    this.loopTextColor = this.text;\n    this.noteBorderColor = '#999';\n    this.noteBkgColor = '#666';\n    this.noteTextColor = '#fff';\n\n    /* Gantt chart variables */\n\n    this.sectionBkgColor = lighten(this.contrast, 30);\n    this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n    this.taskBorderColor = darken(this.contrast, 10);\n\n    this.taskBkgColor = this.contrast;\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextDarkColor = this.text;\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.activeTaskBorderColor = this.taskBorderColor;\n    this.activeTaskBkgColor = this.mainBkg;\n    this.gridColor = lighten(this.border1, 30);\n\n    this.doneTaskBkgColor = this.done;\n    this.doneTaskBorderColor = this.lineColor;\n    this.critBkgColor = this.critical;\n    this.critBorderColor = darken(this.critBkgColor, 10);\n\n    this.todayLineColor = this.critBkgColor;\n\n    /* state colors */\n    this.transitionColor = this.transitionColor || '#000';\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || '#f4f4f4';\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.stateBorder = this.stateBorder || '#000';\n    this.innerEndBackground = this.primaryBorderColor;\n    this.specialStateColor = '#222';\n\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n    /* class */\n    this.classText = this.primaryTextColor;\n    /* journey */\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n    // /* pie */\n    /* Pie diagram */\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this['pie' + i] = this['cScale' + i];\n    }\n    this.pie12 = this.pie0;\n    this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || 'black';\n    this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n    this.pieOpacity = this.pieOpacity || '0.7';\n\n    /* requirement-diagram */\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n    /* git */\n    this.git0 = darken(this.pie1, 25) || this.primaryColor;\n    this.git1 = this.pie2 || this.secondaryColor;\n    this.git2 = this.pie3 || this.tertiaryColor;\n    this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n    this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n    this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n    this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n    this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n    this.gitInv0 = this.gitInv0 || invert(this.git0);\n    this.gitInv1 = this.gitInv1 || invert(this.git1);\n    this.gitInv2 = this.gitInv2 || invert(this.git2);\n    this.gitInv3 = this.gitInv3 || invert(this.git3);\n    this.gitInv4 = this.gitInv4 || invert(this.git4);\n    this.gitInv5 = this.gitInv5 || invert(this.git5);\n    this.gitInv6 = this.gitInv6 || invert(this.git6);\n    this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n    this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n    this.gitBranchLabel0 = this.branchLabelColor;\n    this.gitBranchLabel1 = 'white';\n    this.gitBranchLabel2 = this.branchLabelColor;\n    this.gitBranchLabel3 = 'white';\n    this.gitBranchLabel4 = this.branchLabelColor;\n    this.gitBranchLabel5 = this.branchLabelColor;\n    this.gitBranchLabel6 = this.branchLabelColor;\n    this.gitBranchLabel7 = this.branchLabelColor;\n\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || '10px';\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || '10px';\n\n    /* -------------------------------------------------- */\n    /* EntityRelationship diagrams                        */\n\n    this.attributeBackgroundColorOdd =\n      this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven =\n      this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n    /* -------------------------------------------------- */\n  }\n  calculate(overrides) {\n    if (typeof overrides !== 'object') {\n      // Calculate colors form base colors\n      this.updateColors();\n      return;\n    }\n\n    const keys = Object.keys(overrides);\n\n    // Copy values from overrides, this is mainly for base colors\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n\n    // Calculate colors form base colors\n    this.updateColors();\n    // Copy values from overrides again in case of an override of derived value\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n  const theme = new Theme();\n  theme.calculate(userOverrides);\n  return theme;\n};\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n  base: {\n    getThemeVariables: baseThemeVariables,\n  },\n  dark: {\n    getThemeVariables: darkThemeVariables,\n  },\n  default: {\n    getThemeVariables: defaultThemeVariables,\n  },\n  forest: {\n    getThemeVariables: forestThemeVariables,\n  },\n  neutral: {\n    getThemeVariables: neutralThemeVariables,\n  },\n};\n","import theme from './themes';\nimport { MermaidConfig } from './config.type';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\n * here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**\n *\n * ```js\n * mermaid.initialize({ flowchart:{ htmlLabels: false } });\n * ```\n *\n * **Example 2:**\n *\n * ```html\n * <script>\n * const config = {\n *   startOnLoad:true,\n *   flowchart:{ useMaxWidth:true, htmlLabels:true, curve:'cardinal'},\n *   securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n * ```\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * A description of each option follows below.\n */\nconst config: Partial<MermaidConfig> = {\n  /**\n   * Theme , the CSS style sheet\n   *\n   * | Parameter | Description     | Type   | Required | Values                                         |\n   * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n   * | theme     | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n   *\n   * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\n   *\n   * @example\n   *\n   * ```js\n   * {\n   *   \"theme\": \"forest\",\n   *   \"themeCSS\": \".node rect { fill: red; }\"\n   * }\n   * ```\n   */\n  theme: 'default',\n  themeVariables: theme['default'].getThemeVariables(),\n  themeCSS: undefined,\n  /* **maxTextSize** - The maximum allowed size of the users text diagram */\n  maxTextSize: 50000,\n  darkMode: false,\n\n  /**\n   * | Parameter  | Description                                            | Type   | Required | Values                      |\n   * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n   * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n   *\n   * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n   */\n  fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n  /**\n   * | Parameter | Description                                           | Type             | Required | Values                                        |\n   * | --------- | ----------------------------------------------------- | ---------------- | -------- | --------------------------------------------- |\n   * | logLevel  | This option decides the amount of logging to be used. | string \\| number | Required | 'trace','debug','info','warn','error','fatal' |\n   *\n   * **Notes:**\n   *\n   * - Trace: 0\n   * - Debug: 1\n   * - Info: 2\n   * - Warn: 3\n   * - Error: 4\n   * - Fatal: 5 (default)\n   */\n  logLevel: 5,\n\n  /**\n   * | Parameter     | Description                       | Type   | Required | Values                                     |\n   * | ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ |\n   * | securityLevel | Level of trust for parsed diagram | string | Required | 'sandbox', 'strict', 'loose', 'antiscript' |\n   *\n   * **Notes**:\n   *\n   * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n   * - **loose**: tags in text are allowed, click functionality is enabled\n   * - **antiscript**: html tags in text are allowed, (only script element is removed), click\n   *   functionality is enabled\n   * - **sandbox**: With this security level all rendering takes place in a sandboxed iframe. This\n   *   prevent any JavaScript from running in the context. This may hinder interactive functionality\n   *   of the diagram like scripts, popups in sequence diagram or links to other tabs/targets etc.\n   */\n  securityLevel: 'strict',\n\n  /**\n   * | Parameter   | Description                                  | Type    | Required | Values      |\n   * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n   * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n   *\n   * **Notes:** Default value: true\n   */\n  startOnLoad: true,\n\n  /**\n   * | Parameter           | Description                                                                  | Type    | Required | Values      |\n   * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n   * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n   *\n   * **Notes**:\n   *\n   * This matters if you are using base tag settings.\n   *\n   * Default value: false\n   */\n  arrowMarkerAbsolute: false,\n\n  /**\n   * This option controls which currentConfig keys are considered _secure_ and can only be changed\n   * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n   * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n   * overriding a site's default security.\n   *\n   * **Notes**:\n   *\n   * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n   */\n  secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n  /**\n   * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n   * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n   * deterministic. This is the default behavior.\n   *\n   * **Notes**:\n   *\n   * This matters if your files are checked into source control e.g. git and should not change unless\n   * content is changed.\n   *\n   * Default value: false\n   */\n  deterministicIds: false,\n\n  /**\n   * This option is the optional seed for deterministic ids. if set to undefined but\n   * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n   * the seed on a static string.\n   */\n  deterministicIDSeed: undefined,\n\n  /** The object containing configurations specific for flowcharts */\n  flowchart: {\n    /**\n     * ### titleTopMargin\n     *\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | titleTopMargin | Margin top for the text over the flowchart     | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 25\n     */\n    titleTopMargin: 25,\n\n    /**\n     * | Parameter      | Description                                     | Type    | Required | Values             |\n     * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n     * expressed in pixels\n     *\n     * Default value: 8\n     */\n    diagramPadding: 8,\n\n    /**\n     * | Parameter  | Description                                                                                  | Type    | Required | Values      |\n     * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n     * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n     *\n     * **Notes:** Default value: true.\n     */\n    htmlLabels: true,\n\n    /**\n     * | Parameter   | Description                                         | Type    | Required | Values              |\n     * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n     * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n     *\n     * **Notes:**\n     *\n     * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n     * vertical spacing for LR as well as RL graphs.**\n     *\n     * Default value: 50\n     */\n    nodeSpacing: 50,\n\n    /**\n     * | Parameter   | Description                                           | Type    | Required | Values              |\n     * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n     * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n     *\n     * **Notes**:\n     *\n     * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n     * spacing for LR as well as RL graphs.\n     *\n     * Default value 50\n     */\n    rankSpacing: 50,\n\n    /**\n     * | Parameter | Description                                        | Type   | Required | Values                        |\n     * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n     * | curve     | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n     *\n     * **Notes:**\n     *\n     * Default Value: 'basis'\n     */\n    curve: 'basis',\n    // Only used in new experimental rendering\n    // represents the padding between the labels and the shape\n    padding: 15,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See notes   | boolean | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set the height and width is set to 100% and is then scaling with the\n     * available space if not the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    /**\n     * | Parameter       | Description | Type    | Required | Values                  |\n     * | --------------- | ----------- | ------- | -------- | ----------------------- |\n     * | defaultRenderer | See notes   | boolean | 4        | dagre-d3, dagre-wrapper, elk |\n     *\n     * **Notes:**\n     *\n     * Decides which rendering engine that is to be used for the rendering. Legal values are:\n     * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid, elk for layout using\n     * elkjs\n     *\n     * Default value: 'dagre-wrapper'\n     */\n    defaultRenderer: 'dagre-wrapper',\n  },\n\n  /** The object containing configurations specific for sequence diagrams */\n  sequence: {\n    hideUnusedParticipants: false,\n    /**\n     * | Parameter       | Description                  | Type    | Required | Values             |\n     * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n     * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value :10\n     */\n    activationWidth: 10,\n\n    /**\n     * | Parameter      | Description                                          | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    diagramMarginX: 50,\n\n    /**\n     * | Parameter      | Description                                       | Type    | Required | Values             |\n     * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    diagramMarginY: 10,\n\n    /**\n     * | Parameter   | Description           | Type    | Required | Values             |\n     * | ----------- | --------------------- | ------- | -------- | ------------------ |\n     * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    actorMargin: 50,\n\n    /**\n     * | Parameter | Description          | Type    | Required | Values             |\n     * | --------- | -------------------- | ------- | -------- | ------------------ |\n     * | width     | Width of actor boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 150\n     */\n    width: 150,\n\n    /**\n     * | Parameter | Description           | Type    | Required | Values             |\n     * | --------- | --------------------- | ------- | -------- | ------------------ |\n     * | height    | Height of actor boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 65\n     */\n    height: 65,\n\n    /**\n     * | Parameter | Description              | Type    | Required | Values             |\n     * | --------- | ------------------------ | ------- | -------- | ------------------ |\n     * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    boxMargin: 10,\n\n    /**\n     * | Parameter     | Description                                  | Type    | Required | Values             |\n     * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n     * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 5\n     */\n    boxTextMargin: 5,\n\n    /**\n     * | Parameter  | Description         | Type    | Required | Values             |\n     * | ---------- | ------------------- | ------- | -------- | ------------------ |\n     * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    noteMargin: 10,\n\n    /**\n     * | Parameter     | Description            | Type    | Required | Values             |\n     * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n     * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 35\n     */\n    messageMargin: 35,\n\n    /**\n     * | Parameter    | Description                 | Type   | Required | Values                    |\n     * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n     * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n     *\n     * **Notes:** Default value: 'center'\n     */\n    messageAlign: 'center',\n\n    /**\n     * | Parameter    | Description                 | Type    | Required | Values      |\n     * | ------------ | --------------------------- | ------- | -------- | ----------- |\n     * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n     *\n     * **Notes:** Default value: true\n     */\n    mirrorActors: true,\n\n    /**\n     * | Parameter  | Description                                                             | Type    | Required | Values      |\n     * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n     * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n     *\n     * **Notes:**\n     *\n     * Default value: false.\n     */\n    forceMenus: false,\n\n    /**\n     * | Parameter       | Description                                | Type    | Required | Values             |\n     * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n     * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * Depending on css styling this might need adjustment.\n     *\n     * Default value: 1\n     */\n    bottomMarginAdj: 1,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See Notes   | boolean | Required | true, false |\n     *\n     * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n     * scaling with the available space. If set to false, the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    /**\n     * | Parameter   | Description                          | Type    | Required | Values      |\n     * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n     * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n     *\n     * **Notes:**\n     *\n     * This will display arrows that start and begin at the same node as right angles, rather than a\n     * curve\n     *\n     * Default value: false\n     */\n    rightAngles: false,\n\n    /**\n     * | Parameter           | Description                     | Type    | Required | Values      |\n     * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n     * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n     *\n     * **Notes:** Default value: false\n     */\n    showSequenceNumbers: false,\n\n    /**\n     * | Parameter     | Description                                        | Type    | Required | Values             |\n     * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n     * | actorFontSize | This sets the font size of the actor's description | Integer | Require  | Any Positive Value |\n     *\n     * **Notes:** **Default value 14**..\n     */\n    actorFontSize: 14,\n\n    /**\n     * | Parameter       | Description                                          | Type   | Required | Values                      |\n     * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n     * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n     *\n     * **Notes:** Default value: \"'Open Sans\", sans-serif'\n     */\n    actorFontFamily: '\"Open Sans\", sans-serif',\n\n    /**\n     * This sets the font weight of the actor's description\n     *\n     * **Notes:** Default value: 400.\n     */\n    actorFontWeight: 400,\n\n    /**\n     * | Parameter    | Description                                     | Type    | Required | Values             |\n     * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n     * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 14\n     */\n    noteFontSize: 14,\n\n    /**\n     * | Parameter      | Description                                        | Type   | Required | Values                      |\n     * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n     * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n     *\n     * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n     */\n    noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n    /**\n     * This sets the font weight of the note's description\n     *\n     * **Notes:** Default value: 400\n     */\n    noteFontWeight: 400,\n\n    /**\n     * | Parameter | Description                                          | Type   | Required | Values                    |\n     * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n     * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n     *\n     * **Notes:** Default value: 'center'\n     */\n    noteAlign: 'center',\n\n    /**\n     * | Parameter       | Description                               | Type    | Required | Values              |\n     * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n     * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n     *\n     * **Notes:** Default value: 16\n     */\n    messageFontSize: 16,\n\n    /**\n     * | Parameter         | Description                                 | Type   | Required | Values                      |\n     * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n     * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n     *\n     * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n     */\n    messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n    /**\n     * This sets the font weight of the message's description\n     *\n     * **Notes:** Default value: 400.\n     */\n    messageFontWeight: 400,\n\n    /**\n     * This sets the auto-wrap state for the diagram\n     *\n     * **Notes:** Default value: false.\n     */\n    wrap: false,\n\n    /**\n     * This sets the auto-wrap padding for the diagram (sides only)\n     *\n     * **Notes:** Default value: 0.\n     */\n    wrapPadding: 10,\n\n    /**\n     * This sets the width of the loop-box (loop, alt, opt, par)\n     *\n     * **Notes:** Default value: 50.\n     */\n    labelBoxWidth: 50,\n\n    /**\n     * This sets the height of the loop-box (loop, alt, opt, par)\n     *\n     * **Notes:** Default value: 20.\n     */\n    labelBoxHeight: 20,\n\n    messageFont: function () {\n      return {\n        fontFamily: this.messageFontFamily,\n        fontSize: this.messageFontSize,\n        fontWeight: this.messageFontWeight,\n      };\n    },\n    noteFont: function () {\n      return {\n        fontFamily: this.noteFontFamily,\n        fontSize: this.noteFontSize,\n        fontWeight: this.noteFontWeight,\n      };\n    },\n    actorFont: function () {\n      return {\n        fontFamily: this.actorFontFamily,\n        fontSize: this.actorFontSize,\n        fontWeight: this.actorFontWeight,\n      };\n    },\n  },\n\n  /** The object containing configurations specific for gantt diagrams */\n  gantt: {\n    /**\n     * ### titleTopMargin\n     *\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 25\n     */\n    titleTopMargin: 25,\n\n    /**\n     * | Parameter | Description                         | Type    | Required | Values             |\n     * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n     * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 20\n     */\n    barHeight: 20,\n\n    /**\n     * | Parameter | Description                                                      | Type    | Required | Values             |\n     * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n     * | barGap    | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n     *\n     * **Notes:** Default value: 4\n     */\n    barGap: 4,\n\n    /**\n     * | Parameter  | Description                                                                | Type    | Required | Values             |\n     * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n     * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    topPadding: 50,\n\n    /**\n     * | Parameter    | Description                                                             | Type    | Required | Values             |\n     * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n     * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 75\n     */\n    rightPadding: 75,\n\n    /**\n     * | Parameter   | Description                                                            | Type    | Required | Values             |\n     * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n     * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 75\n     */\n    leftPadding: 75,\n\n    /**\n     * | Parameter            | Description                                  | Type    | Required | Values             |\n     * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n     * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 35\n     */\n    gridLineStartPadding: 35,\n\n    /**\n     * | Parameter | Description | Type    | Required | Values             |\n     * | --------- | ----------- | ------- | -------- | ------------------ |\n     * | fontSize  | Font size   | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 11\n     */\n    fontSize: 11,\n\n    /**\n     * | Parameter       | Description            | Type    | Required | Values             |\n     * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n     * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 11\n     */\n    sectionFontSize: 11,\n\n    /**\n     * | Parameter           | Description                              | Type    | Required | Values             |\n     * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n     * | numberSectionStyles | The number of alternating section styles | Integer | 4        | Any Positive Value |\n     *\n     * **Notes:** Default value: 4\n     */\n    numberSectionStyles: 4,\n\n    /**\n     * | Parameter  | Description                  | Type | Required | Values           |\n     * | ---------- | ---------------------------- | ---- | -------- | ---------------- |\n     * | axisFormat | Date/time format of the axis | 3    | Required | Date in yy-mm-dd |\n     *\n     * **Notes:**\n     *\n     * This might need adjustment to match your locale and preferences\n     *\n     * Default value: '%Y-%m-%d'.\n     */\n    axisFormat: '%Y-%m-%d',\n\n    /**\n     * | Parameter    | Description | Type   | Required | Values  |\n     * | ------------ | ------------| ------ | -------- | ------- |\n     * | tickInterval | axis ticks  | string | Optional | string  |\n     *\n     * **Notes:**\n     *\n     * Pattern is /^([1-9][0-9]*)(minute|hour|day|week|month)$/\n     *\n     * Default value: undefined\n     */\n    tickInterval: undefined,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See notes   | boolean | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set the height and width is set to 100% and is then scaling with the\n     * available space if not the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    /**\n     * | Parameter | Description | Type    | Required | Values      |\n     * | --------- | ----------- | ------- | -------- | ----------- |\n     * | topAxis   | See notes   | Boolean | 4        | True, False |\n     *\n     * **Notes:** when this flag is set date labels will be added to the top of the chart\n     *\n     * **Default value false**.\n     */\n    topAxis: false,\n\n    useWidth: undefined,\n  },\n\n  /** The object containing configurations specific for journey diagrams */\n  journey: {\n    /**\n     * | Parameter      | Description                                          | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    diagramMarginX: 50,\n\n    /**\n     * | Parameter      | Description                                        | Type    | Required | Values             |\n     * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    diagramMarginY: 10,\n\n    /**\n     * | Parameter   | Description           | Type    | Required | Values             |\n     * | ----------- | --------------------- | ------- | -------- | ------------------ |\n     * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    leftMargin: 150,\n\n    /**\n     * | Parameter | Description          | Type    | Required | Values             |\n     * | --------- | -------------------- | ------- | -------- | ------------------ |\n     * | width     | Width of actor boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 150\n     */\n    width: 150,\n\n    /**\n     * | Parameter | Description           | Type    | Required | Values             |\n     * | --------- | --------------------- | ------- | -------- | ------------------ |\n     * | height    | Height of actor boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 65\n     */\n    height: 50,\n\n    /**\n     * | Parameter | Description              | Type    | Required | Values             |\n     * | --------- | ------------------------ | ------- | -------- | ------------------ |\n     * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    boxMargin: 10,\n\n    /**\n     * | Parameter     | Description                                  | Type    | Required | Values             |\n     * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n     * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 5\n     */\n    boxTextMargin: 5,\n\n    /**\n     * | Parameter  | Description         | Type    | Required | Values             |\n     * | ---------- | ------------------- | ------- | -------- | ------------------ |\n     * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    noteMargin: 10,\n\n    /**\n     * | Parameter     | Description             | Type    | Required | Values             |\n     * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n     * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * Space between messages.\n     *\n     * Default value: 35\n     */\n    messageMargin: 35,\n\n    /**\n     * | Parameter    | Description                 | Type | Required | Values                    |\n     * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n     * | messageAlign | Multiline message alignment | 3    | 4        | 'left', 'center', 'right' |\n     *\n     * **Notes:** Default value: 'center'\n     */\n    messageAlign: 'center',\n\n    /**\n     * | Parameter       | Description                                | Type    | Required | Values             |\n     * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n     * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4        | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * Depending on css styling this might need adjustment.\n     *\n     * Default value: 1\n     */\n    bottomMarginAdj: 1,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See notes   | boolean | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set the height and width is set to 100% and is then scaling with the\n     * available space if not the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    /**\n     * | Parameter   | Description                       | Type | Required | Values      |\n     * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n     * | rightAngles | Curved Arrows become Right Angles | 3    | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * This will display arrows that start and begin at the same node as right angles, rather than a\n     * curves\n     *\n     * Default value: false\n     */\n    rightAngles: false,\n    taskFontSize: 14,\n    taskFontFamily: '\"Open Sans\", sans-serif',\n    taskMargin: 50,\n    // width of activation box\n    activationWidth: 10,\n\n    // text placement as: tspan | fo | old only text as before\n    textPlacement: 'fo',\n    actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n    sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n    sectionColours: ['#fff'],\n  },\n  /** The object containing configurations specific for timeline diagrams */\n  timeline: {\n    /**\n     * | Parameter      | Description                                          | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    diagramMarginX: 50,\n\n    /**\n     * | Parameter      | Description                                        | Type    | Required | Values             |\n     * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    diagramMarginY: 10,\n\n    /**\n     * | Parameter   | Description           | Type    | Required | Values             |\n     * | ----------- | --------------------- | ------- | -------- | ------------------ |\n     * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    leftMargin: 150,\n\n    /**\n     * | Parameter | Description          | Type    | Required | Values             |\n     * | --------- | -------------------- | ------- | -------- | ------------------ |\n     * | width     | Width of actor boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 150\n     */\n    width: 150,\n\n    /**\n     * | Parameter | Description           | Type    | Required | Values             |\n     * | --------- | --------------------- | ------- | -------- | ------------------ |\n     * | height    | Height of actor boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 65\n     */\n    height: 50,\n\n    /**\n     * | Parameter | Description              | Type    | Required | Values             |\n     * | --------- | ------------------------ | ------- | -------- | ------------------ |\n     * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    boxMargin: 10,\n\n    /**\n     * | Parameter     | Description                                  | Type    | Required | Values             |\n     * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n     * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 5\n     */\n    boxTextMargin: 5,\n\n    /**\n     * | Parameter  | Description         | Type    | Required | Values             |\n     * | ---------- | ------------------- | ------- | -------- | ------------------ |\n     * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    noteMargin: 10,\n\n    /**\n     * | Parameter     | Description             | Type    | Required | Values             |\n     * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n     * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * Space between messages.\n     *\n     * Default value: 35\n     */\n    messageMargin: 35,\n\n    /**\n     * | Parameter    | Description                 | Type | Required | Values                    |\n     * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n     * | messageAlign | Multiline message alignment | 3    | 4        | 'left', 'center', 'right' |\n     *\n     * **Notes:** Default value: 'center'\n     */\n    messageAlign: 'center',\n\n    /**\n     * | Parameter       | Description                                | Type    | Required | Values             |\n     * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n     * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4        | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * Depending on css styling this might need adjustment.\n     *\n     * Default value: 1\n     */\n    bottomMarginAdj: 1,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See notes   | boolean | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set the height and width is set to 100% and is then scaling with the\n     * available space if not the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    /**\n     * | Parameter   | Description                       | Type | Required | Values      |\n     * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n     * | rightAngles | Curved Arrows become Right Angles | 3    | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * This will display arrows that start and begin at the same node as right angles, rather than a\n     * curves\n     *\n     * Default value: false\n     */\n    rightAngles: false,\n    taskFontSize: 14,\n    taskFontFamily: '\"Open Sans\", sans-serif',\n    taskMargin: 50,\n    // width of activation box\n    activationWidth: 10,\n\n    // text placement as: tspan | fo | old only text as before\n    textPlacement: 'fo',\n    actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n    sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n    sectionColours: ['#fff'],\n    disableMulticolor: false,\n  },\n  class: {\n    /**\n     * ### titleTopMargin\n     *\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | titleTopMargin | Margin top for the text over the class diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 25\n     */\n    titleTopMargin: 25,\n    arrowMarkerAbsolute: false,\n    dividerMargin: 10,\n    padding: 5,\n    textHeight: 10,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See notes   | boolean | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set the height and width is set to 100% and is then scaling with the\n     * available space if not the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n    /**\n     * | Parameter       | Description | Type    | Required | Values                  |\n     * | --------------- | ----------- | ------- | -------- | ----------------------- |\n     * | defaultRenderer | See notes   | boolean | 4        | dagre-d3, dagre-wrapper |\n     *\n     * **Notes**:\n     *\n     * Decides which rendering engine that is to be used for the rendering. Legal values are:\n     * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n     *\n     * Default value: 'dagre-d3'\n     */\n    defaultRenderer: 'dagre-wrapper',\n  },\n  state: {\n    /**\n     * ### titleTopMargin\n     *\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | titleTopMargin | Margin top for the text over the state diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 25\n     */\n    titleTopMargin: 25,\n    dividerMargin: 10,\n    sizeUnit: 5,\n    padding: 8,\n    textHeight: 10,\n    titleShift: -15,\n    noteMargin: 10,\n    forkWidth: 70,\n    forkHeight: 7,\n    // Used\n    miniPadding: 2,\n    // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n    // layout. This might need updating if/when switching font\n    fontSizeFactor: 5.02,\n    fontSize: 24,\n    labelHeight: 16,\n    edgeLengthFactor: '20',\n    compositTitleSize: 35,\n    radius: 5,\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See notes   | boolean | 4        | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set the height and width is set to 100% and is then scaling with the\n     * available space if not the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n    /**\n     * | Parameter       | Description | Type    | Required | Values                  |\n     * | --------------- | ----------- | ------- | -------- | ----------------------- |\n     * | defaultRenderer | See notes   | boolean | 4        | dagre-d3, dagre-wrapper |\n     *\n     * **Notes:**\n     *\n     * Decides which rendering engine that is to be used for the rendering. Legal values are:\n     * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n     *\n     * Default value: 'dagre-d3'\n     */\n    defaultRenderer: 'dagre-wrapper',\n  },\n\n  /** The object containing configurations specific for entity relationship diagrams */\n  er: {\n    /**\n     * ### titleTopMargin\n     *\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | titleTopMargin | Margin top for the text over the diagram       | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 25\n     */\n    titleTopMargin: 25,\n\n    /**\n     * | Parameter      | Description                                     | Type    | Required | Values             |\n     * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n     * expressed in pixels\n     *\n     * Default value: 20\n     */\n    diagramPadding: 20,\n\n    /**\n     * | Parameter       | Description                              | Type   | Required | Values                 |\n     * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n     * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n     *\n     * **Notes:**\n     *\n     * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n     *\n     * T = top, B = bottom, L = left, and R = right.\n     *\n     * Default value: 'TB'\n     */\n    layoutDirection: 'TB',\n\n    /**\n     * | Parameter      | Description                        | Type    | Required | Values             |\n     * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n     * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Expressed in pixels. Default value: 100\n     */\n    minEntityWidth: 100,\n\n    /**\n     * | Parameter       | Description                         | Type    | Required | Values             |\n     * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n     * | minEntityHeight | The minimum height of an entity box | Integer | 4        | Any Positive Value |\n     *\n     * **Notes:** Expressed in pixels Default value: 75\n     */\n    minEntityHeight: 75,\n\n    /**\n     * | Parameter     | Description                                                  | Type    | Required | Values             |\n     * | ------------- | ------------------------------------------------------------ | ------- | -------- | ------------------ |\n     * | entityPadding | Minimum internal padding between text in box and box borders | Integer | 4        | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * The minimum internal padding between text in an entity box and the enclosing box borders,\n     * expressed in pixels.\n     *\n     * Default value: 15\n     */\n    entityPadding: 15,\n\n    /**\n     * | Parameter | Description                         | Type   | Required | Values               |\n     * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n     * | stroke    | Stroke color of box edges and lines | string | 4        | Any recognized color |\n     *\n     * **Notes:** Default value: 'gray'\n     */\n    stroke: 'gray',\n\n    /**\n     * | Parameter | Description                | Type   | Required | Values               |\n     * | --------- | -------------------------- | ------ | -------- | -------------------- |\n     * | fill      | Fill color of entity boxes | string | 4        | Any recognized color |\n     *\n     * **Notes:** Default value: 'honeydew'\n     */\n    fill: 'honeydew',\n\n    /**\n     * | Parameter | Description         | Type    | Required | Values             |\n     * | --------- | ------------------- | ------- | -------- | ------------------ |\n     * | fontSize  | Font Size in pixels | Integer |          | Any Positive Value |\n     *\n     * **Notes:**\n     *\n     * Font size (expressed as an integer representing a number of pixels) Default value: 12\n     */\n    fontSize: 12,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See Notes   | boolean | Required | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n     * available space. If set to false, the diagram reserves its absolute width.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n  },\n\n  /** The object containing configurations specific for pie diagrams */\n  pie: {\n    useWidth: undefined,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See Notes   | boolean | Required | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n     * available space. If set to false, the diagram reserves its absolute width.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n  },\n\n  /** The object containing configurations specific for req diagrams */\n  requirement: {\n    useWidth: undefined,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See Notes   | boolean | Required | true, false |\n     *\n     * **Notes:**\n     *\n     * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n     * available space. If set to false, the diagram reserves its absolute width.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    rect_fill: '#f9f9f9',\n    text_color: '#333',\n    rect_border_size: '0.5px',\n    rect_border_color: '#bbb',\n    rect_min_width: 200,\n    rect_min_height: 200,\n    fontSize: 14,\n    rect_padding: 10,\n    line_height: 20,\n  },\n  gitGraph: {\n    /**\n     * ### titleTopMargin\n     *\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | titleTopMargin | Margin top for the text over the Git diagram   | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 25\n     */\n    titleTopMargin: 25,\n    diagramPadding: 8,\n    nodeLabel: {\n      width: 75,\n      height: 100,\n      x: -25,\n      y: 0,\n    },\n    mainBranchName: 'main',\n    mainBranchOrder: 0,\n    showCommitLabel: true,\n    showBranches: true,\n    rotateCommitLabel: true,\n  },\n\n  /** The object containing configurations specific for c4 diagrams */\n  c4: {\n    useWidth: undefined,\n\n    /**\n     * | Parameter      | Description                                    | Type    | Required | Values             |\n     * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginX | Margin to the right and left of the c4 diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    diagramMarginX: 50,\n\n    /**\n     * | Parameter      | Description                                 | Type    | Required | Values             |\n     * | -------------- | ------------------------------------------- | ------- | -------- | ------------------ |\n     * | diagramMarginY | Margin to the over and under the c4 diagram | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    diagramMarginY: 10,\n\n    /**\n     * | Parameter     | Description           | Type    | Required | Values             |\n     * | ------------- | --------------------- | ------- | -------- | ------------------ |\n     * | c4ShapeMargin | Margin between shapes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 50\n     */\n    c4ShapeMargin: 50,\n\n    /**\n     * | Parameter      | Description            | Type    | Required | Values             |\n     * | -------------- | ---------------------- | ------- | -------- | ------------------ |\n     * | c4ShapePadding | Padding between shapes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 20\n     */\n    c4ShapePadding: 20,\n\n    /**\n     * | Parameter | Description           | Type    | Required | Values             |\n     * | --------- | --------------------- | ------- | -------- | ------------------ |\n     * | width     | Width of person boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 216\n     */\n    width: 216,\n\n    /**\n     * | Parameter | Description            | Type    | Required | Values             |\n     * | --------- | ---------------------- | ------- | -------- | ------------------ |\n     * | height    | Height of person boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 60\n     */\n    height: 60,\n\n    /**\n     * | Parameter | Description         | Type    | Required | Values             |\n     * | --------- | ------------------- | ------- | -------- | ------------------ |\n     * | boxMargin | Margin around boxes | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** Default value: 10\n     */\n    boxMargin: 10,\n\n    /**\n     * | Parameter   | Description | Type    | Required | Values      |\n     * | ----------- | ----------- | ------- | -------- | ----------- |\n     * | useMaxWidth | See Notes   | boolean | Required | true, false |\n     *\n     * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n     * scaling with the available space. If set to false, the absolute space required is used.\n     *\n     * Default value: true\n     */\n    useMaxWidth: true,\n\n    /**\n     * | Parameter    | Description | Type    | Required | Values             |\n     * | ------------ | ----------- | ------- | -------- | ------------------ |\n     * | c4ShapeInRow | See Notes   | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** How many shapes to place in each row.\n     *\n     * Default value: 4\n     */\n    c4ShapeInRow: 4,\n\n    nextLinePaddingX: 0,\n\n    /**\n     * | Parameter       | Description | Type    | Required | Values             |\n     * | --------------- | ----------- | ------- | -------- | ------------------ |\n     * | c4BoundaryInRow | See Notes   | Integer | Required | Any Positive Value |\n     *\n     * **Notes:** How many boundaries to place in each row.\n     *\n     * Default value: 2\n     */\n    c4BoundaryInRow: 2,\n\n    /**\n     * This sets the font size of Person shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    personFontSize: 14,\n    /**\n     * This sets the font family of Person shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    personFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Person shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    personFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Person shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_personFontSize: 14,\n    /**\n     * This sets the font family of External Person shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_personFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Person shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_personFontWeight: 'normal',\n\n    /**\n     * This sets the font size of System shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    systemFontSize: 14,\n    /**\n     * This sets the font family of System shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    systemFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of System shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    systemFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External System shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_systemFontSize: 14,\n    /**\n     * This sets the font family of External System shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_systemFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External System shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_systemFontWeight: 'normal',\n\n    /**\n     * This sets the font size of System DB shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    system_dbFontSize: 14,\n    /**\n     * This sets the font family of System DB shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    system_dbFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of System DB shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    system_dbFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External System DB shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_system_dbFontSize: 14,\n    /**\n     * This sets the font family of External System DB shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_system_dbFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External System DB shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_system_dbFontWeight: 'normal',\n\n    /**\n     * This sets the font size of System Queue shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    system_queueFontSize: 14,\n    /**\n     * This sets the font family of System Queue shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    system_queueFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of System Queue shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    system_queueFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External System Queue shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_system_queueFontSize: 14,\n    /**\n     * This sets the font family of External System Queue shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_system_queueFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External System Queue shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_system_queueFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Boundary shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    boundaryFontSize: 14,\n    /**\n     * This sets the font family of Boundary shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    boundaryFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Boundary shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    boundaryFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Message shape for the diagram\n     *\n     * **Notes:** Default value: 12.\n     */\n    messageFontSize: 12,\n    /**\n     * This sets the font family of Message shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    messageFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Message shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    messageFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Container shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    containerFontSize: 14,\n    /**\n     * This sets the font family of Container shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    containerFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Container shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    containerFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Container shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_containerFontSize: 14,\n    /**\n     * This sets the font family of External Container shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_containerFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Container shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_containerFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Container DB shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    container_dbFontSize: 14,\n    /**\n     * This sets the font family of Container DB shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    container_dbFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Container DB shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    container_dbFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Container DB shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_container_dbFontSize: 14,\n    /**\n     * This sets the font family of External Container DB shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_container_dbFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Container DB shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_container_dbFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Container Queue shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    container_queueFontSize: 14,\n    /**\n     * This sets the font family of Container Queue shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    container_queueFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Container Queue shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    container_queueFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Container Queue shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_container_queueFontSize: 14,\n    /**\n     * This sets the font family of External Container Queue shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_container_queueFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Container Queue shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_container_queueFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Component shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    componentFontSize: 14,\n    /**\n     * This sets the font family of Component shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    componentFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Component shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    componentFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Component shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_componentFontSize: 14,\n    /**\n     * This sets the font family of External Component shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_componentFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Component shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_componentFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Component DB shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    component_dbFontSize: 14,\n    /**\n     * This sets the font family of Component DB shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    component_dbFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Component DB shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    component_dbFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Component DB shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_component_dbFontSize: 14,\n    /**\n     * This sets the font family of External Component DB shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_component_dbFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Component DB shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_component_dbFontWeight: 'normal',\n\n    /**\n     * This sets the font size of Component Queue shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    component_queueFontSize: 14,\n    /**\n     * This sets the font family of Component Queue shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    component_queueFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of Component Queue shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    component_queueFontWeight: 'normal',\n\n    /**\n     * This sets the font size of External Component Queue shape for the diagram\n     *\n     * **Notes:** Default value: 14.\n     */\n    external_component_queueFontSize: 14,\n    /**\n     * This sets the font family of External Component Queue shape for the diagram\n     *\n     * **Notes:** Default value: \"Open Sans\", sans-serif.\n     */\n    external_component_queueFontFamily: '\"Open Sans\", sans-serif',\n    /**\n     * This sets the font weight of External Component Queue shape for the diagram\n     *\n     * **Notes:** Default value: normal.\n     */\n    external_component_queueFontWeight: 'normal',\n\n    /**\n     * This sets the auto-wrap state for the diagram\n     *\n     * **Notes:** Default value: true.\n     */\n    wrap: true,\n\n    /**\n     * This sets the auto-wrap padding for the diagram (sides only)\n     *\n     * **Notes:** Default value: 0.\n     */\n    wrapPadding: 10,\n\n    personFont: function () {\n      return {\n        fontFamily: this.personFontFamily,\n        fontSize: this.personFontSize,\n        fontWeight: this.personFontWeight,\n      };\n    },\n\n    external_personFont: function () {\n      return {\n        fontFamily: this.external_personFontFamily,\n        fontSize: this.external_personFontSize,\n        fontWeight: this.external_personFontWeight,\n      };\n    },\n\n    systemFont: function () {\n      return {\n        fontFamily: this.systemFontFamily,\n        fontSize: this.systemFontSize,\n        fontWeight: this.systemFontWeight,\n      };\n    },\n\n    external_systemFont: function () {\n      return {\n        fontFamily: this.external_systemFontFamily,\n        fontSize: this.external_systemFontSize,\n        fontWeight: this.external_systemFontWeight,\n      };\n    },\n\n    system_dbFont: function () {\n      return {\n        fontFamily: this.system_dbFontFamily,\n        fontSize: this.system_dbFontSize,\n        fontWeight: this.system_dbFontWeight,\n      };\n    },\n\n    external_system_dbFont: function () {\n      return {\n        fontFamily: this.external_system_dbFontFamily,\n        fontSize: this.external_system_dbFontSize,\n        fontWeight: this.external_system_dbFontWeight,\n      };\n    },\n\n    system_queueFont: function () {\n      return {\n        fontFamily: this.system_queueFontFamily,\n        fontSize: this.system_queueFontSize,\n        fontWeight: this.system_queueFontWeight,\n      };\n    },\n\n    external_system_queueFont: function () {\n      return {\n        fontFamily: this.external_system_queueFontFamily,\n        fontSize: this.external_system_queueFontSize,\n        fontWeight: this.external_system_queueFontWeight,\n      };\n    },\n\n    containerFont: function () {\n      return {\n        fontFamily: this.containerFontFamily,\n        fontSize: this.containerFontSize,\n        fontWeight: this.containerFontWeight,\n      };\n    },\n\n    external_containerFont: function () {\n      return {\n        fontFamily: this.external_containerFontFamily,\n        fontSize: this.external_containerFontSize,\n        fontWeight: this.external_containerFontWeight,\n      };\n    },\n\n    container_dbFont: function () {\n      return {\n        fontFamily: this.container_dbFontFamily,\n        fontSize: this.container_dbFontSize,\n        fontWeight: this.container_dbFontWeight,\n      };\n    },\n\n    external_container_dbFont: function () {\n      return {\n        fontFamily: this.external_container_dbFontFamily,\n        fontSize: this.external_container_dbFontSize,\n        fontWeight: this.external_container_dbFontWeight,\n      };\n    },\n\n    container_queueFont: function () {\n      return {\n        fontFamily: this.container_queueFontFamily,\n        fontSize: this.container_queueFontSize,\n        fontWeight: this.container_queueFontWeight,\n      };\n    },\n\n    external_container_queueFont: function () {\n      return {\n        fontFamily: this.external_container_queueFontFamily,\n        fontSize: this.external_container_queueFontSize,\n        fontWeight: this.external_container_queueFontWeight,\n      };\n    },\n\n    componentFont: function () {\n      return {\n        fontFamily: this.componentFontFamily,\n        fontSize: this.componentFontSize,\n        fontWeight: this.componentFontWeight,\n      };\n    },\n\n    external_componentFont: function () {\n      return {\n        fontFamily: this.external_componentFontFamily,\n        fontSize: this.external_componentFontSize,\n        fontWeight: this.external_componentFontWeight,\n      };\n    },\n\n    component_dbFont: function () {\n      return {\n        fontFamily: this.component_dbFontFamily,\n        fontSize: this.component_dbFontSize,\n        fontWeight: this.component_dbFontWeight,\n      };\n    },\n\n    external_component_dbFont: function () {\n      return {\n        fontFamily: this.external_component_dbFontFamily,\n        fontSize: this.external_component_dbFontSize,\n        fontWeight: this.external_component_dbFontWeight,\n      };\n    },\n\n    component_queueFont: function () {\n      return {\n        fontFamily: this.component_queueFontFamily,\n        fontSize: this.component_queueFontSize,\n        fontWeight: this.component_queueFontWeight,\n      };\n    },\n\n    external_component_queueFont: function () {\n      return {\n        fontFamily: this.external_component_queueFontFamily,\n        fontSize: this.external_component_queueFontSize,\n        fontWeight: this.external_component_queueFontWeight,\n      };\n    },\n\n    boundaryFont: function () {\n      return {\n        fontFamily: this.boundaryFontFamily,\n        fontSize: this.boundaryFontSize,\n        fontWeight: this.boundaryFontWeight,\n      };\n    },\n\n    messageFont: function () {\n      return {\n        fontFamily: this.messageFontFamily,\n        fontSize: this.messageFontSize,\n        fontWeight: this.messageFontWeight,\n      };\n    },\n\n    // ' Colors\n    // ' ##################################\n    person_bg_color: '#08427B',\n    person_border_color: '#073B6F',\n    external_person_bg_color: '#686868',\n    external_person_border_color: '#8A8A8A',\n    system_bg_color: '#1168BD',\n    system_border_color: '#3C7FC0',\n    system_db_bg_color: '#1168BD',\n    system_db_border_color: '#3C7FC0',\n    system_queue_bg_color: '#1168BD',\n    system_queue_border_color: '#3C7FC0',\n    external_system_bg_color: '#999999',\n    external_system_border_color: '#8A8A8A',\n    external_system_db_bg_color: '#999999',\n    external_system_db_border_color: '#8A8A8A',\n    external_system_queue_bg_color: '#999999',\n    external_system_queue_border_color: '#8A8A8A',\n    container_bg_color: '#438DD5',\n    container_border_color: '#3C7FC0',\n    container_db_bg_color: '#438DD5',\n    container_db_border_color: '#3C7FC0',\n    container_queue_bg_color: '#438DD5',\n    container_queue_border_color: '#3C7FC0',\n    external_container_bg_color: '#B3B3B3',\n    external_container_border_color: '#A6A6A6',\n    external_container_db_bg_color: '#B3B3B3',\n    external_container_db_border_color: '#A6A6A6',\n    external_container_queue_bg_color: '#B3B3B3',\n    external_container_queue_border_color: '#A6A6A6',\n    component_bg_color: '#85BBF0',\n    component_border_color: '#78A8D8',\n    component_db_bg_color: '#85BBF0',\n    component_db_border_color: '#78A8D8',\n    component_queue_bg_color: '#85BBF0',\n    component_queue_border_color: '#78A8D8',\n    external_component_bg_color: '#CCCCCC',\n    external_component_border_color: '#BFBFBF',\n    external_component_db_bg_color: '#CCCCCC',\n    external_component_db_border_color: '#BFBFBF',\n    external_component_queue_bg_color: '#CCCCCC',\n    external_component_queue_border_color: '#BFBFBF',\n  },\n  mindmap: {\n    useMaxWidth: true,\n    padding: 10,\n    maxNodeWidth: 200,\n  },\n  fontSize: 16,\n};\n\nif (config.class) {\n  config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\nif (config.gitGraph) {\n  config.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\n\nconst keyify = (obj: any, prefix = ''): string[] =>\n  Object.keys(obj).reduce((res: string[], el): string[] => {\n    if (Array.isArray(obj[el])) {\n      return res;\n    } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n      return [...res, prefix + el, ...keyify(obj[el], '')];\n    }\n    return [...res, prefix + el];\n  }, []);\n\nexport const configKeys: string[] = keyify(config, '');\nexport default config;\n","'use strict';\n/**\n * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the\n *   ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n *   performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n *   undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and\n *   effectively merged with src[`k`]<p> Additionally, dissimilar types will not clobber unless the\n *   config.clobber parameter === true. Example:\n *\n *   ```js\n *   let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n *   let config_1 = { foo: 'foo', bar: 'bar' };\n *   let result = assignWithDepth(config_0, config_1);\n *   console.log(result);\n *   //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n *   ```\n *\n *   Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n *   destructured array of objects and dst is not an array, assignWithDepth will apply each element\n *   of src to dst in order.\n * @param {any} dst - The destination of the merge\n * @param {any} src - The source object(s) to merge into destination\n * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth\n *   to traverse within src and dst for merging - clobber: should dissimilar types clobber (default:\n *   { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }`\n * @returns {any}\n */\nconst assignWithDepth = function (dst, src, config) {\n  const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n  if (Array.isArray(src) && !Array.isArray(dst)) {\n    src.forEach((s) => assignWithDepth(dst, s, config));\n    return dst;\n  } else if (Array.isArray(src) && Array.isArray(dst)) {\n    src.forEach((s) => {\n      if (!dst.includes(s)) {\n        dst.push(s);\n      }\n    });\n    return dst;\n  }\n  if (dst === undefined || depth <= 0) {\n    if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n      return Object.assign(dst, src);\n    } else {\n      return src;\n    }\n  }\n  if (src !== undefined && typeof dst === 'object' && typeof src === 'object') {\n    Object.keys(src).forEach((key) => {\n      if (\n        typeof src[key] === 'object' &&\n        (dst[key] === undefined || typeof dst[key] === 'object')\n      ) {\n        if (dst[key] === undefined) {\n          dst[key] = Array.isArray(src[key]) ? [] : {};\n        }\n        dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n      } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n        dst[key] = src[key];\n      }\n    });\n  }\n  return dst;\n};\n\nexport default assignWithDepth;\n","import assignWithDepth from './assignWithDepth';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\nimport type { MermaidConfig } from './config.type';\n\nexport const defaultConfig: MermaidConfig = Object.freeze(config);\n\nlet siteConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize: MermaidConfig;\nlet directives: any[] = [];\nlet currentConfig: MermaidConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg: MermaidConfig, _directives: any[]) => {\n  // start with config being the siteConfig\n  let cfg: MermaidConfig = assignWithDepth({}, siteCfg);\n  // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n  // Join directives\n  let sumOfDirectives: MermaidConfig = {};\n  for (const d of _directives) {\n    sanitize(d);\n\n    // Apply the data from the directive where the the overrides the themeVariables\n    sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n  }\n\n  cfg = assignWithDepth(cfg, sumOfDirectives);\n\n  if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n    const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n    const themeVariables = assignWithDepth(\n      tmpConfigFromInitialize.themeVariables || {},\n      sumOfDirectives.themeVariables\n    );\n    if (cfg.theme && cfg.theme in theme) {\n      cfg.themeVariables = theme[cfg.theme as keyof typeof theme].getThemeVariables(themeVariables);\n    }\n  }\n\n  currentConfig = cfg;\n  checkConfig(currentConfig);\n  return currentConfig;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function      | Description                           | Type        | Values                                  |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns The new siteConfig\n */\nexport const setSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n  siteConfig = assignWithDepth({}, defaultConfig);\n  siteConfig = assignWithDepth(siteConfig, conf);\n\n  // @ts-ignore: TODO Fix ts errors\n  if (conf.theme && theme[conf.theme]) {\n    // @ts-ignore: TODO Fix ts errors\n    siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n  }\n\n  updateCurrentConfig(siteConfig, directives);\n  return siteConfig;\n};\n\nexport const saveConfigFromInitialize = (conf: MermaidConfig): void => {\n  configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf: MermaidConfig): MermaidConfig => {\n  siteConfig = assignWithDepth(siteConfig, conf);\n  updateCurrentConfig(siteConfig, directives);\n\n  return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function      | Description                                       | Type        | Values                           |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns The siteConfig\n */\nexport const getSiteConfig = (): MermaidConfig => {\n  return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function      | Description                           | Type        | Values                                  |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param conf - The potential currentConfig\n * @returns The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf: MermaidConfig): MermaidConfig => {\n  // sanitize(conf);\n  // Object.keys(conf).forEach(key => {\n  //   const manipulator = manipulators[key];\n  //   conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n  // });\n\n  checkConfig(conf);\n  assignWithDepth(currentConfig, conf);\n\n  return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function  | Description               | Type        | Return Values                  |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns The currentConfig\n */\nexport const getConfig = (): MermaidConfig => {\n  return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description                            | Type        | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None   |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param options - The potential setConfig parameter\n */\nexport const sanitize = (options: any) => {\n  // Checking that options are not in the list of excluded options\n  ['secure', ...(siteConfig.secure ?? [])].forEach((key) => {\n    if (options[key] !== undefined) {\n      // DO NOT attempt to print options[key] within `${}` as a malicious script\n      // can exploit the logger's attempt to stringify the value and execute arbitrary code\n      log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n      delete options[key];\n    }\n  });\n\n  // Check that there no attempts of prototype pollution\n  Object.keys(options).forEach((key) => {\n    if (key.indexOf('__') === 0) {\n      delete options[key];\n    }\n  });\n  // Check that there no attempts of xss, there should be no tags at all in the directive\n  // blocking data urls as base64 urls can contain svg's with inline script tags\n  Object.keys(options).forEach((key) => {\n    if (\n      typeof options[key] === 'string' &&\n      (options[key].includes('<') ||\n        options[key].includes('>') ||\n        options[key].includes('url(data:'))\n    ) {\n      delete options[key];\n    }\n    if (typeof options[key] === 'object') {\n      sanitize(options[key]);\n    }\n  });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param directive - The directive to push in\n */\nexport const addDirective = (directive: any) => {\n  if (directive.fontFamily) {\n    if (!directive.themeVariables) {\n      directive.themeVariables = { fontFamily: directive.fontFamily };\n    } else {\n      if (!directive.themeVariables.fontFamily) {\n        directive.themeVariables = { fontFamily: directive.fontFamily };\n      }\n    }\n  }\n  directives.push(directive);\n  updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description                  | Type        | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset    | Resets currentConfig to conf | Put Request | Required | None   |\n *\n * ## conf\n *\n * | Parameter | Description                                                    | Type       | Required | Values                                       |\n * | --------- | -------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf      | base set of values, which currentConfig could be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n *\n * @param config - base set of values, which currentConfig could be **reset** to.\n * Defaults to the current siteConfig (e.g returned by {@link getSiteConfig}).\n */\nexport const reset = (config = siteConfig): void => {\n  // Replace current config with siteConfig\n  directives = [];\n  updateCurrentConfig(config, directives);\n};\n\nenum ConfigWarning {\n  'LAZY_LOAD_DEPRECATED' = 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.',\n}\ntype ConfigWarningStrings = keyof typeof ConfigWarning;\nconst issuedWarnings: { [key in ConfigWarningStrings]?: boolean } = {};\nconst issueWarning = (warning: ConfigWarningStrings) => {\n  if (issuedWarnings[warning]) {\n    return;\n  }\n  log.warn(ConfigWarning[warning]);\n  issuedWarnings[warning] = true;\n};\n\nconst checkConfig = (config: MermaidConfig) => {\n  if (!config) {\n    return;\n  }\n  // @ts-expect-error Properties were removed in v10. Warning should exist.\n  if (config.lazyLoadedDiagrams || config.loadExternalDiagramsAtStartup) {\n    issueWarning('LAZY_LOAD_DEPRECATED');\n  }\n};\n"],"names":["t","e","module","this","n","r","i","s","u","a","o","f","h","c","d","l","$","y","M","m","v","g","D","p","_","S","w","O","T","LEVELS","log","_args","setLogLevel","level","numericLevel","format","dayjs","noop","dispatch","Dispatch","parseTypenames","typenames","types","name","typename","callback","get","set","copy","type","that","args","xhtml","namespaces","namespace","prefix","creatorInherit","document","uri","creatorFixed","fullname","creator","none","selector","selection_select","select","groups","subgroups","j","group","subgroup","node","subnode","Selection","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum","child","next","constant$1","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","key","nodeByKeyValue","keyValues","keyValue","selection_data","value","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","b","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","selection_attr","defaultView","styleRemove","styleConstant","priority","styleFunction","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","clone","selection_cloneDeep","selection_clone","deep","selection_datum","contextListener","listener","event","onRemove","on","onAdd","options","selection_on","dispatchEvent","params","window","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection_selection","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","rgbn","Rgb","rgba","hsla","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","linear","exponential","hue","gamma","nogamma","interpolateRgb","rgbGamma","start","end","colorRgb","interpolateNumber","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","number","degrees","identity","decompose","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","t0","t1","t2","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id","index","timing","schedules","init","self","tween","stop","tick","interrupt","active","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","value1","string00","string1","interpolate0","string0","string10","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","inherit","transition_selection","styleNull","style","styleMaybeRemove","listener0","transition_style","styleInterpolate","styleTween","transition_styleTween","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","resolve","reject","cancel","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","Transform","point","location","_typeof","obj","_setPrototypeOf","_isNativeReflectConstruct","_construct","Parent","Class","Constructor","instance","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","len","arr2","hasOwnProperty","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","_ref","apply","construct","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","func","thisArg","_len","_key","_len2","_key2","addToSet","transformCaseFunc","element","lcElement","object","newObject","property","lookupGetter","prop","desc","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","getGlobal","_createTrustedTypesPolicy","trustedTypes","suffix","ATTR_NAME","policyName","scriptUrl","createDOMPurify","DOMPurify","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","parentTagName","_forceRemove","_removeAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","body","_createIterator","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","content","_basicCustomElementTest","parentNode","childNodes","childCount","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","attributes","hookEvent","_attr","namespaceURI","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","importedNode","oldNode","returnNode","nodeIterator","serializedHTML","tag","hookFunction","purify","getRows","breakToPlaceholder","removeScript","txt","sanitizeMore","config","_a","placeholderToBreak","sanitizeText","sanitizeTextOrArray","lineBreakRegex","hasBreaks","splitBreaks","getUrl","useAbsolute","url","evaluate","val","parseGenericTypes","cleanedText","newCleanedText","common","Channel","channel","Lang","upper","lang","Unit","dec","unit","Utils","DEC2HEX","TYPE","Type","Type$1","Channels","Channels$1","ChannelsReusable","Hex","length","hasAlpha","isFullLength","multiplier","bits","bitsOffset","mask","Hex$1","HSL","charCode","isAlphaPercentage","HSL$1","Keyword","Keyword$1","RGB","isRedPercentage","isGreenPercentage","isBluePercentage","RGB$1","Color$1","change","ch","change$1","rgba$1","adjustChannel","amount","amountCurrent","amountNext","adjustChannel$1","lighten","lighten$1","darken","darken$1","adjust","changes","adjust$1","mix","color1","color2","weight","r1","g1","b1","a1","r2","g2","b2","a2","weightScale","weightNormalized","alphaDelta","weight1","weight2","mix$1","invert","inverse","invert$1","mkBorder","col","darkMode","oldAttributeBackgroundColorOdd","oldAttributeBackgroundColorEven","Theme$4","overrides","keys","getThemeVariables","userOverrides","theme","Theme","Theme$3","Theme$2","Theme$1","baseThemeVariables","darkThemeVariables","defaultThemeVariables","forestThemeVariables","neutralThemeVariables","keyify","res","el","configKeys","config$1","assignWithDepth","dst","src","depth","clobber","assignWithDepth$1","defaultConfig","siteConfig","configFromInitialize","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","sumOfDirectives","sanitize","tmpConfigFromInitialize","themeVariables","checkConfig","setSiteConfig","conf","saveConfigFromInitialize","updateSiteConfig","getSiteConfig","setConfig","getConfig","addDirective","directive","reset","ConfigWarning","issuedWarnings","issueWarning","warning"],"mappings":"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"}