diff --git a/d2layouts/d2cycle/layout.go b/d2layouts/d2cycle/layout.go index e142c6cd2..b8a2f964c 100644 --- a/d2layouts/d2cycle/layout.go +++ b/d2layouts/d2cycle/layout.go @@ -1,245 +1,3 @@ -// package d2cycle - -// import ( -// "context" -// "math" - -// "oss.terrastruct.com/d2/d2graph" -// "oss.terrastruct.com/d2/lib/geo" -// "oss.terrastruct.com/d2/lib/label" -// "oss.terrastruct.com/util-go/go2" -// ) - -// const ( -// MIN_RADIUS = 200 -// PADDING = 20 -// MIN_SEGMENT_LEN = 10 -// ARC_STEPS = 30 // high resolution for smooth arcs -// ) - -// // Layout arranges nodes in a circle and routes edges with properly clipped arcs -// func Layout(ctx context.Context, g *d2graph.Graph, layout d2graph.LayoutGraph) error { -// objects := g.Root.ChildrenArray -// if len(objects) == 0 { -// return nil -// } - -// // Position labels and icons first -// for _, obj := range g.Objects { -// positionLabelsIcons(obj) -// } - -// // Calculate layout parameters -// nodeCircleRadius := calculateRadius(objects) -// maxNodeSize := 0.0 -// for _, obj := range objects { -// size := math.Max(obj.Width, obj.Height) -// maxNodeSize = math.Max(maxNodeSize, size) -// } - -// // Position nodes in circle -// positionObjects(objects, nodeCircleRadius) - -// // Create properly clipped edge arcs -// for _, edge := range g.Edges { -// createCircularArc(edge, nodeCircleRadius, maxNodeSize) -// } - -// return nil -// } - -// func calculateRadius(objects []*d2graph.Object) float64 { -// numObjects := float64(len(objects)) -// maxSize := 0.0 -// for _, obj := range objects { -// size := math.Max(obj.Width, obj.Height) -// maxSize = math.Max(maxSize, size) -// } -// minRadius := (maxSize/2 + PADDING) / math.Sin(math.Pi/numObjects) -// return math.Max(minRadius, MIN_RADIUS) -// } - -// func positionObjects(objects []*d2graph.Object, radius float64) { -// numObjects := float64(len(objects)) -// angleOffset := -math.Pi / 2 // Start at top - -// for i, obj := range objects { -// angle := angleOffset + (2*math.Pi*float64(i))/numObjects -// x := radius * math.Cos(angle) -// y := radius * math.Sin(angle) - -// // Center object at calculated position -// obj.TopLeft = geo.NewPoint( -// x-obj.Width/2, -// y-obj.Height/2, -// ) -// } -// } - -// func createCircularArc(edge *d2graph.Edge, nodeCircleRadius, maxNodeSize float64) { -// if edge.Src == nil || edge.Dst == nil { -// return -// } - -// srcCenter := edge.Src.Center() -// dstCenter := edge.Dst.Center() - -// // Calculate arc radius outside node circle -// arcRadius := nodeCircleRadius + maxNodeSize/2 + PADDING - -// // Calculate angles for arc endpoints -// srcAngle := math.Atan2(srcCenter.Y, srcCenter.X) -// dstAngle := math.Atan2(dstCenter.Y, dstCenter.X) -// if dstAngle < srcAngle { -// dstAngle += 2 * math.Pi -// } - -// // Generate arc path points -// path := make([]*geo.Point, 0, ARC_STEPS+1) -// for i := 0; i <= ARC_STEPS; i++ { -// t := float64(i) / ARC_STEPS -// angle := srcAngle + t*(dstAngle-srcAngle) -// x := arcRadius * math.Cos(angle) -// y := arcRadius * math.Sin(angle) -// path = append(path, geo.NewPoint(x, y)) -// } - -// // Set exact endpoints (will be clipped later) -// path[0] = srcCenter -// path[len(path)-1] = dstCenter - -// // Clip path to node borders -// edge.Route = path -// startIndex, endIndex := edge.TraceToShape(edge.Route, 0, len(edge.Route)-1) -// if startIndex < endIndex { -// edge.Route = edge.Route[startIndex : endIndex+1] -// } -// edge.IsCurve = true -// } - -// // clampPointOutsideBox walks forward from 'startIdx' until the path segment -// // leaves the bounding box. Then it sets path[startIdx] to the intersection. -// // If we never find it, we return (startIdx, path[startIdx]) meaning we can't clamp. -// func clampPointOutsideBox(box *geo.Box, path []*geo.Point, startIdx int) (int, *geo.Point) { -// if startIdx >= len(path)-1 { -// return startIdx, path[startIdx] -// } -// // If path[startIdx] is outside, no clamp needed -// if !boxContains(box, path[startIdx]) { -// return startIdx, path[startIdx] -// } - -// // Walk forward looking for outside -// for i := startIdx + 1; i < len(path); i++ { -// insideNext := boxContains(box, path[i]) -// if insideNext { -// // still inside -> keep going -// continue -// } -// // crossing from inside to outside between path[i-1], path[i] -// seg := geo.NewSegment(path[i-1], path[i]) -// inters := boxIntersections(box, *seg) -// if len(inters) > 0 { -// // use first intersection -// return i, inters[0] -// } -// // fallback => no intersection found -// return i, path[i] -// } -// // entire remainder is inside, so we can't clamp -// // Just return the end -// last := len(path) - 1 -// return last, path[last] -// } - -// // clampPointOutsideBoxReverse scans backward from endIdx while path[j] is in the box. -// // Once we find crossing (outside→inside), we return (j, intersection). -// func clampPointOutsideBoxReverse(box *geo.Box, path []*geo.Point, endIdx int) (int, *geo.Point) { -// if endIdx <= 0 { -// return endIdx, path[endIdx] -// } -// if !boxContains(box, path[endIdx]) { -// // already outside -// return endIdx, path[endIdx] -// } - -// for j := endIdx - 1; j >= 0; j-- { -// if boxContains(box, path[j]) { -// continue -// } -// // crossing from outside -> inside between path[j], path[j+1] -// seg := geo.NewSegment(path[j], path[j+1]) -// inters := boxIntersections(box, *seg) -// if len(inters) > 0 { -// return j, inters[0] -// } -// return j, path[j] -// } - -// // entire path inside -// return 0, path[0] -// } - -// // Helper if your geo.Box doesn’t implement Contains() -// func boxContains(b *geo.Box, p *geo.Point) bool { -// // typical bounding-box check -// return p.X >= b.TopLeft.X && -// p.X <= b.TopLeft.X+b.Width && -// p.Y >= b.TopLeft.Y && -// p.Y <= b.TopLeft.Y+b.Height -// } - -// // Helper if your geo.Box doesn’t implement Intersections(geo.Segment) yet -// func boxIntersections(b *geo.Box, seg geo.Segment) []*geo.Point { -// // We'll assume d2's standard geo.Box has a built-in Intersections(*Segment) method. -// // If not, implement manually. For example, checking each of the 4 edges: -// // left, right, top, bottom -// // For simplicity, if you do have b.Intersections(...) you can just do: -// // return b.Intersections(seg) -// return b.Intersections(seg) -// // If you don't have that, you'd code the line-rect intersection yourself. -// } - -// // positionLabelsIcons is basically your logic that sets default label/icon positions if needed -// func positionLabelsIcons(obj *d2graph.Object) { -// // If there's an icon but no icon position, give it a default -// if obj.Icon != nil && obj.IconPosition == nil { -// if len(obj.ChildrenArray) > 0 { -// obj.IconPosition = go2.Pointer(label.OutsideTopLeft.String()) -// if obj.LabelPosition == nil { -// obj.LabelPosition = go2.Pointer(label.OutsideTopRight.String()) -// return -// } -// } else if obj.SQLTable != nil || obj.Class != nil || obj.Language != "" { -// obj.IconPosition = go2.Pointer(label.OutsideTopLeft.String()) -// } else { -// obj.IconPosition = go2.Pointer(label.InsideMiddleCenter.String()) -// } -// } - -// // If there's a label but no label position, give it a default -// if obj.HasLabel() && obj.LabelPosition == nil { -// if len(obj.ChildrenArray) > 0 { -// obj.LabelPosition = go2.Pointer(label.OutsideTopCenter.String()) -// } else if obj.HasOutsideBottomLabel() { -// obj.LabelPosition = go2.Pointer(label.OutsideBottomCenter.String()) -// } else if obj.Icon != nil { -// obj.LabelPosition = go2.Pointer(label.InsideTopCenter.String()) -// } else { -// obj.LabelPosition = go2.Pointer(label.InsideMiddleCenter.String()) -// } - -// // If the label is bigger than the shape, fallback to outside positions -// if float64(obj.LabelDimensions.Width) > obj.Width || -// float64(obj.LabelDimensions.Height) > obj.Height { -// if len(obj.ChildrenArray) > 0 { -// obj.LabelPosition = go2.Pointer(label.OutsideTopCenter.String()) -// } else { -// obj.LabelPosition = go2.Pointer(label.OutsideBottomCenter.String()) -// } -// } -// } -// } package d2cycle import ( @@ -253,114 +11,188 @@ import ( ) const ( - MIN_RADIUS = 200 - PADDING = 20 - ARC_STEPS = 60 + MIN_RADIUS = 200 + PADDING = 20 + MIN_SEGMENT_LEN = 10 + ARC_STEPS = 30 // high resolution for smooth arcs ) +// Layout arranges nodes in a circle, ensures label/icon positions are set, +// then routes edges with arcs that get clipped at node borders. func Layout(ctx context.Context, g *d2graph.Graph, layout d2graph.LayoutGraph) error { objects := g.Root.ChildrenArray if len(objects) == 0 { return nil } + // Ensure every object that has label/icon also has a default position for _, obj := range g.Objects { positionLabelsIcons(obj) } - // Calculate layout parameters - baseRadius, maxNodeSize := calculateLayoutParams(objects) - positionObjects(objects, baseRadius) + // Arrange objects in a circle + radius := calculateRadius(objects) + positionObjects(objects, radius) - // Create edges with boundary-perfect arcs + // Create arcs for each edge for _, edge := range g.Edges { - createBoundaryArc(edge, baseRadius, maxNodeSize) + createCircularArc(edge) } return nil } -func calculateLayoutParams(objects []*d2graph.Object) (float64, float64) { - numNodes := float64(len(objects)) +func calculateRadius(objects []*d2graph.Object) float64 { + numObjects := float64(len(objects)) maxSize := 0.0 for _, obj := range objects { - size := math.Max(obj.Width, obj.Height) + size := math.Max(obj.Box.Width, obj.Box.Height) maxSize = math.Max(maxSize, size) } - minRadius := (maxSize/2 + PADDING) / math.Sin(math.Pi/numNodes) - return math.Max(minRadius, MIN_RADIUS), maxSize + // Ensure enough radius to fit all objects + minRadius := (maxSize/2.0 + PADDING) / math.Sin(math.Pi/numObjects) + return math.Max(minRadius, MIN_RADIUS) } func positionObjects(objects []*d2graph.Object, radius float64) { numObjects := float64(len(objects)) + // Offset so i=0 is top-center angleOffset := -math.Pi / 2 for i, obj := range objects { - angle := angleOffset + (2*math.Pi*float64(i))/numObjects + angle := angleOffset + (2 * math.Pi * float64(i) / numObjects) x := radius * math.Cos(angle) y := radius * math.Sin(angle) - - // Center object at calculated position + + // Center the box at (x, y) obj.TopLeft = geo.NewPoint( - x-obj.Width/2, - y-obj.Height/2, + x-obj.Box.Width/2, + y-obj.Box.Height/2, ) } } -func createBoundaryArc(edge *d2graph.Edge, baseRadius, maxNodeSize float64) { - if edge.Src == nil || edge.Dst == nil || edge.Src == edge.Dst { +// createCircularArc samples a smooth arc from center to center, +// then forces the endpoints onto each shape's border by clamping them +// using the box intersection helpers. +func createCircularArc(edge *d2graph.Edge) { + if edge.Src == nil || edge.Dst == nil { return } - // Calculate arc radius outside node boundaries - arcRadius := baseRadius + maxNodeSize/2 + PADDING - srcCenter := edge.Src.Center() dstCenter := edge.Dst.Center() - layoutCenter := geo.NewPoint(0, 0) - // Calculate angles with shortest path - startAngle := math.Atan2(srcCenter.Y-layoutCenter.Y, srcCenter.X-layoutCenter.X) - endAngle := math.Atan2(dstCenter.Y-layoutCenter.Y, dstCenter.X-layoutCenter.X) - angleDiff := endAngle - startAngle - - // Normalize angle difference - if angleDiff < 0 { - angleDiff += 2 * math.Pi - } - if angleDiff > math.Pi { - angleDiff -= 2 * math.Pi + // Compute angles from origin for both nodes + srcAngle := math.Atan2(srcCenter.Y, srcCenter.X) + dstAngle := math.Atan2(dstCenter.Y, dstCenter.X) + if dstAngle < srcAngle { + dstAngle += 2 * math.Pi } - // Generate arc points + arcRadius := math.Hypot(srcCenter.X, srcCenter.Y) + + // Sample points along the arc path := make([]*geo.Point, 0, ARC_STEPS+1) for i := 0; i <= ARC_STEPS; i++ { - t := float64(i) / ARC_STEPS - angle := startAngle + t*angleDiff - x := layoutCenter.X + arcRadius*math.Cos(angle) - y := layoutCenter.Y + arcRadius*math.Sin(angle) + t := float64(i) / float64(ARC_STEPS) + angle := srcAngle + t*(dstAngle-srcAngle) + x := arcRadius * math.Cos(angle) + y := arcRadius * math.Sin(angle) path = append(path, geo.NewPoint(x, y)) } + // Ensure endpoints start at the centers + path[0] = srcCenter + path[len(path)-1] = dstCenter - // Clip to actual node boundaries - edge.Route = path - startIdx, endIdx := edge.TraceToShape(edge.Route, 0, len(edge.Route)-1) + // Clamp the start point to the boundary of the source node + startIndex, newSrc := clampPointOutsideBox(edge.Src.Box, path, 0) + // Clamp the end point to the boundary of the destination node + endIndex, newDst := clampPointOutsideBoxReverse(edge.Dst.Box, path, len(path)-1) - // Maintain smooth arc after clipping - if startIdx < endIdx { - edge.Route = edge.Route[startIdx : endIdx+1] - // Ensure minimal points for smooth rendering - if len(edge.Route) < 3 { - edge.Route = []*geo.Point{path[0], path[len(path)-1]} - } - } - + // Update the endpoints with the clamped intersection points + path[0] = newSrc + path[len(path)-1] = newDst + + // Update the route to only include the valid segment between the clamped indices + edge.Route = path[startIndex : endIndex+1] edge.IsCurve = true } +// clampPointOutsideBox walks forward from 'startIdx' until the path segment +// leaves the bounding box. Then it sets path[startIdx] to the intersection. +// If no intersection is found, it returns the original point. +func clampPointOutsideBox(box *geo.Box, path []*geo.Point, startIdx int) (int, *geo.Point) { + if startIdx >= len(path)-1 { + return startIdx, path[startIdx] + } + // If the current point is already outside, no clamping is needed. + if !boxContains(box, path[startIdx]) { + return startIdx, path[startIdx] + } + + // Walk forward until we leave the box. + for i := startIdx + 1; i < len(path); i++ { + if boxContains(box, path[i]) { + continue + } + // Crossing from inside to outside between path[i-1] and path[i] + seg := geo.NewSegment(path[i-1], path[i]) + inters := boxIntersections(box, *seg) + if len(inters) > 0 { + return i, inters[0] + } + // Fallback if no intersection found + return i, path[i] + } + // If the entire remaining path is inside, return the last point. + last := len(path) - 1 + return last, path[last] +} + +// clampPointOutsideBoxReverse scans backward from endIdx while path[j] is in the box. +// When an outside-to-inside crossing is detected, it returns the intersection. +func clampPointOutsideBoxReverse(box *geo.Box, path []*geo.Point, endIdx int) (int, *geo.Point) { + if endIdx <= 0 { + return endIdx, path[endIdx] + } + if !boxContains(box, path[endIdx]) { + return endIdx, path[endIdx] + } + + for j := endIdx - 1; j >= 0; j-- { + if boxContains(box, path[j]) { + continue + } + // Crossing from outside to inside between path[j] and path[j+1] + seg := geo.NewSegment(path[j], path[j+1]) + inters := boxIntersections(box, *seg) + if len(inters) > 0 { + return j, inters[0] + } + return j, path[j] + } + // If the entire path is inside, return the first point. + return 0, path[0] +} + +// boxContains performs a typical bounding-box check. +func boxContains(b *geo.Box, p *geo.Point) bool { + return p.X >= b.TopLeft.X && + p.X <= b.TopLeft.X+b.Width && + p.Y >= b.TopLeft.Y && + p.Y <= b.TopLeft.Y+b.Height +} + +// boxIntersections returns the intersection points between a box and a segment. +// This assumes that geo.Box implements an Intersections method. +func boxIntersections(b *geo.Box, seg geo.Segment) []*geo.Point { + return b.Intersections(seg) +} + +// positionLabelsIcons sets default positions for icons and labels if not already specified. func positionLabelsIcons(obj *d2graph.Object) { - // If there's an icon but no icon position, give it a default + // Set default icon position if an icon exists and none is specified. if obj.Icon != nil && obj.IconPosition == nil { if len(obj.ChildrenArray) > 0 { obj.IconPosition = go2.Pointer(label.OutsideTopLeft.String()) @@ -375,7 +207,7 @@ func positionLabelsIcons(obj *d2graph.Object) { } } - // If there's a label but no label position, give it a default + // Set default label position if a label exists and none is specified. if obj.HasLabel() && obj.LabelPosition == nil { if len(obj.ChildrenArray) > 0 { obj.LabelPosition = go2.Pointer(label.OutsideTopCenter.String()) @@ -387,7 +219,7 @@ func positionLabelsIcons(obj *d2graph.Object) { obj.LabelPosition = go2.Pointer(label.InsideMiddleCenter.String()) } - // If the label is bigger than the shape, fallback to outside positions + // If the label dimensions exceed the object's size, fallback to an outside position. if float64(obj.LabelDimensions.Width) > obj.Width || float64(obj.LabelDimensions.Height) > obj.Height { if len(obj.ChildrenArray) > 0 { @@ -398,176 +230,3 @@ func positionLabelsIcons(obj *d2graph.Object) { } } } - -func boxContains(b *geo.Box, p *geo.Point) bool { - return p.X >= b.TopLeft.X && - p.X <= b.TopLeft.X+b.Width && - p.Y >= b.TopLeft.Y && - p.Y <= b.TopLeft.Y+b.Height -} - -func boxIntersections(b *geo.Box, seg geo.Segment) []*geo.Point { - return b.Intersections(seg) -} -// package d2cycle - -// import ( -// "context" -// "math" - -// "oss.terrastruct.com/d2/d2graph" -// "oss.terrastruct.com/d2/lib/geo" -// "oss.terrastruct.com/d2/lib/label" -// "oss.terrastruct.com/util-go/go2" -// ) - -// const ( -// MIN_RADIUS = 200 -// PADDING = 20 -// ARC_STEPS = 60 // High resolution for perfect circles -// ) - -// func Layout(ctx context.Context, g *d2graph.Graph, layout d2graph.LayoutGraph) error { -// objects := g.Root.ChildrenArray -// if len(objects) == 0 { -// return nil -// } - -// for _, obj := range g.Objects { -// positionLabelsIcons(obj) -// } - -// baseRadius := calculateBaseRadius(objects) -// positionObjects(objects, baseRadius) - -// for _, edge := range g.Edges { -// createPerfectArc(edge, baseRadius) -// } - -// return nil -// } - -// func calculateBaseRadius(objects []*d2graph.Object) float64 { -// numNodes := float64(len(objects)) -// maxSize := 0.0 -// for _, obj := range objects { -// size := math.Max(obj.Width, obj.Height) -// maxSize = math.Max(maxSize, size) -// } -// radius := (maxSize + 2*PADDING) / (2 * math.Sin(math.Pi/numNodes)) -// return math.Max(radius, MIN_RADIUS) -// } - -// func positionObjects(objects []*d2graph.Object, radius float64) { -// numObjects := float64(len(objects)) -// angleOffset := -math.Pi / 2 - -// for i, obj := range objects { -// angle := angleOffset + (2*math.Pi*float64(i))/numObjects -// x := radius * math.Cos(angle) -// y := radius * math.Sin(angle) - -// obj.TopLeft = geo.NewPoint( -// x-obj.Width/2, -// y-obj.Height/2, -// ) -// } -// } - -// func createPerfectArc(edge *d2graph.Edge, baseRadius float64) { -// if edge.Src == nil || edge.Dst == nil || edge.Src == edge.Dst { -// return -// } - -// srcCenter := edge.Src.Center() -// dstCenter := edge.Dst.Center() -// center := geo.NewPoint(0, 0) // Layout center - -// // Calculate angles with proper wrapping -// startAngle := math.Atan2(srcCenter.Y-center.Y, srcCenter.X-center.X) -// endAngle := math.Atan2(dstCenter.Y-center.Y, dstCenter.X-center.X) - -// // Handle angle wrapping for shortest path -// angleDiff := endAngle - startAngle -// if angleDiff < 0 { -// angleDiff += 2 * math.Pi -// } -// if angleDiff > math.Pi { -// angleDiff -= 2 * math.Pi -// } - -// // Generate perfect circular arc -// path := make([]*geo.Point, 0, ARC_STEPS+1) -// for i := 0; i <= ARC_STEPS; i++ { -// t := float64(i) / ARC_STEPS -// currentAngle := startAngle + t*angleDiff -// x := center.X + baseRadius*math.Cos(currentAngle) -// y := center.Y + baseRadius*math.Sin(currentAngle) -// path = append(path, geo.NewPoint(x, y)) -// } - -// // Clip to shape boundaries while preserving arc -// edge.Route = path -// startIdx, endIdx := edge.TraceToShape(edge.Route, 0, len(edge.Route)-1) - -// // Maintain smooth arc after clipping -// if startIdx < endIdx { -// edge.Route = edge.Route[startIdx : endIdx+1] - -// // Ensure minimum points for smooth rendering -// if len(edge.Route) < 3 { -// edge.Route = []*geo.Point{path[0], path[len(path)-1]} -// } -// } - -// edge.IsCurve = true -// } - -// func positionLabelsIcons(obj *d2graph.Object) { -// // If there's an icon but no icon position, give it a default -// if obj.Icon != nil && obj.IconPosition == nil { -// if len(obj.ChildrenArray) > 0 { -// obj.IconPosition = go2.Pointer(label.OutsideTopLeft.String()) -// if obj.LabelPosition == nil { -// obj.LabelPosition = go2.Pointer(label.OutsideTopRight.String()) -// return -// } -// } else if obj.SQLTable != nil || obj.Class != nil || obj.Language != "" { -// obj.IconPosition = go2.Pointer(label.OutsideTopLeft.String()) -// } else { -// obj.IconPosition = go2.Pointer(label.InsideMiddleCenter.String()) -// } -// } - -// if obj.HasLabel() && obj.LabelPosition == nil { -// if len(obj.ChildrenArray) > 0 { -// obj.LabelPosition = go2.Pointer(label.OutsideTopCenter.String()) -// } else if obj.HasOutsideBottomLabel() { -// obj.LabelPosition = go2.Pointer(label.OutsideBottomCenter.String()) -// } else if obj.Icon != nil { -// obj.LabelPosition = go2.Pointer(label.InsideTopCenter.String()) -// } else { -// obj.LabelPosition = go2.Pointer(label.InsideMiddleCenter.String()) -// } - -// if float64(obj.LabelDimensions.Width) > obj.Width || -// float64(obj.LabelDimensions.Height) > obj.Height { -// if len(obj.ChildrenArray) > 0 { -// obj.LabelPosition = go2.Pointer(label.OutsideTopCenter.String()) -// } else { -// obj.LabelPosition = go2.Pointer(label.OutsideBottomCenter.String()) -// } -// } -// } -// } - -// func boxContains(b *geo.Box, p *geo.Point) bool { -// return p.X >= b.TopLeft.X && -// p.X <= b.TopLeft.X+b.Width && -// p.Y >= b.TopLeft.Y && -// p.Y <= b.TopLeft.Y+b.Height -// } - -// func boxIntersections(b *geo.Box, seg geo.Segment) []*geo.Point { -// return b.Intersections(seg) -// } \ No newline at end of file diff --git a/e2etests/testdata/txtar/cycle-diagram/dagre/board.exp.json b/e2etests/testdata/txtar/cycle-diagram/dagre/board.exp.json index 0fcb4441f..104df56cc 100644 --- a/e2etests/testdata/txtar/cycle-diagram/dagre/board.exp.json +++ b/e2etests/testdata/txtar/cycle-diagram/dagre/board.exp.json @@ -540,248 +540,100 @@ "link": "", "route": [ { - "x": 0, - "y": -253 + "x": 31.285999298095703, + "y": -197.53700256347656 }, { - "x": 6.622000217437744, - "y": -252.91299438476562 + "x": 41.582000732421875, + "y": -195.62899780273438 }, { - "x": 13.239999771118164, - "y": -252.6529998779297 + "x": 51.76300048828125, + "y": -193.18499755859375 }, { - "x": 19.850000381469727, - "y": -252.22000122070312 + "x": 61.803001403808594, + "y": -190.21099853515625 }, { - "x": 26.44499969482422, - "y": -251.61399841308594 + "x": 71.6729965209961, + "y": -186.71600341796875 }, { - "x": 33.02299880981445, - "y": -250.8350067138672 + "x": 81.34700012207031, + "y": -182.70899963378906 }, { - "x": 39.57699966430664, - "y": -249.88499450683594 + "x": 90.7979965209961, + "y": -178.2010040283203 }, { - "x": 46.10499954223633, - "y": -248.76300048828125 + "x": 99.9990005493164, + "y": -173.2050018310547 }, { - "x": 52.60100173950195, - "y": -247.4709930419922 + "x": 108.927001953125, + "y": -167.73399353027344 }, { - "x": 59.06100082397461, - "y": -246.00900268554688 + "x": 117.55699920654297, + "y": -161.80299377441406 }, { - "x": 65.48100280761719, - "y": -244.37899780273438 + "x": 125.86399841308594, + "y": -155.4290008544922 }, { - "x": 71.8550033569336, - "y": -242.58099365234375 + "x": 133.8260040283203, + "y": -148.6280059814453 }, { - "x": 78.18099975585938, - "y": -240.61700439453125 + "x": 141.42100524902344, + "y": -141.42100524902344 }, { - "x": 84.4530029296875, - "y": -238.48800659179688 + "x": 148.6280059814453, + "y": -133.8260040283203 }, { - "x": 90.66699981689453, - "y": -236.19500732421875 + "x": 155.4290008544922, + "y": -125.86399841308594 }, { - "x": 96.81800079345703, - "y": -233.74099731445312 + "x": 161.80299377441406, + "y": -117.55699920654297 }, { - "x": 102.90399932861328, - "y": -231.1269989013672 + "x": 167.73399353027344, + "y": -108.927001953125 }, { - "x": 108.91899871826172, - "y": -228.35400390625 + "x": 173.2050018310547, + "y": -100 }, { - "x": 114.85900115966797, - "y": -225.4239959716797 + "x": 178.2010040283203, + "y": -90.7979965209961 }, { - "x": 120.72100067138672, - "y": -222.33999633789062 + "x": 182.70899963378906, + "y": -81.34700012207031 }, { - "x": 126.4990005493164, - "y": -219.10400390625 + "x": 186.71600341796875, + "y": -71.6729965209961 }, { - "x": 132.19200134277344, - "y": -215.7169952392578 + "x": 190.21099853515625, + "y": -61.803001403808594 }, { - "x": 137.79299926757812, - "y": -212.18299865722656 + "x": 193.18499755859375, + "y": -51.76300048828125 }, { - "x": 143.3000030517578, - "y": -208.5030059814453 - }, - { - "x": 148.70899963378906, - "y": -204.68099975585938 - }, - { - "x": 154.01600646972656, - "y": -200.71800231933594 - }, - { - "x": 159.21800231933594, - "y": -196.61700439453125 - }, - { - "x": 164.30999755859375, - "y": -192.3820037841797 - }, - { - "x": 169.2899932861328, - "y": -188.01499938964844 - }, - { - "x": 174.1529998779297, - "y": -183.5189971923828 - }, - { - "x": 178.8979949951172, - "y": -178.8979949951172 - }, - { - "x": 183.5189971923828, - "y": -174.1529998779297 - }, - { - "x": 188.01499938964844, - "y": -169.2899932861328 - }, - { - "x": 192.3820037841797, - "y": -164.30999755859375 - }, - { - "x": 196.61700439453125, - "y": -159.21800231933594 - }, - { - "x": 200.71800231933594, - "y": -154.01600646972656 - }, - { - "x": 204.68099975585938, - "y": -148.70899963378906 - }, - { - "x": 208.5030059814453, - "y": -143.3000030517578 - }, - { - "x": 212.18299865722656, - "y": -137.79299926757812 - }, - { - "x": 215.7169952392578, - "y": -132.19200134277344 - }, - { - "x": 219.10400390625, - "y": -126.5 - }, - { - "x": 222.33999633789062, - "y": -120.72100067138672 - }, - { - "x": 225.4239959716797, - "y": -114.85900115966797 - }, - { - "x": 228.35400390625, - "y": -108.91899871826172 - }, - { - "x": 231.1269989013672, - "y": -102.90399932861328 - }, - { - "x": 233.74099731445312, - "y": -96.81800079345703 - }, - { - "x": 236.19500732421875, - "y": -90.66699981689453 - }, - { - "x": 238.48800659179688, - "y": -84.4530029296875 - }, - { - "x": 240.61700439453125, - "y": -78.18099975585938 - }, - { - "x": 242.58099365234375, - "y": -71.8550033569336 - }, - { - "x": 244.37899780273438, - "y": -65.48100280761719 - }, - { - "x": 246.00900268554688, - "y": -59.06100082397461 - }, - { - "x": 247.4709930419922, - "y": -52.60100173950195 - }, - { - "x": 248.76300048828125, - "y": -46.10499954223633 - }, - { - "x": 249.88499450683594, - "y": -39.57699966430664 - }, - { - "x": 250.8350067138672, - "y": -33.02299880981445 - }, - { - "x": 251.61399841308594, - "y": -26.44499969482422 - }, - { - "x": 252.22000122070312, - "y": -19.850000381469727 - }, - { - "x": 252.6529998779297, - "y": -13.239999771118164 - }, - { - "x": 252.91299438476562, - "y": -6.622000217437744 - }, - { - "x": 253, - "y": 0 + "x": 195.62899780273438, + "y": -41.582000732421875 } ], "isCurve": true, @@ -816,248 +668,100 @@ "link": "", "route": [ { - "x": 253, - "y": 0 + "x": 195.62899780273438, + "y": 41.582000732421875 }, { - "x": 252.91299438476562, - "y": 6.622000217437744 + "x": 193.18499755859375, + "y": 51.76300048828125 }, { - "x": 252.6529998779297, - "y": 13.239999771118164 + "x": 190.21099853515625, + "y": 61.803001403808594 }, { - "x": 252.22000122070312, - "y": 19.850000381469727 + "x": 186.71600341796875, + "y": 71.6729965209961 }, { - "x": 251.61399841308594, - "y": 26.44499969482422 + "x": 182.70899963378906, + "y": 81.34700012207031 }, { - "x": 250.8350067138672, - "y": 33.02299880981445 + "x": 178.2010040283203, + "y": 90.7979965209961 }, { - "x": 249.88499450683594, - "y": 39.57699966430664 + "x": 173.2050018310547, + "y": 99.9990005493164 }, { - "x": 248.76300048828125, - "y": 46.10499954223633 + "x": 167.73399353027344, + "y": 108.927001953125 }, { - "x": 247.4709930419922, - "y": 52.60100173950195 + "x": 161.80299377441406, + "y": 117.55699920654297 }, { - "x": 246.00900268554688, - "y": 59.06100082397461 + "x": 155.4290008544922, + "y": 125.86399841308594 }, { - "x": 244.37899780273438, - "y": 65.48100280761719 + "x": 148.6280059814453, + "y": 133.8260040283203 }, { - "x": 242.58099365234375, - "y": 71.8550033569336 + "x": 141.42100524902344, + "y": 141.42100524902344 }, { - "x": 240.61700439453125, - "y": 78.18099975585938 + "x": 133.8260040283203, + "y": 148.6280059814453 }, { - "x": 238.48800659179688, - "y": 84.4530029296875 + "x": 125.86399841308594, + "y": 155.4290008544922 }, { - "x": 236.19500732421875, - "y": 90.66699981689453 + "x": 117.55699920654297, + "y": 161.80299377441406 }, { - "x": 233.74099731445312, - "y": 96.81800079345703 + "x": 108.927001953125, + "y": 167.73399353027344 }, { - "x": 231.1269989013672, - "y": 102.90399932861328 + "x": 100, + "y": 173.2050018310547 }, { - "x": 228.35400390625, - "y": 108.91899871826172 + "x": 90.7979965209961, + "y": 178.2010040283203 }, { - "x": 225.4239959716797, - "y": 114.85900115966797 + "x": 81.34700012207031, + "y": 182.70899963378906 }, { - "x": 222.33999633789062, - "y": 120.72100067138672 + "x": 71.6729965209961, + "y": 186.71600341796875 }, { - "x": 219.10400390625, - "y": 126.4990005493164 + "x": 61.803001403808594, + "y": 190.21099853515625 }, { - "x": 215.7169952392578, - "y": 132.19200134277344 + "x": 51.76300048828125, + "y": 193.18499755859375 }, { - "x": 212.18299865722656, - "y": 137.79299926757812 + "x": 41.582000732421875, + "y": 195.62899780273438 }, { - "x": 208.5030059814453, - "y": 143.3000030517578 - }, - { - "x": 204.68099975585938, - "y": 148.70899963378906 - }, - { - "x": 200.71800231933594, - "y": 154.01600646972656 - }, - { - "x": 196.61700439453125, - "y": 159.21800231933594 - }, - { - "x": 192.3820037841797, - "y": 164.30999755859375 - }, - { - "x": 188.01499938964844, - "y": 169.2899932861328 - }, - { - "x": 183.5189971923828, - "y": 174.1529998779297 - }, - { - "x": 178.8979949951172, - "y": 178.8979949951172 - }, - { - "x": 174.1529998779297, - "y": 183.5189971923828 - }, - { - "x": 169.2899932861328, - "y": 188.01499938964844 - }, - { - "x": 164.30999755859375, - "y": 192.3820037841797 - }, - { - "x": 159.21800231933594, - "y": 196.61700439453125 - }, - { - "x": 154.01600646972656, - "y": 200.71800231933594 - }, - { - "x": 148.70899963378906, - "y": 204.68099975585938 - }, - { - "x": 143.3000030517578, - "y": 208.5030059814453 - }, - { - "x": 137.79299926757812, - "y": 212.18299865722656 - }, - { - "x": 132.19200134277344, - "y": 215.7169952392578 - }, - { - "x": 126.5, - "y": 219.10400390625 - }, - { - "x": 120.72100067138672, - "y": 222.33999633789062 - }, - { - "x": 114.85900115966797, - "y": 225.4239959716797 - }, - { - "x": 108.91899871826172, - "y": 228.35400390625 - }, - { - "x": 102.90399932861328, - "y": 231.1269989013672 - }, - { - "x": 96.81800079345703, - "y": 233.74099731445312 - }, - { - "x": 90.66699981689453, - "y": 236.19500732421875 - }, - { - "x": 84.4530029296875, - "y": 238.48800659179688 - }, - { - "x": 78.18099975585938, - "y": 240.61700439453125 - }, - { - "x": 71.8550033569336, - "y": 242.58099365234375 - }, - { - "x": 65.48100280761719, - "y": 244.37899780273438 - }, - { - "x": 59.06100082397461, - "y": 246.00900268554688 - }, - { - "x": 52.60100173950195, - "y": 247.4709930419922 - }, - { - "x": 46.10499954223633, - "y": 248.76300048828125 - }, - { - "x": 39.57699966430664, - "y": 249.88499450683594 - }, - { - "x": 33.02299880981445, - "y": 250.8350067138672 - }, - { - "x": 26.44499969482422, - "y": 251.61399841308594 - }, - { - "x": 19.850000381469727, - "y": 252.22000122070312 - }, - { - "x": 13.239999771118164, - "y": 252.6529998779297 - }, - { - "x": 6.622000217437744, - "y": 252.91299438476562 - }, - { - "x": 0, - "y": 253 + "x": 31.285999298095703, + "y": 197.53700256347656 } ], "isCurve": true, @@ -1092,248 +796,100 @@ "link": "", "route": [ { - "x": 0, - "y": 253 + "x": -31.285999298095703, + "y": 197.53700256347656 }, { - "x": -6.622000217437744, - "y": 252.91299438476562 + "x": -41.582000732421875, + "y": 195.62899780273438 }, { - "x": -13.239999771118164, - "y": 252.6529998779297 + "x": -51.76300048828125, + "y": 193.18499755859375 }, { - "x": -19.850000381469727, - "y": 252.22000122070312 + "x": -61.803001403808594, + "y": 190.21099853515625 }, { - "x": -26.44499969482422, - "y": 251.61399841308594 + "x": -71.6729965209961, + "y": 186.71600341796875 }, { - "x": -33.02299880981445, - "y": 250.8350067138672 + "x": -81.34700012207031, + "y": 182.70899963378906 }, { - "x": -39.57699966430664, - "y": 249.88499450683594 + "x": -90.7979965209961, + "y": 178.2010040283203 }, { - "x": -46.10499954223633, - "y": 248.76300048828125 + "x": -99.9990005493164, + "y": 173.2050018310547 }, { - "x": -52.60100173950195, - "y": 247.4709930419922 + "x": -108.927001953125, + "y": 167.73399353027344 }, { - "x": -59.06100082397461, - "y": 246.00900268554688 + "x": -117.55699920654297, + "y": 161.80299377441406 }, { - "x": -65.48100280761719, - "y": 244.37899780273438 + "x": -125.86399841308594, + "y": 155.4290008544922 }, { - "x": -71.8550033569336, - "y": 242.58099365234375 + "x": -133.8260040283203, + "y": 148.6280059814453 }, { - "x": -78.18099975585938, - "y": 240.61700439453125 + "x": -141.42100524902344, + "y": 141.42100524902344 }, { - "x": -84.4530029296875, - "y": 238.48800659179688 + "x": -148.6280059814453, + "y": 133.8260040283203 }, { - "x": -90.66699981689453, - "y": 236.19500732421875 + "x": -155.4290008544922, + "y": 125.86399841308594 }, { - "x": -96.81800079345703, - "y": 233.74099731445312 + "x": -161.80299377441406, + "y": 117.55699920654297 }, { - "x": -102.90399932861328, - "y": 231.1269989013672 + "x": -167.73399353027344, + "y": 108.927001953125 }, { - "x": -108.91899871826172, - "y": 228.35400390625 + "x": -173.2050018310547, + "y": 100 }, { - "x": -114.85900115966797, - "y": 225.4239959716797 + "x": -178.2010040283203, + "y": 90.7979965209961 }, { - "x": -120.72100067138672, - "y": 222.33999633789062 + "x": -182.70899963378906, + "y": 81.34700012207031 }, { - "x": -126.4990005493164, - "y": 219.10400390625 + "x": -186.71600341796875, + "y": 71.6729965209961 }, { - "x": -132.19200134277344, - "y": 215.7169952392578 + "x": -190.21099853515625, + "y": 61.803001403808594 }, { - "x": -137.79299926757812, - "y": 212.18299865722656 + "x": -193.18499755859375, + "y": 51.76300048828125 }, { - "x": -143.3000030517578, - "y": 208.5030059814453 - }, - { - "x": -148.70899963378906, - "y": 204.68099975585938 - }, - { - "x": -154.01600646972656, - "y": 200.71800231933594 - }, - { - "x": -159.21800231933594, - "y": 196.61700439453125 - }, - { - "x": -164.30999755859375, - "y": 192.3820037841797 - }, - { - "x": -169.2899932861328, - "y": 188.01499938964844 - }, - { - "x": -174.1529998779297, - "y": 183.5189971923828 - }, - { - "x": -178.8979949951172, - "y": 178.8979949951172 - }, - { - "x": -183.5189971923828, - "y": 174.1529998779297 - }, - { - "x": -188.01499938964844, - "y": 169.2899932861328 - }, - { - "x": -192.3820037841797, - "y": 164.30999755859375 - }, - { - "x": -196.61700439453125, - "y": 159.21800231933594 - }, - { - "x": -200.71800231933594, - "y": 154.01600646972656 - }, - { - "x": -204.68099975585938, - "y": 148.70899963378906 - }, - { - "x": -208.5030059814453, - "y": 143.3000030517578 - }, - { - "x": -212.18299865722656, - "y": 137.79299926757812 - }, - { - "x": -215.7169952392578, - "y": 132.19200134277344 - }, - { - "x": -219.10400390625, - "y": 126.5 - }, - { - "x": -222.33999633789062, - "y": 120.72100067138672 - }, - { - "x": -225.4239959716797, - "y": 114.85900115966797 - }, - { - "x": -228.35400390625, - "y": 108.91899871826172 - }, - { - "x": -231.1269989013672, - "y": 102.90399932861328 - }, - { - "x": -233.74099731445312, - "y": 96.81800079345703 - }, - { - "x": -236.19500732421875, - "y": 90.66699981689453 - }, - { - "x": -238.48800659179688, - "y": 84.4530029296875 - }, - { - "x": -240.61700439453125, - "y": 78.18099975585938 - }, - { - "x": -242.58099365234375, - "y": 71.8550033569336 - }, - { - "x": -244.37899780273438, - "y": 65.48100280761719 - }, - { - "x": -246.00900268554688, - "y": 59.06100082397461 - }, - { - "x": -247.4709930419922, - "y": 52.60100173950195 - }, - { - "x": -248.76300048828125, - "y": 46.10499954223633 - }, - { - "x": -249.88499450683594, - "y": 39.57699966430664 - }, - { - "x": -250.8350067138672, - "y": 33.02299880981445 - }, - { - "x": -251.61399841308594, - "y": 26.44499969482422 - }, - { - "x": -252.22000122070312, - "y": 19.850000381469727 - }, - { - "x": -252.6529998779297, - "y": 13.239999771118164 - }, - { - "x": -252.91299438476562, - "y": 6.622000217437744 - }, - { - "x": -253, - "y": 0 + "x": -195.62899780273438, + "y": 41.582000732421875 } ], "isCurve": true, @@ -1368,248 +924,108 @@ "link": "", "route": [ { - "x": 513, - "y": -203 + "x": 540.833984375, + "y": -148.05299377441406 }, { - "x": 521.8289794921875, - "y": -202.84500122070312 + "x": 554.5819702148438, + "y": -145.62899780273438 }, { - "x": 530.6480102539062, - "y": -202.38299560546875 + "x": 568.1270141601562, + "y": -142.2519989013672 }, { - "x": 539.4450073242188, - "y": -201.61399841308594 + "x": 581.4039916992188, + "y": -137.93800354003906 }, { - "x": 548.2100219726562, - "y": -200.53700256347656 + "x": 594.3469848632812, + "y": -132.70899963378906 }, { - "x": 556.9320068359375, - "y": -199.156005859375 + "x": 606.8939819335938, + "y": -126.58899688720703 }, { - "x": 565.6010131835938, - "y": -197.4709930419922 + "x": 618.9829711914062, + "y": -119.60900115966797 }, { - "x": 574.2059936523438, - "y": -195.48399353027344 + "x": 630.5570068359375, + "y": -111.8030014038086 }, { - "x": 582.7360229492188, - "y": -193.19900512695312 + "x": 641.5570068359375, + "y": -103.20800018310547 }, { - "x": 591.1810302734375, - "y": -190.61700439453125 + "x": 651.9310302734375, + "y": -93.86699676513672 }, { - "x": 599.531005859375, - "y": -187.74200439453125 + "x": 661.6279907226562, + "y": -83.82599639892578 }, { - "x": 607.7750244140625, - "y": -184.57699584960938 + "x": 670.6019897460938, + "y": -73.13200378417969 }, { - "x": 615.9039916992188, - "y": -181.1269989013672 + "x": 678.8070068359375, + "y": -61.8380012512207 }, { - "x": 623.906982421875, - "y": -177.3939971923828 + "x": 686.2050170898438, + "y": -50 }, { - "x": 631.7760009765625, - "y": -173.38499450683594 + "x": 692.7579956054688, + "y": -37.67399978637695 }, { - "x": 639.5, - "y": -169.10400390625 + "x": 698.4359741210938, + "y": -24.92099952697754 }, { - "x": 647.0689697265625, - "y": -164.55599975585938 + "x": 703.2109985351562, + "y": -11.803000450134277 }, { - "x": 654.4749755859375, - "y": -159.74600219726562 + "x": 707.0590209960938, + "y": 1.6150000095367432 }, { - "x": 661.708984375, - "y": -154.68099975585938 + "x": 709.9609985351562, + "y": 15.270000457763672 }, { - "x": 668.7620239257812, - "y": -149.36599731445312 + "x": 711.9039916992188, + "y": 29.0939998626709 }, { - "x": 675.625, - "y": -143.8090057373047 + "x": 712.8779907226562, + "y": 43.02000045776367 }, { - "x": 682.2899780273438, - "y": -138.01499938964844 + "x": 712.8779907226562, + "y": 56.979000091552734 }, { - "x": 688.7479858398438, - "y": -131.99200439453125 + "x": 711.9039916992188, + "y": 70.90499877929688 }, { - "x": 694.9920043945312, - "y": -125.74800109863281 + "x": 709.9609985351562, + "y": 84.72899627685547 }, { - "x": 701.0150146484375, - "y": -119.29000091552734 + "x": 707.0590209960938, + "y": 98.38400268554688 }, { - "x": 706.8090209960938, - "y": -112.625 - }, - { - "x": 712.3660278320312, - "y": -105.76200103759766 - }, - { - "x": 717.6810302734375, - "y": -98.70899963378906 - }, - { - "x": 722.7459716796875, - "y": -91.4749984741211 - }, - { - "x": 727.5560302734375, - "y": -84.06900024414062 - }, - { - "x": 732.10400390625, - "y": -76.5 - }, - { - "x": 736.385009765625, - "y": -68.7760009765625 - }, - { - "x": 740.3939819335938, - "y": -60.90700149536133 - }, - { - "x": 744.1270141601562, - "y": -52.90399932861328 - }, - { - "x": 747.5770263671875, - "y": -44.775001525878906 - }, - { - "x": 750.7420043945312, - "y": -36.53099822998047 - }, - { - "x": 753.6170043945312, - "y": -28.180999755859375 - }, - { - "x": 756.198974609375, - "y": -19.736000061035156 - }, - { - "x": 758.4840087890625, - "y": -11.206000328063965 - }, - { - "x": 760.4710083007812, - "y": -2.6010000705718994 - }, - { - "x": 762.156005859375, - "y": 6.066999912261963 - }, - { - "x": 763.5369873046875, - "y": 14.788999557495117 - }, - { - "x": 764.614013671875, - "y": 23.554000854492188 - }, - { - "x": 765.3829956054688, - "y": 32.35100173950195 - }, - { - "x": 765.844970703125, - "y": 41.16999816894531 - }, - { - "x": 766, - "y": 50 - }, - { - "x": 765.844970703125, - "y": 58.82899856567383 - }, - { - "x": 765.3829956054688, - "y": 67.64800262451172 - }, - { - "x": 764.614013671875, - "y": 76.44499969482422 - }, - { - "x": 763.5369873046875, - "y": 85.20999908447266 - }, - { - "x": 762.156005859375, - "y": 93.93199920654297 - }, - { - "x": 760.4710083007812, - "y": 102.60099792480469 - }, - { - "x": 758.4840087890625, - "y": 111.20600128173828 - }, - { - "x": 756.198974609375, - "y": 119.73600006103516 - }, - { - "x": 753.6170043945312, - "y": 128.18099975585938 - }, - { - "x": 750.7420043945312, - "y": 136.531005859375 - }, - { - "x": 747.5770263671875, - "y": 144.77499389648438 - }, - { - "x": 744.1270141601562, - "y": 152.9040069580078 - }, - { - "x": 740.3939819335938, - "y": 160.90699768066406 - }, - { - "x": 736.385009765625, - "y": 168.7760009765625 - }, - { - "x": 732.10400390625, - "y": 176.49899291992188 + "x": 703.2109985351562, + "y": 111.8030014038086 } ], "isCurve": true, @@ -1644,248 +1060,104 @@ "link": "", "route": [ { - "x": 732.10400390625, - "y": 176.49899291992188 + "x": 661.6279907226562, + "y": 183.8260040283203 }, { - "x": 727.5560302734375, - "y": 184.06900024414062 + "x": 651.9310302734375, + "y": 193.86700439453125 }, { - "x": 722.7459716796875, - "y": 191.47500610351562 + "x": 641.5570068359375, + "y": 203.20799255371094 }, { - "x": 717.6810302734375, - "y": 198.70899963378906 + "x": 630.5570068359375, + "y": 211.80299377441406 }, { - "x": 712.3660278320312, - "y": 205.76199340820312 + "x": 618.9829711914062, + "y": 219.60899353027344 }, { - "x": 706.8090209960938, - "y": 212.625 + "x": 606.8939819335938, + "y": 226.58900451660156 }, { - "x": 701.0150146484375, - "y": 219.2899932861328 + "x": 594.3469848632812, + "y": 232.70899963378906 }, { - "x": 694.9920043945312, - "y": 225.7480010986328 + "x": 581.4039916992188, + "y": 237.93800354003906 }, { - "x": 688.7479858398438, - "y": 231.99200439453125 + "x": 568.1270141601562, + "y": 242.2519989013672 }, { - "x": 682.2899780273438, - "y": 238.01499938964844 + "x": 554.5819702148438, + "y": 245.62899780273438 }, { - "x": 675.625, - "y": 243.8090057373047 + "x": 540.833984375, + "y": 248.05299377441406 }, { - "x": 668.7620239257812, - "y": 249.36599731445312 - }, - { - "x": 661.708984375, - "y": 254.68099975585938 - }, - { - "x": 654.4749755859375, - "y": 259.7460021972656 - }, - { - "x": 647.0689697265625, - "y": 264.5559997558594 - }, - { - "x": 639.5, - "y": 269.10400390625 - }, - { - "x": 631.7760009765625, - "y": 273.385009765625 - }, - { - "x": 623.906982421875, - "y": 277.3940124511719 - }, - { - "x": 615.9039916992188, - "y": 281.12701416015625 - }, - { - "x": 607.7750244140625, - "y": 284.5769958496094 - }, - { - "x": 599.531005859375, - "y": 287.74200439453125 - }, - { - "x": 591.1810302734375, - "y": 290.61700439453125 - }, - { - "x": 582.7360229492188, - "y": 293.1990051269531 - }, - { - "x": 574.2059936523438, - "y": 295.4840087890625 - }, - { - "x": 565.6010131835938, - "y": 297.47100830078125 - }, - { - "x": 556.9320068359375, - "y": 299.156005859375 - }, - { - "x": 548.2100219726562, - "y": 300.5369873046875 - }, - { - "x": 539.4450073242188, - "y": 301.614013671875 - }, - { - "x": 530.6480102539062, - "y": 302.38299560546875 - }, - { - "x": 521.8289794921875, - "y": 302.8450012207031 + "x": 526.9509887695312, + "y": 249.51199340820312 }, { "x": 513, - "y": 303 + "y": 250 }, { - "x": 504.1700134277344, - "y": 302.8450012207031 + "x": 499.0480041503906, + "y": 249.51199340820312 }, { - "x": 495.35101318359375, - "y": 302.38299560546875 + "x": 485.1650085449219, + "y": 248.05299377441406 }, { - "x": 486.5539855957031, - "y": 301.614013671875 + "x": 471.4169921875, + "y": 245.62899780273438 }, { - "x": 477.78900146484375, - "y": 300.5369873046875 + "x": 457.87200927734375, + "y": 242.2519989013672 }, { - "x": 469.0669860839844, - "y": 299.156005859375 + "x": 444.5950012207031, + "y": 237.93800354003906 }, { - "x": 460.39801025390625, - "y": 297.47100830078125 + "x": 431.6520080566406, + "y": 232.70899963378906 }, { - "x": 451.7929992675781, - "y": 295.4840087890625 + "x": 419.1050109863281, + "y": 226.58900451660156 }, { - "x": 443.26300048828125, - "y": 293.1990051269531 + "x": 407.0159912109375, + "y": 219.60899353027344 }, { - "x": 434.8179931640625, - "y": 290.61700439453125 + "x": 395.4419860839844, + "y": 211.80299377441406 }, { - "x": 426.4679870605469, - "y": 287.74200439453125 + "x": 384.4419860839844, + "y": 203.20799255371094 }, { - "x": 418.2239990234375, - "y": 284.5769958496094 + "x": 374.0679931640625, + "y": 193.86700439453125 }, { - "x": 410.0950012207031, - "y": 281.12701416015625 - }, - { - "x": 402.0920104980469, - "y": 277.3940124511719 - }, - { - "x": 394.2229919433594, - "y": 273.385009765625 - }, - { - "x": 386.5, - "y": 269.10400390625 - }, - { - "x": 378.92999267578125, - "y": 264.5559997558594 - }, - { - "x": 371.52398681640625, - "y": 259.7460021972656 - }, - { - "x": 364.2900085449219, - "y": 254.68099975585938 - }, - { - "x": 357.23699951171875, - "y": 249.36599731445312 - }, - { - "x": 350.3739929199219, - "y": 243.8090057373047 - }, - { - "x": 343.7090148925781, - "y": 238.01499938964844 - }, - { - "x": 337.2510070800781, - "y": 231.99200439453125 - }, - { - "x": 331.0069885253906, - "y": 225.7480010986328 - }, - { - "x": 324.9840087890625, - "y": 219.2899932861328 - }, - { - "x": 319.19000244140625, - "y": 212.625 - }, - { - "x": 313.63299560546875, - "y": 205.76199340820312 - }, - { - "x": 308.3179931640625, - "y": 198.70899963378906 - }, - { - "x": 303.25299072265625, - "y": 191.47500610351562 - }, - { - "x": 298.4429931640625, - "y": 184.06900024414062 - }, - { - "x": 293.8949890136719, - "y": 176.5 + "x": 364.3710021972656, + "y": 183.8260040283203 } ], "isCurve": true, @@ -1920,248 +1192,112 @@ "link": "", "route": [ { - "x": 972, - "y": -253 + "x": 1013.5819702148438, + "y": -195.62899780273438 }, { - "x": 985.239990234375, - "y": -252.6529998779297 + "x": 1033.802978515625, + "y": -190.21099853515625 }, { - "x": 998.4450073242188, - "y": -251.61399841308594 + "x": 1053.3470458984375, + "y": -182.70899963378906 }, { - "x": 1011.5770263671875, - "y": -249.88499450683594 + "x": 1072, + "y": -173.2050018310547 }, { - "x": 1024.6009521484375, - "y": -247.4709930419922 + "x": 1089.5570068359375, + "y": -161.80299377441406 }, { - "x": 1037.48095703125, - "y": -244.37899780273438 + "x": 1105.8260498046875, + "y": -148.6280059814453 }, { - "x": 1050.1810302734375, - "y": -240.61700439453125 + "x": 1120.6280517578125, + "y": -133.8260040283203 }, { - "x": 1062.6669921875, - "y": -236.19500732421875 + "x": 1133.802978515625, + "y": -117.55699920654297 }, { - "x": 1074.904052734375, - "y": -231.1269989013672 + "x": 1145.2049560546875, + "y": -100 }, { - "x": 1086.8590087890625, - "y": -225.4239959716797 + "x": 1154.708984375, + "y": -81.34700012207031 }, { - "x": 1098.5, - "y": -219.10400390625 + "x": 1162.2110595703125, + "y": -61.803001403808594 }, { - "x": 1109.79296875, - "y": -212.18299865722656 + "x": 1167.6290283203125, + "y": -41.582000732421875 }, { - "x": 1120.708984375, - "y": -204.68099975585938 + "x": 1170.904052734375, + "y": -20.905000686645508 }, { - "x": 1131.218017578125, - "y": -196.61700439453125 - }, - { - "x": 1141.2900390625, - "y": -188.01499938964844 - }, - { - "x": 1150.89794921875, - "y": -178.8979949951172 - }, - { - "x": 1160.0150146484375, - "y": -169.2899932861328 - }, - { - "x": 1168.616943359375, - "y": -159.21800231933594 - }, - { - "x": 1176.6810302734375, - "y": -148.70899963378906 - }, - { - "x": 1184.1829833984375, - "y": -137.79299926757812 - }, - { - "x": 1191.10400390625, - "y": -126.5 - }, - { - "x": 1197.4239501953125, - "y": -114.85900115966797 - }, - { - "x": 1203.126953125, - "y": -102.90399932861328 - }, - { - "x": 1208.1949462890625, - "y": -90.66699981689453 - }, - { - "x": 1212.616943359375, - "y": -78.18099975585938 - }, - { - "x": 1216.3790283203125, - "y": -65.48100280761719 - }, - { - "x": 1219.470947265625, - "y": -52.60100173950195 - }, - { - "x": 1221.885009765625, - "y": -39.57699966430664 - }, - { - "x": 1223.614013671875, - "y": -26.44499969482422 - }, - { - "x": 1224.6529541015625, - "y": -13.239999771118164 - }, - { - "x": 1225, + "x": 1172, "y": 0 }, { - "x": 1224.6529541015625, - "y": 13.239999771118164 + "x": 1170.904052734375, + "y": 20.905000686645508 }, { - "x": 1223.614013671875, - "y": 26.44499969482422 + "x": 1167.6290283203125, + "y": 41.582000732421875 }, { - "x": 1221.885009765625, - "y": 39.57699966430664 + "x": 1162.2110595703125, + "y": 61.803001403808594 }, { - "x": 1219.470947265625, - "y": 52.60100173950195 + "x": 1154.708984375, + "y": 81.34700012207031 }, { - "x": 1216.3790283203125, - "y": 65.48100280761719 + "x": 1145.2049560546875, + "y": 99.9990005493164 }, { - "x": 1212.616943359375, - "y": 78.18099975585938 + "x": 1133.802978515625, + "y": 117.55699920654297 }, { - "x": 1208.1949462890625, - "y": 90.66699981689453 + "x": 1120.6280517578125, + "y": 133.8260040283203 }, { - "x": 1203.126953125, - "y": 102.90399932861328 + "x": 1105.8260498046875, + "y": 148.6280059814453 }, { - "x": 1197.4239501953125, - "y": 114.85900115966797 + "x": 1089.5570068359375, + "y": 161.80299377441406 }, { - "x": 1191.10400390625, - "y": 126.4990005493164 + "x": 1072, + "y": 173.2050018310547 }, { - "x": 1184.1829833984375, - "y": 137.79299926757812 + "x": 1053.3470458984375, + "y": 182.70899963378906 }, { - "x": 1176.6810302734375, - "y": 148.70899963378906 + "x": 1033.802978515625, + "y": 190.21099853515625 }, { - "x": 1168.616943359375, - "y": 159.21800231933594 - }, - { - "x": 1160.0150146484375, - "y": 169.2899932861328 - }, - { - "x": 1150.89794921875, - "y": 178.8979949951172 - }, - { - "x": 1141.2900390625, - "y": 188.01499938964844 - }, - { - "x": 1131.218017578125, - "y": 196.61700439453125 - }, - { - "x": 1120.708984375, - "y": 204.68099975585938 - }, - { - "x": 1109.79296875, - "y": 212.18299865722656 - }, - { - "x": 1098.5, - "y": 219.10400390625 - }, - { - "x": 1086.8590087890625, - "y": 225.4239959716797 - }, - { - "x": 1074.904052734375, - "y": 231.1269989013672 - }, - { - "x": 1062.6669921875, - "y": 236.19500732421875 - }, - { - "x": 1050.1810302734375, - "y": 240.61700439453125 - }, - { - "x": 1037.48095703125, - "y": 244.37899780273438 - }, - { - "x": 1024.6009521484375, - "y": 247.4709930419922 - }, - { - "x": 1011.5770263671875, - "y": 249.88499450683594 - }, - { - "x": 998.4450073242188, - "y": 251.61399841308594 - }, - { - "x": 985.239990234375, - "y": 252.6529998779297 - }, - { - "x": 972, - "y": 253 + "x": 1013.5819702148438, + "y": 195.62899780273438 } ], "isCurve": true, diff --git a/e2etests/testdata/txtar/cycle-diagram/dagre/sketch.exp.svg b/e2etests/testdata/txtar/cycle-diagram/dagre/sketch.exp.svg index 1da4a0d02..ecc912981 100644 --- a/e2etests/testdata/txtar/cycle-diagram/dagre/sketch.exp.svg +++ b/e2etests/testdata/txtar/cycle-diagram/dagre/sketch.exp.svg @@ -1,9 +1,9 @@ -abcdabcab - + .d2-3480499724 .fill-N1{fill:#0A0F25;} + .d2-3480499724 .fill-N2{fill:#676C7E;} + .d2-3480499724 .fill-N3{fill:#9499AB;} + .d2-3480499724 .fill-N4{fill:#CFD2DD;} + .d2-3480499724 .fill-N5{fill:#DEE1EB;} + .d2-3480499724 .fill-N6{fill:#EEF1F8;} + .d2-3480499724 .fill-N7{fill:#FFFFFF;} + .d2-3480499724 .fill-B1{fill:#0D32B2;} + .d2-3480499724 .fill-B2{fill:#0D32B2;} + .d2-3480499724 .fill-B3{fill:#E3E9FD;} + .d2-3480499724 .fill-B4{fill:#E3E9FD;} + .d2-3480499724 .fill-B5{fill:#EDF0FD;} + .d2-3480499724 .fill-B6{fill:#F7F8FE;} + .d2-3480499724 .fill-AA2{fill:#4A6FF3;} + .d2-3480499724 .fill-AA4{fill:#EDF0FD;} + .d2-3480499724 .fill-AA5{fill:#F7F8FE;} + .d2-3480499724 .fill-AB4{fill:#EDF0FD;} + .d2-3480499724 .fill-AB5{fill:#F7F8FE;} + .d2-3480499724 .stroke-N1{stroke:#0A0F25;} + .d2-3480499724 .stroke-N2{stroke:#676C7E;} + .d2-3480499724 .stroke-N3{stroke:#9499AB;} + .d2-3480499724 .stroke-N4{stroke:#CFD2DD;} + .d2-3480499724 .stroke-N5{stroke:#DEE1EB;} + .d2-3480499724 .stroke-N6{stroke:#EEF1F8;} + .d2-3480499724 .stroke-N7{stroke:#FFFFFF;} + .d2-3480499724 .stroke-B1{stroke:#0D32B2;} + .d2-3480499724 .stroke-B2{stroke:#0D32B2;} + .d2-3480499724 .stroke-B3{stroke:#E3E9FD;} + .d2-3480499724 .stroke-B4{stroke:#E3E9FD;} + .d2-3480499724 .stroke-B5{stroke:#EDF0FD;} + .d2-3480499724 .stroke-B6{stroke:#F7F8FE;} + .d2-3480499724 .stroke-AA2{stroke:#4A6FF3;} + .d2-3480499724 .stroke-AA4{stroke:#EDF0FD;} + .d2-3480499724 .stroke-AA5{stroke:#F7F8FE;} + .d2-3480499724 .stroke-AB4{stroke:#EDF0FD;} + .d2-3480499724 .stroke-AB5{stroke:#F7F8FE;} + .d2-3480499724 .background-color-N1{background-color:#0A0F25;} + .d2-3480499724 .background-color-N2{background-color:#676C7E;} + .d2-3480499724 .background-color-N3{background-color:#9499AB;} + .d2-3480499724 .background-color-N4{background-color:#CFD2DD;} + .d2-3480499724 .background-color-N5{background-color:#DEE1EB;} + .d2-3480499724 .background-color-N6{background-color:#EEF1F8;} + .d2-3480499724 .background-color-N7{background-color:#FFFFFF;} + .d2-3480499724 .background-color-B1{background-color:#0D32B2;} + .d2-3480499724 .background-color-B2{background-color:#0D32B2;} + .d2-3480499724 .background-color-B3{background-color:#E3E9FD;} + .d2-3480499724 .background-color-B4{background-color:#E3E9FD;} + .d2-3480499724 .background-color-B5{background-color:#EDF0FD;} + .d2-3480499724 .background-color-B6{background-color:#F7F8FE;} + .d2-3480499724 .background-color-AA2{background-color:#4A6FF3;} + .d2-3480499724 .background-color-AA4{background-color:#EDF0FD;} + .d2-3480499724 .background-color-AA5{background-color:#F7F8FE;} + .d2-3480499724 .background-color-AB4{background-color:#EDF0FD;} + .d2-3480499724 .background-color-AB5{background-color:#F7F8FE;} + .d2-3480499724 .color-N1{color:#0A0F25;} + .d2-3480499724 .color-N2{color:#676C7E;} + .d2-3480499724 .color-N3{color:#9499AB;} + .d2-3480499724 .color-N4{color:#CFD2DD;} + .d2-3480499724 .color-N5{color:#DEE1EB;} + .d2-3480499724 .color-N6{color:#EEF1F8;} + .d2-3480499724 .color-N7{color:#FFFFFF;} + .d2-3480499724 .color-B1{color:#0D32B2;} + .d2-3480499724 .color-B2{color:#0D32B2;} + .d2-3480499724 .color-B3{color:#E3E9FD;} + .d2-3480499724 .color-B4{color:#E3E9FD;} + .d2-3480499724 .color-B5{color:#EDF0FD;} + .d2-3480499724 .color-B6{color:#F7F8FE;} + .d2-3480499724 .color-AA2{color:#4A6FF3;} + .d2-3480499724 .color-AA4{color:#EDF0FD;} + .d2-3480499724 .color-AA5{color:#F7F8FE;} + .d2-3480499724 .color-AB4{color:#EDF0FD;} + .d2-3480499724 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-3480499724);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3480499724);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3480499724);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3480499724);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3480499724);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3480499724);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3480499724);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3480499724);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>abcdabcab + diff --git a/e2etests/testdata/txtar/cycle-diagram/elk/board.exp.json b/e2etests/testdata/txtar/cycle-diagram/elk/board.exp.json index 9f5205495..ad3f518e0 100644 --- a/e2etests/testdata/txtar/cycle-diagram/elk/board.exp.json +++ b/e2etests/testdata/txtar/cycle-diagram/elk/board.exp.json @@ -540,248 +540,100 @@ "link": "", "route": [ { - "x": 12, - "y": -241 + "x": 43.2859992980957, + "y": -185.53700256347656 }, { - "x": 18.621999740600586, - "y": -240.91299438476562 + "x": 53.582000732421875, + "y": -183.62899780273438 }, { - "x": 25.239999771118164, - "y": -240.6529998779297 + "x": 63.76300048828125, + "y": -181.18499755859375 }, { - "x": 31.850000381469727, - "y": -240.22000122070312 + "x": 73.8030014038086, + "y": -178.21099853515625 }, { - "x": 38.44499969482422, - "y": -239.61399841308594 + "x": 83.6729965209961, + "y": -174.71600341796875 }, { - "x": 45.02299880981445, - "y": -238.8350067138672 + "x": 93.34700012207031, + "y": -170.70899963378906 }, { - "x": 51.57699966430664, - "y": -237.88499450683594 + "x": 102.7979965209961, + "y": -166.2010040283203 }, { - "x": 58.10499954223633, - "y": -236.76300048828125 + "x": 111.9990005493164, + "y": -161.2050018310547 }, { - "x": 64.60099792480469, - "y": -235.4709930419922 + "x": 120.927001953125, + "y": -155.73399353027344 }, { - "x": 71.06099700927734, - "y": -234.00900268554688 + "x": 129.5570068359375, + "y": -149.80299377441406 }, { - "x": 77.48100280761719, - "y": -232.37899780273438 + "x": 137.86399841308594, + "y": -143.4290008544922 }, { - "x": 83.8550033569336, - "y": -230.58099365234375 + "x": 145.8260040283203, + "y": -136.6280059814453 }, { - "x": 90.18099975585938, - "y": -228.61700439453125 + "x": 153.42100524902344, + "y": -129.42100524902344 }, { - "x": 96.4530029296875, - "y": -226.48800659179688 + "x": 160.6280059814453, + "y": -121.82599639892578 }, { - "x": 102.66699981689453, - "y": -224.19500732421875 + "x": 167.4290008544922, + "y": -113.86399841308594 }, { - "x": 108.81800079345703, - "y": -221.74099731445312 + "x": 173.80299377441406, + "y": -105.55699920654297 }, { - "x": 114.90399932861328, - "y": -219.1269989013672 + "x": 179.73399353027344, + "y": -96.927001953125 }, { - "x": 120.91899871826172, - "y": -216.35400390625 + "x": 185.2050018310547, + "y": -88 }, { - "x": 126.85900115966797, - "y": -213.4239959716797 + "x": 190.2010040283203, + "y": -78.7979965209961 }, { - "x": 132.7209930419922, - "y": -210.33999633789062 + "x": 194.70899963378906, + "y": -69.34700012207031 }, { - "x": 138.5, - "y": -207.10400390625 + "x": 198.71600341796875, + "y": -59.67300033569336 }, { - "x": 144.19200134277344, - "y": -203.7169952392578 + "x": 202.21099853515625, + "y": -49.803001403808594 }, { - "x": 149.79299926757812, - "y": -200.18299865722656 + "x": 205.18499755859375, + "y": -39.76300048828125 }, { - "x": 155.3000030517578, - "y": -196.5030059814453 - }, - { - "x": 160.70899963378906, - "y": -192.68099975585938 - }, - { - "x": 166.01600646972656, - "y": -188.71800231933594 - }, - { - "x": 171.21800231933594, - "y": -184.61700439453125 - }, - { - "x": 176.30999755859375, - "y": -180.3820037841797 - }, - { - "x": 181.2899932861328, - "y": -176.01499938964844 - }, - { - "x": 186.1529998779297, - "y": -171.5189971923828 - }, - { - "x": 190.8979949951172, - "y": -166.8979949951172 - }, - { - "x": 195.5189971923828, - "y": -162.1529998779297 - }, - { - "x": 200.01499938964844, - "y": -157.2899932861328 - }, - { - "x": 204.3820037841797, - "y": -152.30999755859375 - }, - { - "x": 208.61700439453125, - "y": -147.21800231933594 - }, - { - "x": 212.71800231933594, - "y": -142.01600646972656 - }, - { - "x": 216.68099975585938, - "y": -136.70899963378906 - }, - { - "x": 220.5030059814453, - "y": -131.3000030517578 - }, - { - "x": 224.18299865722656, - "y": -125.79299926757812 - }, - { - "x": 227.7169952392578, - "y": -120.19200134277344 - }, - { - "x": 231.10400390625, - "y": -114.5 - }, - { - "x": 234.33999633789062, - "y": -108.72100067138672 - }, - { - "x": 237.4239959716797, - "y": -102.85900115966797 - }, - { - "x": 240.35400390625, - "y": -96.91899871826172 - }, - { - "x": 243.1269989013672, - "y": -90.90399932861328 - }, - { - "x": 245.74099731445312, - "y": -84.81800079345703 - }, - { - "x": 248.19500732421875, - "y": -78.66699981689453 - }, - { - "x": 250.48800659179688, - "y": -72.4530029296875 - }, - { - "x": 252.61700439453125, - "y": -66.18099975585938 - }, - { - "x": 254.58099365234375, - "y": -59.85499954223633 - }, - { - "x": 256.3789978027344, - "y": -53.48099899291992 - }, - { - "x": 258.0090026855469, - "y": -47.06100082397461 - }, - { - "x": 259.47100830078125, - "y": -40.60100173950195 - }, - { - "x": 260.76300048828125, - "y": -34.10499954223633 - }, - { - "x": 261.885009765625, - "y": -27.57699966430664 - }, - { - "x": 262.8349914550781, - "y": -21.023000717163086 - }, - { - "x": 263.614013671875, - "y": -14.444999694824219 - }, - { - "x": 264.2200012207031, - "y": -7.849999904632568 - }, - { - "x": 264.65301513671875, - "y": -1.2400000095367432 - }, - { - "x": 264.9129943847656, - "y": 5.376999855041504 - }, - { - "x": 265, - "y": 12 + "x": 207.62899780273438, + "y": -29.582000732421875 } ], "isCurve": true, @@ -816,248 +668,100 @@ "link": "", "route": [ { - "x": 265, - "y": 12 + "x": 207.62899780273438, + "y": 53.582000732421875 }, { - "x": 264.9129943847656, - "y": 18.621999740600586 + "x": 205.18499755859375, + "y": 63.76300048828125 }, { - "x": 264.65301513671875, - "y": 25.239999771118164 + "x": 202.21099853515625, + "y": 73.8030014038086 }, { - "x": 264.2200012207031, - "y": 31.850000381469727 + "x": 198.71600341796875, + "y": 83.6729965209961 }, { - "x": 263.614013671875, - "y": 38.44499969482422 + "x": 194.70899963378906, + "y": 93.34700012207031 }, { - "x": 262.8349914550781, - "y": 45.02299880981445 + "x": 190.2010040283203, + "y": 102.7979965209961 }, { - "x": 261.885009765625, - "y": 51.57699966430664 + "x": 185.2050018310547, + "y": 111.9990005493164 }, { - "x": 260.76300048828125, - "y": 58.10499954223633 + "x": 179.73399353027344, + "y": 120.927001953125 }, { - "x": 259.47100830078125, - "y": 64.60099792480469 + "x": 173.80299377441406, + "y": 129.5570068359375 }, { - "x": 258.0090026855469, - "y": 71.06099700927734 + "x": 167.4290008544922, + "y": 137.86399841308594 }, { - "x": 256.3789978027344, - "y": 77.48100280761719 + "x": 160.6280059814453, + "y": 145.8260040283203 }, { - "x": 254.58099365234375, - "y": 83.8550033569336 + "x": 153.42100524902344, + "y": 153.42100524902344 }, { - "x": 252.61700439453125, - "y": 90.18099975585938 + "x": 145.8260040283203, + "y": 160.6280059814453 }, { - "x": 250.48800659179688, - "y": 96.4530029296875 + "x": 137.86399841308594, + "y": 167.4290008544922 }, { - "x": 248.19500732421875, - "y": 102.66699981689453 + "x": 129.5570068359375, + "y": 173.80299377441406 }, { - "x": 245.74099731445312, - "y": 108.81800079345703 + "x": 120.927001953125, + "y": 179.73399353027344 }, { - "x": 243.1269989013672, - "y": 114.90399932861328 + "x": 112, + "y": 185.2050018310547 }, { - "x": 240.35400390625, - "y": 120.91899871826172 + "x": 102.7979965209961, + "y": 190.2010040283203 }, { - "x": 237.4239959716797, - "y": 126.85900115966797 + "x": 93.34700012207031, + "y": 194.70899963378906 }, { - "x": 234.33999633789062, - "y": 132.7209930419922 + "x": 83.6729965209961, + "y": 198.71600341796875 }, { - "x": 231.10400390625, - "y": 138.5 + "x": 73.8030014038086, + "y": 202.21099853515625 }, { - "x": 227.7169952392578, - "y": 144.19200134277344 + "x": 63.76300048828125, + "y": 205.18499755859375 }, { - "x": 224.18299865722656, - "y": 149.79299926757812 + "x": 53.582000732421875, + "y": 207.62899780273438 }, { - "x": 220.5030059814453, - "y": 155.3000030517578 - }, - { - "x": 216.68099975585938, - "y": 160.70899963378906 - }, - { - "x": 212.71800231933594, - "y": 166.01600646972656 - }, - { - "x": 208.61700439453125, - "y": 171.21800231933594 - }, - { - "x": 204.3820037841797, - "y": 176.30999755859375 - }, - { - "x": 200.01499938964844, - "y": 181.2899932861328 - }, - { - "x": 195.5189971923828, - "y": 186.1529998779297 - }, - { - "x": 190.8979949951172, - "y": 190.8979949951172 - }, - { - "x": 186.1529998779297, - "y": 195.5189971923828 - }, - { - "x": 181.2899932861328, - "y": 200.01499938964844 - }, - { - "x": 176.30999755859375, - "y": 204.3820037841797 - }, - { - "x": 171.21800231933594, - "y": 208.61700439453125 - }, - { - "x": 166.01600646972656, - "y": 212.71800231933594 - }, - { - "x": 160.70899963378906, - "y": 216.68099975585938 - }, - { - "x": 155.3000030517578, - "y": 220.5030059814453 - }, - { - "x": 149.79299926757812, - "y": 224.18299865722656 - }, - { - "x": 144.19200134277344, - "y": 227.7169952392578 - }, - { - "x": 138.5, - "y": 231.10400390625 - }, - { - "x": 132.7209930419922, - "y": 234.33999633789062 - }, - { - "x": 126.85900115966797, - "y": 237.4239959716797 - }, - { - "x": 120.91899871826172, - "y": 240.35400390625 - }, - { - "x": 114.90399932861328, - "y": 243.1269989013672 - }, - { - "x": 108.81800079345703, - "y": 245.74099731445312 - }, - { - "x": 102.66699981689453, - "y": 248.19500732421875 - }, - { - "x": 96.4530029296875, - "y": 250.48800659179688 - }, - { - "x": 90.18099975585938, - "y": 252.61700439453125 - }, - { - "x": 83.8550033569336, - "y": 254.58099365234375 - }, - { - "x": 77.48100280761719, - "y": 256.3789978027344 - }, - { - "x": 71.06099700927734, - "y": 258.0090026855469 - }, - { - "x": 64.60099792480469, - "y": 259.47100830078125 - }, - { - "x": 58.10499954223633, - "y": 260.76300048828125 - }, - { - "x": 51.57699966430664, - "y": 261.885009765625 - }, - { - "x": 45.02299880981445, - "y": 262.8349914550781 - }, - { - "x": 38.44499969482422, - "y": 263.614013671875 - }, - { - "x": 31.850000381469727, - "y": 264.2200012207031 - }, - { - "x": 25.239999771118164, - "y": 264.65301513671875 - }, - { - "x": 18.621999740600586, - "y": 264.9129943847656 - }, - { - "x": 12, - "y": 265 + "x": 43.2859992980957, + "y": 209.53700256347656 } ], "isCurve": true, @@ -1092,248 +796,100 @@ "link": "", "route": [ { - "x": 12, - "y": 265 + "x": -19.285999298095703, + "y": 209.53700256347656 }, { - "x": 5.376999855041504, - "y": 264.9129943847656 + "x": -29.582000732421875, + "y": 207.62899780273438 }, { - "x": -1.2400000095367432, - "y": 264.65301513671875 + "x": -39.76300048828125, + "y": 205.18499755859375 }, { - "x": -7.849999904632568, - "y": 264.2200012207031 + "x": -49.803001403808594, + "y": 202.21099853515625 }, { - "x": -14.444999694824219, - "y": 263.614013671875 + "x": -59.67300033569336, + "y": 198.71600341796875 }, { - "x": -21.023000717163086, - "y": 262.8349914550781 + "x": -69.34700012207031, + "y": 194.70899963378906 }, { - "x": -27.57699966430664, - "y": 261.885009765625 + "x": -78.7979965209961, + "y": 190.2010040283203 }, { - "x": -34.10499954223633, - "y": 260.76300048828125 + "x": -87.9990005493164, + "y": 185.2050018310547 }, { - "x": -40.60100173950195, - "y": 259.47100830078125 + "x": -96.927001953125, + "y": 179.73399353027344 }, { - "x": -47.06100082397461, - "y": 258.0090026855469 + "x": -105.55699920654297, + "y": 173.80299377441406 }, { - "x": -53.48099899291992, - "y": 256.3789978027344 + "x": -113.86399841308594, + "y": 167.4290008544922 }, { - "x": -59.85499954223633, - "y": 254.58099365234375 + "x": -121.82599639892578, + "y": 160.6280059814453 }, { - "x": -66.18099975585938, - "y": 252.61700439453125 + "x": -129.42100524902344, + "y": 153.42100524902344 }, { - "x": -72.4530029296875, - "y": 250.48800659179688 + "x": -136.6280059814453, + "y": 145.8260040283203 }, { - "x": -78.66699981689453, - "y": 248.19500732421875 + "x": -143.4290008544922, + "y": 137.86399841308594 }, { - "x": -84.81800079345703, - "y": 245.74099731445312 + "x": -149.80299377441406, + "y": 129.5570068359375 }, { - "x": -90.90399932861328, - "y": 243.1269989013672 + "x": -155.73399353027344, + "y": 120.927001953125 }, { - "x": -96.91899871826172, - "y": 240.35400390625 + "x": -161.2050018310547, + "y": 112 }, { - "x": -102.85900115966797, - "y": 237.4239959716797 + "x": -166.2010040283203, + "y": 102.7979965209961 }, { - "x": -108.72100067138672, - "y": 234.33999633789062 + "x": -170.70899963378906, + "y": 93.34700012207031 }, { - "x": -114.4990005493164, - "y": 231.10400390625 + "x": -174.71600341796875, + "y": 83.6729965209961 }, { - "x": -120.19200134277344, - "y": 227.7169952392578 + "x": -178.21099853515625, + "y": 73.8030014038086 }, { - "x": -125.79299926757812, - "y": 224.18299865722656 + "x": -181.18499755859375, + "y": 63.76300048828125 }, { - "x": -131.3000030517578, - "y": 220.5030059814453 - }, - { - "x": -136.70899963378906, - "y": 216.68099975585938 - }, - { - "x": -142.01600646972656, - "y": 212.71800231933594 - }, - { - "x": -147.21800231933594, - "y": 208.61700439453125 - }, - { - "x": -152.30999755859375, - "y": 204.3820037841797 - }, - { - "x": -157.2899932861328, - "y": 200.01499938964844 - }, - { - "x": -162.1529998779297, - "y": 195.5189971923828 - }, - { - "x": -166.8979949951172, - "y": 190.8979949951172 - }, - { - "x": -171.5189971923828, - "y": 186.1529998779297 - }, - { - "x": -176.01499938964844, - "y": 181.2899932861328 - }, - { - "x": -180.3820037841797, - "y": 176.30999755859375 - }, - { - "x": -184.61700439453125, - "y": 171.21800231933594 - }, - { - "x": -188.71800231933594, - "y": 166.01600646972656 - }, - { - "x": -192.68099975585938, - "y": 160.70899963378906 - }, - { - "x": -196.5030059814453, - "y": 155.3000030517578 - }, - { - "x": -200.18299865722656, - "y": 149.79299926757812 - }, - { - "x": -203.7169952392578, - "y": 144.19200134277344 - }, - { - "x": -207.10400390625, - "y": 138.5 - }, - { - "x": -210.33999633789062, - "y": 132.7209930419922 - }, - { - "x": -213.4239959716797, - "y": 126.85900115966797 - }, - { - "x": -216.35400390625, - "y": 120.91899871826172 - }, - { - "x": -219.1269989013672, - "y": 114.90399932861328 - }, - { - "x": -221.74099731445312, - "y": 108.81800079345703 - }, - { - "x": -224.19500732421875, - "y": 102.66699981689453 - }, - { - "x": -226.48800659179688, - "y": 96.4530029296875 - }, - { - "x": -228.61700439453125, - "y": 90.18099975585938 - }, - { - "x": -230.58099365234375, - "y": 83.8550033569336 - }, - { - "x": -232.37899780273438, - "y": 77.48100280761719 - }, - { - "x": -234.00900268554688, - "y": 71.06099700927734 - }, - { - "x": -235.4709930419922, - "y": 64.60099792480469 - }, - { - "x": -236.76300048828125, - "y": 58.10499954223633 - }, - { - "x": -237.88499450683594, - "y": 51.57699966430664 - }, - { - "x": -238.8350067138672, - "y": 45.02299880981445 - }, - { - "x": -239.61399841308594, - "y": 38.44499969482422 - }, - { - "x": -240.22000122070312, - "y": 31.850000381469727 - }, - { - "x": -240.6529998779297, - "y": 25.239999771118164 - }, - { - "x": -240.91299438476562, - "y": 18.621999740600586 - }, - { - "x": -241, - "y": 12 + "x": -183.62899780273438, + "y": 53.582000732421875 } ], "isCurve": true, @@ -1368,248 +924,108 @@ "link": "", "route": [ { - "x": 485.5, - "y": -191 + "x": 513.333984375, + "y": -136.05299377441406 }, { - "x": 494.3290100097656, - "y": -190.84500122070312 + "x": 527.0819702148438, + "y": -133.62899780273438 }, { - "x": 503.14801025390625, - "y": -190.38299560546875 + "x": 540.6270141601562, + "y": -130.2519989013672 }, { - "x": 511.94500732421875, - "y": -189.61399841308594 + "x": 553.9039916992188, + "y": -125.93800354003906 }, { - "x": 520.7100219726562, - "y": -188.53700256347656 + "x": 566.8469848632812, + "y": -120.70899963378906 }, { - "x": 529.4320068359375, - "y": -187.156005859375 + "x": 579.3939819335938, + "y": -114.58899688720703 }, { - "x": 538.1010131835938, - "y": -185.4709930419922 + "x": 591.4829711914062, + "y": -107.60900115966797 }, { - "x": 546.7059936523438, - "y": -183.48399353027344 + "x": 603.0570068359375, + "y": -99.8030014038086 }, { - "x": 555.2360229492188, - "y": -181.19900512695312 + "x": 614.0570068359375, + "y": -91.20800018310547 }, { - "x": 563.6810302734375, - "y": -178.61700439453125 + "x": 624.4310302734375, + "y": -81.86699676513672 }, { - "x": 572.031005859375, - "y": -175.74200439453125 + "x": 634.1279907226562, + "y": -71.82599639892578 }, { - "x": 580.2750244140625, - "y": -172.57699584960938 + "x": 643.1019897460938, + "y": -61.13199996948242 }, { - "x": 588.4039916992188, - "y": -169.1269989013672 + "x": 651.3070068359375, + "y": -49.8380012512207 }, { - "x": 596.406982421875, - "y": -165.3939971923828 + "x": 658.7050170898438, + "y": -38 }, { - "x": 604.2760009765625, - "y": -161.38499450683594 + "x": 665.2579956054688, + "y": -25.673999786376953 }, { - "x": 612, - "y": -157.10400390625 + "x": 670.9359741210938, + "y": -12.920999526977539 }, { - "x": 619.5689697265625, - "y": -152.55599975585938 + "x": 675.7109985351562, + "y": 0.19599999487400055 }, { - "x": 626.9749755859375, - "y": -147.74600219726562 + "x": 679.5590209960938, + "y": 13.614999771118164 }, { - "x": 634.208984375, - "y": -142.68099975585938 + "x": 682.4609985351562, + "y": 27.270000457763672 }, { - "x": 641.2620239257812, - "y": -137.36599731445312 + "x": 684.4039916992188, + "y": 41.09400177001953 }, { - "x": 648.125, - "y": -131.8090057373047 + "x": 685.3779907226562, + "y": 55.02000045776367 }, { - "x": 654.7899780273438, - "y": -126.01499938964844 + "x": 685.3779907226562, + "y": 68.97899627685547 }, { - "x": 661.2479858398438, - "y": -119.99199676513672 + "x": 684.4039916992188, + "y": 82.90499877929688 }, { - "x": 667.4920043945312, - "y": -113.74800109863281 + "x": 682.4609985351562, + "y": 96.72899627685547 }, { - "x": 673.5150146484375, - "y": -107.29000091552734 + "x": 679.5590209960938, + "y": 110.38400268554688 }, { - "x": 679.3090209960938, - "y": -100.625 - }, - { - "x": 684.8660278320312, - "y": -93.76200103759766 - }, - { - "x": 690.1810302734375, - "y": -86.70899963378906 - }, - { - "x": 695.2459716796875, - "y": -79.4749984741211 - }, - { - "x": 700.0560302734375, - "y": -72.06900024414062 - }, - { - "x": 704.60400390625, - "y": -64.5 - }, - { - "x": 708.885009765625, - "y": -56.7760009765625 - }, - { - "x": 712.8939819335938, - "y": -48.90700149536133 - }, - { - "x": 716.6270141601562, - "y": -40.90399932861328 - }, - { - "x": 720.0770263671875, - "y": -32.775001525878906 - }, - { - "x": 723.2420043945312, - "y": -24.5310001373291 - }, - { - "x": 726.1170043945312, - "y": -16.180999755859375 - }, - { - "x": 728.698974609375, - "y": -7.736000061035156 - }, - { - "x": 730.9840087890625, - "y": 0.7929999828338623 - }, - { - "x": 732.9710083007812, - "y": 9.39799976348877 - }, - { - "x": 734.656005859375, - "y": 18.066999435424805 - }, - { - "x": 736.0369873046875, - "y": 26.788999557495117 - }, - { - "x": 737.114013671875, - "y": 35.55400085449219 - }, - { - "x": 737.8829956054688, - "y": 44.35100173950195 - }, - { - "x": 738.344970703125, - "y": 53.16999816894531 - }, - { - "x": 738.5, - "y": 61.999000549316406 - }, - { - "x": 738.344970703125, - "y": 70.8290023803711 - }, - { - "x": 737.8829956054688, - "y": 79.64800262451172 - }, - { - "x": 737.114013671875, - "y": 88.44499969482422 - }, - { - "x": 736.0369873046875, - "y": 97.20999908447266 - }, - { - "x": 734.656005859375, - "y": 105.93199920654297 - }, - { - "x": 732.9710083007812, - "y": 114.60099792480469 - }, - { - "x": 730.9840087890625, - "y": 123.20600128173828 - }, - { - "x": 728.698974609375, - "y": 131.73599243164062 - }, - { - "x": 726.1170043945312, - "y": 140.18099975585938 - }, - { - "x": 723.2420043945312, - "y": 148.531005859375 - }, - { - "x": 720.0770263671875, - "y": 156.77499389648438 - }, - { - "x": 716.6270141601562, - "y": 164.9040069580078 - }, - { - "x": 712.8939819335938, - "y": 172.90699768066406 - }, - { - "x": 708.885009765625, - "y": 180.7760009765625 - }, - { - "x": 704.60400390625, - "y": 188.49899291992188 + "x": 675.7109985351562, + "y": 123.8030014038086 } ], "isCurve": true, @@ -1644,248 +1060,104 @@ "link": "", "route": [ { - "x": 704.60400390625, - "y": 188.49899291992188 + "x": 634.1279907226562, + "y": 195.8260040283203 }, { - "x": 700.0560302734375, - "y": 196.06900024414062 + "x": 624.4310302734375, + "y": 205.86700439453125 }, { - "x": 695.2459716796875, - "y": 203.47500610351562 + "x": 614.0570068359375, + "y": 215.20799255371094 }, { - "x": 690.1810302734375, - "y": 210.70899963378906 + "x": 603.0570068359375, + "y": 223.80299377441406 }, { - "x": 684.8660278320312, - "y": 217.76199340820312 + "x": 591.4829711914062, + "y": 231.60899353027344 }, { - "x": 679.3090209960938, - "y": 224.625 + "x": 579.3939819335938, + "y": 238.58900451660156 }, { - "x": 673.5150146484375, - "y": 231.2899932861328 + "x": 566.8469848632812, + "y": 244.70899963378906 }, { - "x": 667.4920043945312, - "y": 237.7480010986328 + "x": 553.9039916992188, + "y": 249.93800354003906 }, { - "x": 661.2479858398438, - "y": 243.99200439453125 + "x": 540.6270141601562, + "y": 254.2519989013672 }, { - "x": 654.7899780273438, - "y": 250.01499938964844 + "x": 527.0819702148438, + "y": 257.6289978027344 }, { - "x": 648.125, - "y": 255.8090057373047 + "x": 513.333984375, + "y": 260.0530090332031 }, { - "x": 641.2620239257812, - "y": 261.3659973144531 - }, - { - "x": 634.208984375, - "y": 266.6809997558594 - }, - { - "x": 626.9749755859375, - "y": 271.7460021972656 - }, - { - "x": 619.5689697265625, - "y": 276.5559997558594 - }, - { - "x": 612, - "y": 281.10400390625 - }, - { - "x": 604.2760009765625, - "y": 285.385009765625 - }, - { - "x": 596.406982421875, - "y": 289.3940124511719 - }, - { - "x": 588.4039916992188, - "y": 293.12701416015625 - }, - { - "x": 580.2750244140625, - "y": 296.5769958496094 - }, - { - "x": 572.031005859375, - "y": 299.74200439453125 - }, - { - "x": 563.6810302734375, - "y": 302.61700439453125 - }, - { - "x": 555.2360229492188, - "y": 305.1990051269531 - }, - { - "x": 546.7059936523438, - "y": 307.4840087890625 - }, - { - "x": 538.1010131835938, - "y": 309.47100830078125 - }, - { - "x": 529.4320068359375, - "y": 311.156005859375 - }, - { - "x": 520.7100219726562, - "y": 312.5369873046875 - }, - { - "x": 511.94500732421875, - "y": 313.614013671875 - }, - { - "x": 503.14801025390625, - "y": 314.38299560546875 - }, - { - "x": 494.3290100097656, - "y": 314.8450012207031 + "x": 499.45098876953125, + "y": 261.5119934082031 }, { "x": 485.5, - "y": 315 + "y": 262 }, { - "x": 476.6700134277344, - "y": 314.8450012207031 + "x": 471.5480041503906, + "y": 261.5119934082031 }, { - "x": 467.85101318359375, - "y": 314.38299560546875 + "x": 457.6650085449219, + "y": 260.0530090332031 }, { - "x": 459.0539855957031, - "y": 313.614013671875 + "x": 443.9169921875, + "y": 257.6289978027344 }, { - "x": 450.28900146484375, - "y": 312.5369873046875 + "x": 430.37200927734375, + "y": 254.2519989013672 }, { - "x": 441.5669860839844, - "y": 311.156005859375 + "x": 417.0950012207031, + "y": 249.93800354003906 }, { - "x": 432.89801025390625, - "y": 309.47100830078125 + "x": 404.1520080566406, + "y": 244.70899963378906 }, { - "x": 424.2929992675781, - "y": 307.4840087890625 + "x": 391.6050109863281, + "y": 238.58900451660156 }, { - "x": 415.76300048828125, - "y": 305.1990051269531 + "x": 379.5159912109375, + "y": 231.60899353027344 }, { - "x": 407.3179931640625, - "y": 302.61700439453125 + "x": 367.9419860839844, + "y": 223.80299377441406 }, { - "x": 398.9679870605469, - "y": 299.74200439453125 + "x": 356.9419860839844, + "y": 215.20799255371094 }, { - "x": 390.7239990234375, - "y": 296.5769958496094 + "x": 346.5679931640625, + "y": 205.86700439453125 }, { - "x": 382.5950012207031, - "y": 293.12701416015625 - }, - { - "x": 374.5920104980469, - "y": 289.3940124511719 - }, - { - "x": 366.7229919433594, - "y": 285.385009765625 - }, - { - "x": 359, - "y": 281.10400390625 - }, - { - "x": 351.42999267578125, - "y": 276.5559997558594 - }, - { - "x": 344.02398681640625, - "y": 271.7460021972656 - }, - { - "x": 336.7900085449219, - "y": 266.6809997558594 - }, - { - "x": 329.73699951171875, - "y": 261.3659973144531 - }, - { - "x": 322.8739929199219, - "y": 255.8090057373047 - }, - { - "x": 316.2090148925781, - "y": 250.01499938964844 - }, - { - "x": 309.7510070800781, - "y": 243.99200439453125 - }, - { - "x": 303.5069885253906, - "y": 237.7480010986328 - }, - { - "x": 297.4840087890625, - "y": 231.2899932861328 - }, - { - "x": 291.69000244140625, - "y": 224.625 - }, - { - "x": 286.13299560546875, - "y": 217.76199340820312 - }, - { - "x": 280.8179931640625, - "y": 210.70899963378906 - }, - { - "x": 275.75299072265625, - "y": 203.47500610351562 - }, - { - "x": 270.9429931640625, - "y": 196.06900024414062 - }, - { - "x": 266.3949890136719, - "y": 188.5 + "x": 336.8710021972656, + "y": 195.8260040283203 } ], "isCurve": true, @@ -1920,248 +1192,112 @@ "link": "", "route": [ { - "x": 904.9099731445312, - "y": -241 + "x": 946.4920043945312, + "y": -183.62899780273438 }, { - "x": 918.1510009765625, - "y": -240.6529998779297 + "x": 966.7130126953125, + "y": -178.21099853515625 }, { - "x": 931.35498046875, - "y": -239.61399841308594 + "x": 986.2570190429688, + "y": -170.70899963378906 }, { - "x": 944.4879760742188, - "y": -237.88499450683594 + "x": 1004.9099731445312, + "y": -161.2050018310547 }, { - "x": 957.510986328125, - "y": -235.4709930419922 + "x": 1022.4669799804688, + "y": -149.80299377441406 }, { - "x": 970.3909912109375, - "y": -232.37899780273438 + "x": 1038.7359619140625, + "y": -136.6280059814453 }, { - "x": 983.0910034179688, - "y": -228.61700439453125 + "x": 1053.5389404296875, + "y": -121.82599639892578 }, { - "x": 995.5770263671875, - "y": -224.19500732421875 + "x": 1066.7130126953125, + "y": -105.55699920654297 }, { - "x": 1007.8140258789062, - "y": -219.1269989013672 + "x": 1078.114990234375, + "y": -88 }, { - "x": 1019.7689819335938, - "y": -213.4239959716797 + "x": 1087.6190185546875, + "y": -69.34700012207031 }, { - "x": 1031.4100341796875, - "y": -207.10400390625 + "x": 1095.1209716796875, + "y": -49.803001403808594 }, { - "x": 1042.7030029296875, - "y": -200.18299865722656 + "x": 1100.5389404296875, + "y": -29.582000732421875 }, { - "x": 1053.6190185546875, - "y": -192.68099975585938 + "x": 1103.81396484375, + "y": -8.904999732971191 }, { - "x": 1064.1280517578125, - "y": -184.61700439453125 - }, - { - "x": 1074.199951171875, - "y": -176.01499938964844 - }, - { - "x": 1083.8079833984375, - "y": -166.8979949951172 - }, - { - "x": 1092.925048828125, - "y": -157.2899932861328 - }, - { - "x": 1101.5279541015625, - "y": -147.21800231933594 - }, - { - "x": 1109.5909423828125, - "y": -136.70899963378906 - }, - { - "x": 1117.093017578125, - "y": -125.79299926757812 - }, - { - "x": 1124.0140380859375, - "y": -114.5 - }, - { - "x": 1130.333984375, - "y": -102.85900115966797 - }, - { - "x": 1136.0369873046875, - "y": -90.90399932861328 - }, - { - "x": 1141.10595703125, - "y": -78.66699981689453 - }, - { - "x": 1145.5269775390625, - "y": -66.18099975585938 - }, - { - "x": 1149.2889404296875, - "y": -53.48099899291992 - }, - { - "x": 1152.3809814453125, - "y": -40.60100173950195 - }, - { - "x": 1154.7950439453125, - "y": -27.57699966430664 - }, - { - "x": 1156.5240478515625, - "y": -14.444999694824219 - }, - { - "x": 1157.56298828125, - "y": -1.2400000095367432 - }, - { - "x": 1157.9100341796875, + "x": 1104.9100341796875, "y": 12 }, { - "x": 1157.56298828125, - "y": 25.239999771118164 + "x": 1103.81396484375, + "y": 32.904998779296875 }, { - "x": 1156.5240478515625, - "y": 38.44499969482422 + "x": 1100.5389404296875, + "y": 53.582000732421875 }, { - "x": 1154.7950439453125, - "y": 51.57699966430664 + "x": 1095.1209716796875, + "y": 73.8030014038086 }, { - "x": 1152.3809814453125, - "y": 64.60099792480469 + "x": 1087.6190185546875, + "y": 93.34700012207031 }, { - "x": 1149.2889404296875, - "y": 77.48100280761719 + "x": 1078.114990234375, + "y": 111.9990005493164 }, { - "x": 1145.5269775390625, - "y": 90.18099975585938 + "x": 1066.7130126953125, + "y": 129.5570068359375 }, { - "x": 1141.10595703125, - "y": 102.66699981689453 + "x": 1053.5389404296875, + "y": 145.8260040283203 }, { - "x": 1136.0369873046875, - "y": 114.90399932861328 + "x": 1038.7359619140625, + "y": 160.6280059814453 }, { - "x": 1130.333984375, - "y": 126.85900115966797 + "x": 1022.4669799804688, + "y": 173.80299377441406 }, { - "x": 1124.0140380859375, - "y": 138.49899291992188 + "x": 1004.9099731445312, + "y": 185.2050018310547 }, { - "x": 1117.093017578125, - "y": 149.79299926757812 + "x": 986.2570190429688, + "y": 194.70899963378906 }, { - "x": 1109.5909423828125, - "y": 160.70899963378906 + "x": 966.7130126953125, + "y": 202.21099853515625 }, { - "x": 1101.5279541015625, - "y": 171.21800231933594 - }, - { - "x": 1092.925048828125, - "y": 181.2899932861328 - }, - { - "x": 1083.8079833984375, - "y": 190.8979949951172 - }, - { - "x": 1074.199951171875, - "y": 200.01499938964844 - }, - { - "x": 1064.1280517578125, - "y": 208.61700439453125 - }, - { - "x": 1053.6190185546875, - "y": 216.68099975585938 - }, - { - "x": 1042.7030029296875, - "y": 224.18299865722656 - }, - { - "x": 1031.4100341796875, - "y": 231.10400390625 - }, - { - "x": 1019.7689819335938, - "y": 237.4239959716797 - }, - { - "x": 1007.8140258789062, - "y": 243.1269989013672 - }, - { - "x": 995.5770263671875, - "y": 248.19500732421875 - }, - { - "x": 983.0910034179688, - "y": 252.61700439453125 - }, - { - "x": 970.3909912109375, - "y": 256.3789978027344 - }, - { - "x": 957.510986328125, - "y": 259.47100830078125 - }, - { - "x": 944.4879760742188, - "y": 261.885009765625 - }, - { - "x": 931.35498046875, - "y": 263.614013671875 - }, - { - "x": 918.1510009765625, - "y": 264.65301513671875 - }, - { - "x": 904.9099731445312, - "y": 265 + "x": 946.4920043945312, + "y": 207.62899780273438 } ], "isCurve": true, diff --git a/e2etests/testdata/txtar/cycle-diagram/elk/sketch.exp.svg b/e2etests/testdata/txtar/cycle-diagram/elk/sketch.exp.svg index 89895e2c3..f5afaee6a 100644 --- a/e2etests/testdata/txtar/cycle-diagram/elk/sketch.exp.svg +++ b/e2etests/testdata/txtar/cycle-diagram/elk/sketch.exp.svg @@ -1,9 +1,9 @@ -abcdabcab - + .d2-2409080064 .fill-N1{fill:#0A0F25;} + .d2-2409080064 .fill-N2{fill:#676C7E;} + .d2-2409080064 .fill-N3{fill:#9499AB;} + .d2-2409080064 .fill-N4{fill:#CFD2DD;} + .d2-2409080064 .fill-N5{fill:#DEE1EB;} + .d2-2409080064 .fill-N6{fill:#EEF1F8;} + .d2-2409080064 .fill-N7{fill:#FFFFFF;} + .d2-2409080064 .fill-B1{fill:#0D32B2;} + .d2-2409080064 .fill-B2{fill:#0D32B2;} + .d2-2409080064 .fill-B3{fill:#E3E9FD;} + .d2-2409080064 .fill-B4{fill:#E3E9FD;} + .d2-2409080064 .fill-B5{fill:#EDF0FD;} + .d2-2409080064 .fill-B6{fill:#F7F8FE;} + .d2-2409080064 .fill-AA2{fill:#4A6FF3;} + .d2-2409080064 .fill-AA4{fill:#EDF0FD;} + .d2-2409080064 .fill-AA5{fill:#F7F8FE;} + .d2-2409080064 .fill-AB4{fill:#EDF0FD;} + .d2-2409080064 .fill-AB5{fill:#F7F8FE;} + .d2-2409080064 .stroke-N1{stroke:#0A0F25;} + .d2-2409080064 .stroke-N2{stroke:#676C7E;} + .d2-2409080064 .stroke-N3{stroke:#9499AB;} + .d2-2409080064 .stroke-N4{stroke:#CFD2DD;} + .d2-2409080064 .stroke-N5{stroke:#DEE1EB;} + .d2-2409080064 .stroke-N6{stroke:#EEF1F8;} + .d2-2409080064 .stroke-N7{stroke:#FFFFFF;} + .d2-2409080064 .stroke-B1{stroke:#0D32B2;} + .d2-2409080064 .stroke-B2{stroke:#0D32B2;} + .d2-2409080064 .stroke-B3{stroke:#E3E9FD;} + .d2-2409080064 .stroke-B4{stroke:#E3E9FD;} + .d2-2409080064 .stroke-B5{stroke:#EDF0FD;} + .d2-2409080064 .stroke-B6{stroke:#F7F8FE;} + .d2-2409080064 .stroke-AA2{stroke:#4A6FF3;} + .d2-2409080064 .stroke-AA4{stroke:#EDF0FD;} + .d2-2409080064 .stroke-AA5{stroke:#F7F8FE;} + .d2-2409080064 .stroke-AB4{stroke:#EDF0FD;} + .d2-2409080064 .stroke-AB5{stroke:#F7F8FE;} + .d2-2409080064 .background-color-N1{background-color:#0A0F25;} + .d2-2409080064 .background-color-N2{background-color:#676C7E;} + .d2-2409080064 .background-color-N3{background-color:#9499AB;} + .d2-2409080064 .background-color-N4{background-color:#CFD2DD;} + .d2-2409080064 .background-color-N5{background-color:#DEE1EB;} + .d2-2409080064 .background-color-N6{background-color:#EEF1F8;} + .d2-2409080064 .background-color-N7{background-color:#FFFFFF;} + .d2-2409080064 .background-color-B1{background-color:#0D32B2;} + .d2-2409080064 .background-color-B2{background-color:#0D32B2;} + .d2-2409080064 .background-color-B3{background-color:#E3E9FD;} + .d2-2409080064 .background-color-B4{background-color:#E3E9FD;} + .d2-2409080064 .background-color-B5{background-color:#EDF0FD;} + .d2-2409080064 .background-color-B6{background-color:#F7F8FE;} + .d2-2409080064 .background-color-AA2{background-color:#4A6FF3;} + .d2-2409080064 .background-color-AA4{background-color:#EDF0FD;} + .d2-2409080064 .background-color-AA5{background-color:#F7F8FE;} + .d2-2409080064 .background-color-AB4{background-color:#EDF0FD;} + .d2-2409080064 .background-color-AB5{background-color:#F7F8FE;} + .d2-2409080064 .color-N1{color:#0A0F25;} + .d2-2409080064 .color-N2{color:#676C7E;} + .d2-2409080064 .color-N3{color:#9499AB;} + .d2-2409080064 .color-N4{color:#CFD2DD;} + .d2-2409080064 .color-N5{color:#DEE1EB;} + .d2-2409080064 .color-N6{color:#EEF1F8;} + .d2-2409080064 .color-N7{color:#FFFFFF;} + .d2-2409080064 .color-B1{color:#0D32B2;} + .d2-2409080064 .color-B2{color:#0D32B2;} + .d2-2409080064 .color-B3{color:#E3E9FD;} + .d2-2409080064 .color-B4{color:#E3E9FD;} + .d2-2409080064 .color-B5{color:#EDF0FD;} + .d2-2409080064 .color-B6{color:#F7F8FE;} + .d2-2409080064 .color-AA2{color:#4A6FF3;} + .d2-2409080064 .color-AA4{color:#EDF0FD;} + .d2-2409080064 .color-AA5{color:#F7F8FE;} + .d2-2409080064 .color-AB4{color:#EDF0FD;} + .d2-2409080064 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2409080064);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2409080064);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2409080064);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2409080064);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2409080064);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2409080064);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2409080064);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2409080064);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]>abcdabcab +