mascot-vis 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,186 @@
1
+ // version: 3.0.4
2
+ "use strict";function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("d3"));const r={canvas:void 0,getCanvas:function(){return window?(void 0===this.canvas&&(this.canvas=document.createElement("canvas")),this.canvas):null},getContext:function(){var e=this.getCanvas();return e?e.getContext("2d"):null}};class n{constructor(e,t,r){this._id="predicate_"+Nt(),this._type=e||i.POINT,this._variableType=t,this._variableName=r,this._value=void 0}get type(){return this._type}get value(){return this._value}set value(e){this._value=e}get id(){return this._id}get variableType(){return this._variableType}get variableName(){return this._variableName}}const i=Object.freeze({POINT:"point",INTERVAL:"interval",LIST:"list"});class s extends n{constructor(e,t,r){super(e,t,r)}testElement(e){let t;if("attribute"==this._variableType){if(!e.dataScope)return!1;t=e.dataScope.getAttributeValue(this._variableName)}else t=e[this._variableName];return this._value[0]<=t&&this._value[1]>=t}testTuple(e){if("attribute"==this._variableType){let t=e[this._variableName];return this._value[0]<=t&&this._value[1]>=t}return!1}}class a extends n{constructor(e,t,r){super(e,t,r)}addValue(e){this._value||(this._value=[]),this._value.push(e)}resetValue(){this._value=void 0}testElement(e){if("attribute"==this._variableType){if(!e.dataScope)return!1;let t=e.dataScope.getAttributeValue(this._variableName);return this._value.indexOf(t)>=0}return this._value.indexOf(e[this._variableName])>=0}testTuple(e){if("attribute"==this._variableType){let t=e[this._variableName];return this._value.indexOf(t)>=0}return!1}}class o extends n{constructor(e,t,r){super(e,t,r)}testElement(e){if("attribute"==this._variableType){if(!e.dataScope)return!1;return e.dataScope.getAttributeValue(this._variableName)==this._value}return e[this._variableName]==this._value}testTuple(e){if("attribute"==this._variableType){let t=e[this._variableName];return this._value===t}return!1}}function l(e){let t,r="attribute"in e?"attribute":"property",n=e[r];switch(e.type){case i.LIST:t=new a(e.type,r,n);break;case i.INTERVAL:t=new s(e.type,r,n);break;case i.POINT:default:t=new o(e.type,r,n)}return e.value&&(t.value=e.value),t}function u(e,t){for(let r of t){if(!l(r).testElement(e))return!1}return!0}class c{constructor(e,t,r,n){this._x=e+r/2,this._y=t+n/2,this._width=r,this._height=n}translate(e,t){this._x+=e,this._y+=t}toJSON(){let e={};return e.x=this._x,e.y=this._y,e.width=this._width,e.height=this._height,e}union(e){let t=Math.min(this.left,e.left),r=Math.min(this.top,e.top),n=Math.max(this.right,e.right),i=Math.max(this.bottom,e.bottom);return new c(t,r,n-t,i-r)}clone(){return new c(this.left,this.top,this._width,this._height)}get left(){return this._x-this._width/2}set left(e){this._x=e+this._width/2}get right(){return this._x+this._width/2}set right(e){this._x=e-this._width/2}get top(){return this._y-this._height/2}set top(e){this._y=e+this._height/2}get bottom(){return this._y+this._height/2}set bottom(e){this._y=e-this._height/2}get x(){return this._x}get y(){return this._y}get center(){return this.x}get middle(){return this.y}get width(){return this._width}setWidth(e,t){switch(t){case _.RIGHT:this._x=this.right-e/2;break;case _.CENTER:this._width=2*e;break;default:this._x=this.left+e/2}this._width=e}get height(){return this._height}setHeight(e,t){switch(t){case _.TOP:this._y=this.top+e/2;break;case _.MIDDLE:this._height=2*e;break;default:this._y=this.bottom-e/2}this._height=e}contains(e,t){return this.left<=e&&this.right>=e&&this.top<=t&&this.bottom>=t}overlap(e){return!(this.right<e.left||this.bottom<e.top||this.left>e.right||this.top>e.bottom)}}function h(e){let t=e[0].clone();for(let r=1;r<e.length;r++)t=t.union(e[r]);return t}function d(e){return h(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.refBounds?e.refBounds:e.bounds)))}function f(e){return h(("vertex"==e[0].type||"segment"==e[0].type?e.map((e=>e.parent)):e).map((e=>e.bounds)))}function p(e){let t=T(e);for(let e of t)e._updateBounds();let r=[];for(let e of t)e.parent&&!r.includes(e.parent)&&r.push(e.parent);for(let e of r)p(e)}const _=Object.freeze({TOP:"top",LEFT:"left",RIGHT:"right",BOTTOM:"bottom",CENTER:"center",MIDDLE:"middle"});function g(e){return e.id+"-bg"}function y(e){return e.id+"-path"}function m(e){switch(e){case _.TOP:return"text-before-edge";case _.BOTTOM:return"auto";case _.LEFT:return"start";case _.RIGHT:return"end";case _.CENTER:case _.MIDDLE:return"middle";default:return e}}const b=Object.freeze({fillColor:"fill",strokeColor:"stroke",strokeWidth:"stroke-width",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",strokeDash:"stroke-dasharray",opacity:"opacity",fontSize:"font-size",fontFamily:"font-family",fontWeight:"font-weight",visibility:"visibility"});class v{constructor(e){let t=e||{};this._stops=[],this.type=Ot.LinearGradient,this.id=this.type+Nt(),this.x1="x1"in t?t.x1:0,this.x2="x2"in t?t.x2:100,this.y1="y1"in t?t.y1:0,this.y2="y2"in t?t.y2:0}toJSON(){let e={};return e.type=this.type,e.id=this.id,e.x1=this.x1,e.x2=this.x2,e.y1=this.y1,e.y2=this.y2,e.stops=this._stops,e}addStop(e,t,r){this._stops.push({offset:e,color:t,opacity:r})}get stops(){return this._stops}}class x{constructor(e){if(this._dataScope=void 0,this._type="type"in e?e.type:Ot.Mark,this._id=e.id?e.id:this._type+"_"+Nt(),this._classId=void 0,this._bounds=void 0,this._rotate=void 0,this._refBounds=void 0,this._styles={},void 0!==e)for(let t in b)t in e&&(this.styles[t]=e[t])}get scene(){return D(this)}set strokeColor(e){this.styles.strokeColor=e}get strokeColor(){return this.styles.strokeColor}set strokeWidth(e){this.styles.strokeWidth=e}get strokeWidth(){return this.styles.strokeWidth}set strokeDash(e){this.styles.strokeDash=e}get strokeDash(){return this.styles.strokeDash}set fillColor(e){this.styles.fillColor=e}get fillColor(){return this.styles.fillColor}get rotation(){return this._rotate}get id(){return this._id}set id(e){this.getScene()?(delete this.getScene()._itemMap[this._id],this._id=e,this.getScene()._itemMap[e]=this):this._id=e}get classId(){return this._classId?this._classId:this._id}set classId(e){this._classId=e}get type(){return this._type}get bounds(){return this._bounds||this._updateBounds(),this._bounds}get refBounds(){return this._refBounds?this._refBounds:this.bounds}contains(e,t){if(!this.bounds)return!1;if(!this.bounds.contains(e,t))return!1;switch(this.type){case Ot.Rect:case Ot.PointText:return!0;case Ot.Circle:return Math.sqrt(Math.pow(e-this.x,2)+Math.pow(t-this.y,2))<=this.radius+this.strokeWidth;case Ot.Path:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),this.closed?n.isPointInPath(i,e,t):n.isPointInStroke(i,e,t)}case Ot.Line:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.lineWidth=Math.max(this.strokeWidth,2.5),n.stroke(i),n.isPointInStroke(i,e,t)}default:{let n=r.getContext(),i=new Path2D(this.getSVGPathData());return n.isPointInPath(i,e,t)}}}set dataScope(e){this._dataScope=e}get dataScope(){return this._dataScope}get styles(){return this._styles}set styles(e){this._styles=e}set visibility(e){this.styles.visibility=e}get visibility(){return this.styles.visibility?this.styles.visibility:"visible"}get opacity(){return"opacity"in this.styles?this.styles.opacity:1}set opacity(e){this.styles.opacity=e}copyPropertiesTo(e){e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone())}}function E(e){return e instanceof x&&e.type!==Ot.Gridlines}const w=Object.freeze({Area:"area",Rect:"rect",Ellipse:"ellipse",Circle:"circle",Pie:"pie",Ring:"ring",Arc:"arc",Line:"line",Path:"path",Image:"image",PointText:"text",Polygon:"polygon",BezierCurve:"bezierCurve"});function A(e,t,r){const n=document.getElementById(e),i=n.createSVGPoint();i.x=t,i.y=r;const s=i.matrixTransform(n.getScreenCTM().inverse());return[s.x,s.y]}function C(e,t,r,n){return Math.sqrt(Math.pow(e-r,2)+Math.pow(t-n,2))}function R(e,t,r,n,i){const s=i*Math.PI/180,a=e-r,o=t-n;return{x:a*Math.cos(s)-o*Math.sin(s)+r,y:a*Math.sin(s)+o*Math.cos(s)+n}}const k={svg:void 0,getSVG:function(){return window?(void 0===this.svg&&(this.svg=document.createElement("svg")),this.svg):null}},S={canvas:void 0,getCanvas:function(){return window?(void 0===this.canvas&&(this.canvas=document.createElement("canvas")),this.canvas):null},getContext:function(){var e=this.getCanvas();return e?e.getContext("2d"):null}};function T(e,t){let r=D(e),n=t||r;if("vertex"===e.type){return O(e,N(n,[{property:"classId",value:e.parent.classId}]))}if("segment"===e.type){return I(e,N(n,[{property:"classId",value:e.parent.classId}]))}return e.classId?N(n,[{property:"classId",value:e.classId}]):[e]}function O(e,t){if(!e.classId){if(e.dataScope){let r=e.parent;if(!r)throw new Error("vertex has no parent mark");let n=[];if(r.type===Ot.Area){let i=r.vertices.indexOf(e)<r.vertices.length/2;for(let e of t){let t=i?e.vertices.slice(0,e.vertices.length/2):e.vertices.slice(e.vertices.length/2);n=n.concat(t.filter((e=>e.dataScope)))}}else for(let e of t)n=n.concat(e.vertices.filter((e=>e.dataScope)));return n}{let r=e.parent;if(!r)throw new Error("vertex has no parent mark");let n=r.vertices.indexOf(e),i=[];for(let e of t)i.push(e.vertices[n]);return i}}}function I(e,t){if(e.dataScope){if(!e.parent)throw new Error("segment has no parent mark");let r=[];for(let e of t)r=r.concat(e.segments);return r}{let r=e.parent;if(!r)throw new Error("segment has no parent mark");let n=r.segments.indexOf(e),i=[];for(let e of t)i.push(e.segments[n]);return i}}function N(e,t){let r=[];return P(e,t,r),r}function L(e,t){let r=e.children.filter((e=>e.type==Ot.Collection));if(0!==r.length)for(let e of r){let r=e;for(;r&&r.dataScope;){if(r.dataScope.hasAttribute(t))return r;r=r.children?r.children[0]:void 0}}}function V(e){return e.type==Ot.Collection?e:e.parent?V(e.parent):void 0}function P(e,t,r){if(e&&"axis"!=e.type&&"legend"!=e.type&&"gridlines"!=e.type)if(u(e,t)&&r.push(e),e.vertices)for(let n of e.vertices.concat(e.segments))u(n,t)&&r.push(n);else if(e.children&&e.children.length>0)for(let n of e.children)P(n,t,r)}function D(e){let t=e;for(;t;){if(t.type==Ot.Scene)return t;t=t.parent}}function B(e){let t=e;for("vertex"!=t.type&&"segment"!=t.type||(t=t.parent);t.parent&&[Ot.Collection,Ot.Glyph].includes(t.parent.type);)t=t.parent;return t}function M(e,t,r,n){let i=N(e,[{property:"type",value:t}]);for(let e of i)if(G(e,r,n))return e}function G(e,t,n){switch(e.type){case Ot.Path:case Ot.Arc:case Ot.BezierCurve:case Ot.Line:{let i=r.getContext(),s=new Path2D(e.getSVGPathData());return i.lineWidth=Math.max(e.strokeWidth,2.5),i.stroke(s),e.closed?i.isPointInPath(s,t,n):i.isPointInStroke(s,t,n)}case Ot.Circle:{let r=e.x,i=e.y;if(e.rotation){let t=R(r,i,e.rotation[1],e.rotation[2],e.rotation[0]);r=t.x,i=t.y}return Math.sqrt(Math.pow(t-r,2)+Math.pow(n-i,2))<=e.radius+e.strokeWidth}default:return e.bounds.contains(t,n)}}function j(e,t){let r=[];if(z(e,r),t){let e={};for(let t of r)e[t.classId]=t;return Object.values(e)}return r}function z(e,t){if(E(e))t.push(e);else if(e.type==Ot.Collection&&e.children)for(let r of e.children)z(r,t);else if(e.type==Ot.Glyph&&e.children)for(let r of e.children)z(r,t);else if(e.type==Ot.Composite&&e.children)for(let r of e.children)z(r,t)}class F{constructor(){this._refElements=[]}addRefElement(e){this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}const U=Object.freeze({GRID:"grid",STACK:"stack",PACKING:"packing",FORCE:"force",DIRECTED:"directedgraph",TIDYTREE:"tidytree",TREEMAP:"treemap",STRATA:"strata",CIRCULAR:"circular",CLUSTER:"cluster"});function H(e,t){return!!(e.startsWith("h")&&[_.LEFT,_.CENTER,_.RIGHT].indexOf(t)>=0)||(!!(e.startsWith("v")&&[_.TOP,_.MIDDLE,_.BOTTOM].indexOf(t)>=0)||(console.warn("Invalid alignment:",t),!1))}class W{constructor(e){this._id=e+"_"+Nt(),this._type=e,this._inputVars=[],this._outputVars=[]}run(){console.log("-",this._type,this.outputVar.element?this.outputVar.element.type:"",this.outputVar.channel?this.outputVar.channel:"")}get id(){return this._id}get type(){return this._type}get inputVars(){return this._inputVars}get outputVars(){return this._outputVars}get outputVar(){return this._outputVars[0]}isIsolated(){return 0==this._inputVars.length&&0==this._outputVars.length}}const Y=Object.freeze({CONDUIT:"conduit",ENCODER:"encoder",LAYOUT:"layout",LINK_PLACER:"linkRouter",CONSTRAINT:"constraint",EVAL_BBOX:"evalBBox",EVAL_REFBOUNDS:"evalRefBounds",AFFIXER:"affixer",ALIGNER:"aligner",DOMAIN_BUILDER:"domainBuilder",SCALE_BUILDER:"scaleBuilder",AXIS_PATH_PLACER:"axisPathPlacer",AXIS_TICKS_PLACER:"axisTicksPlacer",AXIS_LABELS_PLACER:"axisLabelsPlacer",AXIS_TITLE_PLACER:"axisTitlePlacer",GRIDLINES_PLACER:"gridlinesPlacer",GRID_LAYOUT:"gridLayout",STACK_LAYOUT:"stackLayout",PACK_LAYOUT:"packLayout",FORCE_LAYOUT:"forceLayout",DIRECTED_LAYOUT:"directedLayout",TIDY_TREE_LAYOUT:"tidyTreeLayout",TREEMAP_LAYOUT:"treemapLayout",STRATA_LAYOUT:"strataLayout",CIRCULAR_LAYOUT:"circularLayout",CLUSTER_LAYOUT:"clusterLayout",BIN_TRANSFORMER:"binTransformer",FILTER_TRANSFORMER:"filterTransformer",KDE_TRANSFORMER:"kdeTransformer",TARGET_EVALUATOR:"targetEvaluator"});class X{constructor(e){this._id="v_"+Nt(),this._type=e,this._incomings=[],this._outgoings=[],this._undirected=[]}get id(){return this._id}get incomingEdges(){return this._incomings}get outgoingEdges(){return this._outgoings}get undirectedEdges(){return this._undirected}get type(){return this._type}get incomingDataflow(){for(let e of this._incomings)if(e.fromNode&&e.fromNode instanceof W)return e.fromNode;return null}isIsolated(){return 0==this._incomings.length&&0==this._outgoings.length}}const q=Object.freeze({CHANNEL:"channel",PROPERTY:"property",ATTRIBUTE:"attribute",ITEMS:"items",DATASCOPE:"datascope",DOMAIN:"domain",BOUNDS:"bounds",ORDER:"order",SCALE:"scale",COND_ENCODING:"condEncoding",AFFIXATION:"affixation",ALIGNMENT:"alignment",TRIGGER:"trigger"});class K extends X{constructor(e,t){super(e),this._condEnc=t}get condEncoding(){return this._condEnc}}const Z=Object.freeze({RowFirst:"rowFirst",ColumnFirst:"columnFirst"}),$=Object.freeze({TopLeft:"topLeft",TopRight:"topRight",BottomLeft:"bottomLeft",BottomRight:"bottomRight"}),J={HORIZONTAL:"horizontal",VERTICAL:"vertical",ANGULAR:"angular",RADIAL:"radial"},Q={Left2Right:"l2r",Right2Left:"r2l",Top2Bottom:"t2b",Bottom2Top:"b2t"},ee=Object.freeze({CLOCKWISE:"clockwise",ANTI_CLOCKWISE:"anti-clockwise"}),te=Object.freeze({INWARD:"inward",OUTWARD:"outward"});class re{constructor(e,t,r,n){this.type="vertex",this._id=n,this._x=e,this._y=t,this._dataScope=void 0,this.parent=r,this.shape=void 0,this.width=0,this.height=0,this.radius=0,this.fillColor="#555",this.opacity=1,this.strokeWidth=0,this.strokeColor="#aaa",this._polarAngle=void 0}get dataScope(){return this._dataScope}set dataScope(e){this._dataScope=e}get bounds(){switch(this.shape){case"rect":return new c(this.x-this.width/2,this.y-this.height/2,this.width,this.height);case"circle":return new c(this.x-this.radius,this.y-this.radius,2*this.radius,2*this.radius);default:return new c(this.x-.5,this.y-.5,1,1)}}get id(){return this.parent.id+"_v_"+this._id}_clone(e){let t=new re(this.x,this.y,e,this._id);return this._dataScope&&(t._dataScope=this._dataScope.clone()),t.shape=this.shape,t.width=this.width,t.height=this.height,t.radius=this.radius,t.fillColor=this.fillColor,t.opacity=this.opacity,t.strokeWidth=this.strokeWidth,t.strokeColor=this.strokeColor,t}get polarAngle(){return this._polarAngle}get scene(){return this.parent.scene}get x(){return this._x}get y(){return this._y}}re.styles=["vxShape","vxWidth","vxHeight","vxRadius","vxFillColor","vxStrokeColor","vxStrokeWidth","vxOpacity"];class ne{constructor(e,t,r,n){this.type="segment",this._id=n,this.vertex1=e,this.vertex2=t,this.dataScope=void 0,this.parent=r}get id(){return this.parent.id+"_s_"+this._id}get x(){return(this.vertex1.x+this.vertex2.x)/2}get y(){return(this.vertex1.y+this.vertex2.y)/2}get scene(){return this.parent.scene}}class ie extends x{constructor(e){super(e),this._type="type"in e?e.type:Ot.Path,this.vertices=[],this.vertexCounter=0,this._sortBy={},this.segmentCounter=0,this.segments=[],this.anchor=void 0,this.closed=!1,this.curveMode="linear",this._vxShape=void 0,this._vxWidth=0,this._vxHeight=0,this._vxRadius=0,this._vxFillColor="#555555",this._vxStrokeColor="#aaaaaa",this._vxStrokeWidth=0,this._vxOpacity=1;for(let t of re.styles)t in e&&(this["_"+t]=e[t]);"vertices"in e&&this._setVertices(e.vertices),this._sourceAnchor="sourceAnchor"in e?e.sourceAnchor:["center","middle"],this._targetAnchor="targetAnchor"in e?e.targetAnchor:["center","middle"],this._sourceOffset="sourceOffset"in e?e.sourceOffset:[0,0],this._targetOffset="targetOffset"in e?e.targetOffset:[0,0],this._strength="strength"in e?e.strength:.85,"strokeColor"in this.styles||(this.styles.strokeColor="#ccc"),"fillColor"in this.styles||(this.styles.fillColor="none"),"strokeWidth"in this.styles||(this.styles.strokeWidth=1),"strokeDash"in this.styles||(this.styles.strokeDash="none")}_setVertices(e){let t;this.vertices=[],this.segments=[],this.vertexCounter=0,this.segmentCounter=0;for(let r=0;r<e.length;r++)if(r!=e.length-1||e[r][0]!==e[0][0]||e[r][1]!==e[0][1]||this.type!==Ot.Path){t=new re(e[r][0],e[r][1],this,this.vertexCounter++);for(let e of re.styles)if(this[e]){let r=e.replace("vx","");t[r[0].toLowerCase()+r.slice(1)]=this[e]}this.vertices.push(t),r>0&&this.segments.push(new ne(this.vertices[r-1],this.vertices[r],this,this.segmentCounter++))}let r=e[0],n=e[e.length-1];(r[0]===n[0]&&r[1]===n[1]||this.type===Ot.Rect)&&(this.closed=!0,"fillColor"in this.styles||(this.styles.fillColor="#fff"),this.segments.push(new ne(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++)))}copyPropertiesTo(e){e.attrs=Object.assign({},this.attrs),e.styles=Object.assign({},this.styles);for(let t of re.styles)this["_"+t]&&(e["_"+t]=this["_"+t]);this._dataScope&&(e._dataScope=this._dataScope.clone()),e.closed=this.closed,e.curveMode=this.curveMode,e.vertices=[],e.segments=[];for(let t of this.vertices)e.vertices.push(t._clone(e));e.segmentCounter=0;for(let t=1;t<e.vertices.length;t++)e.segments.push(new ne(e.vertices[t-1],e.vertices[t],e,e.segmentCounter++));e.closed&&e.segments.push(new ne(e.vertices[e.vertices.length-1],e.vertices[0],e,e.segmentCounter++)),e._sourceAnchor=this._sourceAnchor.slice(),e._targetAnchor=this._targetAnchor.slice(),e._sourceOffset=this._sourceOffset.slice(),e._targetOffset=this._targetOffset.slice(),e._beta=this._beta}get bounds(){return this._bounds||this._updateBounds(),this._bounds}get x(){return this.bounds.x}get y(){return this.bounds.y}get strokeColor(){return this.styles.strokeColor}get strokeWidth(){return this.styles.strokeWidth}get fillColor(){return this.styles.fillColor}set fillColor(e){this.styles.fillColor=e}get strokeDash(){return this.styles.strokeDash}set strokeDash(e){this.styles.strokeDash=e}resize(e,t,r,n){let i=this.bounds,s=0===i.width?1:i.width,a=0===i.height?1:i.height;if("right"===r)for(let t of this.vertices)t._x=i.right-e/s*(i.right-t.x);else for(let t of this.vertices)t._x=i.left+e/s*(t.x-i.left);if("top"===n)for(let e of this.vertices)e._y=i.top+t/a*(e.y-i.top);else for(let e of this.vertices)e._y=i.bottom-t/a*(i.bottom-e.y);this._updateBounds()}_updateBounds(){let e=[],t=[];if(this._d){const r=this._d.match(/[a-zA-Z][^a-zA-Z]*/g),n=" ";r.forEach((r=>{let i=r.slice(1).trim().split(n).map(Number);for(let[r,n]of i.entries())r%2==0?e.push(n):t.push(n)}))}else e=this.vertices.map((e=>e.x)),t=this.vertices.map((e=>e.y));let r=Math.min(...e),n=Math.min(...t),i=Math.max(...e),s=Math.max(...t),a=i-r,o=s-n;if(this._bounds=new c(r,n,a,o),this.type===Ot.Line||this.type===Ot.Path){let e=this.styles.strokeWidth?this.styles.strokeWidth:1;r===i?this._bounds=new c(r-e/2,n,i-r+e,s-n):n===s&&(this._bounds=new c(r,n-e/2,i-r,s-n+e))}}addVertex(e,t,r){let n=new re(e,t,this,this.vertexCounter++);this.vertices.splice(r,0,n)}sortVertices(e,t){this.vertices.sort(((t,r)=>t[e]-r[e])),t&&this.vertices.reverse();for(let e=0;e<this.segments.length;e++){let t=this.segments[e];t.vertex1=this.vertices[e],t.vertex2=this.vertices[(e+1)%this.vertices.length]}}sortVerticesByData(e,t,r){let n;n=r?(t,n)=>r.indexOf(t.dataScope.getValue(e))-r.indexOf(n.dataScope.getAttributeValue(e)):(t,r)=>t.dataScope.getAttributeValue(e)<r.dataScope.getAttributeValue(e)?-1:1,this.vertices.sort(n),t&&this.vertices.reverse();for(let e=0;e<this.segments.length;e++){let t=this.segments[e];t.vertex1=this.vertices[e],t.vertex2=this.vertices[(e+1)%this.vertices.length]}}getSVGPathData(){if(this._d)return this._d;let e=t.path(),r=this._getD3CurveFunction(this.curveMode)(e);r.lineStart();for(let e of this.vertices)r.point(e.x,e.y);return this.closed&&r.point(this.vertices[0].x,this.vertices[0].y),r.lineEnd(),e._}get firstVertex(){return this.vertices[0]}get firstSegment(){return this.segments[0]}get lastVertex(){return this.vertices[this.vertices.length-1]}get lastSegment(){return this.segments[this.segments.length-1]}_getD3CurveFunction(e){switch(e){case oe.Natural:return t.curveNatural;case oe.Basis:return t.curveBasis;case oe.BumpX:return t.curveBumpX;case oe.BumpY:return t.curveBumpY;case oe.Linear:return t.curveLinear;case oe.Step:return t.curveStep;case oe.CatmullRom:return t.curveCatmullRom;case oe.Cardinal:return t.curveCardinal;case oe.Bundle:return t.curveBundle.beta(.5);default:return t.curveLinear}}get vxShape(){return this._vxShape}get vxWidth(){return this._vxWidth}get vxHeight(){return this._vxHeight}get vxRadius(){return this._vxRadius}get vxFillColor(){return this._vxFillColor}get vxStrokeColor(){return this._vxStrokeColor}get vxStrokeWidth(){return this._vxStrokeWidth}get vxOpacity(){return this._vxOpacity}get sourceAnchor(){return this._sourceAnchor}get targetAnchor(){return this._targetAnchor}get sourceOffset(){return this._sourceOffset}get targetOffset(){return this._targetOffset}}function se(e,t){const r=k.getSVG();let n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttribute("d",e.getSVGPathData()),r.appendChild(n);let i=n.getTotalLength();return n.getPointAtLength(i*t)}function ae(e){return e instanceof ie&&e.source&&e.target}const oe={Natural:"natural",Basis:"basis",BumpX:"bumpX",BumpY:"bumpY",Bundle:"bundle",Linear:"linear",Step:"step",CatmullRom:"CatmullRom",Cardinal:"cardinal"};function le(e,t,r){const n=e.match(/[a-zA-Z][^a-zA-Z]*/g),i=",";return n.map((e=>{const n=e[0],s=e.slice(1).trim();if("M"===n||"L"===n||"T"===n){const[e,a]=s.split(i).map(Number);return`${n}${e+t} ${a+r}`}if("C"===n){const e=s.split(i).map(Number);return`${n}${e[0]+t} ${e[1]+r} ${e[2]+t} ${e[3]+r} ${e[4]+t} ${e[5]+r}`}if("Q"===n){const e=s.split(i).map(Number);return`${n}${e[0]+t} ${e[1]+r} ${e[2]+t} ${e[3]+r}`}if("A"===n){const e=s.split(i).map(Number);return`${n}${e[0]} ${e[1]} ${e[2]} ${e[3]} ${e[4]} ${e[5]+t} ${e[6]+r}`}return"Z"===n||"z"===n?n:e})).join(" ")}class ue extends ie{constructor(e){super(e),this._type=Ot.Arc,this.closed=!0,this._x="x"in e?e.x:100,this._y="y"in e?e.y:100,this._innerRadius="innerRadius"in e?e.innerRadius:100,this._outerRadius="outerRadius"in e?e.outerRadius:200,this._thickness="thickness"in e?e.thickness:this._outerRadius-this._innerRadius,this._startAngle="startAngle"in e?e.startAngle:0,this._endAngle="endAngle"in e?e.endAngle:90,this._sr=ce(this._startAngle),this._er=ce(this._endAngle),this._direction="direction"in e?e.direction:ee.ANTI_CLOCKWISE;let t=this._x+this._innerRadius*Math.cos(this._sr),r=this._y-this._innerRadius*Math.sin(this._sr),n=this._x+this._innerRadius*Math.cos(this._er),i=this._y-this._innerRadius*Math.sin(this._er),s=this._x+this._outerRadius*Math.cos(this._sr),a=this._y-this._outerRadius*Math.sin(this._sr),o=this._x+this._outerRadius*Math.cos(this._er),l=this._y-this._outerRadius*Math.sin(this._er);this._setVertices([[t,r],[s,a],[o,l],[n,i]])}get type(){return 0===this._innerRadius?Ot.Pie:Ot.Arc}get innerRadius(){return this._innerRadius}get outerRadius(){return this._outerRadius}get thickness(){return this._outerRadius-this._innerRadius}get direction(){return this._direction}get x(){return this._x}get y(){return this._y}get startAngle(){return this._startAngle}get endAngle(){return this._endAngle}get angle(){return this._endAngle<this._startAngle?this._endAngle+360-this._startAngle:this._endAngle-this._startAngle}setAngles(e,t){this._startAngle=e,this._endAngle=t,this._sr=ce(this._startAngle),this._er=ce(this._endAngle),this.vertices[0]._x=this._x+this._innerRadius*Math.cos(this._sr),this.vertices[0]._y=this._y-this._innerRadius*Math.sin(this._sr),this.vertices[1]._x=this._x+this._outerRadius*Math.cos(this._sr),this.vertices[1]._y=this._y-this._outerRadius*Math.sin(this._sr),this.vertices[2]._x=this._x+this._outerRadius*Math.cos(this._er),this.vertices[2]._y=this._y-this._outerRadius*Math.sin(this._er),this.vertices[3]._x=this._x+this._innerRadius*Math.cos(this._er),this.vertices[3]._y=this._y-this._innerRadius*Math.sin(this._er)}_updateBounds(){let e=this.vertices.map((e=>e.x)),t=this.vertices.map((e=>e.y)),r=Math.min(...e),n=Math.min(...t),i=Math.max(...e)-r,s=Math.max(...t)-n;this._bounds=new c(r,n,i,s)}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._innerRadius=this._innerRadius,e._outerRadius=this._outerRadius,e._startAngle=this._startAngle,e._endAngle=this._endAngle,e._thickness=this._thickness,e._direction=this._direction,e._sr=this._sr,e._er=this._er}getSVGPathData(){let e=this._endAngle<this._startAngle?this._endAngle+360-this._startAngle:this._endAngle-this._startAngle,t=e>180?1:0;return["M "+this.vertices[0].x+", "+this.vertices[0].y,"L "+this.vertices[1].x+", "+this.vertices[1].y,"A "+[this._outerRadius,this._outerRadius,e,t,0,this.vertices[2].x,this.vertices[2].y].join(" "),"L "+this.vertices[3].x+", "+this.vertices[3].y,"A "+[this._innerRadius,this._innerRadius,e,t,1,this.vertices[0].x,this.vertices[0].y].join(" ")].join(" ")}}function ce(e){return e*Math.PI/180}function he(e){return 180*e/Math.PI}function de(e){return(e%360+360)%360}function fe(e,t,r,n){let i=e-r,s=n-t;return Math.atan2(s,i)*(180/Math.PI)}class pe{constructor(e){this._attr2value={},this._dt=e,this._tuples=this._dt.data}isFullTable(){return 0===Object.keys(this._attr2value).length}isEmpty(){return 0==this._tuples.length}get numTuples(){return this._tuples.length}get attributes(){return Object.keys(this._attr2value)}get dataTable(){return this._dt}get filters(){return this._attr2value}merge(e){let t=new pe(this._dt);for(let e in this._attr2value)t=t.cross(e,this._attr2value[e]);for(let r in e._attr2value)t=t.cross(r,e._attr2value[r]);return t}cross(e,t){if(e in this._attr2value&&this._attr2value[e]!==t)return console.warn("Conflict in attribute values when merging dataScope:",e,this._attr2value[e],t),this;let r=this.clone();return r._attr2value[e]=t,r._updateTuples(e,t),r}clone(){let e=new pe(this._dt);return e._attr2value=Object.assign({},this._attr2value),e._tuples=this._tuples.map((e=>e)),e}getAttributeValue(e){let t=this.getAttributeValues(e);return t.length,t[0]}getAttributeValues(e){let t=this._tuples.map((t=>t[e]));return t=[...new Set(t)],t}getUniqueAttributeValues(e){let t=this._tuples.map((t=>t[e]));return[...new Set(t)]}hasAttribute(e){return e in this._attr2value}getAttributeType(e){return this._dt.getAttributeType(e)}aggregateNumericalAttribute(e,r){let n=this._tuples.map((t=>t[e]));switch(r){case ge.Max:return Math.max(...n);case ge.Min:return Math.min(...n);case ge.Avg:case ge.Mean:return t.mean(n);case ge.Median:return t.median(n);case ge.Count:return n.length;case ge.Percentile25:return t.quantile(n,.25);case ge.Percentile75:return t.quantile(n,.75);case ge.Sum:default:return t.sum(n)}}_updateTuples(e,t){this._tuples=this._tuples.filter((r=>r[e]==t))}get tuples(){return this._tuples}}function _e(e){return"vertex"==e.type||"segment"==e.type?e.dataScope?e.dataScope:e.parent.dataScope:e.dataScope}const ge={Max:"max",Min:"min",Avg:"avg",Median:"median",Sum:"sum",Count:"count",Mean:"mean",Percentile25:"percentile 25",Percentile75:"percentile 75"};class ye{constructor(e,t){this._id=Ot.TreeData+Nt(),this.initialize(e,t)}initialize(e,t){this.url=t,this._data=e,this._nodeList=[],this._linkList=[],this._nodeHash={},this._traverse(e,this._nodeList,this._linkList),this._nodeTable=new Lt(this._nodeList,"nodes"),this._linkTable=new Lt(this._linkList,"links"),this._nodeTable.tree=this,this._linkTable.tree=this}get nodeTable(){return this._nodeTable}get linkTable(){return this._linkTable}_traverse(e,t,r,n=0){let i={};Ee in e||(e[Ee]="n"+t.length),t.push(i),e._depth=n;for(let s in e)if("children"==s&&e[s]&&e[s].length>0)for(let i of e[s]){let s=this._traverse(i,t,r,n+1);r.push({parent:e[Ee],child:s})}else i[s]=e[s];return this._nodeHash[i[Ee]]=i,i[Ee]}getNodeDataScope(e){return new pe(this._nodeTable).cross(Pt,e[Pt])}getNode(e){return this._nodeHash[e]}getRoot(){return this._nodeTable.data[0]}getChildren(e){let t=e[Ee],r=[],n=this._linkTable.data,i=this._nodeTable.data;for(let e in n)if(n[e].parent==t){let t=n[e].child,s=i.findIndex((e=>e[Ee]==t));r.push(i[s])}return r}getParent(e){let t=e[Ee],r=this._linkTable.data,n=this._nodeTable.data;for(let e in r)if(r[e].child==t){let t=r[e].parent,i=n.findIndex((e=>e[Ee]==t));return n[i]}}}function me(e){return e.dataScope._dt.tree}class be{constructor(e,t){this._id=Ot.NetworkData+Nt(),this.initialize(e,t)}initialize(e,t){this.url=t,this._nodeTable=new Lt(e.nodes,this._id+"_nodes"),this._linkTable=new Lt(e.links,this._id+"_links"),this._nodeTable.graph=this,this._linkTable.graph=this,this._rawNodes=e.nodes,this._rawLinks=e.links,this._nodeHash={};for(let t of e.nodes)this._nodeHash[t[Ee]]=t}get nodeTable(){return this._nodeTable}get linkTable(){return this._linkTable}get nodeList(){return this._rawNodes}get linkList(){return this._rawLinks}getNode(e){return this._nodeHash[e]}getLinks(e){let t=e[Ee],r=this._rawLinks,n=[];for(let e in r)r[e].target!==t&&r[e].source!==t||n.push(r[e]);return n}buildNodeHierarchy(e){let t={};return t[Ee]="root",xe(t,this._rawNodes,e),new ye(t,this.url)}}function ve(e){return e.dataScope._dt.graph}function xe(e,t,r){if(0===t.length||0===r.length)return;"children"in e||(e.children=[]);let n={};for(let e of t){let t=e[r[0]];t in n||(n[t]=[]),n[t].push(e)}if(1===r.length)for(let t in n){let r={children:n[t]};r[Ee]=t,e.children.push(r)}else for(let t in n){let i={};i[Ee]=t,e.children.push(i),xe(i,n[t],r.slice(1))}}const Ee="id";function we(e,t){if(t.hasAttribute(e))return!0;if(t.tree&&t.tree.nodeTable.hasAttribute(e.split(".")[1]))return!0;throw new Error(["Attribute",e,"does not exist in the table",t.name].join(" "))}const Ae=Object.freeze({Boolean:"boolean",Integer:"integer",Number:"number",Date:"date",String:"string"});function Ce(e){var t=Object.values(Ae);for(let r=0;r<e.length;r++){let n=e[r];if(null!=n){for(let e=0;e<t.length;e++)Re[t[e]](n)||(t.splice(e,1),e-=1);if(1==t.length)return t[0]}}return t[0]}const Re={boolean:function(e){return"true"===e||"false"===e||!0===e||!1===e||"[object Boolean]"==toString.call(e)},integer:function(e){return Re.number(e)&&(e=+e)==~~e},number:function(e){return!isNaN(+e)&&"[object Date]"!=toString.call(e)},date:function(e){let t=new Date(e);return null!=t&&!isNaN(t)},string:function(e){return!0}};function ke(e,r){let n={};switch(r){case Ae.Boolean:n.trueCount=e.filter((e=>e)).length,n.falseCount=e.filter((e=>!e)).length;break;case Ae.Date:n.min=t.min(e),n.max=t.max(e),n.extent=[n.min,n.max],n.unique=[...new Set(e)];break;case Ae.String:n.unique=[...new Set(e)];break;default:n.min=t.min(e),n.max=t.max(e),n.extent=[n.min,n.max],n.mean=t.mean(e),n.median=t.median(e),n.unique=[...new Set(e)]}return n}function Se(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=Ae.String&&s!=Ae.Date&&s!=Ae.Number&&s!=Ae.Integer)throw new Error("Densify only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Ot.Line,Ot.Circle,Ot.Rect,Ot.Area].indexOf(e.type)<0)return!1;if(e.dataScope){let t=T(e,e.scene);for(let e of t)if(e.dataScope.numTuples>1)return!0;return!1}return!0}(t))throw new Error("The "+t.type+" is not dividable");switch(t.type){case Ot.Line:return function(e,t,r){let n,i,s=T(e);for(let a of s){let s=a.dataScope?a.dataScope:new pe(r),o=r.getUniqueAttributeValues(t).map((e=>s.cross(t,e)));o=o.filter((e=>!e.isEmpty())),1===o.length&&o.push(o[0].clone());let l=Object.assign({},a.styles);for(let e of re.styles)a[e]&&(l[e]=a[e]);let u=a.vertices[0].x,c=a.vertices[0].y,h=[],d=a.vertices[1].x-u,f=a.vertices[1].y-c;for(let e=0;e<o.length;e++)h.push([u+e*d/(o.length-1),c+e*f/(o.length-1)]);l.vertices=h,l.type="path";let p=Ct(l);i||(i=p.id),p._classId=i,p.dataScope=s,p._updateBounds(),p._refBounds=p.bounds.clone();let _=a.parent;_.addChild(p),_.removeChild(a);for(let[e,t]of p.vertices.entries())t.dataScope?t.dataScope=t.dataScope.merge(o[e]):t.dataScope=o[e];a==e&&(n=p)}return n}(t,r,i);case Ot.Circle:return function(e,t,r,n,i){let s,a,o=T(e),l=r.getAttributeType(t);for(let u of o){let o=u.dataScope?u.dataScope:new pe(r),c=r.getUniqueAttributeValues(t).map((e=>o.cross(t,e)));c=l==Ae.Number?c:c.filter((e=>!e.isEmpty()));let h=c.length;if(h<3)throw new Error("INSUFFICIENT_DATA_SCOPES");let d=n||90,f=360/h,p=[],_=[],g="clockwise"==(i||"clockwise")?-1:1;for(let e=0;e<c.length;e++){let t=d+g*e*f;_[e]=t;let r=Te(u.x,u.y,u.radius,_[e]);p.push(r)}let y=Object.assign({},u.styles);y.vertices=p,y.type="polygon",y.x=u.x,y.y=u.y,y.radius=u.radius;let m=Ct(y);a||(a=m.id),m._classId=a,m.dataScope=o;let b=u.parent;b.addChild(m),b.removeChild(u);for(let[e,t]of m.vertices.entries())t._polarAngle=_[e],e>=c.length?t.dataScope=o.merge(c[2*c.length-1-e]):t.dataScope=o.merge(c[e]);u===e&&(s=m)}return s}(t,r,i);case Ot.Rect:return function(e,t,r,n){let i,s,a=T(e),o=t||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);for(let t of a){let a=n.getAttributeType(r),l=t.dataScope?t.dataScope:new pe(n),u=n.getUniqueAttributeValues(r).map((e=>l.cross(r,e)));u=a==Ae.Number?u:u.filter((e=>!e.isEmpty())),1===u.length&&u.push(u[0].clone()),a!=Ae.Number&&a!=Ae.Date||u.sort(((e,t)=>e._attr2value[r]>t._attr2value[r]?1:-1));let c=Object.assign({},t.styles),h=t.vertices[0].x,d=t.vertices[0].y,f=t.vertices[t.vertices.length-2].x,p=t.vertices[t.vertices.length-2].y,g=[],y=f-h,m=p-d;for(let e=0;e<u.length;e++)g.push(o==J.VERTICAL?[f,d+e*m/(u.length-1)]:[h+e*y/(u.length-1),d]);for(let e=0;e<u.length;e++)g.push(o==J.VERTICAL?[h,d+(u.length-1-e)*m/(u.length-1)]:[h+(u.length-1-e)*y/(u.length-1),p]);c.vertices=g,c.type="area";let b=Ct(c);s||(s=b.id),b._classId=s,b.dataScope=l,b.orientation=o,b.baseline=o===J.HORIZONTAL?_.BOTTOM:_.LEFT;let v=t.parent;v.addChild(b),v.removeChild(t);for(let[e,t]of b.vertices.entries())e>=u.length?t.dataScope=l.merge(u[2*u.length-1-e]):t.dataScope=l.merge(u[e]);t===e&&(i=b)}return i}(t,n,r,i)}}function Te(e,t,r,n){return[r*Math.cos(ce(n))+e,t-r*Math.sin(ce(n))]}class Oe extends X{constructor(e,t,r){super(e),this._channel=t,this._elem=r}get channel(){return this._channel}get element(){return this._elem}}const Ie=Object.freeze({X:"x",Y:"y",WIDTH:"width",HEIGHT:"height",RADIUS:"radius",FILLCOLOR:"fillColor",STROKECOLOR:"strokeColor",FILLGRADIENT:"fillGradient",TEXT:"text",ANGLE:"angle",THICKNESS:"thickness",AREA:"area",FONTSIZE:"fontSize",RADIALDISTANCE:"radialDistance",STROKEWIDTH:"strokeWidth",OPACITY:"opacity",VISIBILITY:"visibility",STRENGTH:"strength"});function Ne(e,t){delete t._encodings[De(e.element)][e.channel]}function Le(e,t){let r=e.scene._encodings[De(e)],n=[];if(r&&(n=n.concat(Object.values(r))),t){let t=e.scene;for(let r in t._encodings){let i=r.split("_");i.pop(),i.join("_")===e.classId&&(n=n.concat(Object.values(t._encodings[r])))}}return n}function Ve(e,t,r){for(let n in r._encodings){let i=r._encodings[n];if(i[t]&&i[t].attribute==e)return i[t]}return null}function Pe(e,t){let r=e.scene._encodings[De(e)];return r&&r[t]?r[t]:null}function De(e){if(e.classId)return e.classId;if("vertex"==e.type&&e.dataScope){if(e.parent.type===Ot.Area){let t=e.parent.vertices.indexOf(e)<e.parent.vertices.length/2;return e.parent.classId+"_v"+(t?0:e.parent.vertices.length-1)}return e.parent.classId+"_v"}return"vertex"==e.type?e.parent.classId+"_v"+e.parent.vertices.indexOf(e):"segment"==e.type&&e.dataScope?e.parent.classId+"_s":"segment"==e.type?e.parent.classId+"_s"+e.parent.segments.indexOf(e):null}function Be(e,t){if(0==e.children.length)return[];let r=D(e),n=e.type===Ot.Composite?e.children:[e.children[0]],i=Object.keys(r._encodings),s=[];for(let e of n){let t=e;for(;t;){if(t.classId&&s.indexOf(t.classId)<0&&s.push(t.classId),t.type===Ot.Glyph){t.children.forEach((e=>s.push(e.classId)));break}if(!t.children)break;t=t.children[0]}}let a=[];for(let e of i)for(let n of s)0===e.indexOf(n)&&r._encodings[e][t]&&a.push(r._encodings[e][t]);return a}function Me(e){let t=Pe(e,"y"),r=Pe(e,"height");return t||r&&r.scales[0].domain[0]<0}function Ge(e){let t=Pe(e,"x"),r=Pe(e,"width");return t||r&&r.scales[0].domain[0]<0}function je(e,t){let r=function(e){let t=e.parent,r=[];for(;t.type!==Ot.Scene;)r.push(t),t=t.parent;return r}(e);for(let e of r)if(Pe(e,t))return!1;return r.length>=2?r[r.length-2]:e}function ze(e,t,r){switch(e.type){case Ot.Rect:case Ot.Path:case Ot.Line:case Ot.Area:!function(e,t,r){for(let n of e.vertices)Fe(n,t,r);e._updateBounds(),e._refBounds&&e._refBounds.translate(t,r)}(e,t,r);break;case Ot.Group:case Ot.Collection:case Ot.Glyph:!function(e,t,r){for(let n of e.children)ze(n,t,r);e._layout&&(void 0!==e._layout._left&&(e._layout._left+=t),void 0!==e._layout._top&&(e._layout._top+=r),e._layout._cellBounds&&e._layout._cellBounds.forEach((e=>e.translate(t,r))))}(e,t,r);break;case"segment":!function(e,t,r){Fe(e.vertex1,t,r),Fe(e.vertex2,t,r)}(e,t,r);break;default:!function(e,t,r){e._x+=t,e._y+=r,e._refBounds&&e._refBounds.translate(t,r)}(e,t,r)}}function Fe(e,t,r){e._x+=t,e._y+=r}function Ue(e,t,r){switch(t){case"x":We(e,r);break;case"y":Ye(e,r);break;case"width":!function(e,t){e.resize(t,e.height)}(e,r);break;case"height":!function(e,t){e.resize(e.width,t)}(e,r);break;case"radius":e.radius=r;break;case"strength":e._strength=r;break;case"area":e.type===Ot.Circle?e.radius=Math.sqrt(r/Math.PI):e.type===Ot.Rect&&e.resize(Math.sqrt(r),Math.sqrt(r)),e._updateBounds();break;case"text":e._text=r;break;case"curveMode":e.curveMode=r;break;case"baseline":e.baseline=r;break;case"angle":[Ot.Arc,Ot.Pie].includes(e.type)&&function(e,t){e._endAngle=de(e._startAngle+t),e._sr=ce(e._startAngle),e._er=ce(e._endAngle),e.vertices[0]._x=e._x+e._innerRadius*Math.cos(e._sr),e.vertices[0]._y=e._y-e._innerRadius*Math.sin(e._sr),e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er),e.vertices[3]._x=e._x+e._innerRadius*Math.cos(e._er),e.vertices[3]._y=e._y-e._innerRadius*Math.sin(e._er)}(e,r);break;case"startAngle":!function(e,t){let r=e.angle;e._startAngle=t,e._endAngle=de(e._startAngle+r),e._sr=ce(e._startAngle),e._er=ce(e._endAngle),e.vertices[0]._x=e._x+e._innerRadius*Math.cos(e._sr),e.vertices[0]._y=e._y-e._innerRadius*Math.sin(e._sr),e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er),e.vertices[3]._x=e._x+e._innerRadius*Math.cos(e._er),e.vertices[3]._y=e._y-e._innerRadius*Math.sin(e._er)}(e,r);break;case"thickness":!function(e,t){He(e,e._innerRadius+t)}(e,r);break;case"innerRadius":!function(e,t){e._innerRadius=t,e.vertices[0]._x=e._x+e._innerRadius*Math.cos(e._sr),e.vertices[0]._y=e._y-e._innerRadius*Math.sin(e._sr),e.vertices[3]._x=e._x+e._innerRadius*Math.cos(e._er),e.vertices[3]._y=e._y-e._innerRadius*Math.sin(e._er)}(e,r);break;case"outerRadius":He(e,r);break;case"radialDistance":{let t=Te(e.parent.x,e.parent.y,r,e.polarAngle);We(e,t[0]),Ye(e,t[1]);break}case"visibility":e.visibility=r;break;default:if("vertex"===e.type)e[t]=r;else if(e instanceof _t)for(let n of e.children)Ue(n,t,r);else e.styles[t]=r}}function He(e,t){e._outerRadius=t,e.vertices[1]._x=e._x+e._outerRadius*Math.cos(e._sr),e.vertices[1]._y=e._y-e._outerRadius*Math.sin(e._sr),e.vertices[2]._x=e._x+e._outerRadius*Math.cos(e._er),e.vertices[2]._y=e._y-e._outerRadius*Math.sin(e._er)}function We(e,t){"vertex"==e.type?e._x=t:ze(e,t-e.x,0)}function Ye(e,t){"vertex"==e.type?e._y=t:ze(e,0,t-e.y)}class Xe extends ie{constructor(e){super(e)}get width(){return this.vertices[1].x-this.vertices[0].x}get height(){return this.vertices[2].y-this.vertices[1].y}get left(){return this.vertices[0].x}get top(){return this.vertices[0].y}get right(){return this.vertices[1].x}get bottom(){return this.vertices[2].y}get area(){return this.width*this.height}resize(e,t,r,n){e!==this.width&&("right"===r?(this.vertices[1]._x=this.refBounds.right,this.vertices[2]._x=this.refBounds.right,this.vertices[0]._x=this.vertices[1]._x-e,this.vertices[3]._x=this.vertices[0]._x):(this.vertices[0]._x=this.refBounds.left,this.vertices[3]._x=this.refBounds.left,this.vertices[1]._x=this.vertices[0]._x+e,this.vertices[2]._x=this.vertices[1]._x)),t!==this.height&&("top"===n?(this.vertices[0]._y=this.refBounds.top,this.vertices[1]._y=this.refBounds.top,this.vertices[3]._y=this.vertices[0]._y+t,this.vertices[2]._y=this.vertices[3]._y):(this.vertices[2]._y=this.refBounds.bottom,this.vertices[3]._y=this.refBounds.bottom,this.vertices[0]._y=this.vertices[3]._y-t,this.vertices[1]._y=this.vertices[0]._y))}get leftSegment(){return this.segments[3]}get rightSegment(){return this.segments[1]}get topSegment(){return this.segments[0]}get bottomSegment(){return this.segments[2]}}class qe extends ie{constructor(e){super(e),this._type=Ot.Area,this.closed=!0,this._orientation="orientation"in e?e.orientation:void 0,this._baseline="baseline"in e?e.baseline:void 0,e&&"vertices"in e&&this.segments.push(new ne(this.vertices[this.vertices.length-1],this.vertices[0],this,this.segmentCounter++))}get topLeftVertex(){return this._orientation===J.HORIZONTAL?this.vertices[0]:this.vertices[this.vertices.length-1]}get bottomLeftVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length-1]:this.vertices[this.vertices.length/2]}get topRightVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length/2-1]:this.vertices[0]}get bottomRightVertex(){return this._orientation===J.HORIZONTAL?this.vertices[this.vertices.length/2]:this.vertices[this.vertices.length/2-1]}get baseline(){return this._baseline}set baseline(e){this._baseline=e}get orientation(){return this._orientation}set orientation(e){this._orientation=e}get firstVertexPair(){return[this.vertices[0],this.vertices[this.vertices.length-1]]}get width(){return this.vertices[this.vertices.length/2].x-this.vertices[0].x}get height(){return this.vertices[this.vertices.length/2].y-this.vertices[0].y}get left(){return this.vertices[0].x}get top(){return this.vertices[0].y}copyPropertiesTo(e){super.copyPropertiesTo(e),e._baseline=this._baseline,e._orientation=this._orientation}getSVGPathData(){return super.getSVGPathData()+" z"}}class Ke extends X{constructor(e,t){super(e),this._encs=[t],this._initialized=!1}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}get initialized(){return this._initialized}set initialized(e){this._initialized=e}}class Ze{constructor(e,t){this._event=t,this._type=e}get event(){return this._event}get type(){return this._type}}const $e=Object.freeze({ELEMENT:"element",MOUSE:"mouse",ATTRIBUTE:"attribute",WIDGET:"widget",KEYBOARD:"keyboard"});Object.freeze({INPUT:"input",HOVER:"hover",BRUSH:"brush",BRUSH_X:"brushX",BRUSH_Y:"brushY",CLICK:"click"});class Je extends W{constructor(e){super(e)}storeValues(e,t){this._storedValues={};let r=T(e);for(let e of r)this._storedValues[e.id]=e[t]}_restoreValues(e){let t=this.outputVar.channel;e.forEach((e=>{e.styles[t]=this._storedValues[e.id]}))}run(){super.run();let e=this.inputVars.find((e=>e instanceof Ke)),t=this.outputVar,r=T(t.element);if(e){let r=e.encodings.find((e=>e.channel==t.channel&&De(e.element)==De(t.element)));for(let e of r.scales){let t=r.getElements(e);this._doMapping(t,e,r.attrValues,r),this._updateRefBounds(t,e,r)}}else this._restoreValues(r);let n=this._getUsableCondEncodings();n.length>0&&this._doCondEncoding(r,n.map((e=>e.condEncoding))),p(["vertex","segment"].includes(t.element.type)?t.element.parent:t.element)}_updateRefBounds(e,t,r){switch(this.outputVar.channel){case"width":e.forEach((e=>{e._refBounds.setWidth(t.rangeExtent)}));break;case"height":e.forEach((e=>{e._refBounds.setHeight(t.rangeExtent)}));break;case"radius":e.forEach((e=>{e._refBounds.setWidth(2*t.rangeExtent,_.CENTER),e._refBounds.setHeight(2*t.rangeExtent,_.MIDDLE)}));break;case"x":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let n=e.parent._refBounds;e.parent._refBounds=new c(r.flipScale?t.range[1]:t.range[0],n.top,t.rangeExtent,n.height)}));break;case"y":"vertex"!=e[0].type&&"segment"!=e[0].type||e.forEach((e=>{let n=e.parent._refBounds;e.parent._refBounds=new c(n.left,r.flipScale?t.range[0]:t.range[1],n.width,t.rangeExtent)}))}}_doMapping(e,t,r,n){switch(this.outputVar.channel){case"width":t.domain[0]<0&&e[0]instanceof Xe?function(e,t,r){for(let n=0;n<e.length;n++){let i=e[n],s=i.refBounds.left+t.map(0),a=i.refBounds.left+t.map(r[i.id]);ze(i.leftSegment,s-i.leftSegment.x,0),ze(i.rightSegment,a-i.rightSegment.x,0)}}(e,t,r):t.domain[0]<0&&e[0]instanceof qe||(e[0].type===Ot.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===J.VERTICAL)switch(n){case"left":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.left))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.left+t.map(r[e.id]))));break;case"right":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.right-t.map(r[e.id])))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.right)));break;case"center":console.log("center");for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"x",n.refBounds.center-t.map(r[e.id])/2))),T(n.topRightVertex,n).forEach((e=>Ue(e,"x",n.refBounds.center+t.map(r[e.id])/2)))}}(e,t,r):this._doStandardMapping(e,t,r));break;case"height":t.domain[0]<0&&e[0]instanceof Xe?function(e,t,r){for(let n=0;n<e.length;n++){let i=e[n],s=i.refBounds.bottom-t.map(0),a=i.refBounds.bottom-t.map(r[i.id]);ze(i.bottomSegment,0,s-i.bottomSegment.y),ze(i.topSegment,0,a-i.topSegment.y)}}(e,t,r):t.domain[0]<0&&e[0]instanceof qe?function(e,t,r){for(let n of e){let e=O(n.topLeftVertex,[n]);for(let i of e)Ue(i,"y",n.refBounds.bottom-t.map(r[i.id]));O(n.bottomLeftVertex,[n]).forEach((e=>Ue(e,"y",n.refBounds.bottom-t.map(0))))}}(e,t,r):e[0].type===Ot.Area?function(e,t,r){let n=e[0].baseline;if(e[0].orientation===J.HORIZONTAL)switch(n){case"bottom":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.bottom-t.map(r[e.id])))),T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.bottom)));break;case"top":for(let n of e)T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.top+t.map(r[e.id])))),T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.top)));break;case"middle":for(let n of e)T(n.topLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.middle-t.map(r[e.id])/2))),T(n.bottomLeftVertex,n).forEach((e=>Ue(e,"y",n.refBounds.middle+t.map(r[e.id])/2)))}}(e,t,r):this._doStandardMapping(e,t,r);break;case"text":this._doTextMapping(e,r);break;case"fillGradient":!function(e,t,r,n){for(let i of e){let e=i.vertices.map((e=>r[e.id])),s=Math.min(...e),a=Math.max(...e),o="horizontal"===i.orientation?new v({x1:0,y1:100,x2:0,y2:0}):new v({x1:0,y1:0,x2:100,y2:0});if(o.addStop(0,t.map(s),1),n._mapping){let e=Object.keys(n._mapping).map((e=>parseFloat(e))).sort();for(let r of e)r>s&&r<a&&o.addStop(100*(r-s)/(a-s),t.map(r),1)}else"divergingColor"===t.type&&o.addStop(100*-s/(a-s),t.map(0),1);"sequentialColor"===t.type&&o.addStop(100*-s/(a-s),t.map(0),1),o.addStop(100,t.map(a),1),i.fillColor=o}}(e,t,r,n);break;default:this._doStandardMapping(e,t,r)}}_doTextMapping(e,t){let r=this.outputVar.channel;e.forEach((e=>{Ue(e,r,t[e.id])}))}_doStandardMapping(e,t,r){let n=this.outputVar.channel;e.forEach((e=>{let i=t.map(r[e.id]);Ue(e,n,i),e instanceof ie&&e.firstVertex&&e.firstVertex.shape&&"strokeColor"===n&&e.vertices.forEach((e=>e.fillColor=i))}))}_doCondEncoding(e,t){for(let r of e){let e=t.map((e=>e.evalResult[r.id])).every((e=>e||void 0===e));t[0]._efxFn(e,t[0].trigger.elements[0],r,t[0].trigger.mouseEvent)}}_updateElement(e,t,r,n){let i;"object"==typeof n&&e.triggerElement?"property"in n?i=e.triggerElement[n.property]:"attribute"in n&&(i=e.triggerElement.dataScope.getAttributeValue(n.attribute)):i=n,["x","y"].includes(r)&&"offset"in n&&(i+=n.offset),Ue(t,r,i)}_getUsableCondEncodings(){return this.inputVars.filter((e=>e instanceof K))}}class Qe extends X{constructor(e,t,r){super(e),this._property=t,this._elem=r}get property(){return this._property}get element(){return this._elem}}const et=Object.freeze({AXIS_ORIENTATION:"axisOrientation",AXIS_PATH_POSITION:"axisPathPosition",AXIS_TICK_SIZE:"axisTickSize",AXIS_TICK_OFFSET:"axisTickOffset",AXIS_TICKS_POSITION:"axisTicksPosition",AXIS_LABELS_POSITION:"axisLabelsPosition",AXIS_TITLE_POSITION:"axisTitlePosition",AXIS_LABEL_OFFSET:"axisLabelOffset",AXIS_LABEL_FORMAT:"axisLabelFormat",AXIS_FONT_SIZE:"axisFontSize",LEGEND_POSITION:"legendPosition",GRIDLINES_POSITION:"gridlinesPosition",INCLUDE_ZERO:"includeZero",FLIP_SCALE:"flipScale",RANGE_START:"rangeStart",RANGE_EXTENT:"rangeExtent",BASE_LINE:"baseline"});function tt(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.createOneWayDependency(Y.EVAL_BBOX);switch(t.connect(n,r),e.type){case Ot.Circle:case Ot.Polygon:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"radius",e),a=t.getVariable(q.CHANNEL,"area",e);t.connect(s,n),t.connect(r,n),t.connect(i,n),t.connect(a,n);break}case Ot.Area:case Ot.Line:case Ot.BezierCurve:case Ot.Path:case Ot.Image:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Ot.Rect:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.getVariable(q.CHANNEL,"area",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n),t.connect(o,n);break}case Ot.PointText:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"text",e);t.connect(r,n),t.connect(i,n),t.connect(s,n);break}case Ot.Ring:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"innerRadius",e),a=t.getVariable(q.CHANNEL,"outerRadius",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n);break}case Ot.Pie:case Ot.Arc:{let r=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"innerRadius",e),a=t.getVariable(q.CHANNEL,"outerRadius",e),o=t.getVariable(q.CHANNEL,"startAngle",e),l=t.getVariable(q.CHANNEL,"endAngle",e),u=t.getVariable(q.CHANNEL,"angle",e),c=t.getVariable(q.CHANNEL,"thickness",e);t.connect(r,n),t.connect(i,n),t.connect(s,n),t.connect(a,n),t.connect(o,n),t.connect(l,n),t.connect(u,n),t.connect(c,n);break}}n.run()}function rt(e,t){let r=t.findVariablesByElement(e);for(let e in r){let n=r[e];for(let e of n)t.deleteVariable(e)}}function nt(e,t){let r=t.findVariable(q.CHANNEL,[e.channel,e.element]);r||console.warn("cannot find encoding to remove from the dep graph");let n=r.incomingDataflow;t.deleteOperator(n)}function it(e,t){if(e.type===Ot.Axis){let r=t.findVariable(q.PROPERTY,[et.AXIS_PATH_POSITION,e]).incomingDataflow;t.deleteOperator(r),r=t.findVariable(q.PROPERTY,[et.AXIS_TICKS_POSITION,e]).incomingDataflow,t.deleteOperator(r),r=t.findVariable(q.PROPERTY,[et.AXIS_LABELS_POSITION,e]).incomingDataflow,t.deleteOperator(r)}else if(e.type===Ot.Gridlines){let r=t.findVariable(q.PROPERTY,[et.GRIDLINES_POSITION,e]).incomingDataflow;t.deleteOperator(r)}}function st(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.createOneWayDependency(Y.EVAL_BBOX);t.connect(n,o),t.connect(i,o),t.connect(s,o),t.connect(a,o),t.connect(o,r),o.run()}function at(e,t,r){let n=r.getVariable(q.BOUNDS,e),i=r.getVariable(q.BOUNDS,t),s=r.getIncomingDataflowOperator(Y.EVAL_BBOX,n),a=i.outgoingEdges.find((e=>e.fromNode===i&&e.toNode===s));if(a&&r.disconnect(i,s,a),e.layout){let n=r.getVariable(q.CHANNEL,"x",t),i=r.getIncomingDataflowOperator(lt(e.layout.type),n);i&&r.deleteOperator(i)}}function ot(e,t,r){let n=r.getVariable(q.BOUNDS,e),i=r.getVariable(q.BOUNDS,t),s=r.getIncomingDataflowOperator(Y.EVAL_BBOX,n);r.connect(i,s),r.connect(s,n),e.layout&&ct(e,e.layout,r)}function lt(e){switch(e){case U.GRID:return Y.GRID_LAYOUT;case U.STACK:return Y.STACK_LAYOUT;case U.PACKING:return Y.PACK_LAYOUT;case U.FORCE:return Y.FORCE_LAYOUT;case U.DIRECTED:return Y.DIRECTED_LAYOUT;case U.TIDYTREE:return Y.TIDY_TREE_LAYOUT;case U.TREEMAP:return Y.TREEMAP_LAYOUT;case U.STRATA:return Y.STRATA_LAYOUT;case U.CIRCULAR:return Y.CIRCULAR_LAYOUT;case U.CLUSTER:return Y.CLUSTER_LAYOUT}}function ut(e,t,r){let n=r.getVariable(q.ORDER,e),i=r.getOutgoingDataflowOperator(lt(t.type),n);r.deleteOperator(i)}function ct(e,t,r){let n=t?t.type:"none",i=n===U.TREEMAP?j(e)[0]:e.children[0];if(!i)return;let s=r.getVariable(q.CHANNEL,"width",i),a=r.getVariable(q.CHANNEL,"height",i),o=r.getVariable(q.ORDER,e),l=r.getVariable(q.CHANNEL,"x",i),u=r.getVariable(q.CHANNEL,"y",i),c=r.getOutgoingDataflowOperator(lt(n),o);if(r.connect(s,c),r.connect(a,c),r.connect(o,c),r.connect(c,l),r.connect(c,u),r.disconnectChannelVarFromBBoxOperator(s),r.disconnectChannelVarFromBBoxOperator(a),i.type===Ot.Arc||i.type===Ot.Pie){let e=r.getVariable(q.CHANNEL,"angle",i),t=r.getVariable(q.CHANNEL,"thickness",i);r.connect(e,c),r.connect(t,c)}else if(i.type===Ot.Circle){let e=r.getVariable(q.CHANNEL,"area",i),t=r.getVariable(q.CHANNEL,"radius",i);r.connect(e,c),r.connect(t,c),r.disconnectChannelVarFromBBoxOperator(e),r.disconnectChannelVarFromBBoxOperator(t)}else if(i.type===Ot.Rect){let e=r.getVariable(q.CHANNEL,"area",i);r.connect(e,c),r.disconnectChannelVarFromBBoxOperator(e)}if(c.run(),i.links&&ht(i,r),i.children&&i.children[0]){let e=r.getVariable(q.BOUNDS,i.children[0]),t=r.getVariable(q.CHANNEL,"x",i).incomingDataflow;t&&r.connect(e,t),r.disconnectChannelVarFromBBoxOperator(e)}}function ht(e,t){let r=e.links[0],n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"x",r),s=t.getVariable(q.CHANNEL,"strokeWidth",r),a=t.getVariable(q.CHANNEL,"strength",r),o=t.createOneWayDependency(Y.LINK_PLACER);t.connect(n,o),t.connect(s,o),t.connect(a,o),t.connect(o,i)}function dt(e,t){let r=t.getVariable(q.PROPERTY,et.AXIS_ORIENTATION,e),n=t.getVariable(q.BOUNDS,e.elements[0].parent),i=t.getVariable(q.PROPERTY,et.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(q.PROPERTY,et.AXIS_TICK_OFFSET,e),o=t.getVariable(q.PROPERTY,et.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),u=t.getVariable(q.PROPERTY,et.AXIS_TICKS_POSITION,e);t.connect(i,l),t.connect(a,l),t.connect(o,l),t.connect(l,u),l.run();let c=t.getVariable(q.PROPERTY,et.AXIS_LABEL_OFFSET,e),h=t.getVariable(q.PROPERTY,et.AXIS_LABEL_FORMAT,e),d=t.getVariable(q.PROPERTY,et.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(q.PROPERTY,et.AXIS_LABELS_POSITION,e);t.connect(i,f),t.connect(c,f),t.connect(h,f),t.connect(d,f),t.connect(f,p),f.run();let _=t.getVariable(q.PROPERTY,et.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(q.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function ft(e,t){let r=t.getVariable(q.PROPERTY,et.AXIS_ORIENTATION,e),n=t.getVariable(q.BOUNDS,B(e.elements[0])),i=t.getVariable(q.PROPERTY,et.AXIS_PATH_POSITION,e),s=t.createOneWayDependency(Y.AXIS_PATH_PLACER);t.connect(r,s),t.connect(n,s),t.connect(s,i),s.run();let a=t.getVariable(q.PROPERTY,et.AXIS_TICK_OFFSET,e),o=t.getVariable(q.PROPERTY,et.AXIS_TICK_SIZE,e),l=t.createOneWayDependency(Y.AXIS_TICKS_PLACER),u=t.getVariable(q.PROPERTY,et.AXIS_TICKS_POSITION,e);t.connect(i,l),t.connect(a,l),t.connect(o,l),t.connect(l,u),l.run();let c=t.getVariable(q.PROPERTY,et.AXIS_LABEL_OFFSET,e),h=t.getVariable(q.PROPERTY,et.AXIS_LABEL_FORMAT,e),d=t.getVariable(q.PROPERTY,et.AXIS_FONT_SIZE,e),f=t.createOneWayDependency(Y.AXIS_LABELS_PLACER),p=t.getVariable(q.PROPERTY,et.AXIS_LABELS_POSITION,e);t.connect(i,f),t.connect(c,f),t.connect(h,f),t.connect(d,f),t.connect(f,p),f.run();let _=t.getVariable(q.PROPERTY,et.AXIS_TITLE_POSITION,e),g=t.createOneWayDependency(Y.AXIS_TITLE_PLACER);t.connect(i,g),t.connect(g,_),g.run();let y=t.getVariable(q.BOUNDS,e),m=t.getIncomingDataflowOperator(Y.EVAL_BBOX,y);t.connect(u,m),t.connect(p,m),t.connect(m,y)}function pt(e,t){let r=t.getVariable(q.BOUNDS,B(e.elements[0])),n=t.getVariable(q.PROPERTY,et.GRIDLINES_POSITION,e),i=t.createOneWayDependency(Y.GRIDLINES_PLACER);t.connect(r,i),t.connect(i,n),i.run();let s=t.getVariable(q.BOUNDS,e),a=t.getIncomingDataflowOperator(Y.EVAL_BBOX,s);t.connect(n,a),t.connect(a,s)}class _t{constructor(){this._id=this.type+Nt(),this._type=Ot.Group,this._dataScope=void 0,this._bounds=void 0,this._layout=void 0,this._children=[],this._sortBy={}}get id(){return this._id}get type(){return this._type}contains(e,t){return this.bounds.contains(e,t)}get children(){return this._children}addChild(e){this.children.indexOf(e)>=0||(e.parent&&e.parent.removeChild(e),this.children.push(e),e.parent=this)}addChildAt(e,t){e.parent&&e.parent.removeChild(e),this.children.splice(t,0,e),e.parent=this}removeChild(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=null)}removeChildAt(e){this.children[e].parent=null,this.children.splice(e,1)}removeAll(){for(let e of this.children)e.parent=null;this._children=[]}get dataScope(){return this._dataScope}set dataScope(e){if(this._dataScope=e,void 0===e)for(let t of this.children)t.dataScope=e;else for(let t of this.children)t.dataScope?t.dataScope=t.dataScope.merge(e):t.dataScope=e}getInternalEncodings(e){if(0==this.children.length)return[];let t=this.children[0],r=this.getScene(),n=Object.keys(r.encodings),i=[];for(;t;){if(t.classId&&i.indexOf(t.classId)<0&&i.push(t.classId),t.type===Ot.Glyph){t.children.forEach((e=>i.push(e.classId)));break}if(!t.children)break;t=t.children[0]}let s=[];for(let t of n){let n=t.split("_");for(let a of i)n[0]==a&&r.encodings[t][e]&&s.push(r.encodings[t][e])}return s}get firstChild(){return this.children[0]}get lastChild(){return this.children[this.children.length-1]}set layout(e){if(this._layout=e,e&&(e.group=this),ct(this,e,this.scene._depGraph),this.children&&this.children.length>0){let e=j(this,!0);for(let t of e)this.scene.onChange(q.CHANNEL,"x",t)}}get layout(){return this._layout}get bounds(){return this._bounds||this._updateBounds(),this._bounds}get refBounds(){let e=this.children.map((e=>e.refBounds)),t=Math.min(...e.map((e=>e.left))),r=Math.min(...e.map((e=>e.top))),n=Math.max(...e.map((e=>e.right))),i=Math.max(...e.map((e=>e.bottom)));return new c(t,r,n-t,i-r)}get x(){return this.bounds.x}get y(){return this.bounds.y}_updateBounds(){let e=this.children;if(e.length>0){this._bounds=e[0].bounds.clone();for(let t=1;t<e.length;t++)"hidden"!=e[t].visibility&&(this._bounds=this._bounds.union(e[t].bounds))}else this._bounds=new c(0,0,0,0)}set visibility(e){this._visibility="hidden"==e?e:"visible";for(let t of this.children)t.visibility=e}get visibility(){return this._visibility?this._visibility:"visible"}get scene(){return D(this)}}class gt extends _t{constructor(){super(),this._type=Ot.Collection,this._id=this.type+"_"+Nt(),this._classId=this.id,this._childrenOrder=void 0}get classId(){return this._classId}contains(e,t){if([Ot.Arc,Ot.Pie,Ot.Polygon,Ot.Area].indexOf(this.firstChild.type)>=0){let n=this.getSVGPathData();if(""!==n){let i=r.getContext(),s=new Path2D(n);return i.lineWidth=Math.max(this.strokeWidth,2.5),i.stroke(s),i.isPointInPath(s,e,t)}}return this._bounds.contains(e,t)}getSVGPathData(){let e="";for(let t of this.children)if(t.getSVGPathData)e+=t.getSVGPathData();else if(t.bounds){let r=t.bounds;e+=["M",r.left,r.top].join(" "),e+=["L",r.right,r.top].join(" "),e+=["L",r.right,r.bottom].join(" "),e+=["L",r.left,r.bottom,"Z"].join(" ")}return e}}class yt extends _t{constructor(e){if(super(),this._type=Ot.Glyph,this._id=this.type+"_"+Nt(),this._classId=this._id,e)for(let t of e)this.addChild(t)}get classId(){return this._classId}}class mt extends ie{constructor(e){super(e),this._type=Ot.BezierCurve,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL}get type(){return this._type}get orientation(){return this._orientation}copyPropertiesTo(e){super.copyPropertiesTo(e),e._orientation=this._orientation}getSVGPathData(){if(this._d)return this._d;let e="M ";return e+=this.vertices[0].x+" "+this.vertices[0].y+" ",e+="C "+this.vertices[1].x+" "+this.vertices[1].y+" ",e+=this.vertices[2].x+" "+this.vertices[2].y+" ",e+=this.vertices[3].x+" "+this.vertices[3].y,e}}class bt extends x{constructor(e){super(e),this._type=Ot.Circle,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._radius="radius"in e?e.radius:100,"strokeColor"in this.styles||(this.styles.strokeColor="#ccc"),"fillColor"in this.styles||(this.styles.fillColor="none"),"strokeWidth"in this.styles||(this.styles.strokeWidth=1),"strokeDash"in this.styles||(this.styles.strokeDash="none")}get x(){return this._x}get y(){return this._y}get radius(){return this._radius}set radius(e){this._radius=e}get area(){return Math.PI*Math.pow(this._radius,2)}_updateBounds(){if(this._rotate){let e=R(this._x,this._y,this._rotate[1],this._rotate[2],this._rotate[0]);this._bounds=new c(e.x-this._radius,e.y-this._radius,2*this._radius,2*this._radius)}else this._bounds=new c(this._x-this._radius,this._y-this._radius,2*this._radius,2*this._radius)}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._radius=this._radius}getSVGPathData(){return["M",this._x,this._y,"m",-this._radius,", 0 a",this._radius,",",this._radius,"0 1,0",2*this._radius,",0 a",this._radius,",",this._radius,"0 1,0",-2*this._radius,",0"].join(" ")}}class vt extends x{constructor(e){super(e),this._type=Ot.Image,this._src=e.src,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._width="width"in e?e.width:100,this._height="height"in e?e.height:100}get src(){return this._src}set src(e){this._src=e}get width(){return this._width}set width(e){this._width=e,this._updateBounds()}get height(){return this._height}set height(e){this._height=e,this._updateBounds()}get x(){return this._x}set x(e){this._x=e,this._updateBounds()}get y(){return this._y}set y(e){this._y=e,this._updateBounds()}get bounds(){return this._bounds||this._updateBounds(),this._bounds}_updateBounds(){this._bounds=new c(this._x,this._y,this._width,this._height)}copyPropertiesTo(e){e.attrs=Object.assign({},this.attrs),e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone()),e.x=this._x,e.y=this._y,e.width=this._width,e.height=this._height,e.src=this._src}}class xt extends ie{constructor(e){super(e)}get x1(){return this.vertices[0].x}get y1(){return this.vertices[0].y}get x2(){return this.vertices[1].x}get y2(){return this.vertices[1].y}get x(){return(this.vertices[0].x+this.vertices[1].x)/2}get y(){return(this.vertices[0].y+this.vertices[1].y)/2}set x(e){let t=e-this.x;this.vertices[0]._x+=t,this.vertices[1]._x+=t}set y(e){let t=e-this.y;this.vertices[0]._y+=t,this.vertices[1]._y+=t}set x1(e){this.vertices[0]._x=e}set x2(e){this.vertices[1]._x=e}set y1(e){this.vertices[0]._y=e}set y2(e){this.vertices[1]._y=e}}class Et extends x{constructor(e){super(e),this._type=Ot.PointText,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._text="text"in e?e.text:"",this._anchor="anchor"in e?e.anchor:[_.CENTER,_.MIDDLE],this._textPath=void 0,this._textPathOffset="50%","fontSize"in this.styles||(this.styles.fontSize="12px"),"fontFamily"in this.styles||(this.styles.fontFamily="Arial, sans-serif"),"fontWeight"in this.styles||(this.styles.fontWeight="normal"),"fillColor"in this.styles||(this.styles.fillColor="black"),"backgroundColor"in e&&(this._backgroundColor=e.backgroundColor),"borderWidth"in e&&(this._borderWidth=e.borderWidth),"borderColor"in e&&(this._borderColor=e.borderColor),this._rotate="rotate"in e?e.rotate:void 0}hasBackground(){return this._backgroundColor||this._borderStroke||this._borderColor}_updateBounds(){let e,t,r=function(e,t,r){let n=S.getContext();n.font=t;let i=n.measureText(e);return i.fontBoundingBoxAscent?{width:i.width,height:i.fontBoundingBoxAscent+i.fontBoundingBoxDescent}:i.actualBoundingBoxAscent?{width:i.width,height:i.actualBoundingBoxAscent+i.actualBoundingBoxDescent}:{width:i.width,height:r}}(this._text,[this.fontWeight,this.fontSize,this.fontFamily].join(" "),parseFloat(this.fontSize)),n=r.width,i=r.height;switch(this._anchor[0]){case _.LEFT:e=this._x;break;case _.RIGHT:e=this._x-n;break;case _.CENTER:e=this._x-n/2;break;default:e=this._x}switch(this._anchor[1]){case _.TOP:t=this._y;break;case _.BOTTOM:t=this._y-i;break;case _.MIDDLE:default:t=this._y-i/2}if(this._rotate&&3===this._rotate.length){let r=[{x:e,y:t},{x:e+n,y:t},{x:e,y:t+i},{x:e+n,y:t+i}].map((e=>R(e.x,e.y,this._rotate[1],this._rotate[2],this._rotate[0]))),s=Math.min(...r.map((e=>e.x))),a=Math.max(...r.map((e=>e.x))),o=Math.min(...r.map((e=>e.y))),l=Math.max(...r.map((e=>e.y)));this._bounds=new c(s,o,a-s,l-o)}else this._bounds=new c(e,t,n,i)}get x(){return this._x}get y(){return this._y}get text(){return this._text}get anchor(){return this._anchor}get fontFamily(){return this.styles.fontFamily}get fontSize(){return this.styles.fontSize}get fontWeight(){return this.styles.fontWeight}get textPath(){return this._textPath}get textPathOffset(){return this._textPathOffset}get backgroundColor(){return this._backgroundColor?this._backgroundColor:"#fff"}get borderColor(){return this._borderColor?this._borderColor:"#ccc"}get borderWidth(){return this._borderWidth?this._borderWidth:1}copyPropertiesTo(e){e.styles=Object.assign({},this.styles),this._dataScope&&(e._dataScope=this._dataScope.clone()),e._x=this._x,e._y=this._y,e._text=this._text,e._anchor=[this._anchor[0],this._anchor[1]],e._backgroundColor=this._backgroundColor,e._borderColor=this._borderColor,e._borderStroke=this._borderStroke}}class wt extends ie{constructor(e){super(e),this._type=Ot.Polygon,this.closed=!0,"x"in e&&(this._x=e.x),"y"in e&&(this._y=e.y),"radius"in e&&(this._radius=e.radius)}get radius(){return this._radius}get x(){return this._x}get y(){return this._y}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._radius=this._radius}}class At extends ie{constructor(e){super(e),this._type=Ot.Ring,this.closed=!0,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._innerRadius="innerRadius"in e?e.innerRadius:100,this._outerRadius="outerRadius"in e?e.outerRadius:200}get innerRadius(){return this._innerRadius}get outerRadius(){return this._outerRadius}get x(){return this._x}get y(){return this._y}get thickness(){return this._outerRadius-this._innerRadius}copyPropertiesTo(e){super.copyPropertiesTo(e),e._x=this._x,e._y=this._y,e._innerRadius=this._innerRadius,e._outerRadius=this._outerRadius}getSVGPathData(){return["M "+this._x+" "+this._y,"m 0, -"+this._outerRadius,"a "+this._outerRadius+","+this._outerRadius+", 0, 1, 0, 1, 0","Z","m 0 "+(this._outerRadius-this._innerRadius),"a "+this._innerRadius+", "+this._innerRadius+", 0, 1, 1, -1, 0","Z"].join(" ")}}function Ct(e){let t=null;switch(e.type){case Ot.Circle:t=new bt(e);break;case Ot.Line:var r="x1"in e?e.x1:0,n="y1"in e?e.y1:0,i="x2"in e?e.x2:100,s="y2"in e?e.y2:100;e.vertices=[[r,n],[i,s]],t=new xt(e);break;case Ot.Rect:var a="top"in e?e.top:0,o="left"in e?e.left:0,l="width"in e?e.width:50,u="height"in e?e.height:30;e.vertices=[[o,a],[o+l,a],[o+l,a+u],[o,a+u]],t=new Xe(e);break;case Ot.PointText:t=new Et(e);break;case Ot.Image:t=new vt(e);break;case Ot.BundledPath:case Ot.Chord:case Ot.Path:t=new ie(e);break;case Ot.Area:t=new qe(e);break;case Ot.Ring:t=new At(e);break;case Ot.Arc:t=new ue(e);break;case Ot.BezierCurve:"vertices"in e||(e.vertices=[[0,100],[20,120],[80,180],[100,200]]),t=new mt(e);break;case Ot.Polygon:t=new wt(e)}return t&&t._updateBounds(),t}function Rt(e){let t=new gt;return e.addChild(t),e._itemMap[t.id]=t,t}function kt(e){return new yt(e)}function St(e){switch(e.type){case Ot.Collection:return function(e){let t=Rt(e.scene);for(let r=0;r<e.children.length;r++){let n=e.children[r];t.addChild(St(n))}if(t._classId=e.classId,e._layout){let r=e._layout.clone();t._layout=r,r.group=t}return t._updateBounds(),t}(e);case Ot.Glyph:return function(e){let t=new yt;for(let r of e.children)t.addChild(St(r));t._classId=e.classId,e._dataScope&&(t.dataScope=e._dataScope.clone());return t}(e);default:return function(e){let t=Ct({type:e.type});e.copyPropertiesTo(t),t._classId=e.classId,t._bounds=e.bounds.clone(),e._refBounds||(e._refBounds=e.bounds.clone());t._refBounds=e._refBounds.clone(),e.dataScope&&(t._dataScope=e.dataScope.clone());if(e.vertices)for(let r=0;r<e.vertices.length;r++)e.vertices[r].dataScope&&(t.vertices[r]._dataScope=e.vertices[r].dataScope.clone());return t}(e)}}const Tt=Object.freeze({Rect:"rect",Circle:"circle",Line:"line",Ring:"ring",Path:"path",Image:"image",PointText:"text",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord"}),Ot=Object.freeze({Area:"area",Rect:"rect",Ellipse:"ellipse",Circle:"circle",Pie:"pie",Ring:"ring",Arc:"arc",BezierCurve:"bezierCurve",BundledPath:"bundledPath",Chord:"chord",Line:"line",Path:"path",Image:"image",PointText:"text",Collection:"collection",Group:"group",Composite:"composite",Scene:"scene",Axis:"axis",Glyph:"glyph",Legend:"legend",Polygon:"polygon",Gridlines:"gridlines",LinearGradient:"LinearGradient",Link:"link",DataTable:"datatable",Layout:"layout",NetworkData:"networkdata",TreeData:"treedata"}),It=Object.freeze({Axis:"axis",Legend:"legend",Gridlines:"gridlines"});function Nt(){return Date.now().toString(36)+"_"+Math.random().toString(36).slice(2)}class Lt{constructor(e,t,r){this._id=Ot.DataTable+Nt(),this.initialize(e,t,r)}initialize(e,t,r){if(this.url=t,this._rawData=JSON.parse(JSON.stringify(e)),this._data=e,this._dateMap=new Map,this._attributes=0===this._data.length?[]:Object.keys(this._data[0]),this._newAttribute=0,r)this._attrTypes=r;else{this._attrTypes={};for(let e of this._attributes)this._attrTypes[e]=Ce(this.data.map((t=>t[e]))),"year"==e.toLowerCase()&&this._attrTypes[e]==Ae.Integer&&(this._attrTypes[e]=Ae.Date)}this._validate(this.data,this._attrTypes),this._attrSummaries={};for(let e of this._attributes)this._attrSummaries[e]=ke(this.data.map((t=>t[e])),this._attrTypes[e]);this._attributes.indexOf(Pt)<0&&this._addAttribute(Pt,Ae.String,this.data.map(((e,t)=>"r"+t)))}clone(){let e=[];for(let t of this._data)e.push(Object.assign({},t));let t=new Lt(e,this.url,Object.assign({},this._attrTypes));return t.sourceDataTable=this,t}get id(){return this._id}get name(){return this.url?function(e){var t=e.indexOf("\\")>=0?e.lastIndexOf("\\"):e.lastIndexOf("/"),r=e.substring(t);0!==r.indexOf("\\")&&0!==r.indexOf("/")||(r=r.substring(1));return r}(this.url):this.id}get data(){return this._data}getEncodableAttributes(e){switch(e){case"x":case"y":case"width":case"height":case"radius":case"fillColor":case"strokeColor":case"text":return this.numericAttributes.concat(this.nonNumericAttributes);default:return this.numericAttributes}}_addAttribute(e,t,r){this._data.forEach(((t,n)=>t[e]=r[n])),e!==Pt&&this._rawData.forEach(((t,n)=>t[e]=r[n])),this._attrTypes[e]=t,this._attributes.push(e),this._attrSummaries[e]=ke(r,t)}getAttributeType(e){return this._attrTypes[e]}get attributes(){return this._attributes}getAttributeSummary(e){return this._attrSummaries[e]}getAttributeValues(e){return this.data.map((t=>t[e]))}getUniqueAttributeValues(e){return this._attrSummaries[e].unique}orderAttributeValues(e,t){this._attrSummaries[e].unique=t}getRowCount(){return this.data.length}hasAttribute(e){return this._attributes.indexOf(e)>=0}parseAttributeAsDate(e,r){let n=t.timeParse(r);for(let t of this.data){let r=t[e];null==r||null==r?(r="",t[e]=new Date(1899,11,31).getTime()):t[e]=n(r).getTime(),this._dateMap.set(t[e],r)}this._attrTypes[e]=Ae.Date,this._attrSummaries[e]=ke(this.data.map((t=>t[e])),Ae.Date)}getRawValue(e,t){return this.getAttributeType(e)===Ae.Date?this._dateMap.get(t).toString():t}get nonNumericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!=Ae.Number&&this._attrTypes[t]!=Ae.Integer&&t!=Lt.RowID&&e.push(t);return e.sort(((e,t)=>this.getUniqueAttributeValues(e).length-this.getUniqueAttributeValues(t).length)),e}get numericAttributes(){let e=[];for(let t in this._attrTypes)this._attrTypes[t]!==Ae.Number&&this._attrTypes[t]!==Ae.Integer||t==Lt.RowID||e.push(t);return e}getAttributesByType(e){let t=[];for(let r in this._attrTypes)this._attrTypes[r]===e&&r!=Lt.RowID&&t.push(r);return t}summarize(){for(let e of this._attributes)this._attrSummaries[e]=ke(this.data.map((t=>t[e])),this._attrTypes[e])}_validate(e,t){for(let r of e)for(let e in t){let n,i=t[e],s=r[e];if(null==r[e]||null==r[e])switch(i){case Ae.Boolean:n=!1;break;case Ae.Date:n=new Date(1899,11,31).getTime();break;case Ae.String:n="";break;default:n=0}else switch(i){case Ae.Boolean:n=s;break;case Ae.Date:n=Number.isInteger(s)?new Date(s,0).getTime():new Date(s+"").getTime(),this._dateMap.set(n,s);break;case Ae.String:n=s.toString();break;default:n=s}r[e]=n}}}function Vt(e){let t=_e(e);if(t)return t.dataTable}const Pt="mascot_rowId";function Dt(e,t){return fetch(t,{method:e}).then((e=>e.ok?e.text():(console.log(e.status),Promise.reject({status:e.status,statusText:e.statusText})))).catch((e=>(console.log(e),Promise.reject({status:e.status,statusText:e.statusText}))))}class Bt extends X{constructor(e,t){super(e),this._elem=t}get element(){return this._elem}}class Mt extends X{constructor(e,t){super(e),this._item=t}get element(){return this._item}}class Gt{constructor(e){this._id=e+"_"+Nt(),this._type=e,this._vars=[],this._edges=[]}get vars(){return this._vars}get edges(){return this._edges}run(){console.log("-",this._type)}}class jt{constructor(e,t,r=!0){this._id="e_"+Nt(),this._fromNode=e,this._toNode=t,this._isDirected=r}get id(){return this._id}get fromNode(){return this._fromNode}get toNode(){return this._toNode}get isDirected(){return this._isDirected}get operator(){return this._fromNode instanceof W||this._fromNode instanceof Gt?this._fromNode:this._toNode}}class zt extends X{constructor(e,t,r){super(e),this._attribute=t,this._dataset=r}get attribute(){return this._attribute}get dataset(){return this._dataset}}class Ft extends X{constructor(e,t){super(e),this._encs=[t]}addLinkedEncoding(e){this._encs.push(e)}get encodings(){return this._encs}}class Ut extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=e.encodings[0],r=this.inputVars.find((e=>e instanceof zt)).attribute,n=e.encodings[0].dataTable.getAttributeType(e.encodings[0].attribute),i=[];for(let t of e.encodings){let e=this._computeAttrValues(t,n);i=i.concat(e)}if("angle"===t.channel&&[Ot.Arc,Ot.Pie].indexOf(t.element.type)>=0)for(let n of e.encodings)for(let e of n.scales){let i=n.getElements(e).map((e=>n.attrValues[e.id]));e.domain=t._preferredDomain?t._preferredDomain:n.dataTable.tree?[0,n.dataTable.tree.getRoot()[r]]:this._getDomainForNumbers(i),console.log("domain for",r,e.domain)}else{let s;s=n==Ae.String||"text"===e.encodings[0].channel?this._getDomainForStrings(i):this._getDomainForNumbers(i);for(let r of e.encodings)for(let e of r.scales)e.domain=t._preferredDomain?t._preferredDomain:s.slice();console.log("domain for",r,s)}}_getDomainForNumbers(e){let t=this.outputVar.encodings[0],r=[Math.min(...e),Math.max(...e)];if(t.includeZero&&r[0]>0&&(r=[0,Math.max(...e)]),t.mapping)r=Object.keys(t.mapping),r=r.map((e=>parseFloat(e))),r.sort(((e,t)=>e-t));else if("sequentialColor"===t.scales[0].type){if(r[0]<0&&r[1]>0){let e=Math.max(Math.abs(r[0]),Math.abs(r[1]));r=[-e,e]}}else if("angle"===t.channel){r=[0,Object.values(e).reduce(((e,t)=>e+t),0)]}return r}_getDomainForStrings(e){let t,r=this.outputVar,n=r.encodings[0];return t="count"==r.encodings[0].aggregator?[0,Math.max(...e)]:Array.from(new Set(e)),n.mapping&&(t=Object.keys(n.mapping)),t}_computeAttrValues(e,t){let r=T(e.element),n={};if(e.element.type===Ot.Area&&["width","height","fillGradient"].indexOf(e.channel)>=0)for(let t of r)for(let r of t.vertices)n[r.id]=_e(r).aggregateNumericalAttribute(e.attribute,e.aggregator);else switch(t){case Ae.Boolean:break;case Ae.Date:for(let t of r)n[t.id]=_e(t).getAttributeValue(e.attribute);break;case Ae.String:try{if("count"==e.aggregator)for(let t of r)n[t.id]=_e(t).getAttributeValues(e.attribute).length;else for(let t of r)n[t.id]=_e(t).getAttributeValue(e.attribute)}catch(t){throw new Error("Cannot bind "+this.channel+" to "+e.attribute+" : "+t)}break;default:if(e.attribute.startsWith("parent.")||e.attribute.startsWith("child.")){let t=e.dataTable.tree.nodeTable,i=e.attribute.split(".")[0],s=e.attribute.split(".")[1];for(let e of r){let r=_e(e).getAttributeValue(i);n[e.id]=new pe(t).cross(Ee,r).getAttributeValue(s)}}else for(let t of r)n[t.id]=_e(t).aggregateNumericalAttribute(e.attribute,e.aggregator)}return e.attrValues=n,Object.values(n)}}class Ht{constructor(e,r){switch(this._id="scale_"+Nt(),this._type=e,r&&(this._args=r),e){case"linear":this._scale=t.scaleLinear();break;case"point":this._scale=t.scalePoint();break;case"ordinal":this._scale=t.scaleOrdinal();break;case"ordinalColor":this._scale=t.scaleOrdinal(t[r.scheme]);break;case"power":this._scale=t.scalePow().exponent(2);break;case"sqrt":this._scale=t.scalePow().exponent(.5);break;case"log":this._scale=t.scaleLog();break;case"identity":case"time":this._scale=t.scaleTime();break;case"sequentialColor":r.scheme?this._scale=t.scaleSequential(t[r.scheme]):this._scale=t.scaleSequential()}}get id(){return this._id}get domain(){return this._scale.domain()}set domain(e){this._scale.domain(e)}get range(){return this._scale.range()}set range(e){this._scale.range(e)}get rangeExtent(){let e=this._scale.range();return Math.abs(e[1]-e[0])}set rangeExtent(e){let t=this._scale.range();t[0]<t[1]?this._scale.range([t[0],t[0]+e]):this._scale.range([t[1]+e,t[1]])}get type(){return this._type}map(e){return this._scale(e)}}const Wt=["schemeBrBG","schemePRGn","schemePiYG","schemePuOr","schemeRdBu","schemeRdGy","schemeRdYlBu","schemeRdYlGn","schemeSpectral"],Yt=["schemeBlues","schemeGreens","schemeGreys","schemeOranges","schemePurples","schemeReds","schemeBuGn","schemeBuPu","schemeGnBu","schemeOrRd","schemePuBuGn","schemePuBu","schemePuRd","schemeRdPu","schemeYlGnBu","schemeYlGn","schemeYlOrBr","schemeYlOrRd"];class Xt extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar,t=e.encodings,r=t[0],n=r.channel;for(let i=0;i<r.scales.length;i++){let s=r.scales[i],a=r.getElements(s),o=this._buildRange(n,a,r,e);if(o)for(let e of t)e.scales[i].range=o;console.log("range",r.scales[i].range)}e.initialized=!0}_buildRange(e,t,r,n){return"x"===e?this._buildXRange(t,r,n):"y"===e?this._buildYRange(t,r,n):["width","height","radius","area","fontSize","radialDistance","strokeWidth"].includes(e)?this._buildSizeRange(t,r,n):e.indexOf("Color")>0||"fillGradient"===e?this._buildColorRange(t,r):"angle"===e?this._buildAngleRange(t,r):"thickness"===e?this._buildThicknessRange(t,r,n):void 0}_buildThicknessRange(e,t,r){let n=e.map((e=>e.outerRadius-e.innerRadius));return[0,r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:Math.max(...n)]}_buildAngleRange(e,t){return[0,360]}_buildColorRange(e,r){if(r.mapping){return r.scales[0].domain.map((e=>r.mapping[e+""]))}if("sequentialColor"===r.scales[0].type){let e=this.outputVar,n=r.scales[0].domain;for(let i of e.encodings)if(!r.colorScheme)for(let e of i.scales){let r=e.domain;e._scale=t.scaleSequential(n[0]<0&&n[1]>0?t.interpolatePuOr:t.interpolateTurbo),e._scale.domain(r)}}if((Wt.indexOf(r.colorScheme)>=0||Yt.indexOf(r.colorScheme)>=0)&&"ordinalColor"===r.scales[0].type){let e=this.outputVar,n=r.scales[0].domain;for(let i of e.encodings)for(let e of i.scales){let i=e.domain;e._scale=t.scaleOrdinal(t[r.colorScheme][n.length]),e._scale.domain(i)}}}_buildSizeRange(e,t,r){let n,i;return n=0,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:Math.max(...e.map((e=>"radius"===t.channel?e.refBounds.width/2:"strokeWidth"===t.channel?e.strokeWidth:"radialDistance"===t.channel?e.parent.radius:"area"===t.channel?e.type===Ot.Circle?Math.PI*Math.pow(e.radius,2):e.width*e.height:"fontSize"===t.channel?parseFloat(e.fontSize):e.refBounds[t.channel]))),[0,0+i]}_buildXRange(e,t,r){let n,i;switch(t.scales[0].type,e[0].type){case"vertex":case"segment":var s=e[0].parent.refBounds?e[0].parent.refBounds:e[0].parent.bounds;n=r.initialized?t.getRangeStart(e[0]):s.left,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:s.width;break;default:n=r.initialized?t.getRangeStart(e[0]):B(e[0]).bounds.left+e[0].bounds.width/2,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:450}return t.flipScale?[n+i,n]:[n,n+i]}_buildYRange(e,t,r){let n,i;switch(t.scales[0].type,e[0].type){case"vertex":case"segment":var s=e[0].parent.refBounds?e[0].parent.refBounds:e[0].parent.bounds;n=r.initialized?t.getRangeStart(e[0]):s.top,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:s.height;break;default:n=r.initialized?t.getRangeStart(e[0]):B(e[0]).bounds.top+e[0].bounds.height/2,i=r.initialized?t.getRangeExtent(e[0]):t._preferredRangeExtent?t._preferredRangeExtent:450}return t.flipScale?[n,n+i]:[n+i,n]}}class qt extends W{constructor(e){super(e)}run(){super.run()}}class Kt extends _t{constructor(e){super(),this._type=Ot.Axis,this._id=this._type+Nt(),this._attribute=void 0,this._channel=void 0,this._orientation=void 0,this._strokeColor="strokeColor"in e?e.strokeColor:"#555",this._textColor="textColor"in e?e.textColor:"#555",this._fontSize="fontSize"in e?e.fontSize:"12px",this._tickOffset="tickOffset"in e?e.tickOffset:0,this._tickSize="tickSize"in e?e.tickSize:5,this._tickAnchor=e.tickAnchor,this._tickVisible=!("tickVisible"in e)||e.tickVisible,this._pathVisible=!("pathVisible"in e)||e.pathVisible,this._labelOffset="labelOffset"in e?e.labelOffset:this._tickSize+this._tickOffset+3,this._labelFormat="labelFormat"in e?e.labelFormat:"",this._titleOffset="titleOffset"in e?e.titleOffset:40,this._rotateYTitle=!("rotateTitle"in e&&!e.rotateTitle),this._showTitle=!("titleVisible"in e)||e.titleVisible,this._labelRotation="labelRotation"in e?e.labelRotation:0,this._ticks=new _t,this._ticks._id=this._id+"_ticks",this.addChild(this._ticks),this._labels=new _t,this._labels._id=this._id+"_labels",this.addChild(this._labels),this._title=new Et({text:this._titleText,fillColor:this._textColor,fontWeight:"bold"}),this._title._id=this.id+"_title",this.addChild(this._title),this._showTitle||(this._title.visibility="hidden"),this._pathPos=void 0}get pathPos(){return this._pathPos}get attribute(){return this._attribute}get channel(){return this._channel}get orientation(){return this._orientation}get tickSize(){return this._tickSize}get tickOffset(){return this._tickOffset}get tickAnchor(){return this._tickAnchor?this._tickAnchor:"x"===this._channel||"width"===this._channel?"center":"middle"}get labelOffset(){return this._labelOffset}get tickValues(){return this._tickValues}get labelValues(){return this._labelValues}get titleOffset(){return this._titleOffset}get boundsWithoutTitle(){let e=this.children.filter((e=>e.type!==Ot.PointText)),t=e[0].bounds.clone();for(let r=1;r<e.length;r++)"hidden"!=e[r].visibility&&(t=t.union(e[r].bounds));return t}}const Zt="top",$t="bottom",Jt="left";function Qt(e,r,n,i){let s,a=e.domain,o=e.range;switch(e.type){case"linear":case"log":{let l=Math.abs(o[0]-o[1]);s="width"==r||"x"==r?45:30;let u,c=Math.max(2,Math.floor(l/s));if("width"==r||"height"==r){let t=!!i&&(i.elements[0].parent.layout&&i.elements[0].parent.layout.type==U.STACK);a[1]=e._scale.invert(t?f(n)[r]:d(n)[r])}if("log"===e.type){u=[];let t=e._scale.ticks();for(let e of t){let r=Math.log(e)/Math.log(10)+1e-6;Math.abs(r-Math.floor(r))<c/t.length&&u.push(e)}}else u=t.ticks(a[0],a[1],c);return u}case"point":{s="width"==r||"x"==r?80:30;let t=Math.floor(e.rangeExtent/a.length),n=Math.ceil(s/t);return"x"==r?a.filter(((e,t)=>t%n==0)):a}case"time":{s="width"==r||"x"==r?80:30;let e,n,i=Math.floor((o[1]-o[0])/s),l=Math.ceil((a[1]-a[0])/i)/1e3,u=[1,60,3600,86400,2628003,31536e3],c=[t.timeSeconds,t.timeMinutes,t.timeHours,t.timeDays,t.timeMonths,t.timeYears];for(let t=0;t<u.length-1;t++)if(l>=u[t]&&l<u[t+1])return e=Math.floor(l/u[t]),n=c[t],n(a[0],a[1],e);return l>u[u.length-1]?(e=Math.floor(l/u[u.length-1]),n=c[u.length-1],n(a[0],a[1],e)):[]}default:return[]}}function er(e,t){t.removeChild(e)}class tr extends Kt{constructor(e,t,r,n){super(n),this._encoding=e,this._attribute=this._encoding.attribute,this._channel=this._encoding.channel,this._scale=t,this._elems=r,this._flip="flip"in n&&n.flip,this._posArg="x"==this._channel||"width"==this._channel?n.pathY:n.pathX,this._orientation="orientation"in n?n.orientation:"x"===this._channel||"width"==this._channel?$t:Jt,this._titleText="title"in n?n.title:this._encoding.attribute,this._path="angle"===this._channel?new bt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ie({strokeColor:this._strokeColor,id:this._id+"_path"}),this._pathVisible||(this._path.visibility="hidden"),this.addChild(this._path),this.createTicksLabels(n),e.dataTable.getAttributeType(this._attribute)!==Ae.Date||"labelFormat"in n||(this._labelFormat="%m/%d/%y"),"radialDistance"===this._channel&&"rotation"in n&&(this._rotate=[-n.rotation,this._elems[0].parent.x,this._elems[0].parent.y])}isFlipped(){return this._flip}get elements(){return this._elems}get scale(){return this._scale}createTicksLabels(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.tickValues):(this._tickValues=Qt(this._scale,this._channel,this._elems,this),this._labelValues=this._tickValues),this._ticks.removeAll();for(let e=0;e<this._tickValues.length;e++){let t=new ie({strokeColor:this._strokeColor,id:this._id+"_tick"+e});this._tickVisible||(t.visibility="hidden"),this._ticks.addChild(t)}let r;switch(this._labels.removeAll(),this._encoding.dataTable.getAttributeType(this._attribute)){case Ae.Date:r=t.timeFormat(this._labelFormat);break;case Ae.String:r=function(e){return e};break;default:r=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new Et({text:r(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(n)}this._title._text=this._titleText}}class rr extends Kt{constructor(e,t,r,n){super(n),this._elems=e,this._attribute=r,this._channel=t,this._posArg="x"==this._channel||"width"==this._channel?n.pathY:n.pathX,this._labelAttribute=n.labelAttribute,this._orientation="orientation"in n?n.orientation:"x"===this._channel||"width"==this._channel?$t:Jt,this._titleText="title"in n?n.title:this._attribute,this._path="angle"===this._channel?new bt({strokeColor:this._strokeColor,id:this._id+"_path"}):new ie({strokeColor:this._strokeColor,id:this._id+"_path"}),this._pathVisible||(this._path.visibility="hidden"),this.addChild(this._path),this.createTicksLabels(n),this._elems[0].dataScope.dataTable.getAttributeType(this._attribute)!==Ae.Date||"labelFormat"in n||(this._labelFormat="%m/%d/%y")}get elements(){if(this.layout.type===U.CLUSTER){const e=new Map(this._elems.map((e=>[e.dataScope.getAttributeValue(Ee),e])));return this.layout._d3Root.leaves().map((t=>e.get(t.data[Ee])))}return this._elems}get layout(){return this._elems[0].parent.layout}createTicksLabels(e){"tickValues"in e?(this._tickValues=e.tickValues,this._labelValues=e.tickValues):(this._tickValues=this.elements.map((e=>e.dataScope.getAttributeValue(this._labelAttribute?this._labelAttribute:this._attribute))),this._labelValues=this._tickValues),this._ticks.removeAll();for(let e=0;e<this._tickValues.length;e++){let t=new ie({strokeColor:this._strokeColor,id:this._id+"_tick"+e});this._tickVisible||(t.visibility="hidden"),this._ticks.addChild(t)}let r;switch(this._labels.removeAll(),this._elems[0].dataScope.dataTable.getAttributeType(this._labelAttribute?this._labelAttribute:this._attribute)){case Ae.Date:r=t.timeFormat(this._labelFormat);break;case Ae.String:r=function(e){return e};break;default:r=t.format(this._labelFormat)}for(let[e,t]of this._labelValues.entries()){let n=new Et({text:r(t),fontSize:this._fontSize,fillColor:this._textColor,id:this._id+"_label"+e});this._labels.addChild(n)}this._title._text=this._titleText}}class nr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_ORIENTATION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e),p(e._path)}_runForLayout(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==U.STACK?f(e.elements):d(e.elements),n=[];if("x"===t){let t=e.orientation===Zt?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,n.push([r.left,e._pathPos]),n.push([r.right,e._pathPos]),e._path._setVertices(n)}else if("y"===t){let t=e.orientation===Jt?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,n.push([e._pathPos,r.top]),n.push([e._pathPos,r.bottom]),e._path._setVertices(n)}else if("angle"===t){let t=e.elements[0].parent.layout;t.type===U.CLUSTER&&(e._path._x=t.x,e._path._y=t.y,e._path._radius=t.radius)}}_runForEncoding(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==U.STACK?f(e.elements):d(e.elements),n=[];if("x"===t){let t=e.orientation===Zt?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,n.push([e.scale.range[0],e._pathPos]),n.push([e.scale.range[1],e._pathPos])}else if("width"===t){let t=e.orientation===Zt?r.top-2:r.bottom+2;e._pathPos=e._posArg?e._posArg:t,n.push([r.left,e._pathPos]),n.push([r.right,e._pathPos])}else if("radialDistance"===t){let t=e.elements[0].parent,r=t.y;e._pathPos=e._posArg?e._posArg:r,n.push([e.scale.range[0]+t.x,e._pathPos]),n.push([e.scale.range[1]+t.x,e._pathPos])}else if("y"===t){let t=e.orientation===Jt?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,n.push([e._pathPos,e.scale.range[0]]),n.push([e._pathPos,e.scale.range[1]])}else if("height"===t){let t=e.orientation===Jt?r.left-2:r.right+2;e._pathPos=e._posArg?e._posArg:t,n.push([e._pathPos,r.bottom]),n.push([e._pathPos,r.top])}e._path._setVertices(n)}}class ir extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e);for(let t of e._ticks.children)t._updateBounds();p(e._ticks)}_runForLayout(e){let t=e.channel;if("x"==t){let t=e.orientation==$t?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==$t?e.tickSize:-e.tickSize;for(let[n,i]of e._ticks.children.entries()){let s=e.elements[n].bounds[e.tickAnchor];i._setVertices([[s,t],[s,t+r]])}}else if("y"===t){let t=e.orientation==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==Jt?-e.tickSize:e.tickSize;for(let[n,i]of e._ticks.children.entries()){let s=e.elements[n].bounds[e.tickAnchor];i._setVertices([[t,s],[t+r,s]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===U.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[Ee],[e.x,e.y]])));for(let[r,i]of e._ticks.children.entries()){let s=e.elements[r].dataScope.getAttributeValue(Ee),a=he(n.get(s)[0])-90;i._setVertices([[t.x+n.get(s)[1]+e.elements[r].bounds.width/2,t.y],[t.x+n.get(s)[1]+e.elements[r].bounds.width/2+e.tickSize,t.y]]),i._rotate=[a,t.x,t.y]}}}}_runForEncoding(e){let t=e.channel,r=d(e.elements);if("x"==t){let t=e.orientation==$t?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==$t?e.tickSize:-e.tickSize;for(let[n,i]of e._ticks.children.entries())i._setVertices([[e.scale.map(e._tickValues[n]),t],[e.scale.map(e._tickValues[n]),t+r]])}else if("width"==t){let t=e.orientation==$t?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,n=e.orientation==$t?e.tickSize:-e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Ot.Area&&"right"===e.elements[0].baseline))for(let[i,s]of e._ticks.children.entries())s._setVertices([[r.left+e.scale.rangeExtent-e.scale.map(e._tickValues[i]),t],[r.left+e.scale.rangeExtent-e.scale.map(e._tickValues[i]),t+n]]);else for(let[i,s]of e._ticks.children.entries())s._setVertices([[e.scale.map(e._tickValues[i])+r.left,t],[e.scale.map(e._tickValues[i])+r.left,t+n]])}else if("y"===t){let t=e.orientation==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,r=e.orientation==Jt?-e.tickSize:e.tickSize;for(let[n,i]of e._ticks.children.entries())i._setVertices([[t,e.scale.map(e._tickValues[n])],[t+r,e.scale.map(e._tickValues[n])]])}else if("height"===t){let t=e.orientation==Jt?e.pathPos-e.tickOffset:e.pathPos+e.tickOffset,n=e.orientation==Jt?-e.tickSize:e.tickSize;if(!!(e.isFlipped()||e.elements[0].type===Ot.Area&&"top"===e.elements[0].baseline))for(let[i,s]of e._ticks.children.entries())s._setVertices([[t,r.top+e.scale.map(e._tickValues[i])],[t+n,r.top+e.scale.map(e._tickValues[i])]]);else for(let[i,s]of e._ticks.children.entries()){let a=r.bottom-e.scale.map(e._tickValues[i]);s._setVertices([[t,a],[t+n,a]])}}else if("radialDistance"===t){let t=e.orientation==$t?e.pathPos+e.tickOffset:e.pathPos-e.tickOffset,r=e.orientation==$t?e.tickSize:-e.tickSize,n=e.elements[0].parent;for(let[i,s]of e._ticks.children.entries())s._setVertices([[n.x+e.scale.map(e._tickValues[i]),t],[n.x+e.scale.map(e._tickValues[i]),t+r]])}}}class sr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e);for(let t of e._labels.children)t._updateBounds();p(e._labels)}_runForLayout(e){let t=e.channel;if("x"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.BOTTOM];for(let[n,i]of e._labels.children.entries()){let s=e.elements[n].bounds;i._x=s[e.tickAnchor],i._y=e.pathPos+t,i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[_.RIGHT,_.MIDDLE])}}else if("y"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,r=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.MIDDLE];for(let[n,i]of e._labels.children.entries()){let s=e.elements[n].bounds;i._x=e.pathPos+t,i._y=e.tickAnchor==_.MIDDLE?s.y:s[e.tickAnchor],i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[_.RIGHT,r[1]])}}else if("angle"===t){let t=e.elements[0].parent.layout;if(t.type===U.CLUSTER){let r=t._d3Root.leaves();const n=new Map(r.map((e=>[e.data[Ee],[e.x,e.y]])));let i=5;for(let[r,s]of e._labels.children.entries()){let a=e.elements[r].dataScope.getAttributeValue(Ee);if(n.get(a)[0]<Math.PI){let o=he(n.get(a)[0])-90;s._anchor=[_.LEFT,_.MIDDLE],s._x=t.x+n.get(a)[1]+e.elements[r].bounds.width/2+i,s._y=t.y,s._rotate=[o,t.x,t.y]}else{let o=he(n.get(a)[0])+90;s._anchor=[_.RIGHT,_.MIDDLE],s._x=t.x-n.get(a)[1]-e.elements[r].bounds.width/2-i,s._y=t.y,s._rotate=[o,t.x,t.y]}}}}}_runForEncoding(e){let t=e.channel,r=d(e.elements);if("x"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.BOTTOM];for(let[n,i]of e._labels.children.entries())i._x=e.scale.map(e.labelValues[n]),i._y=e.pathPos+t,i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[_.RIGHT,r[1]])}else if("width"===t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,n=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.BOTTOM],i=!!(e.isFlipped()||e.elements[0].type===Ot.Area&&"right"===e.elements[0].baseline);for(let[s,a]of e._labels.children.entries())a._x=i?r.left+e.scale.rangeExtent-e.scale.map(e.labelValues[s]):e.scale.map(e.labelValues[s])+r.left,a._y=e.pathPos+t,a._anchor=n,e._labelRotation&&(a._rotate=[e._labelRotation,a.x,a.y],a._anchor=[_.RIGHT,n[1]])}else if("y"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,r=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.MIDDLE];for(let[n,i]of e._labels.children.entries())i._x=e.pathPos+t,i._y=e.scale.map(e.labelValues[n]),i._anchor=r,e._labelRotation&&(i._rotate=[e._labelRotation,i.x,i.y],i._anchor=[_.RIGHT,r[1]])}else if("height"===t){let t=e.orientation==Jt?-e.labelOffset:e.labelOffset,n=e.orientation==Jt?[_.RIGHT,_.MIDDLE]:[_.LEFT,_.MIDDLE],i=e.elements[0].type===Ot.Area&&"top"===e.elements[0].baseline;for(let[s,a]of e._labels.children.entries())a._x=e.pathPos+t,a._y=i?r.top+e.scale.map(e.labelValues[s]):r.bottom-e.scale.map(e.labelValues[s]),a._anchor=n,e._labelRotation&&(a._rotate=[e._labelRotation,a.x,a.y],a._anchor=[_.RIGHT,n[1]])}else if("radialDistance"==t){let t=e.orientation==$t?e.labelOffset:-e.labelOffset,r=e.orientation==$t?[_.CENTER,_.TOP]:[_.CENTER,_.BOTTOM],n=e.elements[0].parent;for(let[i,s]of e._labels.children.entries())s._x=n.x+e.scale.map(e.labelValues[i]),s._y=e.pathPos+t,s._anchor=r,e._labelRotation&&(s._rotate=[e._labelRotation,s.x,s.y],s._anchor=[_.RIGHT,r[1]])}}}class ar extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)return;this.fillGrid(e,t),this.computeCellBounds(e,t),this.placeElements(e,t)}let r=j(e,!0);for(let e of r)p(e)}placeElements(e,t){let r=Be(e,"x"),n=Be(e,"y");for(let r=0;r<e.children.length;r++){let n=e.children[r],i=t.cellBounds[r],s=0,a=0;switch(t._cellHorzAlignment){case _.LEFT:s=i.left-n.refBounds.left;break;case _.CENTER:s=i.x-n.refBounds.x;break;case _.RIGHT:s=i.right-n.refBounds.right}switch(t._cellVertAlignment){case _.TOP:a=i.top-n.refBounds.top;break;case _.MIDDLE:a=i.y-n.refBounds.y;break;case _.BOTTOM:a=i.bottom-n.refBounds.bottom}ze(n,s,a)}if(r.length>0)for(let e of r)for(let r of e.scales){let n=e.getElements(r)[0],i=t.getIndex(n);if(i<0)continue;let s="point"===r.type?t.cellBounds[i].left+n.bounds.width/2:t.cellBounds[i].left,a=s+r.rangeExtent;r.range=r.range[0]<r.range[1]?[s,a]:[a,s]}if(n.length>0)for(let e of n)for(let r of e.scales){let n=e.getElements(r)[0],i=t.getIndex(n);if(i<0)continue;let s="point"===r.type?t.cellBounds[i].top+e.getElements(r)[0].bounds.height/2:t.cellBounds[i].top,a=s+r.rangeExtent;r.range=r.range[0]<r.range[1]?[s,a]:[a,s]}}fillGrid(e,t){t._grid=new Array(t.numRows).fill(null).map((()=>new Array(t.numCols).fill(null)));for(let r=0;r<e.children.length;r++){let e=t.getRowCol(r);t._grid[e.row][e.col]=r}}computeCellBounds(e,t){let r=e.children.map((e=>e.refBounds?e.refBounds:e.bounds)),n=t._colGap,i=t._rowGap;if(void 0===t._left){let e=r.map((e=>e.left)),n=r.map((e=>e.top));t._left=Math.min(...e),t._top=Math.min(...n)}let s=r.map((e=>e.width)),a=r.map((e=>e.height)),o=Math.max(...s),l=Math.max(...a);t._cellBounds=new Array(e.children.length).fill(null);for(let r=0;r<t.numRows;r++)for(let s=0;s<t.numCols;s++){let a=t._grid[r][s];a>=e.children.length||(t._cellBounds[a]=new c(t._left+(o+n)*s+0,t._top+(l+i)*r,o,l))}}}class or extends W{constructor(e){super(e)}run(){let e=this.outputVar.element;e.scale?this._runForEncoding(e):this._runForLayout(e),p(e)}_runForLayout(e){let t=e.channel,r=d(e.elements),n=[];if("x"===t)for(let t=0;t<e.values.length;t++){let i=e.elements[t].refBounds;n.push({x1:i.x,y1:r.bottom,x2:i.x,y2:r.top})}else if("y"===t)for(let t=0;t<e.values.length;t++){let i=e.elements[t].refBounds;n.push({x1:r.left,y1:i.y,x2:r.right,y2:i.y})}e.lines=n}_runForEncoding(e){let t=e.channel,r=d(e.elements),n=[];if("x"===t)for(let t of e.values)n.push({x1:e.scale.map(t),y1:r.bottom,x2:e.scale.map(t),y2:r.top});else if("width"===t)for(let t of e.values)n.push({x1:e.scale.map(t)+r.left,y1:r.bottom,x2:e.scale.map(t)+r.left,y2:r.top});else if("y"===t)for(let t of e.values)n.push({x1:r.left,y1:e.scale.map(t),x2:r.right,y2:e.scale.map(t)});else if("height"===t)for(let t of e.values)n.push({x1:r.left,y1:r.bottom-e.scale.map(t),x2:r.right,y2:r.bottom-e.scale.map(t)});else if("radialDistance"===t){let t=e.elements[0].parent;for(let r=0;r<e.values.length;r++)n.push({x:t.x,y:t.y,r:e.scale.map(e.values[r])})}e.lines=n}}class lr extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=j(e)[0],r=T(e.parent);for(let e of r){let r=e.layout;if(!r)return;switch(t.type){case Ot.Rect:case Ot.Circle:case Ot.Image:this._stackRects(e,r);break;case Ot.Area:e.children[0].orientation===J.HORIZONTAL?this._stackAreasVert(e,r):this._stackAreasHorz(e,r);break;case Ot.Arc:case Ot.Pie:t.parent.classId===e.classId&&this._stackArcs(e,r)}}p(t)}_stackArcs(e,t){if(t.orientation===J.ANGULAR){let t=90;if((this._direction?this._direction:ee.Clockwise)===ee.Clockwise)for(let r of e.children){let e=de(t-r.angle);Ue(r,"startAngle",e),t=e}else for(let r of e.children){let e=de(t+r.angle);Ue(r,"startAngle",e),t=e}}else if(t.orientation===J.RADIAL){let t=Math.min(...e.children.map((e=>e.innerRadius)));for(let r of e.children){let e=r.outerRadius-r.innerRadius;Ue(r,"innerRadius",t),Ue(r,"outerRadius",t+e),t=r._outerRadius}}}_stackAreasVert(e,t){let r=e.children,n=e.bounds,i=t.vertCellAlignment===_.TOP?n.top:n.bottom,s=t.vertCellAlignment===_.TOP?1:-1,a=r[0].vertices.length/2,o=new Array(a).fill(0);for(let e of r){for(let t=0;t<a;t++){let r=e.vertices[t],n=e.vertices[2*a-t-1],l=Math.abs(r.y-n.y),u=i+o[t]*s,c=i+(o[t]+l)*s;ze(r,0,u-r.y),ze(n,0,c-n.y),o[t]+=l}let t=e.bounds.bottom;e._updateBounds(),e._refBounds.translate(0,e.bounds.bottom-t)}if(t.vertCellAlignment===_.MIDDLE)for(let e of r){for(let t=0;t<a;t++){let r=e.vertices[t],i=e.vertices[2*a-t-1],s=n.middle+o[t]/2;ze(r,0,s-n.bottom),ze(i,0,s-n.bottom)}let t=e.bounds.bottom;e._updateBounds(),e._refBounds.translate(0,e.bounds.bottom-t)}}_stackAreasHorz(e,t){}_stackRects(e,t){e.scene;let r=t._orientation,n=e.children.map((e=>e.bounds)),i=n.map((e=>e.left)),s=n.map((e=>e.top)),a=n.map((e=>e.width)),o=n.map((e=>e.height)),l=null==t._left?Math.min(...i):t._left,u=null==t._top?Math.min(...s):t._top,c=Math.max(...a),h=Math.max(...o);if(r==J.VERTICAL)for(let r=0;r<e.children.length;r++){let n=e.children[r],i=0,s=u+n.bounds.height/2-n.bounds.y;u+=n.bounds.height+t._gap,ze(n,i,s),n._updateBounds();let a=0,o=0;if(!Ge(n))switch(t._horzCellAlignment){case _.LEFT:a=l-n.bounds.left;break;case _.CENTER:a=l+c/2-n.bounds.x;break;case _.RIGHT:a=l+c-n.bounds.right}ze(n,a,o)}else for(let r=0;r<e.children.length;r++){let n=e.children[r],i=l+n.bounds.width/2-n.bounds.x,s=0;l+=n.bounds.width+t._gap,ze(n,i,s),n._updateBounds();let a=0,o=0;if(!Me(n))switch(t._vertCellAlignment){case _.TOP:o=u-n.bounds.top;break;case _.MIDDLE:o=u+h/2-n.bounds.y;break;case _.BOTTOM:o=u+h-n.bounds.bottom}ze(n,a,o)}}}class ur extends W{constructor(e){super(e)}run(){super.run()}}class cr extends W{constructor(e){super(e)}run(){let e=this.inputVars[0],r=this.outputVar,n=e.attribute,i=r.attribute,s=e.dataset,a=r.dataset,o=s.getAttributeValues(n),l=t.bin()(o),u=this._findBin,c=o.map((e=>{let t=u(e,l);return(t.x0+t.x1)/2+""})),h=l.map((e=>(e.x0+e.x1)/2+""));a._addAttribute(i,Ae.String,c),a.orderAttributeValues(i,h)}_findBin(e,t){for(let r of t)if(r.indexOf(e)>=0)return r}}class hr extends W{constructor(e){super(e)}run(){let e=this.outputVar,t=e.dataset,r=e.predicate,n=[];for(let[e,i]of t.data.entries())r.testTuple(i)||n.push(e);n.sort(((e,t)=>t-e)),n.forEach((e=>{e>=0&&e<t.data.length&&(t._data.splice(e,1),t._rawData.splice(e,1))}));for(let e of t._attributes)t._attrSummaries[e]=ke(t.data.map((t=>t[e])),t._attrTypes[e])}}class dr extends X{constructor(e,t,r){super(e),this._dataset=r,this._predicate=t}get dataset(){return this._dataset}get predicate(){return this._predicate}}class fr extends X{constructor(e,t){super(e),this._group=t}get element(){return this._group}}class pr extends W{constructor(e){super(e)}run(){super.run();let e=this.inputVars.find((e=>e.type===q.AFFIXATION)).affixation,t=e.base,r=e.element,n=T(t),i=T(r),s=e.channels,a=e.attribute;if(E(r)&&E(t)){let e=n.map((e=>e.dataScope.getAttributeValue(a)));i=i.filter((t=>e.includes(t.dataScope.getAttributeValue(a))));let t=(e,t)=>e.dataScope.getAttributeValue(a)<t.dataScope.getAttributeValue(a)?-1:e.dataScope.getAttributeValue(a)>t.dataScope.getAttributeValue(a)?1:0;i.sort(t),n.sort(t)}if(s.includes("x")||s.includes("y"))for(let t of s)this._handleXY(t,i,n,e.getElementAnchor(t),e.getBaseAnchor(t),e.getOffset(t));(s.includes("radialDistance")||s.includes("angle"))&&this._handlePolar(i,n,e);let o=j(r,!0);for(let e of o)p(e)}_handlePolar(e,t,r){let n=r.hasChannel("radialDistance")?r.getBaseAnchor("radialDistance"):_.MIDDLE,i=r.hasChannel("radialDistance")?r.getElementAnchor("radialDistance"):_.MIDDLE,s=r.hasChannel("angle")?r.getBaseAnchor("angle"):_.CENTER;r.hasChannel("angle")?r.getElementAnchor("angle"):_.CENTER;let a=r.hasChannel("radialDistance")?r.getOffset("radialDistance"):0,o=r.hasChannel("angle")?r.getOffset("angle"):0;if([Ot.Arc,Ot.Ring].indexOf(t[0].type)>=0&&e[0].type==Ot.PointText)for(let r=0;r<e.length;r++){let i=t[r],o=e[r],l=n===_.MIDDLE?(i.outerRadius+i.innerRadius)/2:n===_.TOP?i.outerRadius-5:i.innerRadius+5;if(l+=a,i.type===Ot.Arc){let e=Te(i.x,i.y,l,i.startAngle),t=Te(i.x,i.y,l,i.endAngle);i.endAngle>=180&&i.endAngle<=360?o._textPath=["M",e[0],e[1],"A",l,l,i.angle,i.angle>=180?1:0,0,t[0],t[1]].join(" "):o._textPath=["M",t[0],t[1],"A",l,l,i.angle,i.angle>=180?1:0,1,e[0],e[1]].join(" ")}else if(i.type===Ot.Ring){let e=275,t=265,r=350,n=Te(i.x,i.y,l,e),s=Te(i.x,i.y,l,t);o._textPath=["M",s[0],s[1],"A",l,l,r,1,1,n[0],n[1]].join(" ")}o._textPathOffset=s===_.LEFT?"0%":"50%"}else for(let r=0;r<e.length;r++){let l,u,c=t[r],h=e[r];c.type==Ot.Arc||c.type==Ot.Ring?(u="left"==s?c.endAngle+o:"center"==s?c.startAngle+c.angle/2+o:c.startAngle+o,l="top"==n?c.outerRadius+a:"bottom"==n?c.innerRadius+a:(c.outerRadius+c.innerRadius)/2+a):c.type==Ot.Circle&&(u=90,l="top"==n?c.radius+a:"bottom"==n?a:c.radius/2+a),ze(h,c.x-h.x,c.y-l-h.bounds[i]),h._rotate=[90-u,c.x,c.y]}}_handleXY(e,t,r,n,i,s){for(let a=0;a<t.length;a++){let o,l=r[a],u=t[a];if(ae(l)){o=se(l,[_.LEFT,_.TOP].includes(i)?0:[_.CENTER,_.MIDDLE].includes(i)?.5:1)[e]}else o=l.bounds[i]+s;t[0].type===Ot.PointText?(u.anchor["x"==e?0:1]=n,Ue(u,e,o)):"x"==e?ze(u,o-u.bounds[n],0):ze(u,0,o-u.bounds[n])}}}class _r extends X{constructor(e,t){super(e),this._affx=t}get affixation(){return this._affx}}class gr extends W{constructor(e){super(e)}run(){let e=this.inputVars[0],t=this.outputVar,r=e.attribute,n=t.attribute,i=e.dataset,s=t.dataset,a=this.args,o="min"in a?a.min:i.getAttributeSummary(r).min,l="max"in a?a.max:i.getAttributeSummary(r).max,u=o,c=[];for(;u<l;)c.push(u),u+=a.interval;c.push(u);let h={},d={};if(a.groupBy)for(let e of i.data){let t=a.groupBy.map((t=>e[t])).join("-");t in h||(h[t]=[],d[t]=a.groupBy.map((t=>e[t]))),h[t].push(e[r])}else h[""]=i.data.map((e=>e[r])),d[""]="";let f=[];for(let e in d){let t=yr(mr(a.bandwidth),c,h[e]);for(let i of t){let t={};""!==e&&a.groupBy.forEach(((r,n)=>t[r]=d[e][n])),t[r]=i[0],t[n]=i[1],f.push(t)}}let p={};if(p[r]=i.getAttributeType(r),p[n]=Ae.Number,a.groupBy)for(let e of a.groupBy)p[e]=i.getAttributeType(e);s.initialize(f,s.url,p)}}function yr(e,r,n){return r.map((r=>[r,t.mean(n,(t=>e(r-t)))]))}function mr(e){return t=>Math.abs(t/=e)<=1?.75*(1-t*t)/e:0}class br extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)return;let n=e.children.map((e=>({name:e.id,radius:e.radius,itm:e}))),i=n.reduce(((e,t)=>e+Math.pow(t.radius,2)),0),s=Math.sqrt(i);void 0===r._width&&(r._width=s),void 0===r._height&&(r._height=s);let a=t.hierarchy({name:"root",children:n}).sum((e=>e.radius?e.radius:0)).sort(((e,t)=>t.value-e.value));t.pack().size([r._width,r._height]).radius((e=>e.value))(a);for(let e of a.children){let t=e.data.itm;ze(t,r._x-a.x+e.x-t.x,r._y-a.y+e.y-t.y)}}let n=j(e,!0);for(let e of n)p(e)}}class vr extends W{constructor(e){super(e)}run(){let e=this.inputVars.find((e=>e instanceof Qe&&e.property==et.AXIS_PATH_POSITION)).element;e instanceof tr?this._runForEncoding(e):e instanceof rr&&this._runForLayout(e),p(e._title)}_runForEncoding(e){let t=e.channel,r=d(e.elements);if("x"==t)e._title._x=(e.scale.range[0]+e.scale.range[1])/2,e._title._y=e.orientation==$t?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("width"==t)e._title._x=r.left+e.scale.rangeExtent/2,e._title._y=e.orientation==$t?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._rotateYTitle?(e._title._x=e.orientation==Jt?e.pathPos-e.titleOffset:e.pathPos+e.titleOffset,e._title._y=(e.scale.range[0]+e.scale.range[1])/2,e._title._rotate=e.orientation==Jt?[-90,e._title._x,e._title._y]:[90,e._title._x,e._title._y]):(e._title._x=e.orientation==Jt?e.pathPos-e.titleOffset:e.pathPos+e.titleOffset,e._title._y=Math.min(e.scale.range[0],e.scale.range[1])-25,e._title._rotate=void 0);else if("height"===t)e._title._x=r.center,e._title._y=(r.top+r.bottom)/2-r.width/2-e.titleOffset,e._title._rotate=e.orientation==Jt?[-90,r.center,r.middle]:[90,r.center,r.middle];else if("radialDistance"===t){let t=e.elements[0].parent;e._title._x=t.x+e.scale.rangeExtent/2,e._title._y=e.orientation==$t?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset,e._rotate&&(e._title._rotate=e._rotate.slice())}}_runForLayout(e){let t=e.channel,r=e.elements[0].parent.layout&&e.elements[0].parent.layout.type==U.STACK?f(e.elements):d(e.elements);if("x"==t)e._title._x=r.center,e._title._y=e.orientation==$t?e.pathPos+e.titleOffset:e.pathPos-e.titleOffset;else if("y"===t)e._title._x=r.center,e._title._y=r.middle-r.width/2-e.titleOffset,e._title._rotate=e.orientation==Jt?[-90,r.center,r.middle]:[90,r.center,r.middle];else if("angle"===t){let t=e.elements[0].parent.layout;t.type===U.CLUSTER&&(e._title._x=t.x,e._title._y=t.y)}}}class xr extends Gt{constructor(e){super(e)}run(){super.run();let e,r=this.vars.find((e=>e.type===q.ALIGNMENT)).alignment,n=r.anchor,i=r.elements;n==_.Top||n==_.LEFT?e=Math.min(...i.map((e=>e.bounds[n]))):n==_.BOTTOM||n==_.RIGHT?e=Math.max(...i.map((e=>e.bounds[n]))):n!=_.CENTER&&n!=_.MIDDLE||(e=t.mean(i.map((e=>e.bounds[n]))));for(let t of i){let i=je(t,r.channel);if(i){let s=e-t.bounds[n];ze(i,"x"===r.channel?s:0,"x"===r.channel?0:s)}}for(let e of i)p(e)}}class Er extends X{constructor(e,t){super(e),this._aln=t}get alignment(){return this._aln}}class wr extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)continue;let n=ve(e.children[0]);if(!n)continue;let i=n.linkList.map((e=>({source:n.getNode(e.source),target:n.getNode(e.target)}))),s=t.forceSimulation(n.nodeList).force("charge",t.forceManyBody().strength(-r._repulsion)).force("link",t.forceLink(i).id((e=>e.id)).distance(r._linkDistance)).force("x",t.forceX()).force("y",t.forceY()).force("center",t.forceCenter(r._x,r._y).strength(r._attraction));s.stop(),s.tick(r._iterations);for(let t=0;t<e.children.length;t++){let r=e.children[t],i=n.nodeList[t];ze(r,i.x-r.x,i.y-r.y)}}let n=j(e,!0);for(let e of n)p(e)}}class Ar extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e);switch(e.type){case Ot.Arc:this._updateArcLinks(t);break;case Ot.BezierCurve:this._updateBezierLinks(t);break;case Ot.BundledPath:this._updateBundledLinks(t);break;case Ot.Chord:this._updateChordLinks(t);break;case Ot.Line:default:this._updateLineLinks(t)}p(e)}_updateArcLinks(e){for(let t of e){let e=t.source.x<t.target.x?t.source:t.target,r=t.source.x<t.target.x?t.target:t.source;t._x=(e.x+r.x)/2,t._y=(e.y+r.y)/2,t._innerRadius=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))/2,t._outerRadius=t._innerRadius+t._thickness;let n=fe(e.x,e.y,t._x,t._y),i=fe(r.x,r.y,t._x,t._y);t.direction===ee.CLOCKWISE&&([n,i]=[i,n]),Ue(t,"startAngle",n),Ue(t,"angle",Math.abs(i-n))}}_updateBezierLinks(e){let t=this._inputVars[0].element,r=T(t),n=t.parent.layout;n.type===U.DIRECTED||n.type===U.TIDYTREE?this._updateBezierLinksForDirectedGraph(r,e,n):n.type===U.CLUSTER&&this._updateBezierLinksForClusteredGraph(r,e,n)}_updateBezierLinksForClusteredGraph(e,r,n){const i=n._d3Root.descendants(),s=new Map(i.map((e=>[Cr(e),e]))),a=new Map(i.map((e=>[e.data[Ee],Cr(e)])));if(n.isRadial()){const e=t.linkRadial().angle((e=>e.x)).radius((e=>e.y));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.x,n.y)}}else if(n.orientation===J.VERTICAL){const e=t.linkVertical().x((e=>e.x)).y((e=>e.y));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.left-n._x0,n.top)}}else if(n.orientation===J.HORIZONTAL){const e=t.linkHorizontal().x((e=>e.y)).y((e=>e.x));for(let t of r){let r=t.source,i=t.target,o=r.dataScope.getAttributeValue(Ee),l=i.dataScope.getAttributeValue(Ee),u=s.get(a.get(o)),c=s.get(a.get(l));t._d=le(e({source:u,target:c}),n.left,n.top-n._x0)}}}_updateBezierLinksForDirectedGraph(e,t,r){let n={},i={},s={},a={};for(let t of e){i[t.id]=0,n[t.id]=0;let e=t.links.filter((e=>e.source===t)),r=t.links.filter((e=>e.target===t));a[t.id]=r.map((e=>e.strokeWidth)).reduce(((e,t)=>e+t),0),s[t.id]=e.map((e=>e.strokeWidth)).reduce(((e,t)=>e+t),0)}r.spreadLinks&&("LR"===r.direction||"RL"===r.direction?t.sort(((e,t)=>fe(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y)-fe(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y))):t.sort(((e,t)=>fe(t.target.bounds.x,t.target.bounds.y,t.source.bounds.x,t.source.bounds.y)-fe(e.target.bounds.x,e.target.bounds.y,e.source.bounds.x,e.source.bounds.y))));for(let e of t){let t,o,l,u,c=e.source,h=e.target;r.spreadLinks?"LR"===r.direction||"RL"===r.direction?(t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0],l=h.bounds[e.targetAnchor[0]]+e.targetOffset[0],o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1]-s[c.id]/2+n[c.id]+e.strokeWidth/2,u=h.bounds[e.targetAnchor[1]]+e.targetOffset[1]-a[h.id]/2+i[h.id]+e.strokeWidth/2,n[c.id]+=e.strokeWidth,i[h.id]+=e.strokeWidth):(o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1],u=h.bounds[e.targetAnchor[1]]+e.targetOffset[1],t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0]-s[c.id]/2+n[c.id]+e.strokeWidth/2,l=h.bounds[e.targetAnchor[0]]+e.targetOffset[0]-a[h.id]/2+i[h.id]+e.strokeWidth/2,n[c.id]+=e.strokeWidth,i[h.id]+=e.strokeWidth):(t=c.bounds[e.sourceAnchor[0]]+e.sourceOffset[0],o=c.bounds[e.sourceAnchor[1]]+e.sourceOffset[1],l=h.bounds[e.targetAnchor[0]]+e.targetOffset[0],u=h.bounds[e.targetAnchor[1]]+e.targetOffset[1]),e.orientation===J.HORIZONTAL?e._setVertices([[t,o],[(t+l)/2,o],[t,u],[l,u]]):e.orientation===J.VERTICAL&&e._setVertices([[t,o],[t,(o+u)/2],[l,o],[l,u]])}}_updateBundledLinks(e){let r=this._inputVars[0].element.parent.layout;if(r.type!==U.CLUSTER)throw"Bundled links must work on a cluster layout";let n=r._d3Root.leaves();const i=new Map(n.map((e=>[Cr(e),e]))),s=new Map(n.map((e=>[e.data[Ee],Cr(e)]))),a=t.lineRadial().curve(t.curveBundle.beta(e[0]._strength)).radius((e=>e.y)).angle((e=>e.x));for(let t of e){let e=t.source.dataScope.getAttributeValue(Ee),n=t.target.dataScope.getAttributeValue(Ee),o=i.get(s.get(e)),l=i.get(s.get(n));(o.outgoing??=[]).push([o,l]),l.incoming??=[];let u=o.path(l);t._d=le(a(u),r.x,r.y)}}_updateChordLinks(e){for(let t of e){let e=t.source,r=t.target,n=Te(e.x,e.y,e.innerRadius,e.startAngle),i=Te(e.x,e.y,e.innerRadius,e.endAngle),s=Te(r.x,r.y,r.innerRadius,r.startAngle),a=Te(r.x,r.y,r.innerRadius,r.endAngle);t._d=["M",n[0],n[1],"Q",e.x,e.y,a[0],a[1],"A",e.x,e.y,r.angle,r.angle>180?1:0,1,s[0],s[1],"Q",e.x,e.y,i[0],i[1],"A",e.x,e.y,e.angle,e.angle>180?1:0,1,n[0],n[1]].join(" ")}}_updateLineLinks(e){for(let t of e){let e=t.source,r=t.target;t.vertices[0]._x=e.bounds.x,t.vertices[0]._y=e.bounds.y,t.vertices[1]._x=r.bounds.x,t.vertices[1]._y=r.bounds.y}}}function Cr(e){return`${e.parent?Cr(e.parent)+".":""}${e.data[Ee]}`}var Rr,kr,Sr,Tr,Or,Ir,Nr,Lr,Vr,Pr,Dr,Br,Mr,Gr,jr,zr,Fr,Ur,Hr,Wr,Yr,Xr,qr,Kr,Zr,$r,Jr,Qr,en,tn,rn,nn,sn,an,on,ln,un,cn,hn,dn,fn,pn,_n,gn,yn,mn,bn,vn,xn,En,wn,An,Cn,Rn,kn,Sn,Tn,On,In,Nn,Ln,Vn,Pn,Dn,Bn,Mn,Gn,jn,zn,Fn,Un,Hn,Wn,Yn,Xn,qn,Kn,Zn,$n,Jn,Qn,ei,ti,ri,ni,ii,si,ai,oi,li,ui,ci,hi,di,fi,pi,_i,gi,yi,mi,bi,vi,xi,Ei,wi,Ai,Ci,Ri,ki="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Si(){if(Tr)return Sr;return Tr=1,Sr=function(e,t){return e===t||e!=e&&t!=t}}function Ti(){if(Ir)return Or;Ir=1;var e=Si();return Or=function(t,r){for(var n=t.length;n--;)if(e(t[n][0],r))return n;return-1}}function Oi(){if(zr)return jr;zr=1;var e=kr?Rr:(kr=1,Rr=function(){this.__data__=[],this.size=0}),t=function(){if(Lr)return Nr;Lr=1;var e=Ti(),t=Array.prototype.splice;return Nr=function(r){var n=this.__data__,i=e(n,r);return!(i<0||(i==n.length-1?n.pop():t.call(n,i,1),--this.size,0))}}(),r=function(){if(Pr)return Vr;Pr=1;var e=Ti();return Vr=function(t){var r=this.__data__,n=e(r,t);return n<0?void 0:r[n][1]}}(),n=function(){if(Br)return Dr;Br=1;var e=Ti();return Dr=function(t){return e(this.__data__,t)>-1}}(),i=function(){if(Gr)return Mr;Gr=1;var e=Ti();return Mr=function(t,r){var n=this.__data__,i=e(n,t);return i<0?(++this.size,n.push([t,r])):n[i][1]=r,this}}();function s(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=i,jr=s}function Ii(){if($r)return Zr;$r=1;var e="object"==typeof ki&&ki&&ki.Object===Object&&ki;return Zr=e}function Ni(){if(Qr)return Jr;Qr=1;var e=Ii(),t="object"==typeof self&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Jr=r}function Li(){if(tn)return en;tn=1;var e=Ni().Symbol;return en=e}function Vi(){if(ln)return on;ln=1;var e=Li(),t=function(){if(nn)return rn;nn=1;var e=Li(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;return rn=
3
+ /**
4
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
5
+ *
6
+ * @private
7
+ * @param {*} value The value to query.
8
+ * @returns {string} Returns the raw `toStringTag`.
9
+ */
10
+ function(e){var t=r.call(e,i),s=e[i];try{e[i]=void 0;var a=!0}catch(e){}var o=n.call(e);return a&&(t?e[i]=s:delete e[i]),o}}(),r=function(){if(an)return sn;an=1;var e=Object.prototype.toString;return sn=function(t){return e.call(t)}}(),n=e?e.toStringTag:void 0;return on=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":n&&n in Object(e)?t(e):r(e)}}function Pi(){if(cn)return un;return cn=1,un=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}}function Di(){if(dn)return hn;dn=1;var e=Vi(),t=Pi();return hn=function(r){if(!t(r))return!1;var n=e(r);return"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n}}function Bi(){if(gn)return _n;gn=1;var e,t=function(){if(pn)return fn;pn=1;var e=Ni()["__core-js_shared__"];return fn=e}(),r=(e=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||""))?"Symbol(src)_1."+e:"";return _n=function(e){return!!r&&r in e}}function Mi(){if(mn)return yn;mn=1;var e=Function.prototype.toString;return yn=function(t){if(null!=t){try{return e.call(t)}catch(e){}try{return t+""}catch(e){}}return""}}function Gi(){if(An)return wn;An=1;var e=function(){if(vn)return bn;vn=1;var e=Di(),t=Bi(),r=Pi(),n=Mi(),i=/^\[object .+?Constructor\]$/,s=Function.prototype,a=Object.prototype,o=s.toString,l=a.hasOwnProperty,u=RegExp("^"+o.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");return bn=function(s){return!(!r(s)||t(s))&&(e(s)?u:i).test(n(s))}}(),t=En?xn:(En=1,xn=function(e,t){return null==e?void 0:e[t]});return wn=function(r,n){var i=t(r,n);return e(i)?i:void 0}}function ji(){if(Rn)return Cn;Rn=1;var e=Gi()(Ni(),"Map");return Cn=e}function zi(){if(Sn)return kn;Sn=1;var e=Gi()(Object,"create");return kn=e}function Fi(){if(jn)return Gn;jn=1;var e=function(){if(On)return Tn;On=1;var e=zi();return Tn=function(){this.__data__=e?e(null):{},this.size=0}}(),t=Nn?In:(Nn=1,In=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}),r=function(){if(Vn)return Ln;Vn=1;var e=zi(),t=Object.prototype.hasOwnProperty;return Ln=function(r){var n=this.__data__;if(e){var i=n[r];return"__lodash_hash_undefined__"===i?void 0:i}return t.call(n,r)?n[r]:void 0}}(),n=function(){if(Dn)return Pn;Dn=1;var e=zi(),t=Object.prototype.hasOwnProperty;return Pn=function(r){var n=this.__data__;return e?void 0!==n[r]:t.call(n,r)}}(),i=function(){if(Mn)return Bn;Mn=1;var e=zi();return Bn=function(t,r){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=e&&void 0===r?"__lodash_hash_undefined__":r,this}}();function s(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=i,Gn=s}function Ui(){if(Yn)return Wn;Yn=1;var e=Hn?Un:(Hn=1,Un=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e});return Wn=function(t,r){var n=t.__data__;return e(r)?n["string"==typeof r?"string":"hash"]:n.map}}function Hi(){if(ri)return ti;ri=1;var e=function(){if(Fn)return zn;Fn=1;var e=Fi(),t=Oi(),r=ji();return zn=function(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}}(),t=function(){if(qn)return Xn;qn=1;var e=Ui();return Xn=function(t){var r=e(this,t).delete(t);return this.size-=r?1:0,r}}(),r=function(){if(Zn)return Kn;Zn=1;var e=Ui();return Kn=function(t){return e(this,t).get(t)}}(),n=function(){if(Jn)return $n;Jn=1;var e=Ui();return $n=function(t){return e(this,t).has(t)}}(),i=function(){if(ei)return Qn;ei=1;var e=Ui();return Qn=function(t,r){var n=e(this,t),i=n.size;return n.set(t,r),this.size+=n.size==i?0:1,this}}();function s(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}return s.prototype.clear=e,s.prototype.delete=t,s.prototype.get=r,s.prototype.has=n,s.prototype.set=i,ti=s}function Wi(){if(ai)return si;ai=1;var e=Oi(),t=function(){if(Ur)return Fr;Ur=1;var e=Oi();return Fr=function(){this.__data__=new e,this.size=0}}(),r=Wr?Hr:(Wr=1,Hr=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}),n=Xr?Yr:(Xr=1,Yr=function(e){return this.__data__.get(e)}),i=Kr?qr:(Kr=1,qr=function(e){return this.__data__.has(e)}),s=function(){if(ii)return ni;ii=1;var e=Oi(),t=ji(),r=Hi();return ni=function(n,i){var s=this.__data__;if(s instanceof e){var a=s.__data__;if(!t||a.length<199)return a.push([n,i]),this.size=++s.size,this;s=this.__data__=new r(a)}return s.set(n,i),this.size=s.size,this}}();function a(t){var r=this.__data__=new e(t);this.size=r.size}return a.prototype.clear=t,a.prototype.delete=r,a.prototype.get=n,a.prototype.has=i,a.prototype.set=s,si=a}
11
+ /**
12
+ * A specialized version of `_.forEach` for arrays without support for
13
+ * iteratee shorthands.
14
+ *
15
+ * @private
16
+ * @param {Array} [array] The array to iterate over.
17
+ * @param {Function} iteratee The function invoked per iteration.
18
+ * @returns {Array} Returns `array`.
19
+ */function Yi(){if(li)return oi;return li=1,oi=function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}}function Xi(){if(ci)return ui;ci=1;var e=Gi(),t=function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();return ui=t}function qi(){if(di)return hi;di=1;var e=Xi();return hi=function(t,r,n){"__proto__"==r&&e?e(t,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[r]=n}}function Ki(){if(pi)return fi;pi=1;var e=qi(),t=Si(),r=Object.prototype.hasOwnProperty;return fi=function(n,i,s){var a=n[i];r.call(n,i)&&t(a,s)&&(void 0!==s||i in n)||e(n,i,s)}}function Zi(){if(gi)return _i;gi=1;var e=Ki(),t=qi();return _i=function(r,n,i,s){var a=!i;i||(i={});for(var o=-1,l=n.length;++o<l;){var u=n[o],c=s?s(i[u],r[u],u,i,r):void 0;void 0===c&&(c=r[u]),a?t(i,u,c):e(i,u,c)}return i}}function $i(){if(vi)return bi;return vi=1,bi=function(e){return null!=e&&"object"==typeof e}}function Ji(){if(Ai)return wi;Ai=1;var e=function(){if(Ei)return xi;Ei=1;var e=Vi(),t=$i();return xi=function(r){return t(r)&&"[object Arguments]"==e(r)}}(),t=$i(),r=Object.prototype,n=r.hasOwnProperty,i=r.propertyIsEnumerable,s=e(function(){return arguments}())?e:function(e){return t(e)&&n.call(e,"callee")&&!i.call(e,"callee")};return wi=s}function Qi(){if(Ri)return Ci;Ri=1;var e=Array.isArray;return Ci=e}var es,ts,rs,ns,is,ss,as,os,ls,us,cs,hs={exports:{}};function ds(){return rs||(rs=1,function(e,t){var r=Ni(),n=ts?es:(ts=1,es=function(){return!1}),i=t&&!t.nodeType&&t,s=i&&e&&!e.nodeType&&e,a=s&&s.exports===i?r.Buffer:void 0,o=(a?a.isBuffer:void 0)||n;e.exports=o}(hs,hs.exports)),hs.exports}function fs(){if(is)return ns;is=1;var e=/^(?:0|[1-9]\d*)$/;return ns=function(t,r){var n=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&e.test(t))&&t>-1&&t%1==0&&t<r}}function ps(){if(as)return ss;as=1;return ss=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}}function _s(){if(cs)return us;return cs=1,us=function(e){return function(t){return e(t)}}}hs.exports;var gs,ys,ms,bs,vs,xs,Es,ws,As,Cs,Rs,ks,Ss,Ts,Os,Is,Ns,Ls,Vs,Ps,Ds,Bs,Ms,Gs,js,zs,Fs,Us={exports:{}};function Hs(){return gs||(gs=1,function(e,t){var r=Ii(),n=t&&!t.nodeType&&t,i=n&&e&&!e.nodeType&&e,s=i&&i.exports===n&&r.process,a=function(){try{var e=i&&i.require&&i.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();e.exports=a}(Us,Us.exports)),Us.exports}function Ws(){if(ms)return ys;ms=1;var e=function(){if(ls)return os;ls=1;var e=Vi(),t=ps(),r=$i(),n={};return n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1,os=function(i){return r(i)&&t(i.length)&&!!n[e(i)]}}(),t=_s(),r=Hs(),n=r&&r.isTypedArray,i=n?t(n):e;return ys=i}function Ys(){if(vs)return bs;vs=1;var e=mi?yi:(mi=1,yi=function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}),t=Ji(),r=Qi(),n=ds(),i=fs(),s=Ws(),a=Object.prototype.hasOwnProperty;return bs=function(o,l){var u=r(o),c=!u&&t(o),h=!u&&!c&&n(o),d=!u&&!c&&!h&&s(o),f=u||c||h||d,p=f?e(o.length,String):[],_=p.length;for(var g in o)!l&&!a.call(o,g)||f&&("length"==g||h&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||i(g,_))||p.push(g);return p}}function Xs(){if(Es)return xs;Es=1;var e=Object.prototype;return xs=function(t){var r=t&&t.constructor;return t===("function"==typeof r&&r.prototype||e)}}function qs(){if(As)return ws;return As=1,ws=function(e,t){return function(r){return e(t(r))}}}function Ks(){if(Ss)return ks;Ss=1;var e=Xs(),t=function(){if(Rs)return Cs;Rs=1;var e=qs()(Object.keys,Object);return Cs=e}(),r=Object.prototype.hasOwnProperty;return ks=function(n){if(!e(n))return t(n);var i=[];for(var s in Object(n))r.call(n,s)&&"constructor"!=s&&i.push(s);return i}}function Zs(){if(Os)return Ts;Os=1;var e=Di(),t=ps();return Ts=function(r){return null!=r&&t(r.length)&&!e(r)}}function $s(){if(Ns)return Is;Ns=1;var e=Ys(),t=Ks(),r=Zs();return Is=function(n){return r(n)?e(n):t(n)}}function Js(){if(Ms)return Bs;Ms=1;var e=Pi(),t=Xs(),r=Ds?Ps:(Ds=1,Ps=function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}),n=Object.prototype.hasOwnProperty;return Bs=function(i){if(!e(i))return r(i);var s=t(i),a=[];for(var o in i)("constructor"!=o||!s&&n.call(i,o))&&a.push(o);return a}}function Qs(){if(js)return Gs;js=1;var e=Ys(),t=Js(),r=Zs();return Gs=function(n){return r(n)?e(n,!0):t(n)}}Us.exports;var ea,ta,ra,na,ia,sa,aa,oa,la,ua,ca,ha,da,fa,pa,_a,ga,ya,ma,ba,va,xa,Ea,wa,Aa,Ca,Ra,ka,Sa,Ta,Oa,Ia,Na,La,Va,Pa,Da,Ba,Ma,Ga,ja,za,Fa,Ua,Ha,Wa,Ya,Xa,qa,Ka,Za,$a,Ja,Qa,eo,to,ro,no,io,so,ao,oo,lo,uo,co,ho,fo,po,_o,go,yo,mo,bo,vo,xo,Eo,wo,Ao,Co,Ro,ko,So,To,Oo,Io,No,Lo,Vo,Po,Do,Bo,Mo,Go,jo,zo,Fo,Uo,Ho,Wo,Yo,Xo,qo,Ko,Zo,$o,Jo,Qo,el,tl,rl,nl,il,sl,al,ol,ll,ul,cl,hl,dl,fl,pl,_l,gl,yl,ml,bl,vl,xl,El,wl,Al,Cl,Rl,kl,Sl,Tl,Ol,Il,Nl,Ll,Vl,Pl,Dl,Bl,Ml,Gl,jl,zl,Fl,Ul,Hl,Wl,Yl,Xl,ql,Kl,Zl,$l,Jl,Ql,eu,tu,ru,nu,iu,su,au,ou,lu,uu,cu,hu,du,fu,pu,_u,gu,yu,mu,bu,vu,xu,Eu,wu,Au,Cu,Ru,ku,Su,Tu,Ou,Iu,Nu,Lu,Vu,Pu,Du,Bu,Mu,Gu,ju,zu,Fu,Uu,Hu,Wu,Yu,Xu,qu,Ku,Zu,$u,Ju,Qu,ec,tc,rc,nc,ic,sc,ac,oc,lc,uc,cc,hc,dc,fc,pc,_c,gc,yc,mc,bc,vc,xc,Ec,wc,Ac,Cc,Rc,kc,Sc,Tc,Oc,Ic,Nc,Lc,Vc,Pc,Dc,Bc,Mc,Gc,jc,zc,Fc,Uc,Hc,Wc,Yc,Xc,qc,Kc,Zc,$c,Jc,Qc,eh,th,rh,nh,ih,sh,ah,oh,lh,uh,ch,hh={exports:{}};function dh(){return ea||(ea=1,function(e,t){var r=Ni(),n=t&&!t.nodeType&&t,i=n&&e&&!e.nodeType&&e,s=i&&i.exports===n?r.Buffer:void 0,a=s?s.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var r=e.length,n=a?a(r):new e.constructor(r);return e.copy(n),n}}(hh,hh.exports)),hh.exports}function fh(){if(ra)return ta;return ra=1,ta=function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}}
20
+ /**
21
+ * A specialized version of `_.filter` for arrays without support for
22
+ * iteratee shorthands.
23
+ *
24
+ * @private
25
+ * @param {Array} [array] The array to iterate over.
26
+ * @param {Function} predicate The function invoked per iteration.
27
+ * @returns {Array} Returns the new filtered array.
28
+ */function ph(){if(ia)return na;return ia=1,na=function(e,t){for(var r=-1,n=null==e?0:e.length,i=0,s=[];++r<n;){var a=e[r];t(a,r,e)&&(s[i++]=a)}return s}}function _h(){if(aa)return sa;return aa=1,sa=function(){return[]}}function gh(){if(la)return oa;la=1;var e=ph(),t=_h(),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;return oa=n?function(t){return null==t?[]:(t=Object(t),e(n(t),(function(e){return r.call(t,e)})))}:t}function yh(){if(da)return ha;return da=1,ha=function(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}}function mh(){if(pa)return fa;pa=1;var e=qs()(Object.getPrototypeOf,Object);return fa=e}function bh(){if(ga)return _a;ga=1;var e=yh(),t=mh(),r=gh(),n=_h(),i=Object.getOwnPropertySymbols;return _a=i?function(n){for(var i=[];n;)e(i,r(n)),n=t(n);return i}:n}function vh(){if(va)return ba;va=1;var e=yh(),t=Qi();return ba=function(r,n,i){var s=n(r);return t(r)?s:e(s,i(r))}}function xh(){if(Ea)return xa;Ea=1;var e=vh(),t=gh(),r=$s();return xa=function(n){return e(n,r,t)}}function Eh(){if(Oa)return Ta;Oa=1;var e=Gi()(Ni(),"Set");return Ta=e}function wh(){if(Va)return La;Va=1;var e=function(){if(Ra)return Ca;Ra=1;var e=Gi()(Ni(),"DataView");return Ca=e}(),t=ji(),r=function(){if(Sa)return ka;Sa=1;var e=Gi()(Ni(),"Promise");return ka=e}(),n=Eh(),i=function(){if(Na)return Ia;Na=1;var e=Gi()(Ni(),"WeakMap");return Ia=e}(),s=Vi(),a=Mi(),o="[object Map]",l="[object Promise]",u="[object Set]",c="[object WeakMap]",h="[object DataView]",d=a(e),f=a(t),p=a(r),_=a(n),g=a(i),y=s;return(e&&y(new e(new ArrayBuffer(1)))!=h||t&&y(new t)!=o||r&&y(r.resolve())!=l||n&&y(new n)!=u||i&&y(new i)!=c)&&(y=function(e){var t=s(e),r="[object Object]"==t?e.constructor:void 0,n=r?a(r):"";if(n)switch(n){case d:return h;case f:return o;case p:return l;case _:return u;case g:return c}return t}),La=y}function Ah(){if(Ma)return Ba;Ma=1;var e=Ni().Uint8Array;return Ba=e}function Ch(){if(ja)return Ga;ja=1;var e=Ah();return Ga=function(t){var r=new t.constructor(t.byteLength);return new e(r).set(new e(t)),r}}function Rh(){if(qa)return Xa;qa=1;var e=Ch();return Xa=function(t,r){var n=r?e(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}}function kh(){if(Za)return Ka;Za=1;var e=Ch(),t=function(){if(Fa)return za;Fa=1;var e=Ch();return za=function(t,r){var n=r?e(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}}(),r=function(){if(Ha)return Ua;Ha=1;var e=/\w*$/;return Ua=function(t){var r=new t.constructor(t.source,e.exec(t));return r.lastIndex=t.lastIndex,r}}(),n=function(){if(Ya)return Wa;Ya=1;var e=Li(),t=e?e.prototype:void 0,r=t?t.valueOf:void 0;return Wa=function(e){return r?Object(r.call(e)):{}}}(),i=Rh();return Ka=function(s,a,o){var l=s.constructor;switch(a){case"[object ArrayBuffer]":return e(s);case"[object Boolean]":case"[object Date]":return new l(+s);case"[object DataView]":return t(s,o);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return i(s,o);case"[object Map]":case"[object Set]":return new l;case"[object Number]":case"[object String]":return new l(s);case"[object RegExp]":return r(s);case"[object Symbol]":return n(s)}}}function Sh(){if(Ja)return $a;Ja=1;var e=Pi(),t=Object.create,r=function(){function r(){}return function(n){if(!e(n))return{};if(t)return t(n);r.prototype=n;var i=new r;return r.prototype=void 0,i}}();return $a=r}function Th(){if(eo)return Qa;eo=1;var e=Sh(),t=mh(),r=Xs();return Qa=function(n){return"function"!=typeof n.constructor||r(n)?{}:e(t(n))}}function Oh(){if(io)return no;io=1;var e=function(){if(ro)return to;ro=1;var e=wh(),t=$i();return to=function(r){return t(r)&&"[object Map]"==e(r)}}(),t=_s(),r=Hs(),n=r&&r.isMap,i=n?t(n):e;return no=i}function Ih(){if(lo)return oo;lo=1;var e=function(){if(ao)return so;ao=1;var e=wh(),t=$i();return so=function(r){return t(r)&&"[object Set]"==e(r)}}(),t=_s(),r=Hs(),n=r&&r.isSet,i=n?t(n):e;return oo=i}function Nh(){if(co)return uo;co=1;var e=Wi(),t=Yi(),r=Ki(),n=function(){if(Vs)return Ls;Vs=1;var e=Zi(),t=$s();return Ls=function(r,n){return r&&e(n,t(n),r)}}(),i=function(){if(Fs)return zs;Fs=1;var e=Zi(),t=Qs();return zs=function(r,n){return r&&e(n,t(n),r)}}(),s=dh(),a=fh(),o=function(){if(ca)return ua;ca=1;var e=Zi(),t=gh();return ua=function(r,n){return e(r,t(r),n)}}(),l=function(){if(ma)return ya;ma=1;var e=Zi(),t=bh();return ya=function(r,n){return e(r,t(r),n)}}(),u=xh(),c=function(){if(Aa)return wa;Aa=1;var e=vh(),t=bh(),r=Qs();return wa=function(n){return e(n,r,t)}}(),h=wh(),d=function(){if(Da)return Pa;Da=1;var e=Object.prototype.hasOwnProperty;return Pa=function(t){var r=t.length,n=new t.constructor(r);return r&&"string"==typeof t[0]&&e.call(t,"index")&&(n.index=t.index,n.input=t.input),n}}(),f=kh(),p=Th(),_=Qi(),g=ds(),y=Oh(),m=Pi(),b=Ih(),v=$s(),x=Qs(),E="[object Arguments]",w="[object Function]",A="[object Object]",C={};return C[E]=C["[object Array]"]=C["[object ArrayBuffer]"]=C["[object DataView]"]=C["[object Boolean]"]=C["[object Date]"]=C["[object Float32Array]"]=C["[object Float64Array]"]=C["[object Int8Array]"]=C["[object Int16Array]"]=C["[object Int32Array]"]=C["[object Map]"]=C["[object Number]"]=C[A]=C["[object RegExp]"]=C["[object Set]"]=C["[object String]"]=C["[object Symbol]"]=C["[object Uint8Array]"]=C["[object Uint8ClampedArray]"]=C["[object Uint16Array]"]=C["[object Uint32Array]"]=!0,C["[object Error]"]=C[w]=C["[object WeakMap]"]=!1,uo=function R(k,S,T,O,I,N){var L,V=1&S,P=2&S,D=4&S;if(T&&(L=I?T(k,O,I,N):T(k)),void 0!==L)return L;if(!m(k))return k;var B=_(k);if(B){if(L=d(k),!V)return a(k,L)}else{var M=h(k),G=M==w||"[object GeneratorFunction]"==M;if(g(k))return s(k,V);if(M==A||M==E||G&&!I){if(L=P||G?{}:p(k),!V)return P?l(k,i(L,k)):o(k,n(L,k))}else{if(!C[M])return I?k:{};L=f(k,M,V)}}N||(N=new e);var j=N.get(k);if(j)return j;N.set(k,L),b(k)?k.forEach((function(e){L.add(R(e,S,T,e,k,N))})):y(k)&&k.forEach((function(e,t){L.set(t,R(e,S,T,t,k,N))}));var z=B?void 0:(D?P?c:u:P?x:v)(k);return t(z||k,(function(e,t){z&&(e=k[t=e]),r(L,t,R(e,S,T,t,k,N))})),L},uo}function Lh(){if(fo)return ho;fo=1;var e=Nh();return ho=function(t){return e(t,4)}}function Vh(){if(_o)return po;return _o=1,po=function(e){return function(){return e}}}function Ph(){if(bo)return mo;bo=1;var e=(yo?go:(yo=1,go=function(e){return function(t,r,n){for(var i=-1,s=Object(t),a=n(t),o=a.length;o--;){var l=a[e?o:++i];if(!1===r(s[l],l,s))break}return t}}))();return mo=e}function Dh(){if(xo)return vo;xo=1;var e=Ph(),t=$s();return vo=function(r,n){return r&&e(r,n,t)}}function Bh(){if(Co)return Ao;Co=1;var e=Dh(),t=function(){if(wo)return Eo;wo=1;var e=Zs();return Eo=function(t,r){return function(n,i){if(null==n)return n;if(!e(n))return t(n,i);for(var s=n.length,a=r?s:-1,o=Object(n);(r?a--:++a<s)&&!1!==i(o[a],a,o););return n}}}()(e);return Ao=t}function Mh(){if(ko)return Ro;return ko=1,Ro=function(e){return e}}function Gh(){if(To)return So;To=1;var e=Mh();return So=function(t){return"function"==typeof t?t:e}}function jh(){if(Io)return Oo;Io=1;var e=Yi(),t=Bh(),r=Gh(),n=Qi();return Oo=function(i,s){return(n(i)?e:t)(i,r(s))}}function zh(){return Lo?No:(Lo=1,No=jh())}function Fh(){if(zo)return jo;zo=1;var e=Hi(),t=Bo?Do:(Bo=1,Do=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}),r=Go?Mo:(Go=1,Mo=function(e){return this.__data__.has(e)});function n(t){var r=-1,n=null==t?0:t.length;for(this.__data__=new e;++r<n;)this.add(t[r])}return n.prototype.add=n.prototype.push=t,n.prototype.has=r,jo=n}
29
+ /**
30
+ * A specialized version of `_.some` for arrays without support for iteratee
31
+ * shorthands.
32
+ *
33
+ * @private
34
+ * @param {Array} [array] The array to iterate over.
35
+ * @param {Function} predicate The function invoked per iteration.
36
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
37
+ * else `false`.
38
+ */function Uh(){if(Wo)return Ho;return Wo=1,Ho=function(e,t){return e.has(t)}}function Hh(){if(Xo)return Yo;Xo=1;var e=Fh(),t=Uo?Fo:(Uo=1,Fo=function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}),r=Uh();return Yo=
39
+ /**
40
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
41
+ * partial deep comparisons.
42
+ *
43
+ * @private
44
+ * @param {Array} array The array to compare.
45
+ * @param {Array} other The other array to compare.
46
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
47
+ * @param {Function} customizer The function to customize comparisons.
48
+ * @param {Function} equalFunc The function to determine equivalents of values.
49
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
50
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
51
+ */
52
+ function(n,i,s,a,o,l){var u=1&s,c=n.length,h=i.length;if(c!=h&&!(u&&h>c))return!1;var d=l.get(n),f=l.get(i);if(d&&f)return d==i&&f==n;var p=-1,_=!0,g=2&s?new e:void 0;for(l.set(n,i),l.set(i,n);++p<c;){var y=n[p],m=i[p];if(a)var b=u?a(m,y,p,i,n,l):a(y,m,p,n,i,l);if(void 0!==b){if(b)continue;_=!1;break}if(g){if(!t(i,(function(e,t){if(!r(g,t)&&(y===e||o(y,e,s,a,l)))return g.push(t)}))){_=!1;break}}else if(y!==m&&!o(y,m,s,a,l)){_=!1;break}}return l.delete(n),l.delete(i),_}}function Wh(){if($o)return Zo;return $o=1,Zo=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}}function Yh(){if(Qo)return Jo;Qo=1;var e=Li(),t=Ah(),r=Si(),n=Hh(),i=Ko?qo:(Ko=1,qo=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}),s=Wh(),a=e?e.prototype:void 0,o=a?a.valueOf:void 0;return Jo=
53
+ /**
54
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
55
+ * the same `toStringTag`.
56
+ *
57
+ * **Note:** This function only supports comparing values with tags of
58
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
59
+ *
60
+ * @private
61
+ * @param {Object} object The object to compare.
62
+ * @param {Object} other The other object to compare.
63
+ * @param {string} tag The `toStringTag` of the objects to compare.
64
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
65
+ * @param {Function} customizer The function to customize comparisons.
66
+ * @param {Function} equalFunc The function to determine equivalents of values.
67
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
68
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
69
+ */
70
+ function(e,a,l,u,c,h,d){switch(l){case"[object DataView]":if(e.byteLength!=a.byteLength||e.byteOffset!=a.byteOffset)return!1;e=e.buffer,a=a.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=a.byteLength||!h(new t(e),new t(a)));case"[object Boolean]":case"[object Date]":case"[object Number]":return r(+e,+a);case"[object Error]":return e.name==a.name&&e.message==a.message;case"[object RegExp]":case"[object String]":return e==a+"";case"[object Map]":var f=i;case"[object Set]":var p=1&u;if(f||(f=s),e.size!=a.size&&!p)return!1;var _=d.get(e);if(_)return _==a;u|=2,d.set(e,a);var g=n(f(e),f(a),u,c,h,d);return d.delete(e),g;case"[object Symbol]":if(o)return o.call(e)==o.call(a)}return!1}}function Xh(){if(nl)return rl;nl=1;var e=Wi(),t=Hh(),r=Yh(),n=function(){if(tl)return el;tl=1;var e=xh(),t=Object.prototype.hasOwnProperty;return el=
71
+ /**
72
+ * A specialized version of `baseIsEqualDeep` for objects with support for
73
+ * partial deep comparisons.
74
+ *
75
+ * @private
76
+ * @param {Object} object The object to compare.
77
+ * @param {Object} other The other object to compare.
78
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
79
+ * @param {Function} customizer The function to customize comparisons.
80
+ * @param {Function} equalFunc The function to determine equivalents of values.
81
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
82
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
83
+ */
84
+ function(r,n,i,s,a,o){var l=1&i,u=e(r),c=u.length;if(c!=e(n).length&&!l)return!1;for(var h=c;h--;){var d=u[h];if(!(l?d in n:t.call(n,d)))return!1}var f=o.get(r),p=o.get(n);if(f&&p)return f==n&&p==r;var _=!0;o.set(r,n),o.set(n,r);for(var g=l;++h<c;){var y=r[d=u[h]],m=n[d];if(s)var b=l?s(m,y,d,n,r,o):s(y,m,d,r,n,o);if(!(void 0===b?y===m||a(y,m,i,s,o):b)){_=!1;break}g||(g="constructor"==d)}if(_&&!g){var v=r.constructor,x=n.constructor;v==x||!("constructor"in r)||!("constructor"in n)||"function"==typeof v&&v instanceof v&&"function"==typeof x&&x instanceof x||(_=!1)}return o.delete(r),o.delete(n),_}}(),i=wh(),s=Qi(),a=ds(),o=Ws(),l="[object Arguments]",u="[object Array]",c="[object Object]",h=Object.prototype.hasOwnProperty;return rl=
85
+ /**
86
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
87
+ * deep comparisons and tracks traversed objects enabling objects with circular
88
+ * references to be compared.
89
+ *
90
+ * @private
91
+ * @param {Object} object The object to compare.
92
+ * @param {Object} other The other object to compare.
93
+ * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
94
+ * @param {Function} customizer The function to customize comparisons.
95
+ * @param {Function} equalFunc The function to determine equivalents of values.
96
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
97
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
98
+ */
99
+ function(d,f,p,_,g,y){var m=s(d),b=s(f),v=m?u:i(d),x=b?u:i(f),E=(v=v==l?c:v)==c,w=(x=x==l?c:x)==c,A=v==x;if(A&&a(d)){if(!a(f))return!1;m=!0,E=!1}if(A&&!E)return y||(y=new e),m||o(d)?t(d,f,p,_,g,y):r(d,f,v,p,_,g,y);if(!(1&p)){var C=E&&h.call(d,"__wrapped__"),R=w&&h.call(f,"__wrapped__");if(C||R){var k=C?d.value():d,S=R?f.value():f;return y||(y=new e),g(k,S,p,_,y)}}return!!A&&(y||(y=new e),n(d,f,p,_,g,y))}}function qh(){if(sl)return il;sl=1;var e=Xh(),t=$i();return il=function r(n,i,s,a,o){return n===i||(null==n||null==i||!t(n)&&!t(i)?n!=n&&i!=i:e(n,i,s,a,r,o))},il}function Kh(){if(ul)return ll;ul=1;var e=Pi();return ll=function(t){return t==t&&!e(t)}}function Zh(){if(fl)return dl;return fl=1,dl=function(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}}function $h(){if(_l)return pl;_l=1;var e=function(){if(ol)return al;ol=1;var e=Wi(),t=qh();return al=function(r,n,i,s){var a=i.length,o=a,l=!s;if(null==r)return!o;for(r=Object(r);a--;){var u=i[a];if(l&&u[2]?u[1]!==r[u[0]]:!(u[0]in r))return!1}for(;++a<o;){var c=(u=i[a])[0],h=r[c],d=u[1];if(l&&u[2]){if(void 0===h&&!(c in r))return!1}else{var f=new e;if(s)var p=s(h,d,c,r,n,f);if(!(void 0===p?t(d,h,3,s,f):p))return!1}}return!0}}(),t=function(){if(hl)return cl;hl=1;var e=Kh(),t=$s();return cl=function(r){for(var n=t(r),i=n.length;i--;){var s=n[i],a=r[s];n[i]=[s,a,e(a)]}return n}}
100
+ /**
101
+ * A specialized version of `matchesProperty` for source values suitable
102
+ * for strict equality comparisons, i.e. `===`.
103
+ *
104
+ * @private
105
+ * @param {string} key The key of the property to get.
106
+ * @param {*} srcValue The value to match.
107
+ * @returns {Function} Returns the new spec function.
108
+ */(),r=Zh();return pl=function(n){var i=t(n);return 1==i.length&&i[0][2]?r(i[0][0],i[0][1]):function(t){return t===n||e(t,n,i)}}}function Jh(){if(yl)return gl;yl=1;var e=Vi(),t=$i();return gl=function(r){return"symbol"==typeof r||t(r)&&"[object Symbol]"==e(r)}}function Qh(){if(bl)return ml;bl=1;var e=Qi(),t=Jh(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;return ml=function(i,s){if(e(i))return!1;var a=typeof i;return!("number"!=a&&"symbol"!=a&&"boolean"!=a&&null!=i&&!t(i))||(n.test(i)||!r.test(i)||null!=s&&i in Object(s))}}function ed(){if(wl)return El;wl=1;var e=function(){if(xl)return vl;xl=1;var e=Hi();function t(r,n){if("function"!=typeof r||null!=n&&"function"!=typeof n)throw new TypeError("Expected a function");var i=function(){var e=arguments,t=n?n.apply(this,e):e[0],s=i.cache;if(s.has(t))return s.get(t);var a=r.apply(this,e);return i.cache=s.set(t,a)||s,a};return i.cache=new(t.Cache||e),i}return t.Cache=e,vl=t}();return El=
109
+ /**
110
+ * A specialized version of `_.memoize` which clears the memoized function's
111
+ * cache when it exceeds `MAX_MEMOIZE_SIZE`.
112
+ *
113
+ * @private
114
+ * @param {Function} func The function to have its output memoized.
115
+ * @returns {Function} Returns the new memoized function.
116
+ */
117
+ function(t){var r=e(t,(function(e){return 500===n.size&&n.clear(),e})),n=r.cache;return r}}function td(){if(kl)return Rl;return kl=1,Rl=function(e,t){for(var r=-1,n=null==e?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}}function rd(){if(Il)return Ol;Il=1;var e=function(){if(Tl)return Sl;Tl=1;var e=Li(),t=td(),r=Qi(),n=Jh(),i=e?e.prototype:void 0,s=i?i.toString:void 0;return Sl=function e(i){if("string"==typeof i)return i;if(r(i))return t(i,e)+"";if(n(i))return s?s.call(i):"";var a=i+"";return"0"==a&&1/i==-1/0?"-0":a},Sl}();return Ol=function(t){return null==t?"":e(t)}}function nd(){if(Ll)return Nl;Ll=1;var e=Qi(),t=Qh(),r=function(){if(Cl)return Al;Cl=1;var e=ed(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e((function(e){var n=[];return 46===e.charCodeAt(0)&&n.push(""),e.replace(t,(function(e,t,i,s){n.push(i?s.replace(r,"$1"):t||e)})),n}));return Al=n}
118
+ /**
119
+ * A specialized version of `_.map` for arrays without support for iteratee
120
+ * shorthands.
121
+ *
122
+ * @private
123
+ * @param {Array} [array] The array to iterate over.
124
+ * @param {Function} iteratee The function invoked per iteration.
125
+ * @returns {Array} Returns the new mapped array.
126
+ */(),n=rd();return Nl=function(i,s){return e(i)?i:t(i,s)?[i]:r(n(i))}}function id(){if(Pl)return Vl;Pl=1;var e=Jh();return Vl=function(t){if("string"==typeof t||e(t))return t;var r=t+"";return"0"==r&&1/t==-Infinity?"-0":r}}function sd(){if(Bl)return Dl;Bl=1;var e=nd(),t=id();return Dl=function(r,n){for(var i=0,s=(n=e(n,r)).length;null!=r&&i<s;)r=r[t(n[i++])];return i&&i==s?r:void 0}}function ad(){if(Ul)return Fl;Ul=1;var e=nd(),t=Ji(),r=Qi(),n=fs(),i=ps(),s=id();return Fl=function(a,o,l){for(var u=-1,c=(o=e(o,a)).length,h=!1;++u<c;){var d=s(o[u]);if(!(h=null!=a&&l(a,d)))break;a=a[d]}return h||++u!=c?h:!!(c=null==a?0:a.length)&&i(c)&&n(d,c)&&(r(a)||t(a))}}function od(){if(Wl)return Hl;Wl=1;var e=zl?jl:(zl=1,jl=function(e,t){return null!=e&&t in Object(e)}),t=ad();return Hl=function(r,n){return null!=r&&t(r,n,e)}}function ld(){if(Xl)return Yl;Xl=1;var e=qh(),t=function(){if(Gl)return Ml;Gl=1;var e=sd();return Ml=function(t,r,n){var i=null==t?void 0:e(t,r);return void 0===i?n:i}}(),r=od(),n=Qh(),i=Kh(),s=Zh(),a=id();return Yl=function(o,l){return n(o)&&i(l)?s(a(o),l):function(n){var i=t(n,o);return void 0===i&&i===l?r(n,o):e(l,i,3)}}}function ud(){if(Kl)return ql;return Kl=1,ql=function(e){return function(t){return null==t?void 0:t[e]}}}function cd(){if(Ql)return Jl;Ql=1;var e=ud(),t=function(){if($l)return Zl;$l=1;var e=sd();
127
+ /**
128
+ * A specialized version of `baseProperty` which supports deep paths.
129
+ *
130
+ * @private
131
+ * @param {Array|string} path The path of the property to get.
132
+ * @returns {Function} Returns the new accessor function.
133
+ */return Zl=function(t){return function(r){return e(r,t)}}}(),r=Qh(),n=id();return Jl=function(i){return r(i)?e(n(i)):t(i)}}function hd(){if(tu)return eu;tu=1;var e=$h(),t=ld(),r=Mh(),n=Qi(),i=cd();return eu=function(s){return"function"==typeof s?s:null==s?r:"object"==typeof s?n(s)?t(s[0],s[1]):e(s):i(s)}}function dd(){if(nu)return ru;nu=1;var e=ph(),t=function(){if(Po)return Vo;Po=1;var e=Bh();return Vo=function(t,r){var n=[];return e(t,(function(e,t,i){r(e,t,i)&&n.push(e)})),n}}(),r=hd(),n=Qi();return ru=function(i,s){return(n(i)?e:t)(i,r(s,3))}}function fd(){if(ou)return au;ou=1;var e=function(){if(su)return iu;su=1;var e=Object.prototype.hasOwnProperty;return iu=function(t,r){return null!=t&&e.call(t,r)}}(),t=ad();return au=function(r,n){return null!=r&&t(r,n,e)}}function pd(){if(uu)return lu;uu=1;var e=Ks(),t=wh(),r=Ji(),n=Qi(),i=Zs(),s=ds(),a=Xs(),o=Ws(),l=Object.prototype.hasOwnProperty;return lu=function(u){if(null==u)return!0;if(i(u)&&(n(u)||"string"==typeof u||"function"==typeof u.splice||s(u)||o(u)||r(u)))return!u.length;var c=t(u);if("[object Map]"==c||"[object Set]"==c)return!u.size;if(a(u))return!e(u).length;for(var h in u)if(l.call(u,h))return!1;return!0}}function _d(){if(hu)return cu;return hu=1,cu=function(e){return void 0===e}}function gd(){if(fu)return du;fu=1;var e=Bh(),t=Zs();return du=function(r,n){var i=-1,s=t(r)?Array(r.length):[];return e(r,(function(e,t,r){s[++i]=n(e,t,r)})),s}}function yd(){if(_u)return pu;_u=1;var e=td(),t=hd(),r=gd(),n=Qi();return pu=function(i,s){return(n(i)?e:r)(i,t(s,3))}}
134
+ /**
135
+ * A specialized version of `_.reduce` for arrays without support for
136
+ * iteratee shorthands.
137
+ *
138
+ * @private
139
+ * @param {Array} [array] The array to iterate over.
140
+ * @param {Function} iteratee The function invoked per iteration.
141
+ * @param {*} [accumulator] The initial value.
142
+ * @param {boolean} [initAccum] Specify using the first element of `array` as
143
+ * the initial value.
144
+ * @returns {*} Returns the accumulated value.
145
+ */function md(){if(xu)return vu;xu=1;var e=yu?gu:(yu=1,gu=function(e,t,r,n){var i=-1,s=null==e?0:e.length;for(n&&s&&(r=e[++i]);++i<s;)r=t(r,e[i],i,e);return r}),t=Bh(),r=hd(),n=bu?mu:(bu=1,mu=function(e,t,r,n,i){return i(e,(function(e,i,s){r=n?(n=!1,e):t(r,e,i,s)})),r}),i=Qi();return vu=function(s,a,o){var l=i(s)?e:n,u=arguments.length<3;return l(s,r(a,4),o,u,t)},vu}function bd(){if(Iu)return Ou;Iu=1;var e=function(){if(Cu)return Au;Cu=1;var e=ud()("length");return Au=e}(),t=function(){if(ku)return Ru;ku=1;var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");return Ru=function(t){return e.test(t)}}(),r=function(){if(Tu)return Su;Tu=1;var e="\\ud800-\\udfff",t="["+e+"]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",n="\\ud83c[\\udffb-\\udfff]",i="[^"+e+"]",s="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",o="(?:"+r+"|"+n+")?",l="[\\ufe0e\\ufe0f]?",u=l+o+"(?:\\u200d(?:"+[i,s,a].join("|")+")"+l+o+")*",c="(?:"+[i+r+"?",r,s,a,t].join("|")+")",h=RegExp(n+"(?="+n+")|"+c+u,"g");return Su=function(e){for(var t=h.lastIndex=0;h.test(e);)++t;return t}}();return Ou=function(n){return t(n)?r(n):e(n)}}function vd(){if(Lu)return Nu;Lu=1;var e=Ks(),t=wh(),r=Zs(),n=function(){if(wu)return Eu;wu=1;var e=Vi(),t=Qi(),r=$i();return Eu=function(n){return"string"==typeof n||!t(n)&&r(n)&&"[object String]"==e(n)}}(),i=bd();return Nu=function(s){if(null==s)return 0;if(r(s))return n(s)?i(s):s.length;var a=t(s);return"[object Map]"==a||"[object Set]"==a?s.size:e(s).length}}function xd(){if(Pu)return Vu;Pu=1;var e=Yi(),t=Sh(),r=Dh(),n=hd(),i=mh(),s=Qi(),a=ds(),o=Di(),l=Pi(),u=Ws();return Vu=function(c,h,d){var f=s(c),p=f||a(c)||u(c);if(h=n(h,4),null==d){var _=c&&c.constructor;d=p?f?new _:[]:l(c)&&o(_)?t(i(c)):{}}return(p?e:r)(c,(function(e,t,r){return h(d,e,t,r)})),d}}function Ed(){if(Gu)return Mu;Gu=1;var e=yh(),t=function(){if(Bu)return Du;Bu=1;var e=Li(),t=Ji(),r=Qi(),n=e?e.isConcatSpreadable:void 0;return Du=function(e){return r(e)||t(e)||!!(n&&e&&e[n])}}();return Mu=function r(n,i,s,a,o){var l=-1,u=n.length;for(s||(s=t),o||(o=[]);++l<u;){var c=n[l];i>0&&s(c)?i>1?r(c,i-1,s,a,o):e(o,c):a||(o[o.length]=c)}return o},Mu}function wd(){if(Uu)return Fu;Uu=1;var e=zu?ju:(zu=1,ju=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}),t=Math.max;return Fu=
146
+ /**
147
+ * A specialized version of `baseRest` which transforms the rest array.
148
+ *
149
+ * @private
150
+ * @param {Function} func The function to apply a rest parameter to.
151
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
152
+ * @param {Function} transform The rest array transform.
153
+ * @returns {Function} Returns the new function.
154
+ */
155
+ function(r,n,i){return n=t(void 0===n?r.length-1:n,0),function(){for(var s=arguments,a=-1,o=t(s.length-n,0),l=Array(o);++a<o;)l[a]=s[n+a];a=-1;for(var u=Array(n+1);++a<n;)u[a]=s[a];return u[n]=i(l),e(r,this,u)}},Fu}function Ad(){if(Ku)return qu;Ku=1;var e=function(){if(Wu)return Hu;Wu=1;var e=Vh(),t=Xi(),r=Mh();return Hu=t?function(r,n){return t(r,"toString",{configurable:!0,enumerable:!1,value:e(n),writable:!0})}:r}(),t=function(){if(Xu)return Yu;Xu=1;var e=Date.now;return Yu=function(t){var r=0,n=0;return function(){var i=e(),s=16-(i-n);if(n=i,s>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}},Yu}(),r=t(e);return qu=r}function Cd(){if($u)return Zu;$u=1;var e=Mh(),t=wd(),r=Ad();return Zu=function(n,i){return r(t(n,i,e),n+"")}}function Rd(){if(Qu)return Ju;return Qu=1,Ju=function(e,t,r,n){for(var i=e.length,s=r+(n?1:-1);n?s--:++s<i;)if(t(e[s],s,e))return s;return-1}}function kd(){if(sc)return ic;sc=1;var e=Rd(),t=tc?ec:(tc=1,ec=function(e){return e!=e}),r=nc?rc:(nc=1,rc=function(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1});return ic=function(n,i,s){return i==i?r(n,i,s):e(n,t,s)}}function Sd(){if(fc)return dc;fc=1;var e=Eh(),t=hc?cc:(hc=1,cc=function(){}),r=Wh(),n=e&&1/r(new e([,-0]))[1]==1/0?function(t){return new e(t)}:t;return dc=n}function Td(){if(_c)return pc;_c=1;var e=Fh(),t=function(){if(oc)return ac;oc=1;var e=kd();
156
+ /**
157
+ * A specialized version of `_.includes` for arrays without support for
158
+ * specifying an index to search from.
159
+ *
160
+ * @private
161
+ * @param {Array} [array] The array to inspect.
162
+ * @param {*} target The value to search for.
163
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
164
+ */return ac=function(t,r){return!(null==t||!t.length)&&e(t,r,0)>-1}}(),r=uc?lc:(uc=1,lc=function(e,t,r){for(var n=-1,i=null==e?0:e.length;++n<i;)if(r(t,e[n]))return!0;return!1}),n=Uh(),i=Sd(),s=Wh();return pc=function(a,o,l){var u=-1,c=t,h=a.length,d=!0,f=[],p=f;if(l)d=!1,c=r;else if(h>=200){var _=o?null:i(a);if(_)return s(_);d=!1,c=n,p=new e}else p=o?[]:f;e:for(;++u<h;){var g=a[u],y=o?o(g):g;if(g=l||0!==g?g:0,d&&y==y){for(var m=p.length;m--;)if(p[m]===y)continue e;o&&p.push(y),f.push(g)}else c(p,y,l)||(p!==f&&p.push(y),f.push(g))}return f}}function Od(){if(yc)return gc;yc=1;var e=Zs(),t=$i();return gc=function(r){return t(r)&&e(r)}}function Id(){if(bc)return mc;bc=1;var e=Ed(),t=Cd(),r=Td(),n=Od(),i=t((function(t){return r(e(t,1,n,!0))}));return mc=i}function Nd(){if(wc)return Ec;wc=1;var e=function(){if(xc)return vc;xc=1;var e=td();return vc=function(t,r){return e(r,(function(e){return t[e]}))}}(),t=$s();return Ec=function(r){return null==r?[]:e(r,t(r))}}function Ld(){if(Cc)return Ac;var e;Cc=1;try{e={clone:Lh(),constant:Vh(),each:zh(),filter:dd(),has:fd(),isArray:Qi(),isEmpty:pd(),isFunction:Di(),isUndefined:_d(),keys:$s(),map:yd(),reduce:md(),size:vd(),transform:xd(),union:Id(),values:Nd()}}catch(e){}return e||(e=window._),Ac=e}function Vd(){if(kc)return Rc;kc=1;var e=Ld();Rc=i;var t="\0",r="\0",n="";function i(t){this._isDirected=!e.has(t,"directed")||t.directed,this._isMultigraph=!!e.has(t,"multigraph")&&t.multigraph,this._isCompound=!!e.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=e.constant(void 0),this._defaultEdgeLabelFn=e.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[r]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function s(e,t){e[t]?e[t]++:e[t]=1}function a(e,t){--e[t]||delete e[t]}function o(r,i,s,a){var o=""+i,l=""+s;if(!r&&o>l){var u=o;o=l,l=u}return o+n+l+n+(e.isUndefined(a)?t:a)}function l(e,t){return o(e,t.v,t.w,t.name)}return i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(e){return this._label=e,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(t){return e.isFunction(t)||(t=e.constant(t)),this._defaultNodeLabelFn=t,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return e.keys(this._nodes)},i.prototype.sources=function(){var t=this;return e.filter(this.nodes(),(function(r){return e.isEmpty(t._in[r])}))},i.prototype.sinks=function(){var t=this;return e.filter(this.nodes(),(function(r){return e.isEmpty(t._out[r])}))},i.prototype.setNodes=function(t,r){var n=arguments,i=this;return e.each(t,(function(e){n.length>1?i.setNode(e,r):i.setNode(e)})),this},i.prototype.setNode=function(t,n){return e.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=n),this):(this._nodes[t]=arguments.length>1?n:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=r,this._children[t]={},this._children[r][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},i.prototype.node=function(e){return this._nodes[e]},i.prototype.hasNode=function(t){return e.has(this._nodes,t)},i.prototype.removeNode=function(t){var r=this;if(e.has(this._nodes,t)){var n=function(e){r.removeEdge(r._edgeObjs[e])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],e.each(this.children(t),(function(e){r.setParent(e)})),delete this._children[t]),e.each(e.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],e.each(e.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},i.prototype.setParent=function(t,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(n))n=r;else{for(var i=n+="";!e.isUndefined(i);i=this.parent(i))if(i===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=n,this._children[n][t]=!0,this},i.prototype._removeFromParentsChildList=function(e){delete this._children[this._parent[e]][e]},i.prototype.parent=function(e){if(this._isCompound){var t=this._parent[e];if(t!==r)return t}},i.prototype.children=function(t){if(e.isUndefined(t)&&(t=r),this._isCompound){var n=this._children[t];if(n)return e.keys(n)}else{if(t===r)return this.nodes();if(this.hasNode(t))return[]}},i.prototype.predecessors=function(t){var r=this._preds[t];if(r)return e.keys(r)},i.prototype.successors=function(t){var r=this._sucs[t];if(r)return e.keys(r)},i.prototype.neighbors=function(t){var r=this.predecessors(t);if(r)return e.union(r,this.successors(t))},i.prototype.isLeaf=function(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length},i.prototype.filterNodes=function(t){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;e.each(this._nodes,(function(e,n){t(n)&&r.setNode(n,e)})),e.each(this._edgeObjs,(function(e){r.hasNode(e.v)&&r.hasNode(e.w)&&r.setEdge(e,n.edge(e))}));var i={};function s(e){var t=n.parent(e);return void 0===t||r.hasNode(t)?(i[e]=t,t):t in i?i[t]:s(t)}return this._isCompound&&e.each(r.nodes(),(function(e){r.setParent(e,s(e))})),r},i.prototype.setDefaultEdgeLabel=function(t){return e.isFunction(t)||(t=e.constant(t)),this._defaultEdgeLabelFn=t,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return e.values(this._edgeObjs)},i.prototype.setPath=function(t,r){var n=this,i=arguments;return e.reduce(t,(function(e,t){return i.length>1?n.setEdge(e,t,r):n.setEdge(e,t),t})),this},i.prototype.setEdge=function(){var t,r,n,i,a=!1,l=arguments[0];"object"==typeof l&&null!==l&&"v"in l?(t=l.v,r=l.w,n=l.name,2===arguments.length&&(i=arguments[1],a=!0)):(t=l,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,r=""+r,e.isUndefined(n)||(n=""+n);var u=o(this._isDirected,t,r,n);if(e.has(this._edgeLabels,u))return a&&(this._edgeLabels[u]=i),this;if(!e.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(r),this._edgeLabels[u]=a?i:this._defaultEdgeLabelFn(t,r,n);var c=function(e,t,r,n){var i=""+t,s=""+r;if(!e&&i>s){var a=i;i=s,s=a}var o={v:i,w:s};n&&(o.name=n);return o}(this._isDirected,t,r,n);return t=c.v,r=c.w,Object.freeze(c),this._edgeObjs[u]=c,s(this._preds[r],t),s(this._sucs[t],r),this._in[r][u]=c,this._out[t][u]=c,this._edgeCount++,this},i.prototype.edge=function(e,t,r){var n=1===arguments.length?l(this._isDirected,arguments[0]):o(this._isDirected,e,t,r);return this._edgeLabels[n]},i.prototype.hasEdge=function(t,r,n){var i=1===arguments.length?l(this._isDirected,arguments[0]):o(this._isDirected,t,r,n);return e.has(this._edgeLabels,i)},i.prototype.removeEdge=function(e,t,r){var n=1===arguments.length?l(this._isDirected,arguments[0]):o(this._isDirected,e,t,r),i=this._edgeObjs[n];return i&&(e=i.v,t=i.w,delete this._edgeLabels[n],delete this._edgeObjs[n],a(this._preds[t],e),a(this._sucs[e],t),delete this._in[t][n],delete this._out[e][n],this._edgeCount--),this},i.prototype.inEdges=function(t,r){var n=this._in[t];if(n){var i=e.values(n);return r?e.filter(i,(function(e){return e.v===r})):i}},i.prototype.outEdges=function(t,r){var n=this._out[t];if(n){var i=e.values(n);return r?e.filter(i,(function(e){return e.w===r})):i}},i.prototype.nodeEdges=function(e,t){var r=this.inEdges(e,t);if(r)return r.concat(this.outEdges(e,t))},Rc}function Pd(){return Ic?Oc:(Ic=1,Oc={Graph:Vd(),version:Tc?Sc:(Tc=1,Sc="2.1.8")})}function Dd(){if(Lc)return Nc;Lc=1;var e=Ld(),t=Vd();function r(t){return e.map(t.nodes(),(function(r){var n=t.node(r),i=t.parent(r),s={v:r};return e.isUndefined(n)||(s.value=n),e.isUndefined(i)||(s.parent=i),s}))}function n(t){return e.map(t.edges(),(function(r){var n=t.edge(r),i={v:r.v,w:r.w};return e.isUndefined(r.name)||(i.name=r.name),e.isUndefined(n)||(i.value=n),i}))}return Nc={write:function(t){var i={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:r(t),edges:n(t)};e.isUndefined(t.graph())||(i.value=e.clone(t.graph()));return i},read:function(r){var n=new t(r.options).setGraph(r.value);return e.each(r.nodes,(function(e){n.setNode(e.v,e.value),e.parent&&n.setParent(e.v,e.parent)})),e.each(r.edges,(function(e){n.setEdge({v:e.v,w:e.w,name:e.name},e.value)})),n}}}function Bd(){if(Pc)return Vc;Pc=1;var e=Ld();return Vc=function(t){var r,n={},i=[];function s(i){e.has(n,i)||(n[i]=!0,r.push(i),e.each(t.successors(i),s),e.each(t.predecessors(i),s))}return e.each(t.nodes(),(function(e){r=[],s(e),r.length&&i.push(r)})),i},Vc}function Md(){if(Bc)return Dc;Bc=1;var e=Ld();function t(){this._arr=[],this._keyIndices={}}return Dc=t,t.prototype.size=function(){return this._arr.length},t.prototype.keys=function(){return this._arr.map((function(e){return e.key}))},t.prototype.has=function(t){return e.has(this._keyIndices,t)},t.prototype.priority=function(e){var t=this._keyIndices[e];if(void 0!==t)return this._arr[t].priority},t.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},t.prototype.add=function(t,r){var n=this._keyIndices;if(t=String(t),!e.has(n,t)){var i=this._arr,s=i.length;return n[t]=s,i.push({key:t,priority:r}),this._decrease(s),!0}return!1},t.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key},t.prototype.decrease=function(e,t){var r=this._keyIndices[e];if(t>this._arr[r].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[r].priority+" New: "+t);this._arr[r].priority=t,this._decrease(r)},t.prototype._heapify=function(e){var t=this._arr,r=2*e,n=r+1,i=e;r<t.length&&(i=t[r].priority<t[i].priority?r:i,n<t.length&&(i=t[n].priority<t[i].priority?n:i),i!==e&&(this._swap(e,i),this._heapify(i)))},t.prototype._decrease=function(e){for(var t,r=this._arr,n=r[e].priority;0!==e&&!(r[t=e>>1].priority<n);)this._swap(e,t),e=t},t.prototype._swap=function(e,t){var r=this._arr,n=this._keyIndices,i=r[e],s=r[t];r[e]=s,r[t]=i,n[s.key]=e,n[i.key]=t},Dc}function Gd(){if(Gc)return Mc;Gc=1;var e=Ld(),t=Md();Mc=function(e,n,i,s){return function(e,r,n,i){var s,a,o={},l=new t,u=function(e){var t=e.v!==s?e.v:e.w,r=o[t],i=n(e),u=a.distance+i;if(i<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+e+" Weight: "+i);u<r.distance&&(r.distance=u,r.predecessor=s,l.decrease(t,u))};e.nodes().forEach((function(e){var t=e===r?0:Number.POSITIVE_INFINITY;o[e]={distance:t},l.add(e,t)}));for(;l.size()>0&&(s=l.removeMin(),(a=o[s]).distance!==Number.POSITIVE_INFINITY);)i(s).forEach(u);return o}(e,String(n),i||r,s||function(t){return e.outEdges(t)})};var r=e.constant(1);return Mc}function jd(){if(zc)return jc;zc=1;var e=Gd(),t=Ld();return jc=function(r,n,i){return t.transform(r.nodes(),(function(t,s){t[s]=e(r,s,n,i)}),{})}}function zd(){if(Uc)return Fc;Uc=1;var e=Ld();return Fc=function(t){var r=0,n=[],i={},s=[];function a(o){var l=i[o]={onStack:!0,lowlink:r,index:r++};if(n.push(o),t.successors(o).forEach((function(t){e.has(i,t)?i[t].onStack&&(l.lowlink=Math.min(l.lowlink,i[t].index)):(a(t),l.lowlink=Math.min(l.lowlink,i[t].lowlink))})),l.lowlink===l.index){var u,c=[];do{u=n.pop(),i[u].onStack=!1,c.push(u)}while(o!==u);s.push(c)}}return t.nodes().forEach((function(t){e.has(i,t)||a(t)})),s},Fc}function Fd(){if(Wc)return Hc;Wc=1;var e=Ld(),t=zd();return Hc=function(r){return e.filter(t(r),(function(e){return e.length>1||1===e.length&&r.hasEdge(e[0],e[0])}))}}function Ud(){if(Xc)return Yc;Xc=1;var e=Ld();Yc=function(e,r,n){return function(e,t,r){var n={},i=e.nodes();return i.forEach((function(e){n[e]={},n[e][e]={distance:0},i.forEach((function(t){e!==t&&(n[e][t]={distance:Number.POSITIVE_INFINITY})})),r(e).forEach((function(r){var i=r.v===e?r.w:r.v,s=t(r);n[e][i]={distance:s,predecessor:e}}))})),i.forEach((function(e){var t=n[e];i.forEach((function(r){var s=n[r];i.forEach((function(r){var n=s[e],i=t[r],a=s[r],o=n.distance+i.distance;o<a.distance&&(a.distance=o,a.predecessor=i.predecessor)}))}))})),n}(e,r||t,n||function(t){return e.outEdges(t)})};var t=e.constant(1);return Yc}function Hd(){if(Kc)return qc;Kc=1;var e=Ld();function t(t){var n={},i={},s=[];if(e.each(t.sinks(),(function a(o){if(e.has(i,o))throw new r;e.has(n,o)||(i[o]=!0,n[o]=!0,e.each(t.predecessors(o),a),delete i[o],s.push(o))})),e.size(n)!==t.nodeCount())throw new r;return s}function r(){}return qc=t,t.CycleException=r,r.prototype=new Error,qc}function Wd(){if($c)return Zc;$c=1;var e=Hd();return Zc=function(t){try{e(t)}catch(t){if(t instanceof e.CycleException)return!1;throw t}return!0}}function Yd(){if(Qc)return Jc;Qc=1;var e=Ld();function t(r,n,i,s,a,o){e.has(s,n)||(s[n]=!0,i||o.push(n),e.each(a(n),(function(e){t(r,e,i,s,a,o)})),i&&o.push(n))}return Jc=function(r,n,i){e.isArray(n)||(n=[n]);var s=(r.isDirected()?r.successors:r.neighbors).bind(r),a=[],o={};return e.each(n,(function(e){if(!r.hasNode(e))throw new Error("Graph does not have node: "+e);t(r,e,"post"===i,o,s,a)})),a},Jc}function Xd(){if(th)return eh;th=1;var e=Yd();return eh=function(t,r){return e(t,r,"post")}}function qd(){if(nh)return rh;nh=1;var e=Yd();return rh=function(t,r){return e(t,r,"pre")}}function Kd(){if(sh)return ih;sh=1;var e=Ld(),t=Vd(),r=Md();return ih=function(n,i){var s,a=new t,o={},l=new r;function u(e){var t=e.v===s?e.w:e.v,r=l.priority(t);if(void 0!==r){var n=i(e);n<r&&(o[t]=s,l.decrease(t,n))}}if(0===n.nodeCount())return a;e.each(n.nodes(),(function(e){l.add(e,Number.POSITIVE_INFINITY),a.setNode(e)})),l.decrease(n.nodes()[0],0);var c=!1;for(;l.size()>0;){if(s=l.removeMin(),e.has(o,s))a.setEdge(s,o[s]);else{if(c)throw new Error("Input graph is not connected: "+n);c=!0}n.nodeEdges(s).forEach(u)}return a}}hh.exports;try{ch=function(){if(uh)return lh;uh=1;var e=Pd();return lh={Graph:e.Graph,json:Dd(),alg:oh?ah:(oh=1,ah={components:Bd(),dijkstra:Gd(),dijkstraAll:jd(),findCycles:Fd(),floydWarshall:Ud(),isAcyclic:Wd(),postorder:Xd(),preorder:qd(),prim:Kd(),tarjan:zd(),topsort:Hd()}),version:e.version}}()}catch(e){}ch||(ch=window.graphlib);var Zd,$d,Jd,Qd,ef,tf,rf,nf,sf,af,of,lf,uf,cf,hf,df,ff,pf,_f,gf,yf,mf,bf,vf,xf,Ef,wf,Af,Cf,Rf,kf,Sf,Tf,Of,If,Nf,Lf,Vf,Pf,Df,Bf,Mf,Gf,jf,zf,Ff,Uf,Hf,Wf,Yf,Xf,qf,Kf,Zf,$f,Jf,Qf,ep,tp,rp,np,ip,sp,ap,op,lp,up,cp,hp,dp,fp,pp,_p,gp,yp,mp,bp,vp,xp,Ep,wp,Ap,Cp,Rp,kp,Sp,Tp,Op,Ip,Np,Lp,Vp,Pp,Dp=ch;function Bp(){if(Qd)return Jd;Qd=1;var e=Si(),t=Zs(),r=fs(),n=Pi();return Jd=function(i,s,a){if(!n(a))return!1;var o=typeof s;return!!("number"==o?t(a)&&r(s,a.length):"string"==o&&s in a)&&e(a[s],i)}}function Mp(){if(lf)return of;lf=1;var e=function(){if(af)return sf;af=1;var e=/\s/;return sf=function(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}}(),t=/^\s+/;return of=function(r){return r?r.slice(0,e(r)+1).replace(t,""):r}}function Gp(){if(df)return hf;df=1;var e=function(){if(cf)return uf;cf=1;var e=Mp(),t=Pi(),r=Jh(),n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,s=/^0o[0-7]+$/i,a=parseInt;return uf=function(o){if("number"==typeof o)return o;if(r(o))return NaN;if(t(o)){var l="function"==typeof o.valueOf?o.valueOf():o;o=t(l)?l+"":l}if("string"!=typeof o)return 0===o?o:+o;o=e(o);var u=i.test(o);return u||s.test(o)?a(o.slice(2),u?2:8):n.test(o)?NaN:+o}}(),t=1/0;return hf=function(r){return r?(r=e(r))===t||r===-1/0?17976931348623157e292*(r<0?-1:1):r==r?r:0:0===r?r:0}}function jp(){if(gf)return _f;gf=1;var e=Rd(),t=hd(),r=function(){if(pf)return ff;pf=1;var e=Gp();return ff=function(t){var r=e(t),n=r%1;return r==r?n?r-n:r:0}}(),n=Math.max;return _f=function(i,s,a){var o=null==i?0:i.length;if(!o)return-1;var l=null==a?0:r(a);return l<0&&(l=n(o+l,0)),e(i,t(s,3),l)}}function zp(){if(vf)return bf;vf=1;var e=Ed();return bf=function(t){return(null==t?0:t.length)?e(t,1):[]}}function Fp(){if(Sf)return kf;Sf=1;var e=Jh();return kf=function(t,r,n){for(var i=-1,s=t.length;++i<s;){var a=t[i],o=r(a);if(null!=o&&(void 0===l?o==o&&!e(o):n(o,l)))var l=o,u=a}return u}}function Up(){if(Vf)return Lf;Vf=1;var e=qi(),t=Si();return Lf=function(r,n,i){(void 0!==i&&!t(r[n],i)||void 0===i&&!(n in r))&&e(r,n,i)}}function Hp(){if(Mf)return Bf;return Mf=1,Bf=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}}function Wp(){if(Ff)return zf;Ff=1;var e=Up(),t=dh(),r=Rh(),n=fh(),i=Th(),s=Ji(),a=Qi(),o=Od(),l=ds(),u=Di(),c=Pi(),h=function(){if(Df)return Pf;Df=1;var e=Vi(),t=mh(),r=$i(),n=Function.prototype,i=Object.prototype,s=n.toString,a=i.hasOwnProperty,o=s.call(Object);return Pf=function(n){if(!r(n)||"[object Object]"!=e(n))return!1;var i=t(n);if(null===i)return!0;var l=a.call(i,"constructor")&&i.constructor;return"function"==typeof l&&l instanceof l&&s.call(l)==o}}(),d=Ws(),f=Hp(),p=function(){if(jf)return Gf;jf=1;var e=Zi(),t=Qs();return Gf=function(r){return e(r,t(r))}}();
165
+ /**
166
+ * A specialized version of `baseMerge` for arrays and objects which performs
167
+ * deep merges and tracks traversed objects enabling objects with circular
168
+ * references to be merged.
169
+ *
170
+ * @private
171
+ * @param {Object} object The destination object.
172
+ * @param {Object} source The source object.
173
+ * @param {string} key The key of the value to merge.
174
+ * @param {number} srcIndex The index of `source`.
175
+ * @param {Function} mergeFunc The function to merge values.
176
+ * @param {Function} [customizer] The function to customize assigned values.
177
+ * @param {Object} [stack] Tracks traversed source values and their merged
178
+ * counterparts.
179
+ */return zf=function(_,g,y,m,b,v,x){var E=f(_,y),w=f(g,y),A=x.get(w);if(A)e(_,y,A);else{var C=v?v(E,w,y+"",_,g,x):void 0,R=void 0===C;if(R){var k=a(w),S=!k&&l(w),T=!k&&!S&&d(w);C=w,k||S||T?a(E)?C=E:o(E)?C=n(E):S?(R=!1,C=t(w,!0)):T?(R=!1,C=r(w,!0)):C=[]:h(w)||s(w)?(C=E,s(E)?C=p(E):c(E)&&!u(E)||(C=i(w))):R=!1}R&&(x.set(w,C),b(C,w,m,v,x),x.delete(w)),e(_,y,C)}}}function Yp(){if(Zf)return Kf;return Zf=1,Kf=function(e,t){return e<t}}function Xp(){if(ap)return sp;ap=1;var e=sd(),t=function(){if(ip)return np;ip=1;var e=Ki(),t=nd(),r=fs(),n=Pi(),i=id();return np=function(s,a,o,l){if(!n(s))return s;for(var u=-1,c=(a=t(a,s)).length,h=c-1,d=s;null!=d&&++u<c;){var f=i(a[u]),p=o;if("__proto__"===f||"constructor"===f||"prototype"===f)return s;if(u!=h){var _=d[f];void 0===(p=l?l(_,f,d):void 0)&&(p=n(_)?_:r(a[u+1])?[]:{})}e(d,f,p),d=d[f]}return s}}(),r=nd();return sp=function(n,i,s){for(var a=-1,o=i.length,l={};++a<o;){var u=i[a],c=e(n,u);s(c,u)&&t(l,r(u,n),c)}return l}}function qp(){if(gp)return _p;gp=1;var e=function(){if(pp)return fp;pp=1;var e=Math.ceil,t=Math.max;return fp=function(r,n,i,s){for(var a=-1,o=t(e((n-r)/(i||1)),0),l=Array(o);o--;)l[s?o:++a]=r,r+=i;return l}}(),t=Bp(),r=Gp();return _p=function(n){return function(i,s,a){return a&&"number"!=typeof a&&t(i,s,a)&&(s=a=void 0),i=r(i),void 0===s?(s=i,i=0):s=r(s),a=void 0===a?i<s?1:-1:r(a),e(i,s,a,n)}}}function Kp(){if(Ap)return wp;Ap=1;var e=function(){if(Ep)return xp;Ep=1;var e=Jh();return xp=function(t,r){if(t!==r){var n=void 0!==t,i=null===t,s=t==t,a=e(t),o=void 0!==r,l=null===r,u=r==r,c=e(r);if(!l&&!c&&!a&&t>r||a&&o&&u&&!l&&!c||i&&o&&u||!n&&u||!s)return 1;if(!i&&!a&&!c&&t<r||c&&n&&s&&!i&&!a||l&&n&&s||!o&&s||!u)return-1}return 0}}();return wp=function(t,r,n){for(var i=-1,s=t.criteria,a=r.criteria,o=s.length,l=n.length;++i<o;){var u=e(s[i],a[i]);if(u)return i>=l?u:u*("desc"==n[i]?-1:1)}return t.index-r.index}}function Zp(){if(Rp)return Cp;Rp=1;var e=td(),t=sd(),r=hd(),n=gd(),i=vp?bp:(vp=1,bp=function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}),s=_s(),a=Kp(),o=Mh(),l=Qi();return Cp=function(u,c,h){c=c.length?e(c,(function(e){return l(e)?function(r){return t(r,1===e.length?e[0]:e)}:e})):[o];var d=-1;c=e(c,s(r));var f=n(u,(function(t,r,n){return{criteria:e(c,(function(e){return e(t)})),index:++d,value:t}}));return i(f,(function(e,t){return a(e,t,h)}))}}try{Pp={cloneDeep:function(){if($d)return Zd;$d=1;var e=Nh();return Zd=function(t){return e(t,5)}}(),constant:Vh(),defaults:function(){if(tf)return ef;tf=1;var e=Cd(),t=Si(),r=Bp(),n=Qs(),i=Object.prototype,s=i.hasOwnProperty,a=e((function(e,a){e=Object(e);var o=-1,l=a.length,u=l>2?a[2]:void 0;for(u&&r(a[0],a[1],u)&&(l=1);++o<l;)for(var c=a[o],h=n(c),d=-1,f=h.length;++d<f;){var p=h[d],_=e[p];(void 0===_||t(_,i[p])&&!s.call(e,p))&&(e[p]=c[p])}return e}));return ef=a}(),each:zh(),filter:dd(),find:function(){if(mf)return yf;mf=1;var e=function(){if(nf)return rf;nf=1;var e=hd(),t=Zs(),r=$s();return rf=function(n){return function(i,s,a){var o=Object(i);if(!t(i)){var l=e(s,3);i=r(i),s=function(e){return l(o[e],e,o)}}var u=n(i,s,a);return u>-1?o[l?i[u]:u]:void 0}}}()(jp());return yf=e}(),flatten:zp(),forEach:jh(),forIn:function(){if(Ef)return xf;Ef=1;var e=Ph(),t=Gh(),r=Qs();return xf=function(n,i){return null==n?n:e(n,t(i),r)}}(),has:fd(),isUndefined:_d(),last:Af?wf:(Af=1,wf=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}),map:yd(),mapValues:function(){if(Rf)return Cf;Rf=1;var e=qi(),t=Dh(),r=hd();return Cf=function(n,i){var s={};return i=r(i,3),t(n,(function(t,r,n){e(s,r,i(t,r,n))})),s}}(),max:function(){if(Nf)return If;Nf=1;var e=Fp(),t=Of?Tf:(Of=1,Tf=function(e,t){return e>t}),r=Mh();return If=function(n){return n&&n.length?e(n,r,t):void 0}}(),merge:function(){if(qf)return Xf;qf=1;var e=function(){if(Hf)return Uf;Hf=1;var e=Wi(),t=Up(),r=Ph(),n=Wp(),i=Pi(),s=Qs(),a=Hp();return Uf=function o(l,u,c,h,d){l!==u&&r(u,(function(r,s){if(d||(d=new e),i(r))n(l,u,s,c,o,h,d);else{var f=h?h(a(l,s),r,s+"",l,u,d):void 0;void 0===f&&(f=r),t(l,s,f)}}),s)},Uf}(),t=function(){if(Yf)return Wf;Yf=1;var e=Cd(),t=Bp();return Wf=function(r){return e((function(e,n){var i=-1,s=n.length,a=s>1?n[s-1]:void 0,o=s>2?n[2]:void 0;for(a=r.length>3&&"function"==typeof a?(s--,a):void 0,o&&t(n[0],n[1],o)&&(a=s<3?void 0:a,s=1),e=Object(e);++i<s;){var l=n[i];l&&r(e,l,i,a)}return e}))}}()((function(t,r,n){e(t,r,n)}));return Xf=t}(),min:function(){if(Jf)return $f;Jf=1;var e=Fp(),t=Yp(),r=Mh();return $f=function(n){return n&&n.length?e(n,r,t):void 0}}(),minBy:function(){if(ep)return Qf;ep=1;var e=Fp(),t=hd(),r=Yp();return Qf=function(n,i){return n&&n.length?e(n,t(i,2),r):void 0}}(),now:function(){if(rp)return tp;rp=1;var e=Ni();return tp=function(){return e.Date.now()}}(),pick:function(){if(dp)return hp;dp=1;var e=function(){if(lp)return op;lp=1;var e=Xp(),t=od();return op=function(r,n){return e(r,n,(function(e,n){return t(r,n)}))}}(),t=function(){if(cp)return up;cp=1;var e=zp(),t=wd(),r=Ad();
180
+ /**
181
+ * A specialized version of `baseRest` which flattens the rest array.
182
+ *
183
+ * @private
184
+ * @param {Function} func The function to apply a rest parameter to.
185
+ * @returns {Function} Returns the new function.
186
+ */return up=function(n){return r(t(n,void 0,e),n+"")}}()((function(t,r){return null==t?{}:e(t,r)}));return hp=t}(),range:function(){if(mp)return yp;mp=1;var e=qp()();return yp=e}(),reduce:md(),sortBy:function(){if(Sp)return kp;Sp=1;var e=Ed(),t=Zp(),r=Cd(),n=Bp(),i=r((function(r,i){if(null==r)return[];var s=i.length;return s>1&&n(r,i[0],i[1])?i=[]:s>2&&n(i[0],i[1],i[2])&&(i=[i[0]]),t(r,e(i,1),[])}));return kp=i}(),uniqueId:function(){if(Op)return Tp;Op=1;var e=rd(),t=0;return Tp=function(r){var n=++t;return e(r)+n},Tp}(),values:Nd(),zipObject:function(){if(Vp)return Lp;Vp=1;var e=Ki(),t=Np?Ip:(Np=1,Ip=function(e,t,r){for(var n=-1,i=e.length,s=t.length,a={};++n<i;){var o=n<s?t[n]:void 0;r(a,e[n],o)}return a});return Lp=function(r,n){return t(r||[],n||[],e)}}()}}catch(e){}Pp||(Pp=window._);var $p=Pp,Jp=Qp;function Qp(){var e={};e._next=e._prev=e,this._sentinel=e}function e_(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function t_(e,t){if("_next"!==e&&"_prev"!==e)return t}Qp.prototype.dequeue=function(){var e=this._sentinel,t=e._prev;if(t!==e)return e_(t),t},Qp.prototype.enqueue=function(e){var t=this._sentinel;e._prev&&e._next&&e_(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t},Qp.prototype.toString=function(){for(var e=[],t=this._sentinel,r=t._prev;r!==t;)e.push(JSON.stringify(r,t_)),r=r._prev;return"["+e.join(", ")+"]"};var r_=$p,n_=Dp.Graph,i_=Jp,s_=function(e,t){if(e.nodeCount()<=1)return[];var r=function(e,t){var r=new n_,n=0,i=0;r_.forEach(e.nodes(),(function(e){r.setNode(e,{v:e,in:0,out:0})})),r_.forEach(e.edges(),(function(e){var s=r.edge(e.v,e.w)||0,a=t(e),o=s+a;r.setEdge(e.v,e.w,o),i=Math.max(i,r.node(e.v).out+=a),n=Math.max(n,r.node(e.w).in+=a)}));var s=r_.range(i+n+3).map((function(){return new i_})),a=n+1;return r_.forEach(r.nodes(),(function(e){l_(s,a,r.node(e))})),{graph:r,buckets:s,zeroIdx:a}}(e,t||a_),n=function(e,t,r){var n,i=[],s=t[t.length-1],a=t[0];for(;e.nodeCount();){for(;n=a.dequeue();)o_(e,t,r,n);for(;n=s.dequeue();)o_(e,t,r,n);if(e.nodeCount())for(var o=t.length-2;o>0;--o)if(n=t[o].dequeue()){i=i.concat(o_(e,t,r,n,!0));break}}return i}(r.graph,r.buckets,r.zeroIdx);return r_.flatten(r_.map(n,(function(t){return e.outEdges(t.v,t.w)})),!0)},a_=r_.constant(1);function o_(e,t,r,n,i){var s=i?[]:void 0;return r_.forEach(e.inEdges(n.v),(function(n){var a=e.edge(n),o=e.node(n.v);i&&s.push({v:n.v,w:n.w}),o.out-=a,l_(t,r,o)})),r_.forEach(e.outEdges(n.v),(function(n){var i=e.edge(n),s=n.w,a=e.node(s);a.in-=i,l_(t,r,a)})),e.removeNode(n.v),s}function l_(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var u_=$p,c_=s_,h_={run:function(e){var t="greedy"===e.graph().acyclicer?c_(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],r={},n={};function i(s){u_.has(n,s)||(n[s]=!0,r[s]=!0,u_.forEach(e.outEdges(s),(function(e){u_.has(r,e.w)?t.push(e):i(e.w)})),delete r[s])}return u_.forEach(e.nodes(),i),t}(e);u_.forEach(t,(function(t){var r=e.edge(t);e.removeEdge(t),r.forwardName=t.name,r.reversed=!0,e.setEdge(t.w,t.v,r,u_.uniqueId("rev"))}))},undo:function(e){u_.forEach(e.edges(),(function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}}))}};var d_=$p,f_=Dp.Graph,p_={addDummyNode:__,simplify:function(e){var t=(new f_).setGraph(e.graph());return d_.forEach(e.nodes(),(function(r){t.setNode(r,e.node(r))})),d_.forEach(e.edges(),(function(r){var n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})})),t},asNonCompoundGraph:function(e){var t=new f_({multigraph:e.isMultigraph()}).setGraph(e.graph());return d_.forEach(e.nodes(),(function(r){e.children(r).length||t.setNode(r,e.node(r))})),d_.forEach(e.edges(),(function(r){t.setEdge(r,e.edge(r))})),t},successorWeights:function(e){var t=d_.map(e.nodes(),(function(t){var r={};return d_.forEach(e.outEdges(t),(function(t){r[t.w]=(r[t.w]||0)+e.edge(t).weight})),r}));return d_.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=d_.map(e.nodes(),(function(t){var r={};return d_.forEach(e.inEdges(t),(function(t){r[t.v]=(r[t.v]||0)+e.edge(t).weight})),r}));return d_.zipObject(e.nodes(),t)},intersectRect:function(e,t){var r,n,i=e.x,s=e.y,a=t.x-i,o=t.y-s,l=e.width/2,u=e.height/2;if(!a&&!o)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(o)*l>Math.abs(a)*u?(o<0&&(u=-u),r=u*a/o,n=u):(a<0&&(l=-l),r=l,n=l*o/a);return{x:i+r,y:s+n}},buildLayerMatrix:function(e){var t=d_.map(d_.range(g_(e)+1),(function(){return[]}));return d_.forEach(e.nodes(),(function(r){var n=e.node(r),i=n.rank;d_.isUndefined(i)||(t[i][n.order]=r)})),t},normalizeRanks:function(e){var t=d_.min(d_.map(e.nodes(),(function(t){return e.node(t).rank})));d_.forEach(e.nodes(),(function(r){var n=e.node(r);d_.has(n,"rank")&&(n.rank-=t)}))},removeEmptyRanks:function(e){var t=d_.min(d_.map(e.nodes(),(function(t){return e.node(t).rank}))),r=[];d_.forEach(e.nodes(),(function(n){var i=e.node(n).rank-t;r[i]||(r[i]=[]),r[i].push(n)}));var n=0,i=e.graph().nodeRankFactor;d_.forEach(r,(function(t,r){d_.isUndefined(t)&&r%i!=0?--n:n&&d_.forEach(t,(function(t){e.node(t).rank+=n}))}))},addBorderNode:function(e,t,r,n){var i={width:0,height:0};arguments.length>=4&&(i.rank=r,i.order=n);return __(e,"border",i,t)},maxRank:g_,partition:function(e,t){var r={lhs:[],rhs:[]};return d_.forEach(e,(function(e){t(e)?r.lhs.push(e):r.rhs.push(e)})),r},time:function(e,t){var r=d_.now();try{return t()}finally{console.log(e+" time: "+(d_.now()-r)+"ms")}},notime:function(e,t){return t()}};function __(e,t,r,n){var i;do{i=d_.uniqueId(n)}while(e.hasNode(i));return r.dummy=t,e.setNode(i,r),i}function g_(e){return d_.max(d_.map(e.nodes(),(function(t){var r=e.node(t).rank;if(!d_.isUndefined(r))return r})))}var y_=$p,m_=p_,b_={run:function(e){e.graph().dummyChains=[],y_.forEach(e.edges(),(function(t){!function(e,t){var r,n,i,s=t.v,a=e.node(s).rank,o=t.w,l=e.node(o).rank,u=t.name,c=e.edge(t),h=c.labelRank;if(l===a+1)return;for(e.removeEdge(t),i=0,++a;a<l;++i,++a)c.points=[],n={width:0,height:0,edgeLabel:c,edgeObj:t,rank:a},r=m_.addDummyNode(e,"edge",n,"_d"),a===h&&(n.width=c.width,n.height=c.height,n.dummy="edge-label",n.labelpos=c.labelpos),e.setEdge(s,r,{weight:c.weight},u),0===i&&e.graph().dummyChains.push(r),s=r;e.setEdge(s,o,{weight:c.weight},u)}(e,t)}))},undo:function(e){y_.forEach(e.graph().dummyChains,(function(t){var r,n=e.node(t),i=n.edgeLabel;for(e.setEdge(n.edgeObj,i);n.dummy;)r=e.successors(t)[0],e.removeNode(t),i.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(i.x=n.x,i.y=n.y,i.width=n.width,i.height=n.height),t=r,n=e.node(t)}))}};var v_=$p,x_={longestPath:function(e){var t={};v_.forEach(e.sources(),(function r(n){var i=e.node(n);if(v_.has(t,n))return i.rank;t[n]=!0;var s=v_.min(v_.map(e.outEdges(n),(function(t){return r(t.w)-e.edge(t).minlen})));return s!==Number.POSITIVE_INFINITY&&null!=s||(s=0),i.rank=s}))},slack:function(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}};var E_=$p,w_=Dp.Graph,A_=x_.slack,C_=function(e){var t,r,n=new w_({directed:!1}),i=e.nodes()[0],s=e.nodeCount();n.setNode(i,{});for(;R_(n,e)<s;)t=k_(n,e),r=n.hasNode(t.v)?A_(e,t):-A_(e,t),S_(n,e,r);return n};function R_(e,t){return E_.forEach(e.nodes(),(function r(n){E_.forEach(t.nodeEdges(n),(function(i){var s=i.v,a=n===s?i.w:s;e.hasNode(a)||A_(t,i)||(e.setNode(a,{}),e.setEdge(n,a,{}),r(a))}))})),e.nodeCount()}function k_(e,t){return E_.minBy(t.edges(),(function(r){if(e.hasNode(r.v)!==e.hasNode(r.w))return A_(t,r)}))}function S_(e,t,r){E_.forEach(e.nodes(),(function(e){t.node(e).rank+=r}))}var T_=$p,O_=C_,I_=x_.slack,N_=x_.longestPath,L_=Dp.alg.preorder,V_=Dp.alg.postorder,P_=p_.simplify,D_=B_;function B_(e){e=P_(e),N_(e);var t,r=O_(e);for(j_(r),M_(r,e);t=F_(r);)H_(r,e,t,U_(r,e,t))}function M_(e,t){var r=V_(e,e.nodes());r=r.slice(0,r.length-1),T_.forEach(r,(function(r){!function(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=G_(e,t,r)}(e,t,r)}))}function G_(e,t,r){var n=e.node(r).parent,i=!0,s=t.edge(r,n),a=0;return s||(i=!1,s=t.edge(n,r)),a=s.weight,T_.forEach(t.nodeEdges(r),(function(s){var o,l,u=s.v===r,c=u?s.w:s.v;if(c!==n){var h=u===i,d=t.edge(s).weight;if(a+=h?d:-d,o=r,l=c,e.hasEdge(o,l)){var f=e.edge(r,c).cutvalue;a+=h?-f:f}}})),a}function j_(e,t){arguments.length<2&&(t=e.nodes()[0]),z_(e,{},1,t)}function z_(e,t,r,n,i){var s=r,a=e.node(n);return t[n]=!0,T_.forEach(e.neighbors(n),(function(i){T_.has(t,i)||(r=z_(e,t,r,i,n))})),a.low=s,a.lim=r++,i?a.parent=i:delete a.parent,r}function F_(e){return T_.find(e.edges(),(function(t){return e.edge(t).cutvalue<0}))}function U_(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var s=e.node(n),a=e.node(i),o=s,l=!1;s.lim>a.lim&&(o=a,l=!0);var u=T_.filter(t.edges(),(function(t){return l===W_(e,e.node(t.v),o)&&l!==W_(e,e.node(t.w),o)}));return T_.minBy(u,(function(e){return I_(t,e)}))}function H_(e,t,r,n){var i=r.v,s=r.w;e.removeEdge(i,s),e.setEdge(n.v,n.w,{}),j_(e),M_(e,t),function(e,t){var r=T_.find(e.nodes(),(function(e){return!t.node(e).parent})),n=L_(e,r);n=n.slice(1),T_.forEach(n,(function(r){var n=e.node(r).parent,i=t.edge(r,n),s=!1;i||(i=t.edge(n,r),s=!0),t.node(r).rank=t.node(n).rank+(s?i.minlen:-i.minlen)}))}(e,t)}function W_(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}B_.initLowLimValues=j_,B_.initCutValues=M_,B_.calcCutValue=G_,B_.leaveEdge=F_,B_.enterEdge=U_,B_.exchangeEdges=H_;var Y_=x_.longestPath,X_=C_,q_=D_,K_=function(e){switch(e.graph().ranker){case"network-simplex":default:$_(e);break;case"tight-tree":!function(e){Y_(e),X_(e)}(e);break;case"longest-path":Z_(e)}};var Z_=Y_;function $_(e){q_(e)}var J_=$p,Q_=function(e){var t=function(e){var t={},r=0;function n(i){var s=r;J_.forEach(e.children(i),n),t[i]={low:s,lim:r++}}return J_.forEach(e.children(),n),t}(e);J_.forEach(e.graph().dummyChains,(function(r){for(var n=e.node(r),i=n.edgeObj,s=function(e,t,r,n){var i,s,a=[],o=[],l=Math.min(t[r].low,t[n].low),u=Math.max(t[r].lim,t[n].lim);i=r;do{i=e.parent(i),a.push(i)}while(i&&(t[i].low>l||u>t[i].lim));s=i,i=n;for(;(i=e.parent(i))!==s;)o.push(i);return{path:a.concat(o.reverse()),lca:s}}(e,t,i.v,i.w),a=s.path,o=s.lca,l=0,u=a[l],c=!0;r!==i.w;){if(n=e.node(r),c){for(;(u=a[l])!==o&&e.node(u).maxRank<n.rank;)l++;u===o&&(c=!1)}if(!c){for(;l<a.length-1&&e.node(u=a[l+1]).minRank<=n.rank;)l++;u=a[l]}e.setParent(r,u),r=e.successors(r)[0]}}))};var eg=$p,tg=p_,rg={run:function(e){var t=tg.addDummyNode(e,"root",{},"_root"),r=function(e){var t={};function r(n,i){var s=e.children(n);s&&s.length&&eg.forEach(s,(function(e){r(e,i+1)})),t[n]=i}return eg.forEach(e.children(),(function(e){r(e,1)})),t}(e),n=eg.max(eg.values(r))-1,i=2*n+1;e.graph().nestingRoot=t,eg.forEach(e.edges(),(function(t){e.edge(t).minlen*=i}));var s=function(e){return eg.reduce(e.edges(),(function(t,r){return t+e.edge(r).weight}),0)}(e)+1;eg.forEach(e.children(),(function(a){ng(e,t,i,s,n,r,a)})),e.graph().nodeRankFactor=i},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,eg.forEach(e.edges(),(function(t){e.edge(t).nestingEdge&&e.removeEdge(t)}))}};function ng(e,t,r,n,i,s,a){var o=e.children(a);if(o.length){var l=tg.addBorderNode(e,"_bt"),u=tg.addBorderNode(e,"_bb"),c=e.node(a);e.setParent(l,a),c.borderTop=l,e.setParent(u,a),c.borderBottom=u,eg.forEach(o,(function(o){ng(e,t,r,n,i,s,o);var c=e.node(o),h=c.borderTop?c.borderTop:o,d=c.borderBottom?c.borderBottom:o,f=c.borderTop?n:2*n,p=h!==d?1:i-s[a]+1;e.setEdge(l,h,{weight:f,minlen:p,nestingEdge:!0}),e.setEdge(d,u,{weight:f,minlen:p,nestingEdge:!0})})),e.parent(a)||e.setEdge(t,l,{weight:0,minlen:i+s[a]})}else a!==t&&e.setEdge(t,a,{weight:0,minlen:r})}var ig=$p,sg=p_,ag=function(e){ig.forEach(e.children(),(function t(r){var n=e.children(r),i=e.node(r);if(n.length&&ig.forEach(n,t),ig.has(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var s=i.minRank,a=i.maxRank+1;s<a;++s)og(e,"borderLeft","_bl",r,i,s),og(e,"borderRight","_br",r,i,s)}}))};function og(e,t,r,n,i,s){var a={width:0,height:0,rank:s,borderType:t},o=i[t][s-1],l=sg.addDummyNode(e,"border",a,r);i[t][s]=l,e.setParent(l,n),o&&e.setEdge(o,l,{weight:1})}var lg=$p,ug={adjust:function(e){var t=e.graph().rankdir.toLowerCase();"lr"!==t&&"rl"!==t||cg(e)},undo:function(e){var t=e.graph().rankdir.toLowerCase();"bt"!==t&&"rl"!==t||function(e){lg.forEach(e.nodes(),(function(t){dg(e.node(t))})),lg.forEach(e.edges(),(function(t){var r=e.edge(t);lg.forEach(r.points,dg),lg.has(r,"y")&&dg(r)}))}(e);"lr"!==t&&"rl"!==t||(!function(e){lg.forEach(e.nodes(),(function(t){fg(e.node(t))})),lg.forEach(e.edges(),(function(t){var r=e.edge(t);lg.forEach(r.points,fg),lg.has(r,"x")&&fg(r)}))}(e),cg(e))}};function cg(e){lg.forEach(e.nodes(),(function(t){hg(e.node(t))})),lg.forEach(e.edges(),(function(t){hg(e.edge(t))}))}function hg(e){var t=e.width;e.width=e.height,e.height=t}function dg(e){e.y=-e.y}function fg(e){var t=e.x;e.x=e.y,e.y=t}var pg=$p,_g=function(e){var t={},r=pg.filter(e.nodes(),(function(t){return!e.children(t).length})),n=pg.max(pg.map(r,(function(t){return e.node(t).rank}))),i=pg.map(pg.range(n+1),(function(){return[]}));function s(r){if(!pg.has(t,r)){t[r]=!0;var n=e.node(r);i[n.rank].push(r),pg.forEach(e.successors(r),s)}}var a=pg.sortBy(r,(function(t){return e.node(t).rank}));return pg.forEach(a,s),i};var gg=$p,yg=function(e,t){for(var r=0,n=1;n<t.length;++n)r+=mg(e,t[n-1],t[n]);return r};function mg(e,t,r){for(var n=gg.zipObject(r,gg.map(r,(function(e,t){return t}))),i=gg.flatten(gg.map(t,(function(t){return gg.sortBy(gg.map(e.outEdges(t),(function(t){return{pos:n[t.w],weight:e.edge(t).weight}})),"pos")})),!0),s=1;s<r.length;)s<<=1;var a=2*s-1;s-=1;var o=gg.map(new Array(a),(function(){return 0})),l=0;return gg.forEach(i.forEach((function(e){var t=e.pos+s;o[t]+=e.weight;for(var r=0;t>0;)t%2&&(r+=o[t+1]),o[t=t-1>>1]+=e.weight;l+=e.weight*r}))),l}var bg=$p;var vg=$p;var xg=$p,Eg=p_;function wg(e,t,r){for(var n;t.length&&(n=xg.last(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}var Ag=$p,Cg=function(e,t){return bg.map(t,(function(t){var r=e.inEdges(t);if(r.length){var n=bg.reduce(r,(function(t,r){var n=e.edge(r),i=e.node(r.v);return{sum:t.sum+n.weight*i.order,weight:t.weight+n.weight}}),{sum:0,weight:0});return{v:t,barycenter:n.sum/n.weight,weight:n.weight}}return{v:t}}))},Rg=function(e,t){var r={};return vg.forEach(e,(function(e,t){var n=r[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};vg.isUndefined(e.barycenter)||(n.barycenter=e.barycenter,n.weight=e.weight)})),vg.forEach(t.edges(),(function(e){var t=r[e.v],n=r[e.w];vg.isUndefined(t)||vg.isUndefined(n)||(n.indegree++,t.out.push(r[e.w]))})),function(e){var t=[];function r(e){return function(t){t.merged||(vg.isUndefined(t.barycenter)||vg.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&function(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight);t.weight&&(r+=t.barycenter*t.weight,n+=t.weight);e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}(e,t)}}function n(t){return function(r){r.in.push(t),0==--r.indegree&&e.push(r)}}for(;e.length;){var i=e.pop();t.push(i),vg.forEach(i.in.reverse(),r(i)),vg.forEach(i.out,n(i))}return vg.map(vg.filter(t,(function(e){return!e.merged})),(function(e){return vg.pick(e,["vs","i","barycenter","weight"])}))}(vg.filter(r,(function(e){return!e.indegree})))},kg=function(e,t){var r=Eg.partition(e,(function(e){return xg.has(e,"barycenter")})),n=r.lhs,i=xg.sortBy(r.rhs,(function(e){return-e.i})),s=[],a=0,o=0,l=0;n.sort((u=!!t,function(e,t){return e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:u?t.i-e.i:e.i-t.i})),l=wg(s,i,l),xg.forEach(n,(function(e){l+=e.vs.length,s.push(e.vs),a+=e.barycenter*e.weight,o+=e.weight,l=wg(s,i,l)}));var u;var c={vs:xg.flatten(s,!0)};o&&(c.barycenter=a/o,c.weight=o);return c},Sg=function e(t,r,n,i){var s=t.children(r),a=t.node(r),o=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};o&&(s=Ag.filter(s,(function(e){return e!==o&&e!==l})));var c=Cg(t,s);Ag.forEach(c,(function(r){if(t.children(r.v).length){var s=e(t,r.v,n,i);u[r.v]=s,Ag.has(s,"barycenter")&&(a=r,o=s,Ag.isUndefined(a.barycenter)?(a.barycenter=o.barycenter,a.weight=o.weight):(a.barycenter=(a.barycenter*a.weight+o.barycenter*o.weight)/(a.weight+o.weight),a.weight+=o.weight))}var a,o}));var h=Rg(c,n);!function(e,t){Ag.forEach(e,(function(e){e.vs=Ag.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(h,u);var d=kg(h,i);if(o&&(d.vs=Ag.flatten([o,d.vs,l],!0),t.predecessors(o).length)){var f=t.node(t.predecessors(o)[0]),p=t.node(t.predecessors(l)[0]);Ag.has(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+f.order+p.order)/(d.weight+2),d.weight+=2}return d};var Tg=$p,Og=Dp.Graph,Ig=function(e,t,r){var n=function(e){var t;for(;e.hasNode(t=Tg.uniqueId("_root")););return t}(e),i=new Og({compound:!0}).setGraph({root:n}).setDefaultNodeLabel((function(t){return e.node(t)}));return Tg.forEach(e.nodes(),(function(s){var a=e.node(s),o=e.parent(s);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(i.setNode(s),i.setParent(s,o||n),Tg.forEach(e[r](s),(function(t){var r=t.v===s?t.w:t.v,n=i.edge(r,s),a=Tg.isUndefined(n)?0:n.weight;i.setEdge(r,s,{weight:e.edge(t).weight+a})})),Tg.has(a,"minRank")&&i.setNode(s,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))})),i};var Ng=$p;var Lg=$p,Vg=_g,Pg=yg,Dg=Sg,Bg=Ig,Mg=function(e,t,r){var n,i={};Ng.forEach(r,(function(r){for(var s,a,o=e.parent(r);o;){if((s=e.parent(o))?(a=i[s],i[s]=o):(a=n,n=o),a&&a!==o)return void t.setEdge(a,o);o=s}}))},Gg=Dp.Graph,jg=p_,zg=function(e){var t=jg.maxRank(e),r=Fg(e,Lg.range(1,t+1),"inEdges"),n=Fg(e,Lg.range(t-1,-1,-1),"outEdges"),i=Vg(e);Hg(e,i);for(var s,a=Number.POSITIVE_INFINITY,o=0,l=0;l<4;++o,++l){Ug(o%2?r:n,o%4>=2),i=jg.buildLayerMatrix(e);var u=Pg(e,i);u<a&&(l=0,s=Lg.cloneDeep(i),a=u)}Hg(e,s)};function Fg(e,t,r){return Lg.map(t,(function(t){return Bg(e,t,r)}))}function Ug(e,t){var r=new Gg;Lg.forEach(e,(function(e){var n=e.graph().root,i=Dg(e,n,r,t);Lg.forEach(i.vs,(function(t,r){e.node(t).order=r})),Mg(e,r,i.vs)}))}function Hg(e,t){Lg.forEach(t,(function(t){Lg.forEach(t,(function(t,r){e.node(t).order=r}))}))}var Wg=$p,Yg=Dp.Graph,Xg=p_,qg=function(e){var t,r=Xg.buildLayerMatrix(e),n=Wg.merge(Kg(e,r),Zg(e,r)),i={};Wg.forEach(["u","d"],(function(s){t="u"===s?r:Wg.values(r).reverse(),Wg.forEach(["l","r"],(function(r){"r"===r&&(t=Wg.map(t,(function(e){return Wg.values(e).reverse()})));var a=("u"===s?e.predecessors:e.successors).bind(e),o=Qg(e,t,n,a),l=ey(e,t,o.root,o.align,"r"===r);"r"===r&&(l=Wg.mapValues(l,(function(e){return-e}))),i[s+r]=l}))}));var s=ty(e,i);return ry(i,s),ny(i,e.graph().align)};function Kg(e,t){var r={};return Wg.reduce(t,(function(t,n){var i=0,s=0,a=t.length,o=Wg.last(n);return Wg.forEach(n,(function(t,l){var u=function(e,t){if(e.node(t).dummy)return Wg.find(e.predecessors(t),(function(t){return e.node(t).dummy}))}(e,t),c=u?e.node(u).order:a;(u||t===o)&&(Wg.forEach(n.slice(s,l+1),(function(t){Wg.forEach(e.predecessors(t),(function(n){var s=e.node(n),a=s.order;!(a<i||c<a)||s.dummy&&e.node(t).dummy||$g(r,n,t)}))})),s=l+1,i=c)})),n})),r}function Zg(e,t){var r={};function n(t,n,i,s,a){var o;Wg.forEach(Wg.range(n,i),(function(n){o=t[n],e.node(o).dummy&&Wg.forEach(e.predecessors(o),(function(t){var n=e.node(t);n.dummy&&(n.order<s||n.order>a)&&$g(r,t,o)}))}))}return Wg.reduce(t,(function(t,r){var i,s=-1,a=0;return Wg.forEach(r,(function(o,l){if("border"===e.node(o).dummy){var u=e.predecessors(o);u.length&&(i=e.node(u[0]).order,n(r,a,l,s,i),a=l,s=i)}n(r,a,r.length,i,t.length)})),r})),r}function $g(e,t,r){if(t>r){var n=t;t=r,r=n}var i=e[t];i||(e[t]=i={}),i[r]=!0}function Jg(e,t,r){if(t>r){var n=t;t=r,r=n}return Wg.has(e[t],r)}function Qg(e,t,r,n){var i={},s={},a={};return Wg.forEach(t,(function(e){Wg.forEach(e,(function(e,t){i[e]=e,s[e]=e,a[e]=t}))})),Wg.forEach(t,(function(e){var t=-1;Wg.forEach(e,(function(e){var o=n(e);if(o.length){o=Wg.sortBy(o,(function(e){return a[e]}));for(var l=(o.length-1)/2,u=Math.floor(l),c=Math.ceil(l);u<=c;++u){var h=o[u];s[e]===e&&t<a[h]&&!Jg(r,e,h)&&(s[h]=e,s[e]=i[e]=i[h],t=a[h])}}}))})),{root:i,align:s}}function ey(e,t,r,n,i){var s={},a=function(e,t,r,n){var i=new Yg,s=e.graph(),a=function(e,t,r){return function(n,i,s){var a,o=n.node(i),l=n.node(s),u=0;if(u+=o.width/2,Wg.has(o,"labelpos"))switch(o.labelpos.toLowerCase()){case"l":a=-o.width/2;break;case"r":a=o.width/2}if(a&&(u+=r?a:-a),a=0,u+=(o.dummy?t:e)/2,u+=(l.dummy?t:e)/2,u+=l.width/2,Wg.has(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":a=l.width/2;break;case"r":a=-l.width/2}return a&&(u+=r?a:-a),a=0,u}}(s.nodesep,s.edgesep,n);return Wg.forEach(t,(function(t){var n;Wg.forEach(t,(function(t){var s=r[t];if(i.setNode(s),n){var o=r[n],l=i.edge(o,s);i.setEdge(o,s,Math.max(a(e,t,n),l||0))}n=t}))})),i}(e,t,r,i),o=i?"borderLeft":"borderRight";function l(e,t){for(var r=a.nodes(),n=r.pop(),i={};n;)i[n]?e(n):(i[n]=!0,r.push(n),r=r.concat(t(n))),n=r.pop()}return l((function(e){s[e]=a.inEdges(e).reduce((function(e,t){return Math.max(e,s[t.v]+a.edge(t))}),0)}),a.predecessors.bind(a)),l((function(t){var r=a.outEdges(t).reduce((function(e,t){return Math.min(e,s[t.w]-a.edge(t))}),Number.POSITIVE_INFINITY),n=e.node(t);r!==Number.POSITIVE_INFINITY&&n.borderType!==o&&(s[t]=Math.max(s[t],r))}),a.successors.bind(a)),Wg.forEach(n,(function(e){s[e]=s[r[e]]})),s}function ty(e,t){return Wg.minBy(Wg.values(t),(function(t){var r=Number.NEGATIVE_INFINITY,n=Number.POSITIVE_INFINITY;return Wg.forIn(t,(function(t,i){var s=function(e,t){return e.node(t).width}(e,i)/2;r=Math.max(t+s,r),n=Math.min(t-s,n)})),r-n}))}function ry(e,t){var r=Wg.values(t),n=Wg.min(r),i=Wg.max(r);Wg.forEach(["u","d"],(function(r){Wg.forEach(["l","r"],(function(s){var a,o=r+s,l=e[o];if(l!==t){var u=Wg.values(l);(a="l"===s?n-Wg.min(u):i-Wg.max(u))&&(e[o]=Wg.mapValues(l,(function(e){return e+a})))}}))}))}function ny(e,t){return Wg.mapValues(e.ul,(function(r,n){if(t)return e[t.toLowerCase()][n];var i=Wg.sortBy(Wg.map(e,n));return(i[1]+i[2])/2}))}var iy=$p,sy=p_,ay=qg;var oy=$p,ly=h_,uy=b_,cy=K_,hy=p_.normalizeRanks,dy=Q_,fy=p_.removeEmptyRanks,py=rg,_y=ag,gy=ug,yy=zg,my=function(e){(function(e){var t=sy.buildLayerMatrix(e),r=e.graph().ranksep,n=0;iy.forEach(t,(function(t){var i=iy.max(iy.map(t,(function(t){return e.node(t).height})));iy.forEach(t,(function(t){e.node(t).y=n+i/2})),n+=i+r}))})(e=sy.asNonCompoundGraph(e)),iy.forEach(ay(e),(function(t,r){e.node(r).x=t}))},by=p_,vy=Dp.Graph,xy=function(e,t){var r=t&&t.debugTiming?by.time:by.notime;r("layout",(function(){var t=r(" buildLayoutGraph",(function(){return function(e){var t=new vy({multigraph:!0,compound:!0}),r=Iy(e.graph());return t.setGraph(oy.merge({},wy,Oy(r,Ey),oy.pick(r,Ay))),oy.forEach(e.nodes(),(function(r){var n=Iy(e.node(r));t.setNode(r,oy.defaults(Oy(n,Cy),Ry)),t.setParent(r,e.parent(r))})),oy.forEach(e.edges(),(function(r){var n=Iy(e.edge(r));t.setEdge(r,oy.merge({},Sy,Oy(n,ky),oy.pick(n,Ty)))})),t}(e)}));r(" runLayout",(function(){!function(e,t){t(" makeSpaceForEdgeLabels",(function(){!function(e){var t=e.graph();t.ranksep/=2,oy.forEach(e.edges(),(function(r){var n=e.edge(r);n.minlen*=2,"c"!==n.labelpos.toLowerCase()&&("TB"===t.rankdir||"BT"===t.rankdir?n.width+=n.labeloffset:n.height+=n.labeloffset)}))}(e)})),t(" removeSelfEdges",(function(){!function(e){oy.forEach(e.edges(),(function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}}))}(e)})),t(" acyclic",(function(){ly.run(e)})),t(" nestingGraph.run",(function(){py.run(e)})),t(" rank",(function(){cy(by.asNonCompoundGraph(e))})),t(" injectEdgeLabelProxies",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);if(r.width&&r.height){var n=e.node(t.v),i={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};by.addDummyNode(e,"edge-proxy",i,"_ep")}}))}(e)})),t(" removeEmptyRanks",(function(){fy(e)})),t(" nestingGraph.cleanup",(function(){py.cleanup(e)})),t(" normalizeRanks",(function(){hy(e)})),t(" assignRankMinMax",(function(){!function(e){var t=0;oy.forEach(e.nodes(),(function(r){var n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=oy.max(t,n.maxRank))})),e.graph().maxRank=t}(e)})),t(" removeEdgeLabelProxies",(function(){!function(e){oy.forEach(e.nodes(),(function(t){var r=e.node(t);"edge-proxy"===r.dummy&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))}))}(e)})),t(" normalize.run",(function(){uy.run(e)})),t(" parentDummyChains",(function(){dy(e)})),t(" addBorderSegments",(function(){_y(e)})),t(" order",(function(){yy(e)})),t(" insertSelfEdges",(function(){!function(e){var t=by.buildLayerMatrix(e);oy.forEach(t,(function(t){var r=0;oy.forEach(t,(function(t,n){var i=e.node(t);i.order=n+r,oy.forEach(i.selfEdges,(function(t){by.addDummyNode(e,"selfedge",{width:t.label.width,height:t.label.height,rank:i.rank,order:n+ ++r,e:t.e,label:t.label},"_se")})),delete i.selfEdges}))}))}(e)})),t(" adjustCoordinateSystem",(function(){gy.adjust(e)})),t(" position",(function(){my(e)})),t(" positionSelfEdges",(function(){!function(e){oy.forEach(e.nodes(),(function(t){var r=e.node(t);if("selfedge"===r.dummy){var n=e.node(r.e.v),i=n.x+n.width/2,s=n.y,a=r.x-i,o=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{x:i+a,y:s},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],r.label.x=r.x,r.label.y=r.y}}))}(e)})),t(" removeBorderNodes",(function(){!function(e){oy.forEach(e.nodes(),(function(t){if(e.children(t).length){var r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),s=e.node(oy.last(r.borderLeft)),a=e.node(oy.last(r.borderRight));r.width=Math.abs(a.x-s.x),r.height=Math.abs(i.y-n.y),r.x=s.x+r.width/2,r.y=n.y+r.height/2}})),oy.forEach(e.nodes(),(function(t){"border"===e.node(t).dummy&&e.removeNode(t)}))}(e)})),t(" normalize.undo",(function(){uy.undo(e)})),t(" fixupEdgeLabelCoords",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);if(oy.has(r,"x"))switch("l"!==r.labelpos&&"r"!==r.labelpos||(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset}}))}(e)})),t(" undoCoordinateSystem",(function(){gy.undo(e)})),t(" translateGraph",(function(){!function(e){var t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,s=e.graph(),a=s.marginx||0,o=s.marginy||0;function l(e){var s=e.x,a=e.y,o=e.width,l=e.height;t=Math.min(t,s-o/2),r=Math.max(r,s+o/2),n=Math.min(n,a-l/2),i=Math.max(i,a+l/2)}oy.forEach(e.nodes(),(function(t){l(e.node(t))})),oy.forEach(e.edges(),(function(t){var r=e.edge(t);oy.has(r,"x")&&l(r)})),t-=a,n-=o,oy.forEach(e.nodes(),(function(r){var i=e.node(r);i.x-=t,i.y-=n})),oy.forEach(e.edges(),(function(r){var i=e.edge(r);oy.forEach(i.points,(function(e){e.x-=t,e.y-=n})),oy.has(i,"x")&&(i.x-=t),oy.has(i,"y")&&(i.y-=n)})),s.width=r-t+a,s.height=i-n+o}(e)})),t(" assignNodeIntersects",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r,n,i=e.edge(t),s=e.node(t.v),a=e.node(t.w);i.points?(r=i.points[0],n=i.points[i.points.length-1]):(i.points=[],r=a,n=s),i.points.unshift(by.intersectRect(s,r)),i.points.push(by.intersectRect(a,n))}))}(e)})),t(" reversePoints",(function(){!function(e){oy.forEach(e.edges(),(function(t){var r=e.edge(t);r.reversed&&r.points.reverse()}))}(e)})),t(" acyclic.undo",(function(){ly.undo(e)}))}(t,r)})),r(" updateInputGraph",(function(){!function(e,t){oy.forEach(e.nodes(),(function(r){var n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,t.children(r).length&&(n.width=i.width,n.height=i.height))})),oy.forEach(e.edges(),(function(r){var n=e.edge(r),i=t.edge(r);n.points=i.points,oy.has(i,"x")&&(n.x=i.x,n.y=i.y)})),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,t)}))}))};var Ey=["nodesep","edgesep","ranksep","marginx","marginy"],wy={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Ay=["acyclicer","ranker","rankdir","align"],Cy=["width","height"],Ry={width:0,height:0},ky=["minlen","weight","width","height","labeloffset"],Sy={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Ty=["labelpos"];function Oy(e,t){return oy.mapValues(oy.pick(e,t),Number)}function Iy(e){var t={};return oy.forEach(e,(function(e,r){t[r.toLowerCase()]=e})),t}var Ny=$p,Ly=p_,Vy=Dp.Graph;var Py={graphlib:Dp,layout:xy,debug:{debugOrdering:function(e){var t=Ly.buildLayerMatrix(e),r=new Vy({compound:!0,multigraph:!0}).setGraph({});return Ny.forEach(e.nodes(),(function(t){r.setNode(t,{label:t}),r.setParent(t,"layer"+e.node(t).rank)})),Ny.forEach(e.edges(),(function(e){r.setEdge(e.v,e.w,{},e.name)})),Ny.forEach(t,(function(e,t){var n="layer"+t;r.setNode(n,{rank:"same"}),Ny.reduce(e,(function(e,t){return r.setEdge(e,t,{style:"invis"}),t}))})),r}},util:{time:p_.time,notime:p_.notime},version:"0.8.5"};class Dy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let n=ve(e.children[0]);if(!n)continue;var r=new Py.graphlib.Graph;r.setGraph({edgesep:t._edgeSep}),r.setDefaultEdgeLabel((function(){return{}})),r.graph().rankdir=this._getDagreDirection(t.direction);let i=new Map;for(let t of e.children){let e=t.dataScope.getAttributeValue(Ee);i.set(e,e+""),r.setNode(e,{label:t.text?t.text:"",width:t.bounds.width,height:t.bounds.height})}for(let e of n.linkList)r.setEdge(e.source,e.target);Py.layout(r);const s={};let a=Math.min(...r.nodes().map((e=>r.node(e).y))),o=Math.min(...r.nodes().map((e=>r.node(e).x))),l=t.left-o,u=t.top-a;for(const e of r.nodes())s[e]={x:r.node(e).x+l,y:r.node(e).y+u};for(let t of e.children){let e=t.dataScope.getAttributeValue(Ee);ze(t,s[i.get(e)].x-t.x,s[i.get(e)].y-t.y)}}let n=j(e,!0);for(let e of n)p(e)}_getDagreDirection(e){switch(e){case Q.Left2Right:return"LR";case Q.Right2Left:return"RL";case Q.Top2Bottom:return"TB";case Q.Bottom2Top:return"BT"}}}class By extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let e of r){let r=e.layout;if(!r)continue;let n=me(e.children[0]);if(!n)continue;let i=t.hierarchy(n._data),s=Math.max(...e.children.map((e=>e.bounds.width))),a=Math.max(...e.children.map((e=>e.bounds.height))),o=r.orientation==J.HORIZONTAL?[r.height,r.width]:[r.width,r.height],l=t.tree().nodeSize([s,a]).size(o)(i);this._apply(l,r,e)}p(e)}_apply(e,t,r){let n,i,s=r.children.filter((t=>t.dataScope.getAttributeValue(Ee)==e.data[Ee]))[0];switch(t.orientation){case J.HORIZONTAL:n=e.y+t.left,i=e.x+t.top;break;case J.VERTICAL:n=e.x+t.left,i=t.top+e.y}if(ze(s,n-s.x,i-s.y),e.children&&e.children.length>0)for(let n of e.children)this._apply(n,t,r)}}class My extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=this._inputVars.filter((e=>e.type===q.ORDER))[0].element,n=r.layout,i=n.width?n.width:r.bounds.width,s=n.height?n.height:r.bounds.height,a=void 0===n.top?r.bounds.top:n.top,o=void 0===n.left?r.bounds.left:n.left,l=t.hierarchy(r).sum((e=>e.type===Ot.Rect?e.width*e.height:0));t.treemap().size([i,s])(l),this._apply(l,o,a);let u=j(e,!0);for(let e of u)p(e)}_apply(e,t,r){if(e.data.type==Ot.Collection&&e.children)for(let n of e.children)this._apply(n,t,r);else e.data.type==Ot.Rect&&(e.data.resize(e.x1-e.x0,e.y1-e.y0),ze(e.data,e.x0+t-e.data.left,e.y0+r-e.data.top))}}class Gy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){if(!e.layout)continue;if(0===e.children.length)continue;let t=me(e.children[0]);if(!t)continue;let r={};for(let t of e.children)r[t.dataScope.getAttributeValue(Ee)]=t;e.children[0].type===Ot.Rect?this._layoutRects(t.getRoot(),t,r):this._layoutArcs(t.getRoot(),t,r)}p(e)}_layoutArcs(e,t,r){let n=t.getChildren(e);if(0===n.length)return;let i=r[e[Ee]],s=!i||i.type!=Ot.Arc&&i.type!=Ot.Pie?60:i.startAngle;for(let e=0;e<n.length;e++){let i=n[e],a=r[i[Ee]];if(a.type===Ot.Arc){let e=de(s+a.angle);a.setAngles(s,e),s=e}this._layoutArcs(i,t,r)}}_layoutRects(e,t,r){let n=t.getChildren(e);if(0===n.length)return;let i,s,a=r[e[Ee]];this._direction,Q.Top2Bottom,i=a.left,s=a.bottom;for(let e=0;e<n.length;e++){let a=n[e],o=r[a[Ee]];ze(o,i-o.left,s-o.top),i+=o.width,this._layoutRects(a,t,r)}}}class jy extends X{constructor(e,t){super(e),this._trigger=t}get trigger(){return this._trigger}}class zy extends W{constructor(e){super(e)}run(){super.run();let e=this.outputVar.condEncoding,t=e.trigger,r=T(e.target),n={};if(t.type===$e.ELEMENT){let i=t.elements.length>0?t.elements:[void 0];r.forEach((t=>n[t.id]=i.map((r=>e._targetEval(r,t))).some((e=>e))))}t.type===$e.MOUSE&&r.forEach((r=>n[r.id]=e._targetEval(t.mouseEvent,r))),e.evalResult=n}}class Fy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,t=T(e.parent);for(let e of t){let t=e.layout;if(!t)continue;let r=360/e.children.length;for(let[n,i]of e.children.entries())ze(i,t.x+t.radius-i.bounds.x,t.y-i.bounds.y),i._rotate=[n*r,t.x,t.y]}let r=j(e,!0);for(let e of r)p(e)}}class Uy extends W{constructor(e){super(e)}run(){super.run();let e=this._outputVars[0].element,r=T(e.parent);for(let n of r){let r=n.layout;if(!r)continue;let i=r._tree?r._tree._data:me(n.children[0])._data,s=t.hierarchy(i);if(r.isRadial()){s=t.cluster().size([ce(r.angleExtent),r.radius])(s),r._d3Root=s;const e=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));for(let t of n.children){let n=t.dataScope.getAttributeValue(Ee);ze(t,r.x-t.bounds.x,r.y-e.get(n)[1]-t.bounds.y),t._rotate=[he(e.get(n)[0]),r.x,r.y]}}else if(r.orientation===J.VERTICAL){!r.width||r.width;let i=r.height?r.height:600;s=t.cluster().nodeSize([e.bounds.width+1,i/(s.height+1)])(s),r._d3Root=s;const a=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));let o=1/0,l=-o;s.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),r._x0=o;for(let e of n.children){let t=e.dataScope.getAttributeValue(Ee);ze(e,a.get(t)[0]-o+r.left-e.bounds.x,a.get(t)[1]+r.top-e.bounds.y)}}else if(r.orientation===J.HORIZONTAL){!r.width||r.width;let i=r.height?r.height:600;s=t.cluster().nodeSize([e.bounds.height,i/(s.height+1)])(s),r._d3Root=s;const a=new Map(s.descendants().map((e=>[e.data[Ee],[e.x,e.y]])));let o=1/0,l=-o;s.each((e=>{e.x>l&&(l=e.x),e.x<o&&(o=e.x)})),r._x0=o;for(let e of n.children){let t=e.dataScope.getAttributeValue(Ee);ze(e,a.get(t)[1]+r.left-e.bounds.x,a.get(t)[0]-o+r.top-e.bounds.y)}}}let n=j(e,!0);for(let e of n)p(e)}}class Hy{constructor(){this._variables={},this._operators={},this._edges=[]}toJSON(){const e=this._edges.map((e=>({from:e.fromNode.id,to:e.toNode.id,isDirected:e.isDirected}))),t={};for(const e in this._variables)t[e]=Object.values(this._variables[e]).map((e=>{let t={id:e.id,type:e.type,incoming:e.incomingEdges.map((e=>e.id)),outgoing:e.outgoingEdges.map((e=>e.id)),undirected:e.undirectedEdges.map((e=>e.id))};return"ChannelVar"===e.type?(t.channel=e.channel,t.element=e.element):"BoundsVar"===e.type||"DataScopeVar"===e.type?t.element=e.element:"DomainVar"===e.type?(t.scale=e.scale,t.attrValues=e.attrValues):"FieldVar"===e.type?(t.field=e.field,t.dataset=e.dataset):"PropertyVar"===e.type?(t.property=e.property,t.element=e.element):t.scale=e.scale,t}));const r={};for(const e in this._operators)r[e]=Object.values(this._operators[e]).map((e=>{let t={id:e.id,type:e.type,inputVars:e.inputVars.map((e=>e.id)),outputVar:e.outputVar?e.outputVar.id:null};return e.type===Y.DOMAIN_BUILDER?t.aggregator=e.aggregator:e.type===Y.SCALE_BUILDER&&(t.channel=e.channel),t}));return{edges:e,variables:t,operators:r}}getVariable(e,...t){if(Object.values(q).indexOf(e)<0)throw new Error("Variable Type Not Known");let r=this.findVariable(e,t);if(r)return r;switch(e){case q.CHANNEL:r=new Oe(e,t[0],t[1]),"vertex"!=t[1].type&&"segment"!=t[1].type||this._connectPathElement2Size(t[1],r);break;case q.PROPERTY:r=new Qe(e,t[0],t[1]);break;case q.ATTRIBUTE:r=new zt(e,t[0],t[1]);break;case q.ITEMS:r=new dr(e,t[0],t[1]);break;case q.DOMAIN:r=new Ft(e,t[0]);break;case q.DATASCOPE:r=new Mt(e,t[0]);break;case q.BOUNDS:r=new Bt(e,t[0]);break;case q.ORDER:r=new fr(e,t[0]);break;case q.SCALE:r=new Ke(e,t[0]);break;case q.COND_ENCODING:r=new K(e,t[0]);break;case q.AFFIXATION:r=new _r(e,t[0]);break;case q.ALIGNMENT:r=new Er(e,t[0]);break;case q.TRIGGER:r=new jy(e,t[0])}return e in this._variables||(this._variables[e]={}),this._variables[e][r.id]=r,r}_connectPathElement2Size(e,t){let r=e.parent,n=t.channel,i=this.findVariable(q.CHANNEL,["x"===n?"width":"height",r]);if(i){let e=i.incomingDataflow;e||(e=this.createOneWayDependency(Y.CONDUIT)),this.connect(t,e),this.connect(e,i)}}findIncomingDataflowOperator(e,t){return t.incomingDataflow&&t.incomingDataflow.type===e?t.incomingDataflow:void 0}getIncomingDataflowOperator(e,t){let r=this.findIncomingDataflowOperator(e,t);return r||this.createOneWayDependency(e)}getOutgoingDataflowOperator(e,t){for(let r of t.outgoingEdges)if(r.toNode instanceof W&&r.toNode.type===e)return r.toNode;return this.createOneWayDependency(e)}createOneWayDependency(e,...t){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let r;switch(e){case Y.EVAL_BBOX:r=new qt(e);break;case Y.AFFIXER:r=new pr(e);break;case Y.DOMAIN_BUILDER:r=new Ut(e,t[0]);break;case Y.SCALE_BUILDER:r=new Xt(e,t[0]);break;case Y.ENCODER:r=new Je(e,t[0]);break;case Y.AXIS_PATH_PLACER:r=new nr(e);break;case Y.AXIS_TICKS_PLACER:r=new ir(e);break;case Y.AXIS_LABELS_PLACER:r=new sr(e);break;case Y.AXIS_TITLE_PLACER:r=new vr(e);break;case Y.LINK_PLACER:r=new Ar(e);break;case Y.GRID_LAYOUT:r=new ar(e);break;case Y.STACK_LAYOUT:r=new lr(e);break;case Y.PACK_LAYOUT:r=new br(e);break;case Y.FORCE_LAYOUT:r=new wr(e);break;case Y.DIRECTED_LAYOUT:r=new Dy(e);break;case Y.TIDY_TREE_LAYOUT:r=new By(e);break;case Y.TREEMAP_LAYOUT:r=new My(e);break;case Y.STRATA_LAYOUT:r=new Gy(e);break;case Y.CIRCULAR_LAYOUT:r=new Fy(e);break;case Y.CLUSTER_LAYOUT:r=new Uy(e);break;case Y.GRIDLINES_PLACER:r=new or(e);break;case Y.BIN_TRANSFORMER:r=new cr(e);break;case Y.FILTER_TRANSFORMER:r=new hr(e);break;case Y.KDE_TRANSFORMER:r=new gr(e);break;case Y.TARGET_EVALUATOR:r=new zy(e);break;case Y.CONDUIT:default:r=new ur(e)}return e in this._operators||(this._operators[e]={}),this._operators[e][r.id]=r,r}createMultiWayDependency(e){if(Object.values(Y).indexOf(e)<0)throw new Error("Dependency Type Not Known");let t;return Y.ALIGNER,t=new xr(e),e in this._operators||(this._operators[e]={}),this._operators[e][t.id]=t,t}connect(e,t,r=!0){if(e instanceof X&&t instanceof W){if(!t.inputVars.includes(e)){const n=new jt(e,t,r);this._edges.push(n),e.outgoingEdges.push(n),t.inputVars.push(e)}}else if(e instanceof W&&t instanceof X){if(!e.outputVars.includes(t)){const n=new jt(e,t,r);this._edges.push(n),e.outputVars.push(t),t.incomingEdges.push(n)}}else if(e instanceof X&&t instanceof Gt){if(!t.vars.includes(e)){const r=new jt(e,t,!1);this._edges.push(r),t.vars.push(e),t.edges.push(e),e.undirectedEdges.push(r)}}else{if(!(e instanceof Gt&&t instanceof X))throw new Error("An edge must connect a variable and an operator.");if(!e.vars.includes(t)){const r=new jt(t,e,!1);this._edges.push(r),e.vars.push(t),e.edges.push(t),t.undirectedEdges.push(r)}}}disconnectChannelVarFromBBoxOperator(e){let t=this.getOutgoingDataflowOperator(Y.EVAL_BBOX,e),r=e.outgoingEdges.find((r=>r.fromNode===e&&r.toNode===t));r&&this.disconnect(e,t,r)}disconnect(e,t,r){if(e instanceof X&&t instanceof W){let n=e.outgoingEdges.findIndex((e=>e===r));n>=0&&(this._edges.splice(this._edges.indexOf(r),1),e.outgoingEdges.splice(n,1));let i=t.inputVars.findIndex((t=>t==e));i>=0&&t.inputVars.splice(i,1)}else if(e instanceof W&&t instanceof X){let n=t.incomingEdges.findIndex((e=>e===r));n>=0&&(this._edges.splice(this._edges.indexOf(r),1),t.incomingEdges.splice(n,1));let i=e.outputVars.findIndex((e=>e===t));i>=0&&e.outputVars.splice(i,1)}}deleteVariable(e){for(let t=e.incomingEdges.length-1;t>=0;t--){let r=e.incomingEdges[t],n=r.fromNode;this.disconnect(n,e,r),n.isIsolated()&&delete this._operators[n.type][n.id]}for(let t=e.outgoingEdges.length-1;t>=0;t--){let r=e.outgoingEdges[t],n=r.toNode;this.disconnect(e,n,r),n.isIsolated()&&delete this._operators[n.type][n.id]}delete this._variables[e.type][e.id]}deleteOperator(e){for(let t=e.outputVars.length-1;t>=0;t--){let r=e.outputVars[t],n=r.incomingEdges.find((t=>t.fromNode===e&&t.toNode===r));this.disconnect(e,r,n),r.isIsolated()&&delete this._variables[r.type][r.id]}for(let t=e.inputVars.length-1;t>=0;t--){let r=e.inputVars[t],n=r.outgoingEdges.find((t=>t.fromNode===r&&t.toNode===e));this.disconnect(r,e,n),r.isIsolated()&&delete this._variables[r.type][r.id]}delete this._operators[e.type][e.id]}addInteraction(e){}_dfs(e,t,r){if(e&&0!==e.outgoingEdges.length)for(let n of e.outgoingEdges)n.isDirected&&(t.push(n.toNode),this._dfs(n.toNode.outputVars[0],t.slice(),r));else r.push(t)}processChange(e,t,...r){let n=this.findVariable(e,r);if(n){for(let e of n.outgoingEdges)if(e.isDirected){let r=e.toNode;r.run();let n=r.outputVars;if(n.length>0){let e=n[0];switch(e.type){case q.ITEMS:this.processChange(e.type,t,e.predicate,e.dataset);break;case q.ATTRIBUTE:this.processChange(e.type,t,e.attribute,e.dataset);break;case q.BOUNDS:case q.ORDER:this.processChange(e.type,t,e.element);break;case q.CHANNEL:this.processChange(e.type,t,e.channel,e.element);break;case q.PROPERTY:this.processChange(e.type,t,e.property,e.element);break;case q.SCALE:case q.DOMAIN:this.processChange(e.type,t,e.encodings[0]);break;case q.COND_ENCODING:this.processChange(e.type,t,e.condEncoding)}}}for(let e of n.undirectedEdges)t.push(e.operator)}else console.warn("Unable to find variables matching the described change: ",e,r)}findVariable(e,t){if(!(e in this._variables))return null;let r=Object.values(this._variables[e]);switch(e){case q.CHANNEL:return r.find((e=>e.channel==t[0]&&De(e.element)==De(t[1])));case q.PROPERTY:return r.find((e=>e.property==t[0]&&e.element==t[1]));case q.COND_ENCODING:return r.find((e=>e.condEncoding==t[0]));case q.AFFIXATION:return r.find((e=>e.affixation==t[0]));case q.ATTRIBUTE:return r.find((e=>e.attribute==t[0]&&e.dataset==t[1]));case q.ITEMS:return r.find((e=>e.dataset==t[1]));case q.DOMAIN:case q.SCALE:return r.find((e=>e.encodings.includes(t[0])));case q.TRIGGER:return r.find((e=>e.trigger===t[0]));case q.DATASCOPE:default:return t[0].classId?r.find((e=>De(e.element)==De(t[0]))):r.find((e=>e.element.id==t[0].id))}}findVariablesByElement(e){let t={};for(let r in this._variables){let n=Object.values(this._variables[r]).filter((t=>t.element&&De(t.element)==De(e)));n.length>0&&(t[r]=n)}return t}}function Wy(e){return!(!E(e)&&e.type!=Ot.Glyph||e.dataScope)||e.type===Ot.Collection&&e.firstChild.dataScope.numTuples>1}function Yy(e,t,r,n){let i=n.getAttributeType(r);if(i!=Ae.String&&i!=Ae.Date&&i!=Ae.Integer)throw new Error("Repeat only works on a string or date attribute: "+r+" is "+i);if(!function(e){if(Array.isArray(e)){if(1===e.length)return Wy(e[0]);for(let t of e)if(!E(t)||t.dataScope)return!1;return!0}return Wy(e)}(t))throw new Error("The "+t.type+" is not repeatable");return function(e,t,r,n){let i=n.getAttributeSummary(r).unique.map((e=>t.dataScope?t.dataScope.cross(r,e):new pe(n).cross(r,e)));i=i.filter((e=>!e.isEmpty()));let s=Rt(e);s.dataScope=t.dataScope?t.dataScope.clone():new pe(n),s.addChild(t);for(let e=1;e<i.length;e++){let e=St(t);s.addChild(e)}return s.children.forEach(((e,t)=>e.dataScope=i[t])),s}(e,t,r,n)}class Xy{constructor(e,t,r,n,i){this._elem=e,this._channel=t,this._attribute=r,this._aggregator=n,this._includeZero=i.includeZero,this._flipScale=i.flipScale,this._mapping=i.mapping,this._preferredRangeExtent=i.rangeExtent,this._preferredDomain=void 0,this._scaleType=i.scaleType,this._colorScheme=i.scheme,this._forLegend=i.forLegend,this._scales=[],this._elemGroups=[],this._elem2scale={},this._refElements=[],["width","height","radius","angle","thickness","radialDistance","strokeWidth","area"].indexOf(this._channel)>=0&&(this._includeZero=!0),this.initialize()}initialize(){this._scales=[];let e=T(this._elem);if(this._elemGroups=[],"x"===this._channel||"y"===this._channel){let t=this._elem,r=B(t);if(r.layout&&r.layout.type==U.GRID){let e="x"===this._channel?r.layout.getElementsByCol(!0,t):r.layout.getElementsByRow(!0,t);for(let t of e)this._createScaleForElems(t)}else if("vertex"===this._elem.type&&(Ge(this._elem.parent)||Me(this._elem.parent))){let e=T(this._elem.parent).map((e=>O(this._elem,[e])));for(let t of e)this._createScaleForElems(t)}else this._createScaleForElems(e)}else if("angle"===this._channel){let t=e.reduce(((e,t)=>{const r=t.parent.id;return e[r]||(e[r]=[]),e[r].push(t),e}),{}),r=Object.values(t);for(let e of r)this._createScaleForElems(e)}else this._createScaleForElems(e)}_createScaleForElems(e){this._elemGroups.push(e);var t=function(e){if(e.scaleType)return new Ht(e.scaleType);if("text"===e.channel)return new Ht("ordinal");switch(Vt(e.element).getAttributeType(e.attribute)){case Ae.Boolean:break;case Ae.Date:return new Ht("time");case Ae.String:if("count"==e.aggregator)return new Ht("linear");if(e.channel.indexOf("Color")>=0){let t={};return t.scheme=e.colorScheme?e.colorScheme:"schemeCategory10",new Ht("ordinalColor",t)}return new Ht("point");default:return["strokeColor","fillColor","fillGradient"].indexOf(e.channel)>=0?e.mapping?new Ht("linear"):new Ht("sequentialColor",{scheme:e.colorScheme}):new Ht("linear")}}(this);this._scales.push(t);for(let r of e)this._elem2scale[r.id]=t}getScale(e){return this._elem2scale[e.id]}getElements(e){let t=this._scales.indexOf(e);return this._elemGroups[t]}get element(){return this._elem}get channel(){return this._channel}get attribute(){return this._attribute}get dataTable(){return Vt(this._elem)}get aggregator(){return this._aggregator}hasMultipleScales(){return this._scales.length>0}get scales(){return this._scales}getRangeStart(e){let t=this.getScale(e);return Math.min(...t.range)}getRangeExtent(e){return this.getScale(e).rangeExtent}get scaleType(){return this._scaleType}set scaleType(e){this._scaleType=e}set domain(e){this._preferredDomain=e;for(let t of this._scales)t._scale.domain(e);for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.DOMAIN,this)}set rangeExtent(e){for(let t of this._scales)t.rangeExtent=e;for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.PROPERTY,et.RANGE_EXTENT,this)}set includeZero(e){this._includeZero=e;for(let e of this._refElements)e instanceof tr&&e.createTicksLabels({});this._elem.scene.onChange(q.PROPERTY,et.INCLUDE_ZERO,this)}get includeZero(){return this._includeZero}set flipScale(e){this._flipScale=e,this._elem.scene.onChange(q.PROPERTY,et.FLIP_SCALE,this)}get flipScale(){return this._flipScale}set mapping(e){this._mapping=e}get mapping(){return this._mapping}set colorScheme(e){this._colorScheme=e}get colorScheme(){return this._colorScheme}addRefElement(e){this._refElements.indexOf(e)<0&&this._refElements.push(e)}get refElements(){return this._refElements}clearRefElements(){this._refElements=[]}}class qy{constructor(e,t,r,n){this._trigger=e,this._target=t.target,this._targetEval=r,this._efxFn=n,this._evalResult={}}get trigger(){return this._trigger}get target(){return this._target}get channels(){return Object.keys(this._rules)}get evalResult(){return this._evalResult}set evalResult(e){this._evalResult=e}}class Ky extends ie{constructor(e,t,r,n,i){super(i),this._type=Ot.Gridlines,this._id=this._type+Nt(),this._attribute=t,this._channel=e,this._scale=r,this._elems=n,"strokeColor"in i||(this.styles.strokeColor="#ddd"),"opacity"in i||(this.styles.opacity=.5),"values"in i?this._values=i.values:this._scale?this._values=Qt(this._scale,this._channel,this._elems):this._values=this._elems.map((e=>e.dataScope.getAttributeValue(this._attribute))),this._lines=[]}get type(){return this._type}get id(){return this._id}getSVGPathData(){let e="";if("radialDistance"===this._channel)for(let t of this._lines)e+="M "+t.x+" "+t.y+" m -"+t.r+" 0 a "+t.r+" "+t.r+" 0 1 0 "+2*t.r+" 0 a "+t.r+" "+t.r+" 0 1 0 -"+2*t.r+" 0 ";else for(let t of this._lines)e+=["M",t.x1,t.y1].join(" ")+[" L",t.x2,t.y2].join(" ")+" ";return e}_updateBounds(){if("radialDistance"===this._channel){let e=this._lines.map((e=>new c(e.x-e.r,e.y-e.y,2*e.r,2*e.r)));this._bounds=h(e)}else{let e=this._lines.map((e=>e.x1)).concat(this._lines.map((e=>e.x2))),t=this._lines.map((e=>e.y1)).concat(this._lines.map((e=>e.y2))),r=Math.min(...e),n=Math.max(...e),i=Math.min(...t),s=Math.max(...t);this._bounds=new c(r,i,n-r,s-i)}}get elements(){return this._elems}get values(){return this._values}get channel(){return this._channel}get attribute(){return this._attribute}get scale(){return this._scale}get lines(){return this._lines}set lines(e){this._lines=e}}class Zy extends F{constructor(e){super(),this.type=U.STACK,this._orientation=e.orientation,this._direction=e.direction,this._left=e.left,this._top=e.top,this._horzCellAlignment="horzCellAlignment"in e&&e.horzCellAlignment?e.horzCellAlignment:_.LEFT,this._vertCellAlignment="vertCellAlignment"in e&&e.vertCellAlignment?e.vertCellAlignment:_.BOTTOM,this._gap="gap"in e?e.gap:0}clone(){let e=new Zy({orientation:this._orientation,direction:this._direction,left:this._left,top:this._top});return e._horzCellAlignment=this._horzCellAlignment,e._vertCellAlignment=this._vertCellAlignment,e}get horzCellAlignment(){return this._horzCellAlignment}get vertCellAlignment(){return this._vertCellAlignment}get orientation(){return this._orientation}set horzCellAlignment(e){this._horzCellAlignment=e}set vertCellAlignment(e){this._vertCellAlignment=e}set orientation(e){this._orientation=e}}function $y(e,t,r,n,i){let s=i.getAttributeType(r);if(s!=Ae.String&&s!=Ae.Date&&s!=Ae.Integer)throw new Error("Divide only works on a string or date attribute: "+r+" is "+s);if(!function(e){if([Ot.Line,Ot.Circle,Ot.Rect,Ot.Area,Ot.Ring,Ot.Pie,Ot.Path].indexOf(e.type)<0)return!1;if(e.type===Ot.Path&&(e.closed||!e.firstVertex.dataScope))return!1;if(e.dataScope){let t=T(e);for(let e of t)if(e.dataScope.numTuples>1)return!0;return!1}return!0}(t))throw new Error("The "+t.type+" is not dividable");switch(t.type){case Ot.Line:case Ot.Path:return;case Ot.Circle:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR&&l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];let d=360/u.length,f=90;for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:0,outerRadius:r.radius,x:r.x,y:r.y,startAngle:de(f-d*(e+1)),endAngle:de(f-d*e),strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.ANGULAR,direction:ee.CLOCKWISE}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Rect:return function(e,t,r,n,i){let s,a=T(t),o=r||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);let l=i.getUniqueAttributeValues(n).map((e=>new pe(i).cross(n,e))),u={},c=0;for(let e of a){let t=l;e.dataScope&&(t=l.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>c&&(c=t.length),u[e.id]=t}let h,d=Ct({type:"rect",left:t.bounds.left,top:t.bounds.top,width:t.bounds.width,height:t.bounds.height,strokeColor:t.strokeColor,fillColor:t.fillColor,strokeWidth:t.strokeWidth,opacity:t.opacity});d._classId=d.id;for(let r of a){let n=Rt(e);null==h&&(h=n.id),n._classId=h,n.dataScope=r.dataScope?r.dataScope:new pe(i);let a=r.parent;a.removeChild(r),delete e._itemMap[r.id];let l=u[r.id],c=r.bounds,f=c.left,p=c.top,_=o==J.HORIZONTAL?c.width/l.length:c.width,g=o==J.HORIZONTAL?c.height:c.height/l.length;for(let e=0;e<l.length;e++){let t=St(d);t.dataScope=l[e],t.resize(_,g),t._updateBounds(),t._refBounds=t.bounds.clone(),n.addChild(t)}a.addChild(n),n._layout=new Zy({orientation:o,left:f,top:p}),n._layout.group=n,r==t&&(s=n)}return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Area:return function(e,t,r,n,i){let s,a=T(t),o=r||J.HORIZONTAL;if(o!=J.HORIZONTAL&&o!=J.VERTICAL)throw new Error("Unknown orientation: "+o);let l,u=i.getUniqueAttributeValues(n).map((e=>new pe(i).cross(n,e))),c={},h=0;for(let e of a){let t=u;e.dataScope&&(t=u.map((t=>t.merge(e.dataScope))),t=t.filter((e=>!e.isEmpty()))),t.length>h&&(h=t.length),c[e.id]=t}let d=Object.assign({},t.styles);d.vertices=t.vertices.map((e=>[e.x,e.y])),d.type="area",d.orientation=t.orientation,d.baseline=t.baseline;let f=Ct(d);if(f._classId=f.id,t.vertices)for(let e=0;e<t.vertices.length;e++)t.vertices[e].dataScope&&(f.vertices[e]._dataScope=t.vertices[e].dataScope.clone());for(let r of a){let n=Rt(e);null==l&&(l=n.id),n._classId=l,n.dataScope=r.dataScope?r.dataScope:new pe(i);let a=r.parent;a.removeChild(r),delete e._itemMap[r.id];let u=c[r.id],h=r.bounds,d=h.left,p=h.top,_=o==J.HORIZONTAL?h.width/u.length:h.width,g=o==J.HORIZONTAL?h.height:h.height/u.length;for(let e=0;e<u.length;e++){let t=St(f);t.dataScope=u[e],console.log(t.dataScope),t.resize(_,g),t._updateBounds(),t._refBounds=t.bounds.clone(),n.addChild(t);for(let e of t.vertices)e.dataScope?e.dataScope=t.dataScope.merge(e.dataScope):e.dataScope=t.dataScope}a.addChild(n),n._layout=new Zy({orientation:o,left:d,top:p}),n._layout.group=n,r==t&&(s=n)}return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Ring:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR&&l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];let d=360/u.length,f=90;for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:r.innerRadius,outerRadius:r.outerRadius,x:r.x,y:r.y,startAngle:de(f-d*(e+1)),endAngle:de(f-d*e),strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.ANGULAR,direction:ee.CLOCKWISE}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i);case Ot.Pie:case Ot.Arc:return function(e,t,r,n,i){let s,a,o,l=T(t),u=r||J.ANGULAR;if(u!=J.ANGULAR&&u!=J.RADIAL)throw new Error("Unknown orientation: "+u);u===J.ANGULAR||l.forEach((r=>{let l=r.dataScope?r.dataScope:new pe(i),u=i.getUniqueAttributeValues(n).map((e=>l.cross(n,e)));u=u.filter((e=>!e.isEmpty()));let c=Rt(e);null==a&&(a=c.id),c._classId=a,c.dataScope=r.dataScope?r.dataScope:new pe(i);let h=r.parent;h.removeChild(r),delete e._itemMap[r.id];for(let e=0;e<u.length;e++){let n=Ct({type:"arc",innerRadius:r.innerRadius+e*(r.outerRadius-r.innerRadius)/u.length,outerRadius:r.innerRadius+(e+1)*(r.outerRadius-r.innerRadius)/u.length,x:r.x,y:r.y,startAngle:r.startAngle,endAngle:r.endAngle,strokeColor:r.strokeColor,fillColor:r.fillColor,strokeWidth:r.strokeWidth,opacity:r.opacity});o||(o=n.id),n.classId=o,n.dataScope=u[e],n._updateBounds(),n._refBounds=n.bounds.clone(),c.addChild(n),c._layout=new Zy({orientation:J.RADIAL}),c._layout.group=c,h.removeChild(r),h.addChild(c),r===t&&(s=c)}}));return{newMark:s.children[0],collection:s}}(e,t,n,r,i)}}function Jy(e,t,r,n){let i=n.getAttributeType(r);if(i!=Ae.String&&i!=Ae.Date&&i!=Ae.Integer)throw new Error("Repopulate only works on a string or date attribute: "+r+" is "+i);let s=T(t);for(let e of s){let t=n.getAttributeSummary(r).unique.map((t=>e.dataScope?e.dataScope.cross(r,t):new pe(n).cross(r,t)));t=t.filter((e=>!e.isEmpty()));let i=e.children.length-t.length,s=t.length-e.children.length;for(let t=0;t<i;t++)e.removeChildAt(e.children.length-1);let a=e._children.length;for(let t=0;t<s;t++){let r=St(e._children[t%a]);e.addChild(r)}e.children.forEach(((e,r)=>e.dataScope=t[r]))}}class Qy{constructor(e,t){this._elem=e,this._base=t,this._id=em(e,t),this._channels={},this._attribute=void 0}get id(){return this._id}get element(){return this._elem}get base(){return this._base}get channels(){return Object.keys(this._channels)}addChannel(e,t){let r={};r.elemAnchor="elementAnchor"in t?t.elementAnchor:"x"==e||"angle"==e?_.CENTER:_.MIDDLE,r.baseAnchor="baseAnchor"in t?t.baseAnchor:"x"==e||"angle"==e?_.CENTER:_.MIDDLE,r.offset="offset"in t?t.offset:0,"attribute"in t&&(this._attribute=t.attribute),this._channels[e]=r}hasChannel(e){return e in this._channels}getElementAnchor(e){return this._channels[e].elemAnchor}getBaseAnchor(e){return this._channels[e].baseAnchor}getOffset(e){return this._channels[e].offset}get attribute(){return this._attribute?this._attribute:Pt}}function em(e,t){return(e.classId?e.classId:e.id)+":"+(t.classId?t.classId:t.id)}function tm(e,t,r,n){e.dataScope&&e.dataScope.dataTable.hasAttribute(t)?function(e,t,r,n){if(!e.dataScope.dataTable.hasAttribute(t))return void console.warn("Cannot order collection children by an non-existent attribute",t);let i;if(t===Pt)i=(e,r)=>parseInt(e.dataScope.getAttributeValue(t).substring(1))-parseInt(r.dataScope.getAttributeValue(t).substring(1));else{switch(e.children[0].dataScope.getAttributeType(t)){case Ae.Date:break;case Ae.Number:case Ae.Integer:i=(e,r)=>e.dataScope.aggregateNumericalAttribute(t)-r.dataScope.aggregateNumericalAttribute(t);break;case Ae.String:i=n?(e,r)=>n.indexOf(e.dataScope.getAttributeValue(t))-n.indexOf(r.dataScope.getAttributeValue(t)):(e,r)=>e.dataScope.getAttributeValue(t)<r.dataScope.getAttributeValue(t)?-1:1}}e.children.sort(i),r&&e.children.reverse()}(e,t,r,n):function(e,t,r){let n;switch(t){case"x":case"y":case"width":case"height":n=(e,r)=>e.bounds[t]-r.bounds[t];break;default:n=(e,r)=>e[t]-r[t]}e._children.sort(n),r&&e.children.reverse()}(e,t,r),e._sortBy={property:t,descending:r,vals:n}}function rm(e,t,r,n){e.vertices[0].dataScope&&e.vertices[0].dataScope.dataTable.hasAttribute(t)?function(e,t,r,n){let i;if(t===Pt)i=(e,r)=>parseInt(e.dataScope.getAttributeValue(t).substring(1))-parseInt(r.dataScope.getAttributeValue(t).substring(1));else{switch(e.vertices[0].dataScope.getAttributeType(t)){case Ae.Date:break;case Ae.Number:case Ae.Integer:i=(e,r)=>e.dataScope.aggregateNumericalAttribute(t)-r.dataScope.aggregateNumericalAttribute(t);break;case Ae.String:i=n?(e,r)=>n.indexOf(e.dataScope.getAttributeValue(t))-n.indexOf(r.dataScope.getAttributeValue(t)):(e,r)=>e.dataScope.getAttributeValue(t)<r.dataScope.getAttributeValue(t)?-1:1}}e.vertices.sort(i),r&&e.vertices.reverse()}(e,t,r,n):function(e,t,r){let n=(e,r)=>e[t]-r[t];e.vertices.sort(n),r&&e.vertices.reverse()}(e,t,r),e._sortBy={property:t,descending:r,vals:n}}class nm extends F{constructor(e){super(),this.type=U.GRID,this._numCols=e.numCols,this._numRows=e.numRows,this._start="start"in e?e.start:$.TopLeft,this._direction="direction"in e?e.direction:Z.RowFirst,this._rowGap="rowGap"in e&&void 0!==e.rowGap?e.rowGap:5,this._colGap="colGap"in e&&void 0!==e.colGap?e.colGap:5,this._cellHorzAlignment="horzCellAlignment"in e&&H("h",e.horzCellAlignment)?e.horzCellAlignment:_.LEFT,this._cellVertAlignment="vertCellAlignment"in e&&H("v",e.vertCellAlignment)?e.vertCellAlignment:_.BOTTOM,this._numCols||this._numRows||(this._numRows=1),this._left=void 0,this._top=void 0,this._cellBounds=void 0,this._grid=void 0}get cellBounds(){return this._cellBounds}get numCols(){return this._numCols?this._numCols:this._numRows?Math.ceil(this.group.children.length/this._numRows):0}get numRows(){return this._numRows?this._numRows:this._numCols?Math.ceil(this.group.children.length/this._numCols):0}clone(){let e=new nm({numCols:this._numCols,numRows:this._numRows,start:this._start,direction:this._direction,colGap:this._colGap,rowGap:this._rowGap,horzCellAlignment:this._cellHorzAlignment,vertCellAlignment:this._cellVertAlignment});return e._left=this._left,e._top=this._top,this._cellBounds&&(e._cellBounds=this._cellBounds.map((e=>e.clone()))),e}getElementsByRow(e,t){let r=[],n=this.group.children;for(let t=0;t<this.numRows;t++){let i=this._grid[t].filter((e=>null!=e)).map((e=>n[e]));if(e){let e=[];for(let t of i)e=e.concat(j(t));r.push(e)}else r.push(i)}return t&&(r=this._filterElementsByExample(r,t)),r}getElementsByCol(e,t){let r=[],n=this.group.children,i=this._grid;for(let t=0;t<this.numCols;t++){let s=i.map((e=>e[t])).filter((e=>null!=e)).map((e=>n[e]));if(e){let e=[];for(let t of s)e=e.concat(j(t));r.push(e)}else r.push(s)}return t&&(r=this._filterElementsByExample(r,t)),r}getElementsByCell(e,t){let r=[],n=this.group.children;for(let t=0;t<n.length;t++)if(e){let e=j(n[t]);r.push(e)}else r.push(n[t]);return t&&(r=this._filterElementsByExample(r,t)),r}_filterElementsByExample(e,t){let r;return"vertex"===t.type?(r=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),r=r.map((e=>O(t,e)))):"segment"===t.type?(r=e.map((e=>e.filter((e=>e.classId===t.parent.classId)))),r=r.map((e=>I(t,e)))):r=e.map((e=>e.filter((e=>e.classId===t.classId)))),r}getIndex(e){let t=e;for(;t&&t.parent!==this.group;)t=t.parent;return this.group.children.indexOf(t)}getRowCol(e){let t,r;switch(this._direction){case Z.RowFirst:t=Math.floor(e/this.numCols),r=e%this.numCols;break;case Z.ColumnFirst:t=e%this.numRows,r=Math.floor(e/this.numRows);break;default:throw new Error("Invalid fill direction. Use 'row_first' or 'column_first'.")}return this._start.toLowerCase().includes("bottom")&&(t=this.numRows-1-t),this._start.toLowerCase().includes("right")&&(r=this.numCols-1-r),{row:t,col:r}}}class im extends _t{constructor(e,t){super(),this._type=Ot.Axis,this._id=this._type+Nt(),this._enc=e,this._textColor="textColor"in t?t.textColor:"#555",this._strokeColor="strokeColor"in t?t.strokeColor:"#555",this._fontSize="fontSize"in t?t.fontSize:"12px",this._x="x"in t?t.x:100,this._y="y"in t?t.y:100,this._showTitle=!("showTitle"in t)||t.showTitle,this._orientation="orientation"in t?t.orientation:J.VERTICAL,this._numberFormat=t.numberFormat?t.numberFormat:""}get attribute(){return this._enc.attribute}get channel(){return this._enc.channel}get attributeType(){return Vt(this._enc.element).getFieldType(this.attribute)}get orientation(){return this._orientation}get textColor(){return this._textColor}}class sm extends im{constructor(e,t){super(e,t),"numCols"in t||"numRows"in t?(this._numCols=t.numCols,this._numRows=t.numRows):this._orientation===J.VERTICAL?this._numCols=1:this._numRows=1,this._initialize()}_initialize(){let e=this._enc.element.scene,t=this._enc.attribute,r=this._enc.scales[0],n=new Lt(r.domain.map((e=>({category:e,value:r.map(e)})))),i=n.getUniqueAttributeValues("category").sort(((e,t)=>t.length-e.length))[0],s=this._enc.element,a=s instanceof ie&&s.closed?s.strokeWidth:0;if(this._orientation===J.VERTICAL){let r=0;this._showTitle&&(this.addChild(new Et({fillColor:this._textColor,fontSize:this._fontSize,text:t,x:this._x,y:this._y,anchor:["left","top"]})),r=parseFloat(this._fontSize)+5);let o=e.mark("rect",{top:this._y+2+r,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:s.strokeColor,opacity:s.opacity}),l=e.mark("text",{text:i,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+20,y:this._y+r+12+a,anchor:["left","bottom"]}),u=e.glyph(o,l),c=e.repeat(u,n);e.encode(l,{channel:"text",attribute:"category",forLegend:!0}),e.encode(o,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),c.layout=new nm({numCols:this._numCols,numRows:this._numRows}),this.addChild(c)}else{let t=e.mark("rect",{top:this._y,left:this._x,width:10,height:10,strokeWidth:a,strokeColor:s.strokeColor,opacity:s.opacity}),r=e.mark("text",{text:i,fillColor:this._textColor,fontSize:this._fontSize,x:this._x+15,y:this._y,anchor:["left","top"]}),o=e.glyph(t,r),l=e.repeat(o,n);e.encode(r,{channel:"text",attribute:"category",forLegend:!0}),e.encode(t,{channel:"fillColor",attribute:"category",shareScale:this._enc,forLegend:!0}),l.layout=new nm({numCols:this._numCols,numRows:this._numRows,colGap:15}),this.addChild(l)}}}class am extends im{constructor(e,t){super(e,t),this._initialize()}_initialize(){let e,r,n,i=this._enc.element.scene,s=this._enc.attribute;if(this._orientation==J.VERTICAL?(e=15,r=300):(e=300,r=15),this._showTitle){let t=i.mark("text",{fillColor:this._textColor,text:s,x:this._x+e/2,y:this._y,anchor:["center","middle"]});this.addChild(t),n=20}else n=0;let a,o=i.mark("rect",{top:this._y+n,left:this._x,width:e,height:r,strokeWidth:0,opacity:this._enc.element.opacity}),l=Object.values(this._enc.attrValues),u=[Math.min(...l),Math.max(...l)],c=this._enc.mapping,h=[],d=[],f=t.format(this._numberFormat);if(c){let t=Object.keys(c).map((e=>parseFloat(e))).sort(((e,t)=>e-t));this._orientation==J.VERTICAL?(a=new v({x1:0,y1:100,x2:0,y2:0}),t.forEach((t=>{let s=(t-u[0])/(u[1]-u[0]);a.addStop(100*s,c[t],1);let o=i.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+r-s*r+n,y2:this._y+r-s*r+n,strokeColor:this._strokeColor});d.push(o);let l=i.mark("text",{fillColor:this._textColor,text:this._numberFormat?f(t):t.toFixed(0),x:this._x+e+5+5,y:this._y+r-s*r+n,anchor:["left","middle"]});h.push(l)}))):(a=new v({x1:0,y1:0,x2:100,y2:0}),t.forEach((t=>{let s=(t-u[0])/(u[1]-u[0]);a.addStop(100*s,c[t],1);let o=i.mark("line",{x1:this._x+s*e,x2:this._x+s*e,y1:this._y+20-5+n,y2:this._y+r+5+n,strokeColor:this._strokeColor});d.push(o);let l=i.mark("text",{fillColor:this._textColor,text:this._numberFormat?f(t):t.toFixed(0),x:this._x+s*e,y:this._y+r+5+n,anchor:["center","top"]});h.push(l)})))}else{let t=this._enc.scales[0].domain,o=Vt(this._enc.element),l=o.getAttributeType(s),u=[],c=l===Ae.Date?o.getUniqueFieldValues(s):[...new Set(Object.values(this._enc.attrValues))];if(c.length<=10)u=c,u.sort(((e,t)=>e-t));else if(l===Ae.Date){c.sort(((e,t)=>e-t));for(let e=0;e<c.length;e+=Math.ceil(c.length/10))u.push(c[e])}else{let e=(t[1]-t[0])/9;for(let r=0;r<10;r++)u.push(t[0]+r*e)}let p=0,_=(u[u.length-1]-u[0])/u.length;for(;_<1;)_*=10,p++;u=u.map((e=>e.toFixed(p))),this._orientation==J.VERTICAL?(a=new v({x1:0,y1:100,x2:0,y2:0}),u.forEach((u=>{let c=(u-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scales[0].map(u),1);let p=i.mark("line",{x1:this._x+e,x2:this._x+e+5,y1:this._y+r-c*r+n,y2:this._y+r-c*r+n,strokeColor:this._strokeColor});d.push(p);let _=i.mark("text",{fillColor:this._textColor,text:l===Ae.Date?o.getRawValue(s,u):this._numberFormat?f(u):u,x:this._x+e+5+5,y:this._y+r-c*r+n,anchor:["left","middle"]});h.push(_)}))):(a=new v({x1:0,y1:0,x2:100,y2:0}),u.forEach((u=>{let c=(u-t[0])/(t[1]-t[0]);a.addStop(100*c,this._enc.scale.map(u),1);let f=i.mark("line",{x1:this._x+c*e,x2:this._x+c*e,y1:this._y+r+n,y2:this._y+r+5+n,strokeColor:this._strokeColor});d.push(f);let p=i.mark("text",{fillColor:this._textColor,text:l===Ae.Date?o.getRawValue(s,u):u,x:this._x+c*e,y:this._y+r+5+n,anchor:["center","top"]});h.push(p)})))}o.styles.fillColor=a,this.addChild(o);for(let e of h)this.addChild(e);for(let e of d)this.addChild(e)}}class om extends _t{constructor(e){super(),this._type=Ot.Composite,this._id=e&&e.id?e.id:this._type+Nt()}addChild(e){let t=e.parent;super.addChild(e);let r=D(e)._depGraph;t&&at(t,e,r),ot(this,e,r)}}class lm{constructor(e,t,r){this._elems=e,this._channel=t,this._anchor=r}get elements(){return this._elems}get channel(){return this._channel}get anchor(){return this._anchor}}class um extends F{constructor(e){super(),this.type=U.STRATA,this._direction=e.direction,this._gap="gap"in e?e.gap:0}clone(){return new um({direction:this._direction,gap:this._gap})}}function cm(e,t,r,n,i,s){switch(t.type){case Ot.Circle:case Ot.Ring:return function(e,t,r,n,i,s){let a,o=r||te.OUTWARD,l=i||50;if(o!==te.INWARD&&o!==te.OUTWARD)throw"Unknown direction to stratify";let u,c=T(t,e),h=Array.isArray(s)?s:[s];if(n){let r=Rt(e);r.dataScope=void 0,null==u&&(u=r.id),r._classId=u;let n=c.map((e=>h[0].getNode(e.dataScope.getAttributeValue(Ee))));hm(c,n,h[0],r,t.classId?t.classId:t.id,400,350,o,l),a=r}else c.forEach(((r,n)=>{let i=Rt(e);i.dataScope=void 0,null==u&&(u=i.id),i._classId=u;let s=r.parent;dm(r,t.id,o,l,h[n],h[n].getRoot(),i,e,!0),i._layout=new um({direction:o}),i._layout.group=i,s.addChild(i),r===t&&(a=i)}));return a}(e,t,r,n,i,s);case Ot.Rect:return function(e,t,r,n,i,s){let a,o,l=r||Q.Top2Bottom,u=i||50;if(!Object.values(Q).includes(l))throw"Unknown direction to stratify";return T(t).forEach((r=>{let n=Rt(e);n.dataScope=void 0,null==o&&(o=n.id),n._classId=o;let i=r.parent;fm(r,t.id,l,u,s,s.getRoot(),n,e,!0),n._layout=new um({direction:l}),n._layout.group=n,i.addChild(n),r===t&&(a=n)})),a}(e,t,r,0,i,s)}}function hm(e,t,r,n,i,s,a,o,l){let u=t.map((e=>r.getParent(e))).filter(((e,t,r)=>r.findIndex((t=>t[Ee]===e[Ee]))===t));if(u=u.filter((e=>e!==r.getRoot())),0===u.length)return;let c=[];for(let t of u){let u,h,d,f=e.filter((e=>r.getParent(r.getNode(e.dataScope.getAttributeValue(Ee)))===t));if(f[0].type===Ot.Circle){let e=f.map((e=>C(s,a,e.bounds.x,e.bounds.y)-e.radius)),t=f.map((e=>C(s,a,e.bounds.x,e.bounds.y)+e.radius));d=o===te.OUTWARD?Math.max(...t):Math.min(...e)-l;let r=f.map((e=>fe(e.bounds.x,e.bounds.y,s,a))),n=f.map((e=>fe(s+C(s,a,e.bounds.x,e.bounds.y),a-e.radius,s,a))),i=r.map(((e,t)=>e-n[t])),c=r.map(((e,t)=>e+n[t])),p=i.concat(c);u=Math.min(...p),h=Math.max(...p)}else f[0].type===Ot.Arc&&(u=360,h=-360,f.forEach((e=>{let t=e.startAngle,r=e.endAngle;r<t&&(r+=360),u=Math.min(u,t),h=Math.max(h,r)})),u=de(u),h=de(h),d=o===te.OUTWARD?Math.max(...f.map((e=>e.outerRadius))):Math.min(...f.map((e=>e.innerRadius)))-l);let p=Ct({type:"arc",innerRadius:d,outerRadius:d+l,x:s,y:a,startAngle:de(u),endAngle:de(h),strokeColor:e[0].strokeColor,fillColor:e[0].fillColor,strokeWidth:e[0].strokeWidth,opacity:e[0].opacity});p._updateBounds(),p.dataScope=r.getNodeDataScope(t),p._classId=i,n.addChild(p),c.push(p)}hm(c,u,r,n,i,s,a,o,l)}function dm(e,t,r,n,i,s,a,o,l){l&&(e.dataScope=i.getNodeDataScope(s),e._classId=t);let u=i.getChildren(s);if(0===u.length)return;let c=e.type===Ot.Circle||e.type===Ot.Ring?60:e.startAngle,h=(e.type===Ot.Circle||e.type===Ot.Ring?360:e.angle)/u.length;for(let s=0;s<u.length;s++){let o,l;l=r===te.OUTWARD?e.type===Ot.Circle?e.radius:e.outerRadius:e.type===Ot.Circle?e.radius-n:e.innerRadius-n,o=Ct(360===h?{type:"ring",innerRadius:l,outerRadius:l+n,x:e.x,y:e.y,strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}:{type:"arc",innerRadius:l,outerRadius:l+n,x:e.x,y:e.y,startAngle:de(c+h*s),endAngle:de(c+h*(s+1)),strokeColor:e.strokeColor,fillColor:e.fillColor,strokeWidth:e.strokeWidth,opacity:e.opacity}),o._updateBounds(),o.dataScope=i.getNodeDataScope(u[s]),o._classId=t+"_strata",a.addChild(o),dm(o,t,r,n,i,u[s],a)}}function fm(e,t,r,n,i,s,a,o,l){l&&(e.dataScope=i.getNodeDataScope(s),e._classId=t,a.addChild(e));let u,c,h,d=i.getChildren(s);if(0!==d.length){switch(r){case Q.Top2Bottom:case Q.Bottom2Top:case Q.Left2Right:case Q.Right2Left:}u=e.left,c=e.bottom,h=e.width/d.length;for(let s=0;s<d.length;s++){let o=St(e);ze(o,u-o.left,c-o.top),o.resize(h,n),o._updateBounds(),u+=h,o.dataScope=i.getNodeDataScope(d[s]),o._classId=t,a.addChild(o),fm(o,t,r,n,i,d[s],a)}}}class pm extends Ze{constructor(e,t,r,n){super(e,t),this._elem=r,this._cumulative=n,this._elements=[]}get element(){return this._elem}isCumulative(){return this._cumulative}get elements(){return this._elements}set elements(e){this._elements=e}}class _m extends Ze{constructor(e,t,r){super(e,t),this._key=r}get key(){return this._key}}class gm extends Ze{constructor(e,t,r){super(e,t),this._listener=r,this._elements=[]}get mouseEvent(){return this._mouseEvent}set mouseEvent(e){this._mouseEvent=e}get listener(){return this._listener}get elements(){return this._elements}set elements(e){this._elements=e}}class ym extends Ze{constructor(e,t,r){super(e,t),this._ctrlId=r}get id(){return this._ctrlId}}class mm extends _t{constructor(e){super(),this._itemMap={},this._type=Ot.Scene,this._id=e&&e.id?e.id:this._type+Nt(),e&&e.fillColor&&(this.fillColor=e.fillColor),this._encodings={},this._relations=[],this._triggers={},this._depGraph=new Hy}get depGraph(){return this._depGraph}get interactionTriggers(){return this._triggers}mark(e,t){if(Object.values(Tt).indexOf(e)<0)throw new Error("Mascot does not allow directly creating a "+e);let r=void 0===t?{}:t;r.type=e;let n=Ct(r);return null!==n&&(n._classId=n.id,this.addChild(n),this._itemMap[n.id]=n,tt(n,this._depGraph),ot(this,n,this._depGraph)),n}glyph(...e){let t=[];for(let r of e)t.push([r.parent,r]);let r=kt(e);if(null!==r){r._classId=r.id,this.addChild(r),this._itemMap[r.id]=r;for(let e of t)at(e[0],e[1],this._depGraph);!function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getIncomingDataflowOperator(Y.EVAL_BBOX,r);for(let r of e.children)t.connect(t.getVariable(q.BOUNDS,r),n);t.connect(n,r),n.run()}(r,this._depGraph),ot(this,r,this._depGraph)}return r}composite(){let e=new om;return null!==e&&(e._classId=e.id,this.addChild(e),this._itemMap[e.id]=e,function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.CHANNEL,"x",e),i=t.getVariable(q.CHANNEL,"y",e),s=t.getVariable(q.CHANNEL,"width",e),a=t.getVariable(q.CHANNEL,"height",e),o=t.createOneWayDependency(Y.EVAL_BBOX);t.connect(n,o),t.connect(i,o),t.connect(s,o),t.connect(a,o),t.connect(o,r),o.run()}(e,this._depGraph),ot(this,e,this._depGraph)),e}attach(e,t){if(e.type==Ot.Glyph)for(let t of e.children)t._refBounds||(t._refBounds=t.bounds.clone());e.dataScope=new pe(t)}repeat(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ repeat by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do repeat. You must specify an element, a categorical data attribute and a data table");if(t instanceof ye||t instanceof be){if(!Array.isArray(e)||2!==e.length)throw new Error("To repeat with a tree or a network, you need to provide two marks, one for node and one for link")}else t instanceof Lt&&we(r.attribute,t);if(r.layout&&!(r.layout instanceof F))throw new Error("Invalid layout: "+r.layout)}(e,t,n),t instanceof ye||t instanceof be){let r=e[0].parent,n=e[1].parent,[i,s]=function(e,t,r,n){let i=n.nodeTable.getAttributeSummary(Ee).unique.map((e=>t.dataScope?t.dataScope.cross(Ee,e):new pe(n.nodeTable).cross(Ee,e))),s=Rt(e),a=Rt(e),o={};a.dataScope=t.dataScope?t.dataScope.clone():new pe(n.nodeTable),a.addChild(t);for(let e=1;e<i.length;e++){let e=St(t);a.addChild(e)}a.children.forEach(((e,t)=>{e.dataScope=i[t],e.links=[],o[e.dataScope.getAttributeValue(Ee)]=e}));let l=n.linkTable.getAttributeSummary(Pt).unique.map((e=>r.dataScope?r.dataScope.cross(Pt,e):new pe(n.linkTable).cross(Pt,e)));s.dataScope=r.dataScope?r.dataScope.clone():new pe(n.linkTable),s.addChild(r);for(let e=1;e<l.length;e++){let e=St(r);s.addChild(e)}s.children.forEach(((e,t)=>e.dataScope=l[t]));let u=n instanceof ye?"parent":"source",c=n instanceof ye?"child":"target";for(let e of s.children){let t=e.dataScope.getAttributeValue(u),r=e.dataScope.getAttributeValue(c),n=o[t],i=o[r];e.source=n,e.target=i,n.links.push(e),i.links.push(e)}return[a,s]}(this,e[0],e[1],t);return at(r,e[0],this._depGraph),at(n,e[1],this._depGraph),st(i,this._depGraph),st(s,this._depGraph),ot(i,e[0],this._depGraph),ot(i.parent,i,this._depGraph),ot(s,e[1],this._depGraph),ot(s.parent,s,this._depGraph),[i,s]}if(t instanceof Lt){let r=e.parent,i=Yy(this,e,n.attribute,t);return at(r,e,this._depGraph),st(i,this._depGraph),ot(i,e,this._depGraph),ot(i.parent,i,this._depGraph),n.layout&&(i.layout=n.layout),i}}divide(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ divide by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do divide. You must specify an element, a categorical data attribute and a data table");if(t instanceof Lt&&we(r.attribute,t),r.layout&&!(r.layout instanceof F))throw new Error("Invalid layout: "+r.layout)}(e,t,n),t instanceof ye||t instanceof be)throw"Not implemented";if(t instanceof Lt){let{newMark:r,collection:i}=$y(this,e,n.attribute,n.orientation,t);return rt(e,this._depGraph),tt(r,this._depGraph),st(i,this._depGraph),ot(i,r,this._depGraph),i.parent.type!==Ot.Scene&&ot(i.parent,i,this._depGraph),this.onChange(q.CHANNEL,"width",r),{newMark:r,collection:i}}}densify(e,t,r){let n=r||{};if(n.attribute=n.attribute||Pt,console.log("------ densify by",n.attribute," ----"),function(e,t,r){if(!e||void 0===t)throw new Error("Incomplete information to do densification. You must specify an element, a categorical data attribute and a data table");t instanceof Lt&&we(r.attribute,t)}(e,t,n),t instanceof ye||t instanceof be)throw"Not implemented";if(t instanceof Lt){let r=Se(0,e,n.attribute,n.orientation,t);return rt(e,this._depGraph),tt(r,this._depGraph),r.parent.type!==Ot.Scene&&ot(r.parent,r,this._depGraph),this.onChange(q.CHANNEL,"width",r),r}}stratify(e,t,r){if(!(t instanceof ye||Array.isArray(t)&&t.every((e=>e instanceof ye))))throw"Cannot stratify on a non-tree dataset";if(![Ot.Circle,Ot.Rect,Ot.Ring].includes(e.type))throw"Cannot stratify elements that are not rects, circles, or rings";let n=r||{},i=n.direction,s=n.size,a=e.parent,o=cm(this,e,i,n.startFromLeaf,s,t);return at(a,e,this._depGraph),st(o,this._depGraph),o.children.length>0&&ot(o,o.firstChild,this._depGraph),ot(o.parent,o,this._depGraph),o}repopulate(e,t,r){e.dataScope=void 0;let n=e;for(let e in r){Jy(0,n,r[e],t);let i=Le(n.children[0],!0);for(let e of i){Ne(e,this),nt(e,this._depGraph);for(let t of e.refElements)er(t,this),it(t,this._depGraph);e.clearRefElements()}let s=T(n);for(let e of s)if(e.layout){for(let t of e.layout.refElements)er(t,this),it(t,this._depGraph);e.layout.clearRefElements()}n=n.children[0]}e.dataScope=new pe(t),this.onChange(q.CHANNEL,"width",e.children[0])}classify(e,t){let r=t||{};console.log("------ classify by",r.attribute," ----"),function(e,t,r,n){let i=T(t);for(let t of i){let i,s={},a=t.children;for(let e of a){let t=e.dataScope.getAttributeValue(r);t in s||(s[t]=[]),s[t].push(e)}let o=Vt(a[0]);for(let a in s){let l=Rt(e);t.addChild(l),void 0===i&&(i=l.id),l._classId=i,l.dataScope=t.dataScope?t.dataScope.cross(r,a):new pe(o).cross(r,a);for(let e of s[a])l.addChild(e);n&&(l._layout=n.clone(),l._layout.group=l)}}}(this,e,r.attribute,r.layout),at(e,e.firstChild.firstChild,this._depGraph),st(e.firstChild,this._depGraph),ot(e.firstChild,e.firstChild.firstChild,this._depGraph),ot(e,e.firstChild,this._depGraph),this.onChange(q.CHANNEL,"width",e.firstChild.firstChild)}affix(e,t,r,n){e.dataScope.dataTable!==e.dataScope.dataTable&&console.warn("Affix: elements and base elements are not created from the same table");let i=em(e,t),s=this._relations.find((e=>e.id===i));s||(s=new Qy(e,t),this._relations.push(s)),s.addChannel(r,n||{}),function(e,t){let r=t.getVariable(q.AFFIXATION,e),n=t.getOutgoingDataflowOperator(Y.AFFIXER,r);t.connect(r,n);for(let r of e.channels){let i=t.getVariable(q.CHANNEL,r,e.element),s=t.getVariable(q.CHANNEL,r,e.base);t.connect(s,n),t.connect(n,i)}n.run()}(s,this._depGraph)}align(e,t,r){let n=new lm(e,t,r);!function(e,t){let r=t.createMultiWayDependency(Y.ALIGNER),n=t.getVariable(q.ALIGNMENT,e);t.connect(n,r);for(let n of e.elements){let i=t.getVariable(q.CHANNEL,e.channel,n);t.connect(i,r)}r.run()}(n,this._depGraph),this._relations.push(n)}encode(e,t){if("rowId"===t.attribute&&(t.attribute=Pt),function(e,t){if(!e||!("channel"in t)||!("attribute"in t))throw new Error("Incomplete information to do encoding. You must specify an item, a categorical data attribute and a data table");let r=Vt(e);if(r.tree){let e=t.attribute;if(e.indexOf(".")>0&&!r.tree.nodeTable.hasAttribute(e.split(".")[1]))throw new Error("Data attribute does not exist in the data table")}else if(!r||!r.hasAttribute(t.attribute))throw new Error("Data attribute does not exist in the data table");if(!Object.values(Ie).includes(t.channel))throw new Error("Channel Not Supported")}(e,t),t.shareScale){let e=t.shareScale;if(e.channel!=t.channel&&e.channel.indexOf("Color")<0&&t.channel.indexOf("Color")<0)throw new Error("Cannot share scales between "+e.channel+" and "+t.channel+" encodings");t.scheme=t.shareScale.colorScheme}!function(e){let t;"vertex"===e.type&&e.parent.type===Ot.Area?t=e.parent:e.type===Ot.Area&&(t=e),t&&!t._refBounds&&T(t).forEach((e=>e._refBounds=e.bounds.clone()))}(e);let r=t.aggregator?t.aggregator:"sum";console.log("------ encode",t.channel,t.attribute," --");let n=Pe(e,t.channel);if(n&&t.attribute!==n.attribute){Ne(n,this),nt(n,this._depGraph);for(let e of n.refElements)er(e,this),it(e,this._depGraph);n.clearRefElements()}let i=new Xy(e,t.channel,t.attribute,r,t);return this._addAttributeEncoding(i),function(e,t,r){let n=e.attribute,i=e.channel,s=e.element,a=t.createOneWayDependency(Y.ENCODER);if(["width","height"].includes(e.channel)&&s.type===Ot.Area){let e=t.getVariable(q.PROPERTY,et.BASE_LINE,s);t.connect(e,a)}if(r){let n=t.getVariable(q.DOMAIN,r),o=t.getVariable(q.SCALE,r),l=t.getVariable(q.CHANNEL,i,s);t.connect(o,a),t.connect(a,l),n.addLinkedEncoding(e),o.addLinkedEncoding(e),n.incomingDataflow.run()}else{let r=t.getVariable(q.ATTRIBUTE,n,Vt(s)),o=t.getVariable(q.PROPERTY,et.INCLUDE_ZERO,e),l=t.getVariable(q.DOMAIN,e),u=t.getVariable(q.DATASCOPE,s),c=t.createOneWayDependency(Y.DOMAIN_BUILDER);t.connect(r,c),t.connect(o,c),t.connect(u,c),t.connect(c,l),c.run();let h=t.getVariable(q.PROPERTY,et.RANGE_START,e),d=t.getVariable(q.PROPERTY,et.RANGE_EXTENT,e),f=t.getVariable(q.PROPERTY,et.FLIP_SCALE,e),p=t.getVariable(q.SCALE,e),_=t.createOneWayDependency(Y.SCALE_BUILDER);t.connect(h,_),t.connect(d,_),t.connect(f,_),t.connect(l,_),t.connect(_,p),_.run();let g=t.getVariable(q.CHANNEL,i,s);t.connect(p,a),t.connect(a,g),a.run()}}(i,this._depGraph,t.shareScale),t.shareScale?this.onChange(q.DOMAIN,i):this.onChange(q.CHANNEL,t.channel,e),i}connect(e,t){let r={};e.forEach((e=>r[e.dataScope.getAttributeValue(Ee)]=e));let n=t[0].dataScope.dataTable,i=n.tree?"parent":"source",s=n.tree?"child":"target";for(let t of e)t.links=[];for(let e of t){let t=e.dataScope.getAttributeValue(i),n=e.dataScope.getAttributeValue(s),a=r[t],o=r[n];e.source=a,e.target=o,a.links.push(e),o.links.push(e)}ht(e.find((e=>e.links.length>0)),this._depGraph),this.onChange(q.CHANNEL,"x",e[0])}_addAttributeEncoding(e){let t=De(e.element);t in this._encodings||(this._encodings[t]={}),this._encodings[t][e.channel]=e}activate(e,t,r,n,i){!function(e,t,r,n,i){if(!("event"in e)||!("type"in e))throw"Event and trigger must be specified";if(![$e.WIDGET,$e.KEYBOARD].includes(e.type)){if(!("target"in t)||!("targetChannels"in t))throw"Target must be specified";if("function"!=typeof r)throw"Target evaluator must be a function"}if(e.type===$e.ELEMENT&&!("element"in e))throw"Element must be specified for trigger";if(Array.isArray(n)){if(!n.every((e=>"function"==typeof e)))throw"Effect setter must be a function";if(i&&!Array.isArray(i))throw"An array of effect setters must be accompanied by an array of animation effects";if(i&&Array.isArray(i)&&i.length!==n.length)throw"the length of effect setters is not equal to the length of animation effects"}else if("function"!=typeof n)throw"Effect setter must be a function"}(e,t,r,n,i);let s=e.event,a=function(e){switch(e.type){case $e.ELEMENT:return[e.type,e.element.classId?e.element.classId:e.element.id].join("-");case $e.ATTRIBUTE:return[e.type].join("-");case $e.WIDGET:return[e.type,e.event,e.listener?e.listener.id:"scene",e.id?e.id:""].join("-");case $e.MOUSE:return[e.type,e.event,e.listener?e.listener.id:"scene"].join("-");case $e.KEYBOARD:return[e.type,e.event,e.key].join("-");default:return[e.type,e.event].join("-")}}(e);if(s=0===s.indexOf("brush")?"brush":s,s in this._triggers||(this._triggers[s]={}),a in this._triggers[s]||(this._triggers[s][a]=function(e){switch(e.type){case $e.ELEMENT:return new pm(e.type,e.event,e.element,"cumulative"in e&&e.cumulative);case $e.MOUSE:return new gm(e.type,e.event,e.listener);case $e.KEYBOARD:return new _m(e.type,e.event,e.key);case $e.WIDGET:return new ym(e.type,e.event,e.id)}}(e)),this._triggers[s][a].animation=i,![$e.WIDGET,$e.KEYBOARD].includes(e.type)){let e=this._triggers[s][a],i=new qy(e,t,r,n);return function(e,t,r){let n=e.target,i=r.getVariable(q.COND_ENCODING,e);for(let s of t){let t=r.getVariable(q.TRIGGER,e.trigger),a=r.findIncomingDataflowOperator(Y.TARGET_EVALUATOR,i);a||(a=r.createOneWayDependency(Y.TARGET_EVALUATOR,e._targetEval)),r.connect(t,a),r.connect(a,i);let o=r.getVariable(q.CHANNEL,s,n),l=o.incomingDataflow;if(l&&l instanceof Je&&l.outputVar.channel===s)r.connect(i,l);else if(!l){let e=r.createOneWayDependency(Y.ENCODER);r.connect(i,e),r.connect(e,o),e.storeValues(n,s)}}}(i,t.targetChannels,this._depGraph),i}this._triggers[s][a].callback=n}onChange(e,...t){if(Object.values(q).indexOf(e)<0)throw new Error("Unknown Variable Type: "+e);let r=[];this._depGraph.processChange(e,r,...t);for(let e of r)e.run()}gridlines(e,t,r){let n=r||{},i=n.element?Pe(n.element,e):Ve(t,e,this);if(i){i.attribute!==t&&console.warn("Cannot create a "+e+" axis for "+t);let r=[];if("x"==e)for(let e of i.scales)r.push({scale:e,elems:i.getElements(e)});else if("width"==e){let e=B(i.element),t=i.scales[0];if(e.layout&&e.layout.type==U.GRID&&e.layout.numCols>1){let n=e.layout.getElementsByCol(!0);for(let e of n)r.push({scale:t,elems:e})}else r.push({scale:i.scales[0],elems:i.getElements(i.scales[0])})}else if("y"==e){let e=B(i.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let t=e.layout.getElementsByRow(!0,i.element);for(let e of t)r.push({scale:i.getScale(e[0]),elems:e})}else r.push({scale:i.scales[0],elems:i.getElements(i.scales[0])})}else if("height"==e){let e=B(i.element),t=i.scales[0];if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let n=e.layout.getElementsByRow(!0,i.element);for(let e of n)r.push({scale:t,elems:e})}else r.push({scale:t,elems:i.getElements(t)})}else"radialDistance"==e&&r.push({scale:i.scales[0],elems:T(i.element)});for(let e of r){let t=new Ky(i.channel,i.attribute,e.scale,e.elems,n);this.addChild(t),i.addRefElement(t),pt(t,this._depGraph),ot(this,t,this._depGraph)}}else{let r=n.element?n.element:L(this,t);if(!r)return void console.warn("Cannot create "+e+" gridlines for "+t);let i=V(r.parent);if(!i.layout)return void console.warn("Cannot create "+e+" gridlines for "+t);let s=T(i);for(let r of s){let i=[];r.layout.type==U.GRID&&r.layout.numRows>1&&"x"==e?i=r.layout.getElementsByRow():r.layout.type==U.GRID&&r.layout.numCols>1&&"y"==e?i=r.layout.getElementsByCol():i.push(r.children);for(let s of i){let i=new Ky(e,t,null,s,n);this.addChild(i),r.layout.addRefElement(i),pt(i,this._depGraph),ot(this,i,this._depGraph)}}}}axis(e,t,r){let n=r||{},i="rowId"==t?Pt:t,s=[],a=n.element?Pe(n.element,e):Ve(i,e,this);if(a){a.attribute!==i&&console.warn("Cannot create a "+e+" axis for "+i);let t=[];if("x"==e||"width"==e){let e=B(a.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numCols>1){let r=e.layout.getElementsByCell(!0,a.element);for(let e of r)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else if("y"==e||"height"==e){let e=B(a.element);if(e.layout&&e.layout.type==U.GRID&&e.layout.numRows>1){let r=e.layout.getElementsByCell(!0,a.element);for(let e of r)t.push({scale:a.getScale(e[0]),elems:e})}else t.push({scale:a.scales[0],elems:a.getElements(a.scales[0])})}else"radialDistance"==e&&t.push({scale:a.scales[0],elems:T(a.element)});for(let e of t){let t=new tr(a,e.scale,e.elems,n);this.addChild(t),s.push(t),a.addRefElement(t),ft(t,this._depGraph),ot(this,t,this._depGraph),this.onChange(q.PROPERTY,et.AXIS_PATH_POSITION,t)}}else{let t=n.element?n.element:L(this,i);if(!t)return void console.warn("Cannot create a "+e+" axis for "+i);let r=V(t.parent);if(!r.layout)return void console.warn("Cannot create a "+e+" axis for "+i);let a=T(r);for(let t of a){let r=[];t.layout.type==U.GRID&&t.layout.numRows>1&&"x"==e?r=t.layout.getElementsByRow():t.layout.type==U.GRID&&t.layout.numCols>1&&"y"==e?r=t.layout.getElementsByCol():r.push(t.children);for(let a of r){let r=new rr(a,e,i,n);this.addChild(r),s.push(r),t.layout.addRefElement(r),dt(r,this._depGraph),ot(this,r,this._depGraph),this.onChange(q.PROPERTY,et.AXIS_PATH_POSITION,r)}}}return s}legend(e,t,r){let n=r||{},i="rowId"==t?Pt:t,s=n.element?Pe(n.element,e):Ve(i,e,this);if(s){s.attribute!==t&&console.warn("Cannot create a "+e+" legend for "+t);let r="string"===Vt(s.element).getAttributeType(t)?new sm(s,n):new am(s,n);this.addChild(r),function(e,t){let r=t.getVariable(q.BOUNDS,e),n=t.getVariable(q.PROPERTY,et.LEGEND_POSITION,e),i=t.getIncomingDataflowOperator(Y.EVAL_BBOX,r);t.connect(n,i),t.connect(i,r)}(r,this._depGraph),ot(this,r,this._depGraph),p(r),this.onChange(q.PROPERTY,et.LEGEND_POSITION,r)}else console.warn("Cannot create a "+e+" legend for "+i)}setLayout(e,t){if(e.layout&&(ut(e,e.layout,this._depGraph),t.type===U.TREEMAP)){let t=e.firstChild;for(;t&&t.type===Ot.Collection&&t.layout;)ut(t,t.layout,this._depGraph),t=t.firstChild}if(T(e).forEach((e=>{let r=t?t.clone():t;e._layout=r,r&&(r.group=e)})),ct(e,t,this._depGraph),e.children&&e.children.length>0){let t=j(e,!0);for(let e of t)this.onChange(q.CHANNEL,"x",e)}}setProperties(e,t,r){let n=r?[e]:T(e);n.forEach((e=>{for(const[r,n]of Object.entries(t))Ue(e,r,n)})),"width"in t&&n.forEach((e=>e._refBounds.setWidth(t.width))),"height"in t&&n.forEach((e=>e._refBounds.setHeight(t.height)));for(let r in t)["vertex","segment"].includes(e.type)&&!["x","y"].includes(r)||(Object.values(Ie).includes(r)?this.onChange(q.CHANNEL,r,e):this.onChange(q.PROPERTY,r,e))}setLayoutParameters(e,t){let r=T(e);for(let e of r)for(let r in t)e.layout[r]=t[r];this.onChange(q.CHANNEL,"width",e.firstChild)}sortChildren(e,t,r,n){if(e instanceof _t)tm(e,t,r,n),this.onChange(q.ORDER,e);else if(e instanceof ie){let i=T(e);for(let e of i)rm(e,t,r,n)}}findElements(e){return N(this,e)}translate(e,t,r){ze(e,t,r);let n=j(e,!0);for(let e of n)p(e);for(let e of n)this.onChange(q.CHANNEL,"x",e)}transform(e,t,r){let n=t.clone();switch(e){case"bin":!function(e,t,r,n,i){let s=i.getVariable(q.ATTRIBUTE,e,r),a=i.getVariable(q.ATTRIBUTE,t,n),o=i.createOneWayDependency(Y.BIN_TRANSFORMER);i.connect(s,o),i.connect(o,a),o.run()}(r.attribute,r.newAttribute,t,n,this._depGraph);break;case"filter":!function(e,t,r,n){let i=n.getVariable(q.ITEMS,void 0,t),s=n.getVariable(q.ITEMS,e,r),a=n.createOneWayDependency(Y.FILTER_TRANSFORMER);n.connect(i,a),n.connect(a,s),a.run()}(l(r),t,n,this._depGraph);break;case"kde":!function(e,t,r,n,i,s){let a=s.getVariable(q.ATTRIBUTE,e,r),o=s.getVariable(q.ATTRIBUTE,t,n),l=s.createOneWayDependency(Y.KDE_TRANSFORMER);l.args=i,s.connect(a,l),s.connect(l,o),l.run()}(r.attribute,r.newAttribute,t,n,r,this._depGraph)}return n}}function bm(e,t){let r=new pe(t.tables[e.dt]);for(let t in e.attr2value)r._attr2value[t]=e.attr2value[t],r._updateTuples(t,e.attr2value[t]);return r}class vm extends F{constructor(e){super(),this.type=U.DIRECTED,this._width="width"in e?e.width:500,this._height="height"in e?e.height:300,this._top="top"in e?e.top:0,this._left="left"in e?e.left:0,this._edgeSep="edgeSep"in e?e.edgeSep:50,this._spreadLinks=!("spreadLinks"in e)||e.spreadLinks,this._direction="direction"in e?e.direction:Q.Top2Bottom}clone(){return new vm({width:this._width,height:this._height,top:this._top,left:this._left,edgeSep:this._edgeSep,spreadLinks:this._spreadLinks,direction:this._direction})}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}get edgeSep(){return this._edgeSep}get spreadLinks(){return this._spreadLinks}get direction(){return this._direction}}class xm extends F{constructor(e){super(),this.type=U.FORCE,this._x="x"in e?e.x:0,this._y="y"in e?e.y:0,this._iterations="iterations"in e?e.iterations:1,this._repulsion="repulsion"in e?e.repulsion:30,this._attraction="attraction"in e?e.attraction:1,this._linkDistance="linkDistance"in e?e.linkDistance:30}clone(){return new xm({x:this._x,y:this._y,iterations:this._iterations,repulsion:this._repulsion,attraction:this._attraction,linkDistance:this._linkDistance})}}class Em extends F{constructor(e){super(),this.type=U.PACKING,this._x="x"in e?e.x:400,this._y="y"in e?e.y:400,this._width=e.width,this._height=e.height}clone(){return new Em({x:this._x,y:this._y,width:this._width,height:this._height})}}class wm extends F{constructor(e){super(),this.type=U.TIDYTREE,this._width="width"in e?e.width:500,this._height="height"in e?e.height:500,this._left="left"in e?e.left:100,this._top="top"in e?e.top:100,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}get orientation(){return this._orientation}clone(){return new wm({width:this._width,height:this._height,top:this._top,left:this._left,orientation:this._orientation})}}class Am extends F{constructor(e){super(),this.type=U.TREEMAP,this._width=e.width,this._height=e.height,this._left=e.left,this._top=e.top}get width(){return this._width}get height(){return this._height}get top(){return this._top}get left(){return this._left}clone(){return new Am({width:this._width,height:this._height,top:this._top,left:this._left})}}function Cm(e){switch(e.type){case U.GRID:return function(e){let t=new nm(e.args);return t._left=e.left,t._top=e.top,t._cellBounds=e.cellBounds.map((e=>Rm(e))),t._grid=e.grid,t}(e);case U.STACK:return function(e){let t=new Zy(e.args);return t}(e);case U.PACKING:return function(e){let t=new Em(e.args);return t}(e);case U.FORCE:return function(e){return new xm(e.args)}(e);case U.DIRECTED:return function(e){return new vm(e.args)}(e);case U.TIDYTREE:return function(e){return new wm(e.args)}(e);case U.TREEMAP:return function(e){return new Am(e.args)}(e);case U.STRATA:return function(e){return new um(e.args)}(e);default:return void console.warn("unsupported layout type for deserialization:",e.type)}}function Rm(e){return new c(e.x-e.width/2,e.y-e.height/2,e.width,e.height)}function km(e,t){e.type===Ot.Pie&&(e.type=Ot.Arc),e.args.type=e.type;let r=Ct(e.args);return e.id&&(r._id=e.id),e.classId&&(r._classId=e.classId),e.dataScope&&(r._dataScope=bm(e.dataScope,t)),e.bounds&&(r._bounds=Rm(e.bounds)),e.refBounds&&(r._refBounds=Rm(e.refBounds)),function(e,t,r){if(e.vertices){const n=[];for(let i of e.vertices){const e=Sm(i,t,r);n.push(e)}t.vertices=n,t.segments=[];let i=0;for(let e=1;e<t.vertices.length;e++)t.segments.push(new ne(t.vertices[e-1],t.vertices[e],t,i++));t.type===Ot.Rect&&t.segments.push(new ne(t.vertices[t.vertices.length-1],t.vertices[0],t,i++))}t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}(e,r,t),r}function Sm(e,t,r){let n=new re(e.x,e.y,t,e.id);return e.dataScope&&(n._dataScope=bm(e.dataScope,r)),"polarAngle"in e&&(n._polarAngle=e.polarAngle),n.shape=e.shape,n.width=e.width,n.height=e.height,n.radius=e.radius,n.fillColor=e.fillColor,n.opacity=e.opacity,n.strokeWidth=e.strokeWidth,n.strokeColor=e.strokeColor,n}function Tm(e){let t={};t.fillColor=e.fillColor;let r=new mm(t),n={};if(e.tables)for(let t in e.tables){let r=e.tables[t];n[t]=new Lt(r.data,r.url,r.attributeTypes),n[t]._id=r.id}r.tables=n;let i={};if(e.scales)for(let t in e.scales)i[t]=Lm(e.scales[t]);if(r.scales=i,Nm(e,r,r),Im(e,r),e.encodings)for(let t of e.encodings)r._addAttributeEncoding(Vm(t,r));return delete r.tables,delete r.scales,r._bounds=Rm(e.bounds),r}function Om(e,t,r){if(e.type===Ot.Collection){let n=Rt(r);t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n}else if(e.type===Ot.Glyph){let n=kt();t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n}else if(e.type===Ot.Composite){let n=new om;t.addChild(n),Nm(e,n,r),r._itemMap[n.id]=n,n._bounds=Rm(e.bounds)}else if(Object.values(w).includes(e.type)){let n=km(e,r);r._itemMap[n.id]=n,t.addChild(n)}}function Im(e,t){if(e.children)for(let r of e.children)Im(r,t);else if(Object.values(w).includes(e.type)){let r=t._itemMap[e.id];e.links&&(r.links=e.links.map((e=>t._itemMap[e]))),e.source&&(r.source=t._itemMap[e.source]),e.target&&(r.target=t._itemMap[e.target])}}function Nm(e,t,r){if(e.id&&(t._id=e.id),e.classId&&(t._classId=e.classId),e.dataScope&&(t._dataScope=bm(e.dataScope,r)),t._bounds=Rm(e.bounds),e.layout&&(t._layout=Cm(e.layout),t._layout.group=t),t._sortBy=e.sortBy,e.children)for(let n of e.children)Om(n,t,r)}function Lm(e){let t=new Ht(e.type,e.args);return t._id=e.id,t.domain=e.domain,t.range=e.range,t}function Vm(e,t){let r=function(e,t,r){if("vertex"===t){let t=e.split("_v_");return r._itemMap[t[0]].vertices.find((e=>e._id===parseInt(t[1])))}if("segment"===t){let t=e.split("_s_");return r._itemMap[t[0]].segments.find((e=>e._id===parseInt(t[1])))}return r._itemMap[e]}(e.element,e.elementType,t);r||console.warn("element not created:",e.element,e.elementType);let n=new Xy(r,e.channel,e.attr,e.aggregator,e.args);if(e.scales&&(n._scales=e.scales.map((e=>t.scales[e]))),e.elemGroups&&(n._elemGroups=e.elemGroups.map((e=>e.map((e=>t._itemMap[e]))))),e.elem2scale){n._elem2scale={};for(let r in e.elem2scale)n._elem2scale[r]=t.scales[e.elem2scale[r]]}return e.args.startAngle&&(n.startAngle=e.args.startAngle),n}function Pm(e){let t={};return t.id=e._id,t.data=e._rawData,t.attributeTypes=e._attrTypes,t.url=e.url,t}function Dm(e){let t={};return t.dt=e._dt.id,t.attr2value=Object.assign({},e._attr2value),t}function Bm(e,t){t.vertices=[];for(let r of e.vertices)t.vertices.push(Mm(r));t.vertexCounter=e.vertexCounter,t.segmentCounter=e.segmentCounter,t.curveMode=e.curveMode}function Mm(e){let t={};return t.type=e.type,t.id=e._id,t.x=e.x,t.y=e.y,e._dataScope&&(t.dataScope=Dm(e._dataScope)),void 0!==e._polarAngle&&(t.polarAngle=e._polarAngle),t.shape=e.shape,t.width=e.width,t.height=e.height,t.radius=e.radius,t.fillColor=e.fillColor,t.opacity=e.opacity,t.strokeWidth=e.strokeWidth,t.strokeColor=e.strokeColor,t}function Gm(e){return e.type===Ot.Scene?function(e){let t=Fm(e,{});t.fillColor=e.fillColor,t.scales={},t.encodings=[];for(let r in e._encodings)for(let n in e._encodings[r]){let i=e._encodings[r][n];i._forLegend||t.encodings.push(zm(i));for(let e of i._scales)e.id in t.scales||(t.scales[e.id]=jm(e))}t.tables={};let r=function(e){let t={};for(let r in e._encodings)for(let n in e._encodings[r]){let i=e._encodings[r][n];i.dataTable.id in t||i._forLegend||(t[i.dataTable.id]=i.dataTable)}for(let r of e.children)if(![Ot.Axis,Ot.Legend,Ot.Gridlines].includes(r.type)){if(r.dataScope){t[r.dataScope.dataTable.id]=r.dataScope.dataTable;break}if(r.children&&r.children.length>0){let e=r.firstChild;for(;e;){if(e.dataScope){t[e.dataScope.dataTable.id]=e.dataScope.dataTable;break}e=e.children&&e.children.length>0?e.firstChild:void 0}}}return t}(e);for(let e in r)t.tables[e]=Pm(r[e]);return console.log(t.tables),t}(e):e instanceof _t?Fm(e,{}):e instanceof x?function(e){let t={args:{}};t.type=e.type,t.id=e.id,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Dm(e._dataScope)),e.bounds&&(t.bounds=e.bounds.toJSON()),e.refBounds&&(t.refBounds=e.refBounds.toJSON()),e.links&&(t.links=e.links.map((e=>e.id))),e.source&&(t.source=e.source.id),e.target&&(t.target=e.target.id);for(let r in e.styles)r.indexOf("Color")>0&&e.styles[r]instanceof v?t.args[r]=e.styles[r].toJSON():t.args[r]=e.styles[r];switch(e.type){case Ot.Arc:case Ot.Pie:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.innerRadius=e._innerRadius,t.args.outerRadius=e._outerRadius,t.args.startAngle=e._startAngle,t.args.endAngle=e._endAngle,t.args.direction=e._direction,t.args.thickness=e._thickness}(e,t),Bm(e,t);break;case Ot.Area:!function(e,t){t.args.baseline=e._baseline,t.args.orientation=e._orientation}(e,t),Bm(e,t);break;case Ot.Circle:!function(e,t){t.args.x=e.x,t.args.y=e.y,t.args.radius=e.radius}(e,t);break;case Ot.Image:break;case Ot.Line:case Ot.Path:case Ot.BezierCurve:Bm(e,t);break;case Ot.PointText:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.text=e._text,t.args.anchor=e._anchor}(e,t);break;case Ot.Polygon:!function(e,t){t.args.x=e._x,t.args.y=e._y,t.args.radius=e._radius}(e,t),Bm(e,t);break;case Ot.Rect:!function(e,t){t.args.width=e.width,t.args.height=e.height,t.args.top=e.top,t.args.left=e.left}(e,t),Bm(e,t);case Ot.Ring:}return t}(e):(console.warn("unsupported serialization",e.type),{type:e.type})}function jm(e){let t={};return t.type=e.type,t.id=e.id,e._args&&(t.args=e._args),t.domain=e.domain,t.range=e.range,t}function zm(e){let t={};t.element=e._elem.id,t.elementType=e._elem.type,e.attrValues&&(t.attrValues=e.attrValues),t.channel=e._channel,t.attr=e._attribute,t.aggregator=e._aggregator,t.args={},t.args.includeZero=e._includeZero,t.args.flipScale=e._flipScale,t.args.mapping=e._mapping,t.args.rangeExtent=e._preferredRangeExtent,t.args.domain=e._preferredDomain,t.args.scaleType=e._scaleType,t.args.scheme=e._colorScheme,t.scales=e._scales.map((e=>e.id)),t.elemGroups=e._elemGroups.map((e=>e.map((e=>e.id)))),t.elem2scale={};for(let r in e._elem2scale)t.elem2scale[r]=e._elem2scale[r].id;return t.refElements=e._refElements.map((e=>e.id)),"angle"==e.channel&&(t.args.startAngle=e.startAngle),t}function Fm(e,t){if(t.id=e.id,t.type=e.type,e.classId&&(t.classId=e.classId),e._dataScope&&(t.dataScope=Dm(e._dataScope)),t.bounds=e.bounds.toJSON(),e._layout&&(t.layout=function(e){switch(e.type){case U.GRID:return function(e){let t={args:{}};return t.type=e.type,t.args.numCols=e._numCols,t.args.numRows=e._numRows,t.args.start=e._start,t.args.direction=e._direction,t.args.colGap=e._colGap,t.args.rowGap=e._rowGap,t.args.horzCellAlignment=e._cellHorzAlignment,t.args.vertCellAlignment=e._cellVertAlignment,t.left=e._left,t.top=e._top,t.cellBounds=e._cellBounds.map((e=>e.toJSON())),t.group=e.group.id,t.grid=e._grid,t}(e);case U.STACK:return function(e){let t={args:{}};return t.type=e.type,t.args.orientation=e._orientation,t.args.direction=e._direction,t.args.left=e._left,t.args.top=e._top,t.args.horzCellAlignment=e._horzCellAlignment,t.args.vertCellAlignment=e._vertCellAlignment,t.args.gap=e._gap,t.group=e.group.id,t}(e);case U.PACKING:return function(e){let t={args:{}};return t.type=e.type,t.args.x=e._x,t.args.y=e._y,t.args.width=e._width,t.args.height=e._height,t.group=e.group.id,t}(e);case U.FORCE:return function(e){let t={args:{}};return t.type=e.type,t.args.x=e._x,t.args.y=e._y,t.args.iterations=e._iterations,t.args.repulsion=e._repulsion,t.args.attraction=e._attraction,t.args.linkDistance=e._linkDistance,t.group=e.group.id,t}(e);case U.CLUSTER:return function(e){let t={args:{}};return t.type=e.type,t.args.size=e._size,t.args.rootX=e._rootX,t.args.rootY=e._rootY,t}(e);case U.DIRECTED:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t.args.edgeSep=e._edgeSep,t.args.spreadLinks=e._spreadLinks,t.args.direction=e._direction,t}(e);case U.TIDYTREE:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t.args.orientation=e._orientation,t}(e);case U.TREEMAP:return function(e){let t={args:{}};return t.type=e.type,t.args.left=e._left,t.args.top=e._top,t.args.width=e._width,t.args.height=e._height,t}(e);case U.STRATA:return function(e){let t={args:{}};return t.type=e.type,t.args.direction=e._direction,t.args.gap=e._gap,t}(e);default:throw new Error("unknow layout type "+e.type)}}(e._layout)),t.children=[],e.children.length>0)for(let r of e.children)t.children.push(Gm(r));return t.sortBy=e._sortBy,t}function Um(e,r,n,i,s){for(let a of e){let e=a.listener?a.listener:n,o=e.type===Ot.Axis?e.boundsWithoutTitle:e.bounds,l=[[o.left,o.top],[o.right,o.bottom]],u="brushX"===a.event?t.brushX():"brushY"===a.event?t.brushY():t.brush();u.extent(l).on("brush end",(e=>{let t,r;if(e&&e.selection)switch(a.event){case"brushX":t=[e.selection[0],e.selection[1]],r=void 0;break;case"brushY":t=void 0,r=[e.selection[0],e.selection[1]];break;default:t=[e.selection[0][0],e.selection[1][0]],r=[e.selection[0][1],e.selection[1][1]]}else t=void 0,r=void 0;a.mouseEvent={xInterval:t,yInterval:r},n.onChange(q.TRIGGER,a),i._render(n,s)})),r.append("g").attr("class","brush").call(u)}}function Hm(e,t,r,n,i){t.on("mousemove",(s=>{for(let n of e){let[e,i]=A(t.attr("id"),s.clientX,s.clientY),a=M(r,n.element.type,e,i);a?n.isCumulative&&!n.elements.includes(a)?n.elements.push(a):n.elements=[a]:n.elements=[],n.mouseEvent={x:e,y:i},r.onChange(q.TRIGGER,n)}n._render(r,i)}))}function Wm(e,r,n,i,s){for(let r of e)if(r.type===$e.WIDGET){console.log(r.id),document.getElementById(r.id).addEventListener("input",(function(){Ym(r,n,i,s)}))}else r.type===$e.KEYBOARD&&t.select("body").on("keydown",(e=>{e.key===r.key&&Ym(r,n,i,s)}))}function Ym(e,t,r,n){if(Array.isArray(e.callback))for(let i=0;i<e.callback.length;i++)e.callback[i](),r._render(t,n,e.animation[i]);else e.callback(),r._render(t,n,e.animation)}function Xm(e,t,r,n,i){t.on("click",(s=>{for(let n of e){let[e,i]=A(t.attr("id"),s.clientX,s.clientY),a=M(r,n.element.type,e,i);a?n.isCumulative&&!n.elements.includes(a)?n.elements.push(a):n.elements=[a]:n.elements=[],n.mouseEvent={x:e,y:i},r.onChange(q.TRIGGER,n)}n._render(r,i)}))}class qm{constructor(e){this._svgId=e,this._compMap={},this._decoMap={},this._brushCreated=0}render(e,r){let n=r||{};t.select("#"+this._svgId).select("defs").empty()&&t.select("#"+this._svgId).append("defs"),this._render(e,n),this._registerEvents(e,n)}_render(e,t,r){for(let e in this._decoMap)this._decoMap[e].remove(),delete this._decoMap[e];this._removed={};for(let e in this._compMap)this._removed[e]=1;this._renderItem(e,t,r);for(let e in this._removed)this._compMap[e].remove(),delete this._compMap[e]}_registerEvents(e,r){let n=t.select("#"+this._svgId);for(let t in e.interactionTriggers){let i=Object.values(e.interactionTriggers[t]);switch(t){case"click":n.on("click",null),Xm(i,n,e,this,r);break;case"brush":case"brushX":case"brushY":Um(i,n,e,this,r);break;case"hover":Hm(i,n,e,this,r);break;case"input":Wm(i,0,e,this,r)}}}clear(){let e=document.getElementById(this._svgId);for(;e.firstChild;)e.firstChild.remove();this._compMap={},this._decoMap={}}_renderItem(e,r,n){this._configSVG(e);let i=this._compMap[e.id];switch(e.type){case Ot.Scene:!function(e,t){t.style("background",e.fillColor?e.fillColor:"#fff")}(e,t.select("#"+this._svgId));break;case Ot.Circle:!function(e,t){t.attr("cx",e.x),t.attr("cy",e.y),t.attr("r",e.radius)}(e,i);break;case Ot.Rect:!function(e,t){let r=e.bounds;t.attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height)}(e,i);break;case Ot.Path:case Ot.BezierCurve:case Ot.BundledPath:case Ot.Chord:case Ot.Polygon:case Ot.Link:case Ot.Pie:case Ot.Line:case Ot.Area:case Ot.Ring:case Ot.Arc:case Ot.Gridlines:!function(e,t){t.attr("d",e.getSVGPathData()),e.closed||t.style("fill","none"),(e.id.includes("axis")||e.id.includes("gridlines"))&&t.style("shape-rendering","crispEdges"),e.type===Ot.BundledPath&&t.style("mix-blend-mode","multiply")}(e,i);break;case Ot.PointText:!function(e,r){if(r.attr("text-anchor",m(e.anchor[0])).attr("alignment-baseline",m(e.anchor[1])).attr("dominant-baseline",m(e.anchor[1])).attr("x",e.x).attr("y",e.y),e.hasBackground()){let r=t.select("#"+g(e)),n=e.bounds;r.attr("x",n.left-5).attr("y",n.top-5).attr("width",n.width+10).attr("height",n.height+10).attr("rx",5).attr("ry",5).style("fill",e.backgroundColor).style("stroke",e.borderColor).style("strokeWidth",e.borderWidth)}e.textPath?(r.select("textPath").empty()&&r.append("textPath"),r.select("textPath").attr("href","#"+y(e)).attr("startOffset",e.textPathOffset).text(e.text)):r.text(e.text)}(e,i);break;case Ot.Image:!function(e,t){t.attr("href",e.src).attr("x",e.x).attr("y",e.y).attr("width",e.width).attr("height",e.height)}(e,i)}if(function(e,r,n){for(let i in e.styles)if(void 0!==e.styles[i])if(i.indexOf("Color")>0&&e.styles[i].type==Ot.LinearGradient){let t=n.select("defs"),s=e.styles[i];if(t.select("#"+s.id).empty()){let e=t.append("linearGradient").attr("id",s.id);e.attr("x1",s.x1+"%").attr("x2",s.x2+"%").attr("y1",s.y1+"%").attr("y2",s.y2+"%");for(let t of s.stops)e.append("stop").attr("offset",t.offset+"%").style("stop-color",t.color).style("stop-opacity",t.opacity)}r.style(b[i],"url(#"+s.id+")")}else r.style(b[i],e.styles[i]),"visibility"===i&&e.type===Ot.PointText&&e.hasBackground()&&t.select("#"+g(e)).style(b[i],e.styles[i])}(e,i,t.select("#"+this._svgId)),e._rotate&&i.attr("transform","rotate("+e._rotate.join(" ")+")"),n&&(i=i.transition().delay(n.delay?n.delay:0).duration(n.duration?n.duration:0)),e.vertices&&this._renderVertices(e),[Ot.Circle].includes(e.type)&&r&&r.bounds?this._renderBounds(e):E(e)&&r&&r.refBounds&&this._renderRefBounds(e),e.children)for(let t of e.children)this._renderItem(t,r,n)}_configSVG(e){let r,n=e.parent;if(r=n&&n.id&&n.id in this._compMap?t.select("#"+this._svgId).select("#"+n.id):t.select("#"+this._svgId),e.id in this._compMap)delete this._removed[e.id],e.type===Ot.PointText&&(e.hasBackground()&&delete this._removed[g(e)],e.textPath&&delete this._removed[y(e)]);else{if(e.type===Ot.PointText&&(e.hasBackground()&&(this._compMap[g(e)]=r.append("rect").attr("id",g(e))),e.textPath)){let r=t.select("#"+this._svgId).select("defs"),n=y(e);r.select("#"+n).empty()&&(this._compMap[n]=r.append("path").attr("id",n)),this._compMap[n].attr("d",e.textPath).style("fill","none")}this._compMap[e.id]=r.append(this._getSVGElementType(e))}e.type==Ot.Gridlines&&this._compMap[e.id].lower(),this._compMap[e.id].attr("id",e.id),e.classId&&this._compMap[e.id].attr("class",e.classId)}_renderBounds(e){let r=e.bounds;e.layout&&"grid"==e.layout.type&&this._renderLayout(e),e.id in this._decoMap||(this._decoMap[e.id]=t.select("#"+this._svgId).append("rect").attr("class","deco")),this._decoMap[e.id].attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height).attr("fill","none").attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5")}_renderRefBounds(e){let r=e.refBounds;r&&(e.id in this._decoMap||(this._decoMap[e.id]=t.select("#"+this._svgId).append("rect").attr("class","deco")),this._decoMap[e.id].attr("x",r.left).attr("y",r.top).attr("width",r.width).attr("height",r.height).attr("fill","none").attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5"))}_renderVertices(e){let r=e.id+"-vertices";if(r in this._compMap)delete this._removed[r];else{let n=e.parent,i=n?n.id:this._svgId;this._compMap[r]=t.select("#"+i).append("g").attr("id",r)}if(0===e.vertices.map((e=>e.shape)).filter((e=>void 0!==e)).length)return void this._compMap[r].style("visible","hidden");this._compMap[r].style("visible","visible");let n=e.vertices.filter((e=>void 0!==e.shape));for(let e of n){let n=r+"-"+e.id;n in this._compMap?e.shape!==this._compMap[n].node().tagName?(this._compMap[n].remove(),this._compMap[n]=t.select("#"+r).append(e.shape).attr("id",n),delete this._removed[n]):delete this._removed[n]:this._compMap[n]=t.select("#"+r).append(e.shape).attr("id",n),"rect"==e.shape?t.select("#"+n).attr("x",e.x-e.width/2).attr("y",e.y-e.height/2).attr("width",e.width).attr("height",e.height):"circle"==e.shape&&t.select("#"+n).attr("cx",e.x).attr("cy",e.y).attr("r",e.radius),t.select("#"+n).style("fill",e.fillColor).style("opacity",e.opacity).style("stroke-width",e.strokeWidth).style("stroke",e.strokeColor)}}_renderLayout(e){let r=e.id+"-grid";r in this._decoMap||(this._decoMap[r]=t.select("#"+this._svgId).append("g").attr("id",r).attr("class","deco"));let n=e.layout.cellBounds;e.layout.rowGap,this._decoMap[r].selectAll("rect").remove();for(let e of n)this._decoMap[r].append("rect").attr("x",e.left).attr("y",e.top).attr("width",e.width).attr("height",e.height).attr("stroke","blue").attr("stroke-width","1px").attr("stroke-dasharray","5,5").attr("fill","none")}_getSVGElementType(e){switch(e.type){case Ot.Rect:return"rect";case Ot.Collection:case Ot.Group:case Ot.Glyph:case Ot.Scene:case Ot.Axis:case Ot.Legend:case Ot.Composite:return"g";case Ot.Area:case Ot.Path:case Ot.Polygon:case Ot.Ring:case Ot.Pie:case Ot.Arc:case Ot.BezierCurve:case Ot.BundledPath:case Ot.Chord:case Ot.Line:case Ot.Gridlines:return"path";case Ot.Circle:return"circle";case Ot.PointText:return"text";case"vertex":if("circle"==e.shape)return"circle";if("rect"==e.shape)return"rect";throw"argument exception";case"image":return"image"}}}function Km(e,t){return void 0===e&&void 0===t||void 0!==e&&void 0!==t}function Zm(e,t){const r=Object.keys(e),n=Object.keys(t);return r.length===n.length&&(0===r.length||r.every((e=>n.includes(e))))}function $m(e,t){if(!Km(e.layout,t.layout))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let r=e.layout,n=t.layout;if(!r&&!n)return!0;if(r.type!==n.type)return console.log("layout types are different:",r,n),!1;switch(r.type){case U.GRID:return function(e,t){e._cellBounds.length!==t._cellBounds.length&&console.log("cell bounds length different:",e,t);for(let r=0;r<e._cellBounds;r++)if(!Qm(e._cellBounds[r],t._cellBounds[r]))return console.log("cell bounds not equal:",e,t),!1;for(let r=0;r<e._grid.length;r++)for(let n=0;n<e._grid[r].length;n++)if(e._grid[r][n]!==t._grid[r][n])return console.log("grid not equal",e,t),!1;return e._numCols===t._numCols&&e._numRows===t._numRows&&e._start===t._start&&e._direction===t._direction&&e._rowGap===t._rowGap&&e._colGap===t._colGap&&e._cellHorzAlignment===t._cellHorzAlignment&&e._cellVertAlignment===t._cellVertAlignment&&e._left===t._left&&e._top===t._top}(r,n);case U.STACK:return function(e,t){return e._orientation===t._orientation&&e._direction===t._direction&&e._left===t._left&&e._top===t._top&&e._horzCellAlignment===t._horzCellAlignment&&e._vertCellAlignment===t._vertCellAlignment&&e._gap===t._gap}(r,n);case U.PACKING:return function(e,t){return e._x===t._x&&e._y===t._y&&e._width===t._width&&e._height===t._height}(r,n);case U.FORCE:return function(e,t){return e._x===t._x&&e._y===t._y&&e._iterations===t._iterations&&e._repulsion===t._repulsion&&e._attraction===t._attraction&&e._linkDistance===t._linkDistance}(r,n);case U.DIRECTED:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left&&e._edgeSep===t._edgeSep&&e._spreadLinks===t._spreadLinks&&e._direction===t._direction}(r,n);case U.TIDYTREE:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left&&e._orientation===t._orientation}(r,n);case U.STRATA:return function(e,t){return e._direction===t._direction&&e._gap===t._gap}(r,n);case U.TREEMAP:return function(e,t){return e._width===t._width&&e._height===t._height&&e._top===t._top&&e._left===t._left}(r,n);default:return!1}}function Jm(e,t){if(!Km(e.bounds,t.bounds))return console.log("Not both defined or undefined:",e.bounds,t.bounds),!1;let r=e.bounds,n=t.bounds;return!r&&!n||Qm(r,n)}function Qm(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function eb(e,t){if(!Km(e,t))return console.log("Not both defined or undefined:",e,t),!1;if(e.type!==t.type)return console.log("Different mark types:",e,t),!1;if(e.id!==t.id)return console.log("id not equal:",e,t),!1;if(e.classId!==t.classId)return console.log("class id not equal:",e,t),!1;if(!rb(e,t))return console.log("DataScopes not equal",e,t),!1;if(!Jm(e,t))return console.log("Bounds not equal",e,t),!1;if(!Km(e.links,t.links))return console.log("Not both defined or undefined: links ",e.links,t.links),!1;if(!Km(e.source,t.source))return console.log("Not both defined or undefined: source ",e.source,t.source),!1;if(!Km(e.target,t.target))return console.log("Not both defined or undefined: links ",e.target,t.target),!1;if(e.links&&t.links&&e.links.length!==t.links.length)return console.log("unequal number of links",e,t),!1;if(e.source&&t.source&&!eb(e.source,t.source))return console.log("different sources",e.source,t.source),!1;if(e.target&&t.target&&!eb(e.target,t.target))return console.log("different targets",e.target,t.target),!1;switch(e.type){case Ot.Arc:case Ot.Pie:return tb(e,t)?e.x===t.x&&e.y===t.y&&e.innerRadius===t.innerRadius&&e.outerRadius===t.outerRadius&&e.startAngle===t.startAngle&&e.endAngle===t.endAngle&&e.direction===t.direction&&e.thickness===t.thickness:(console.log("vertices not equal:",e,t),!1);case Ot.Area:return tb(e,t)?e.baseline===t.baseline&&e.orientation===t.orientation:(console.log("vertices not equal:",e,t),!1);case Ot.Circle:return e.x===t.x&&e.y===t.y&&e.radius===t.radius;case Ot.Image:return console.warn("not implemented"),!0;case Ot.Line:case Ot.Path:case Ot.BezierCurve:return!!tb(e,t)||(console.log("vertices not equal:",e,t),!1);case Ot.PointText:return e.x===t.x&&e.y===t.y&&e.text===t.text&&e.anchor[0]===t.anchor[0]&&e.anchor[1]===t.anchor[1];case Ot.Polygon:return tb(e,t)?e.x===t.x&&e.y===t.y&&e.radius===t.radius:(console.log("vertices not equal:",e,t),!1);case Ot.Rect:return tb(e,t)?e.width===t.width&&e.height===t.height&&e.top===t.top&&e.left===t.left:(console.log("vertices not equal:",e,t),!1);case Ot.Ring:default:return console.warn("not implemented"),!0}}function tb(e,t){if(e.vertices.length!==t.vertices.length)return console.log("unequal number of vertices:",e,t),!1;for(let r=0;r<e.vertices.length;r++){let n=e.vertices[r],i=t.vertices[r];return n.id!==i.id?(console.log("vertex id not equal:",n,i),!1):n.x!==i.x||n.y!==i.y?(console.log("vertex position not equal:",n,i),!1):rb(n,i)?n._polarAngle===i._polarAngle&&n.shape===i.shape&&n.width===i.width&&n.height==i.height&&n.radius==i.radius&&n.fillColor==i.fillColor&&n.opacity==i.opacity&&n.strokeWidth==i.strokeWidth&&n.strokeColor==i.strokeColor:(console.log("vertex data scopes not equal:",n.dataScope,i.dataScope),!1)}}function rb(e,t){if(!Km(e.dataScope,t.dataScope))return console.log("Not both defined or undefined:",e.dataScope,t.dataScope),!1;if(!e.dataScope&&!t.dataScope)return!0;let r=e.dataScope,n=t.dataScope;if(!Zm(r._attr2value,n._attr2value))return!1;for(let e in r._attr2value)if(r._attr2value[e]!==n._attr2value[e])return!1;return r._dt.id===n._dt.id&&r._tuples.length===n._tuples.length}function nb(e,t){return e.type!==t.type&&console.log("Different types:",e.type,t.type),[Ot.Collection,Ot.Glyph,Ot.Composite].includes(e.type)?ib(e,t):e instanceof x?eb(e,t):void 0}function ib(e,t){let r=e.children.filter((e=>!Object.values(It).includes(e.type))),n=t.children.filter((e=>!Object.values(It).includes(e.type)));if(r.length!==n.length)return console.log("children length not equal:",r,n),!1;if(e.id!==t.id)return console.log("id not equal:",e,t),!1;if(e.classId!==t.classId)return console.log("class id not equal:",e,t),!1;if(!rb(e,t))return console.log("DataScopes not equal",e.dataScope,t.dataScope),!1;if(!Jm(e,t))return console.log("Bounds not equal",e,t),!1;if(!$m(e,t))return console.log("Layouts not equal",e,t),!1;if(!function(e,t){if(!Zm(e,t))return console.log("different keys",e,t),!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}(e._sortBy,t._sortBy))return console.log("SortBy not equal",e,t),!1;for(let e=0;e<r.length;e++)if(!nb(r[e],n[e]))return console.log("Not equal",r[e],n[e]),!1;return!0}class sb extends F{constructor(e){super(),this.type=U.CIRCULAR,this._x="x"in e?e.x:100,this._y="y"in e?e.y:100,this._radius="radius"in e?e.radius:100}get x(){return this._x}get y(){return this._y}get radius(){return this._radius}clone(){return new sb({x:this._x,y:this._y,radius:this._radius})}}class ab extends F{constructor(e){super(),this.type=U.CLUSTER,this._isRadial="radial"in e&&e.radial,this._angleExtent="angleExtent"in e?e.angleExtent:360,this._radius="radius"in e?e.radius:300,this._rootX="x"in e?e.x:300,this._rootY="y"in e?e.y:300,this._orientation="orientation"in e?e.orientation:J.HORIZONTAL,this._width="width"in e?e.width:800,this._height="height"in e?e.height:600,this._left="left"in e?e.left:60,this._top="top"in e?e.top:100,this._tree="tree"in e?e.tree:void 0}get radius(){return this._radius}get angleExtent(){return this._angleExtent}get x(){return this._rootX}get y(){return this._rootY}get width(){return this._width}get height(){return this._height}get left(){return this._left}get top(){return this._top}isRadial(){return this._isRadial}get orientation(){return this._orientation}clone(){return new ab({radius:this._radius,angleExtent:this._angleExtent,x:this._rootX,y:this._rootY,radial:this._isRadial,orientation:this._orientation,left:this._left,top:this._top,width:this._width,height:this._height,tree:this._tree})}}exports.csv=async function(e){return async function(e){let r=await Dt("GET",e),n=t.csvParse(r.trim(),t.autoType);return new Lt(n,e)}(e)},exports.deserialize=function(e){return Tm(e)},exports.graphJSON=async function(e){return async function(e){let t=await Dt("GET",e);return new be(JSON.parse(t),e)}(e)},exports.isEqual=function(e,t){return function(e,t){return e.fillColor!==t.fillColor?(console.log("fillColor not equal:",e,t),!1):ib(e,t)}(e,t)},exports.layout=function(e,t){let r=t||{};switch(e.toLowerCase()){case U.STACK:return new Zy(r);case U.PACKING:return new Em(r);case U.FORCE:return new xm(r);case U.DIRECTED:return new vm(r);case U.TIDYTREE:return new wm(r);case U.TREEMAP:return new Am(r);case U.CIRCULAR:return new sb(r);case U.CLUSTER:return new ab(r);case U.GRID:default:return new nm(r)}},exports.renderer=function(e,t){return new qm(t)},exports.scene=function(e){return new mm(e)},exports.serialize=function(e){return Gm(e)},exports.treeJSON=async function(e){return async function(e){let t=await Dt("GET",e);return new ye(JSON.parse(t),e)}(e)};