├── .gitignore ├── LICENSE ├── README.md ├── package.json ├── rollup.config.js ├── src ├── absolutize.js ├── index.js ├── parse.js └── reduce.js ├── test ├── input │ ├── fourier-normalized.json │ └── fourier.json ├── output │ ├── fourier-normalized.json │ └── fourier.json └── parse-test.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | *.sublime-workspace 2 | .DS_Store 3 | dist/ 4 | node_modules 5 | npm-debug.log 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Mike Bostock 2 | Copyright 2015 Jarosław Foksa (jarek-foksa/path-data-polyfill) 3 | Copyright 2015 The Chromium Authors (progers/pathseg) 4 | Copyright 2014 Tadahisa Motooka (motooka/SVGPathNormalizer) 5 | Copyright 2008-2011 Dmitry Baranovskiy (DmitryBaranovskiy/raphael) 6 | Copyright 2008-2011 Sencha Labs (DmitryBaranovskiy/raphael) 7 | 8 | Permission to use, copy, modify, and/or distribute this software for any purpose 9 | with or without fee is hereby granted, provided that the above copyright notice 10 | and this permission notice appear in all copies. 11 | 12 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 13 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 14 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 15 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 16 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 17 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 18 | THIS SOFTWARE. 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # path-data 2 | 3 | An SVG path parser and normalizer based on [Jarosław Foksa’s path-data-polyfill](https://github.com/jarek-foksa/path-data-polyfill). 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "path-data", 3 | "version": "0.0.2", 4 | "description": "SVG path data parser", 5 | "keywords": [ 6 | "svg", 7 | "path" 8 | ], 9 | "license": "ISC", 10 | "author": { 11 | "name": "Mike Bostock", 12 | "url": "https://bost.ocks.org/mike" 13 | }, 14 | "homepage": "https://github.com/mbostock/path-data", 15 | "repository": "https://github.com/mbostock/path-data", 16 | "files": [ 17 | "dist/**/*.js", 18 | "src/**/*.js" 19 | ], 20 | "main": "dist/path-data.js", 21 | "unpkg": "dist/path-data.min.js", 22 | "module": "src/index.js", 23 | "devDependencies": { 24 | "esm": "3", 25 | "rollup": "1", 26 | "rollup-plugin-node-resolve": "4", 27 | "rollup-plugin-terser": "4", 28 | "tape": "4", 29 | "tape-await": "0.1" 30 | }, 31 | "scripts": { 32 | "prepublishOnly": "rm -rf dist && rollup -c", 33 | "postpublish": "git push && git push --tags", 34 | "test": "tape -r esm 'test/**/*-test.js'" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import noderesolve from "rollup-plugin-node-resolve"; 2 | import {terser} from "rollup-plugin-terser"; 3 | import * as meta from "./package.json"; 4 | 5 | const config = { 6 | input: "src/index.js", 7 | external: Object.keys(meta.dependencies || {}), 8 | output: { 9 | file: `dist/${meta.name}.js`, 10 | name: meta.name, 11 | format: "umd", 12 | indent: false, 13 | banner: `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`, 14 | globals: { 15 | "d3-dsv": "d3" 16 | } 17 | }, 18 | plugins: [ 19 | noderesolve() 20 | ] 21 | }; 22 | 23 | export default [ 24 | config, 25 | { 26 | ...config, 27 | output: { 28 | ...config.output, 29 | file: `dist/${meta.name}.min.js` 30 | }, 31 | plugins: [ 32 | ...config.plugins, 33 | terser({ 34 | output: { 35 | preamble: config.output.banner 36 | } 37 | }) 38 | ] 39 | } 40 | ]; 41 | -------------------------------------------------------------------------------- /src/absolutize.js: -------------------------------------------------------------------------------- 1 | export default function absolutize(pathData) { 2 | var absolutizedPathData = []; 3 | 4 | var currentX = null; 5 | var currentY = null; 6 | 7 | var subpathX = null; 8 | var subpathY = null; 9 | 10 | pathData.forEach( function(seg) { 11 | var type = seg.type; 12 | 13 | if (type === "M") { 14 | var x = seg.values[0]; 15 | var y = seg.values[1]; 16 | 17 | absolutizedPathData.push({type: "M", values: [x, y]}); 18 | 19 | subpathX = x; 20 | subpathY = y; 21 | 22 | currentX = x; 23 | currentY = y; 24 | } 25 | 26 | else if (type === "m") { 27 | var x = currentX + seg.values[0]; 28 | var y = currentY + seg.values[1]; 29 | 30 | absolutizedPathData.push({type: "M", values: [x, y]}); 31 | 32 | subpathX = x; 33 | subpathY = y; 34 | 35 | currentX = x; 36 | currentY = y; 37 | } 38 | 39 | else if (type === "L") { 40 | var x = seg.values[0]; 41 | var y = seg.values[1]; 42 | 43 | absolutizedPathData.push({type: "L", values: [x, y]}); 44 | 45 | currentX = x; 46 | currentY = y; 47 | } 48 | 49 | else if (type === "l") { 50 | var x = currentX + seg.values[0]; 51 | var y = currentY + seg.values[1]; 52 | 53 | absolutizedPathData.push({type: "L", values: [x, y]}); 54 | 55 | currentX = x; 56 | currentY = y; 57 | } 58 | 59 | else if (type === "C") { 60 | var x1 = seg.values[0]; 61 | var y1 = seg.values[1]; 62 | var x2 = seg.values[2]; 63 | var y2 = seg.values[3]; 64 | var x = seg.values[4]; 65 | var y = seg.values[5]; 66 | 67 | absolutizedPathData.push({type: "C", values: [x1, y1, x2, y2, x, y]}); 68 | 69 | currentX = x; 70 | currentY = y; 71 | } 72 | 73 | else if (type === "c") { 74 | var x1 = currentX + seg.values[0]; 75 | var y1 = currentY + seg.values[1]; 76 | var x2 = currentX + seg.values[2]; 77 | var y2 = currentY + seg.values[3]; 78 | var x = currentX + seg.values[4]; 79 | var y = currentY + seg.values[5]; 80 | 81 | absolutizedPathData.push({type: "C", values: [x1, y1, x2, y2, x, y]}); 82 | 83 | currentX = x; 84 | currentY = y; 85 | } 86 | 87 | else if (type === "Q") { 88 | var x1 = seg.values[0]; 89 | var y1 = seg.values[1]; 90 | var x = seg.values[2]; 91 | var y = seg.values[3]; 92 | 93 | absolutizedPathData.push({type: "Q", values: [x1, y1, x, y]}); 94 | 95 | currentX = x; 96 | currentY = y; 97 | } 98 | 99 | else if (type === "q") { 100 | var x1 = currentX + seg.values[0]; 101 | var y1 = currentY + seg.values[1]; 102 | var x = currentX + seg.values[2]; 103 | var y = currentY + seg.values[3]; 104 | 105 | absolutizedPathData.push({type: "Q", values: [x1, y1, x, y]}); 106 | 107 | currentX = x; 108 | currentY = y; 109 | } 110 | 111 | else if (type === "A") { 112 | var x = seg.values[5]; 113 | var y = seg.values[6]; 114 | 115 | absolutizedPathData.push({ 116 | type: "A", 117 | values: [seg.values[0], seg.values[1], seg.values[2], seg.values[3], seg.values[4], x, y] 118 | }); 119 | 120 | currentX = x; 121 | currentY = y; 122 | } 123 | 124 | else if (type === "a") { 125 | var x = currentX + seg.values[5]; 126 | var y = currentY + seg.values[6]; 127 | 128 | absolutizedPathData.push({ 129 | type: "A", 130 | values: [seg.values[0], seg.values[1], seg.values[2], seg.values[3], seg.values[4], x, y] 131 | }); 132 | 133 | currentX = x; 134 | currentY = y; 135 | } 136 | 137 | else if (type === "H") { 138 | var x = seg.values[0]; 139 | absolutizedPathData.push({type: "H", values: [x]}); 140 | currentX = x; 141 | } 142 | 143 | else if (type === "h") { 144 | var x = currentX + seg.values[0]; 145 | absolutizedPathData.push({type: "H", values: [x]}); 146 | currentX = x; 147 | } 148 | 149 | else if (type === "V") { 150 | var y = seg.values[0]; 151 | absolutizedPathData.push({type: "V", values: [y]}); 152 | currentY = y; 153 | } 154 | 155 | else if (type === "v") { 156 | var y = currentY + seg.values[0]; 157 | absolutizedPathData.push({type: "V", values: [y]}); 158 | currentY = y; 159 | } 160 | 161 | else if (type === "S") { 162 | var x2 = seg.values[0]; 163 | var y2 = seg.values[1]; 164 | var x = seg.values[2]; 165 | var y = seg.values[3]; 166 | 167 | absolutizedPathData.push({type: "S", values: [x2, y2, x, y]}); 168 | 169 | currentX = x; 170 | currentY = y; 171 | } 172 | 173 | else if (type === "s") { 174 | var x2 = currentX + seg.values[0]; 175 | var y2 = currentY + seg.values[1]; 176 | var x = currentX + seg.values[2]; 177 | var y = currentY + seg.values[3]; 178 | 179 | absolutizedPathData.push({type: "S", values: [x2, y2, x, y]}); 180 | 181 | currentX = x; 182 | currentY = y; 183 | } 184 | 185 | else if (type === "T") { 186 | var x = seg.values[0]; 187 | var y = seg.values[1] 188 | 189 | absolutizedPathData.push({type: "T", values: [x, y]}); 190 | 191 | currentX = x; 192 | currentY = y; 193 | } 194 | 195 | else if (type === "t") { 196 | var x = currentX + seg.values[0]; 197 | var y = currentY + seg.values[1] 198 | 199 | absolutizedPathData.push({type: "T", values: [x, y]}); 200 | 201 | currentX = x; 202 | currentY = y; 203 | } 204 | 205 | else if (type === "Z" || type === "z") { 206 | absolutizedPathData.push({type: "Z", values: []}); 207 | 208 | currentX = subpathX; 209 | currentY = subpathY; 210 | } 211 | }); 212 | 213 | return absolutizedPathData; 214 | } 215 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export {default as parse} from "./parse.js"; 2 | -------------------------------------------------------------------------------- /src/parse.js: -------------------------------------------------------------------------------- 1 | import absolutize from "./absolutize.js"; 2 | import reduce from "./reduce.js"; 3 | 4 | const commandsMap = {Z: "Z", M: "M", L: "L", C: "C", Q: "Q", A: "A", H: "H", V: "V", S: "S", T: "T", z: "Z", m: "m", l: "l", c: "c", q: "q", a: "a", h: "h", v: "v", s: "s", t: "t"}; 5 | 6 | export default function parse(string, {normalize = false} = {}) { 7 | if (!(string += "") || string.length === 0) return []; 8 | const pathData = []; 9 | 10 | let currentIndex = 0; 11 | let endIndex = string.length; 12 | let prevCommand = null; 13 | 14 | skipOptionalSpaces(); 15 | 16 | function parseSegment() { 17 | var char = string[currentIndex]; 18 | var command = commandsMap[char] ? commandsMap[char] : null; 19 | 20 | if (command === null) { 21 | // Possibly an implicit command. Not allowed if this is the first command. 22 | if (prevCommand === null) { 23 | return null; 24 | } 25 | 26 | // Check for remaining coordinates in the current command. 27 | if ( 28 | (char === "+" || char === "-" || char === "." || (char >= "0" && char <= "9")) && prevCommand !== "Z" 29 | ) { 30 | if (prevCommand === "M") { 31 | command = "L"; 32 | } 33 | else if (prevCommand === "m") { 34 | command = "l"; 35 | } 36 | else { 37 | command = prevCommand; 38 | } 39 | } 40 | else { 41 | command = null; 42 | } 43 | 44 | if (command === null) { 45 | return null; 46 | } 47 | } 48 | else { 49 | currentIndex += 1; 50 | } 51 | 52 | prevCommand = command; 53 | 54 | var values = null; 55 | var cmd = command.toUpperCase(); 56 | 57 | if (cmd === "H" || cmd === "V") { 58 | values = [parseNumber()]; 59 | } 60 | else if (cmd === "M" || cmd === "L" || cmd === "T") { 61 | values = [parseNumber(), parseNumber()]; 62 | } 63 | else if (cmd === "S" || cmd === "Q") { 64 | values = [parseNumber(), parseNumber(), parseNumber(), parseNumber()]; 65 | } 66 | else if (cmd === "C") { 67 | values = [ 68 | parseNumber(), 69 | parseNumber(), 70 | parseNumber(), 71 | parseNumber(), 72 | parseNumber(), 73 | parseNumber() 74 | ]; 75 | } 76 | else if (cmd === "A") { 77 | values = [ 78 | parseNumber(), 79 | parseNumber(), 80 | parseNumber(), 81 | parseArcFlag(), 82 | parseArcFlag(), 83 | parseNumber(), 84 | parseNumber() 85 | ]; 86 | } 87 | else if (cmd === "Z") { 88 | skipOptionalSpaces(); 89 | values = []; 90 | } 91 | 92 | if (values === null || values.indexOf(null) >= 0) { 93 | // Unknown command or known command with invalid values 94 | return null; 95 | } 96 | else { 97 | return {type: command, values: values}; 98 | } 99 | } 100 | 101 | function hasMoreData() { 102 | return currentIndex < endIndex; 103 | } 104 | 105 | function peekSegmentType() { 106 | var char = string[currentIndex]; 107 | return commandsMap[char] ? commandsMap[char] : null; 108 | } 109 | 110 | function initialCommandIsMoveTo() { 111 | // If the path is empty it is still valid, so return true. 112 | if (!hasMoreData()) { 113 | return true; 114 | } 115 | 116 | var command = peekSegmentType(); 117 | // Path must start with moveTo. 118 | return command === "M" || command === "m"; 119 | } 120 | 121 | function isCurrentSpace() { 122 | var char = string[currentIndex]; 123 | return char <= " " && (char === " " || char === "\n" || char === "\t" || char === "\r" || char === "\f"); 124 | } 125 | 126 | function skipOptionalSpaces() { 127 | while (currentIndex < endIndex && isCurrentSpace()) { 128 | currentIndex += 1; 129 | } 130 | 131 | return currentIndex < endIndex; 132 | } 133 | 134 | function skipOptionalSpacesOrDelimiter() { 135 | if ( 136 | currentIndex < endIndex && 137 | !isCurrentSpace() && 138 | string[currentIndex] !== "," 139 | ) { 140 | return false; 141 | } 142 | 143 | if (skipOptionalSpaces()) { 144 | if (currentIndex < endIndex && string[currentIndex] === ",") { 145 | currentIndex += 1; 146 | skipOptionalSpaces(); 147 | } 148 | } 149 | return currentIndex < endIndex; 150 | } 151 | 152 | // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from 153 | // Source/core/svg/SVGParserUtilities.cpp. 154 | // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF 155 | function parseNumber() { 156 | var exponent = 0; 157 | var integer = 0; 158 | var frac = 1; 159 | var decimal = 0; 160 | var sign = 1; 161 | var expsign = 1; 162 | var startIndex = currentIndex; 163 | 164 | skipOptionalSpaces(); 165 | 166 | // Read the sign. 167 | if (currentIndex < endIndex && string[currentIndex] === "+") { 168 | currentIndex += 1; 169 | } 170 | else if (currentIndex < endIndex && string[currentIndex] === "-") { 171 | currentIndex += 1; 172 | sign = -1; 173 | } 174 | 175 | if ( 176 | currentIndex === endIndex || 177 | ( 178 | (string[currentIndex] < "0" || string[currentIndex] > "9") && 179 | string[currentIndex] !== "." 180 | ) 181 | ) { 182 | // The first character of a number must be one of [0-9+-.]. 183 | return null; 184 | } 185 | 186 | // Read the integer part, build right-to-left. 187 | var startIntPartIndex = currentIndex; 188 | 189 | while ( 190 | currentIndex < endIndex && 191 | string[currentIndex] >= "0" && 192 | string[currentIndex] <= "9" 193 | ) { 194 | currentIndex += 1; // Advance to first non-digit. 195 | } 196 | 197 | if (currentIndex !== startIntPartIndex) { 198 | var scanIntPartIndex = currentIndex - 1; 199 | var multiplier = 1; 200 | 201 | while (scanIntPartIndex >= startIntPartIndex) { 202 | integer += multiplier * (string[scanIntPartIndex] - "0"); 203 | scanIntPartIndex -= 1; 204 | multiplier *= 10; 205 | } 206 | } 207 | 208 | // Read the decimals. 209 | if (currentIndex < endIndex && string[currentIndex] === ".") { 210 | currentIndex += 1; 211 | 212 | // There must be a least one digit following the . 213 | if ( 214 | currentIndex >= endIndex || 215 | string[currentIndex] < "0" || 216 | string[currentIndex] > "9" 217 | ) { 218 | return null; 219 | } 220 | 221 | while ( 222 | currentIndex < endIndex && 223 | string[currentIndex] >= "0" && 224 | string[currentIndex] <= "9" 225 | ) { 226 | frac *= 10; 227 | decimal += (string.charAt(currentIndex) - "0") / frac; 228 | currentIndex += 1; 229 | } 230 | } 231 | 232 | // Read the exponent part. 233 | if ( 234 | currentIndex !== startIndex && 235 | currentIndex + 1 < endIndex && 236 | (string[currentIndex] === "e" || string[currentIndex] === "E") && 237 | (string[currentIndex + 1] !== "x" && string[currentIndex + 1] !== "m") 238 | ) { 239 | currentIndex += 1; 240 | 241 | // Read the sign of the exponent. 242 | if (string[currentIndex] === "+") { 243 | currentIndex += 1; 244 | } 245 | else if (string[currentIndex] === "-") { 246 | currentIndex += 1; 247 | expsign = -1; 248 | } 249 | 250 | // There must be an exponent. 251 | if ( 252 | currentIndex >= endIndex || 253 | string[currentIndex] < "0" || 254 | string[currentIndex] > "9" 255 | ) { 256 | return null; 257 | } 258 | 259 | while ( 260 | currentIndex < endIndex && 261 | string[currentIndex] >= "0" && 262 | string[currentIndex] <= "9" 263 | ) { 264 | exponent *= 10; 265 | exponent += (string[currentIndex] - "0"); 266 | currentIndex += 1; 267 | } 268 | } 269 | 270 | var number = integer + decimal; 271 | number *= sign; 272 | 273 | if (exponent) { 274 | number *= Math.pow(10, expsign * exponent); 275 | } 276 | 277 | if (startIndex === currentIndex) { 278 | return null; 279 | } 280 | 281 | skipOptionalSpacesOrDelimiter(); 282 | 283 | return number; 284 | } 285 | 286 | function parseArcFlag() { 287 | if (currentIndex >= endIndex) { 288 | return null; 289 | } 290 | 291 | var flag = null; 292 | var flagChar = string[currentIndex]; 293 | 294 | currentIndex += 1; 295 | 296 | if (flagChar === "0") { 297 | flag = 0; 298 | } 299 | else if (flagChar === "1") { 300 | flag = 1; 301 | } 302 | else { 303 | return null; 304 | } 305 | 306 | skipOptionalSpacesOrDelimiter(); 307 | return flag; 308 | } 309 | 310 | if (initialCommandIsMoveTo()) { 311 | while (hasMoreData()) { 312 | const pathSeg = parseSegment(); 313 | if (pathSeg === null) break; 314 | pathData.push(pathSeg); 315 | } 316 | } 317 | 318 | return normalize ? reduce(absolutize(pathData)) : pathData; 319 | } 320 | -------------------------------------------------------------------------------- /src/reduce.js: -------------------------------------------------------------------------------- 1 | export default function(pathData) { 2 | var reducedPathData = []; 3 | var lastType = null; 4 | 5 | var lastControlX = null; 6 | var lastControlY = null; 7 | 8 | var currentX = null; 9 | var currentY = null; 10 | 11 | var subpathX = null; 12 | var subpathY = null; 13 | 14 | pathData.forEach( function(seg) { 15 | if (seg.type === "M") { 16 | var x = seg.values[0]; 17 | var y = seg.values[1]; 18 | 19 | reducedPathData.push({type: "M", values: [x, y]}); 20 | 21 | subpathX = x; 22 | subpathY = y; 23 | 24 | currentX = x; 25 | currentY = y; 26 | } 27 | 28 | else if (seg.type === "C") { 29 | var x1 = seg.values[0]; 30 | var y1 = seg.values[1]; 31 | var x2 = seg.values[2]; 32 | var y2 = seg.values[3]; 33 | var x = seg.values[4]; 34 | var y = seg.values[5]; 35 | 36 | reducedPathData.push({type: "C", values: [x1, y1, x2, y2, x, y]}); 37 | 38 | lastControlX = x2; 39 | lastControlY = y2; 40 | 41 | currentX = x; 42 | currentY = y; 43 | } 44 | 45 | else if (seg.type === "L") { 46 | var x = seg.values[0]; 47 | var y = seg.values[1]; 48 | 49 | reducedPathData.push({type: "L", values: [x, y]}); 50 | 51 | currentX = x; 52 | currentY = y; 53 | } 54 | 55 | else if (seg.type === "H") { 56 | var x = seg.values[0]; 57 | 58 | reducedPathData.push({type: "L", values: [x, currentY]}); 59 | 60 | currentX = x; 61 | } 62 | 63 | else if (seg.type === "V") { 64 | var y = seg.values[0]; 65 | 66 | reducedPathData.push({type: "L", values: [currentX, y]}); 67 | 68 | currentY = y; 69 | } 70 | 71 | else if (seg.type === "S") { 72 | var x2 = seg.values[0]; 73 | var y2 = seg.values[1]; 74 | var x = seg.values[2]; 75 | var y = seg.values[3]; 76 | 77 | var cx1, cy1; 78 | 79 | if (lastType === "C" || lastType === "S") { 80 | cx1 = currentX + (currentX - lastControlX); 81 | cy1 = currentY + (currentY - lastControlY); 82 | } 83 | else { 84 | cx1 = currentX; 85 | cy1 = currentY; 86 | } 87 | 88 | reducedPathData.push({type: "C", values: [cx1, cy1, x2, y2, x, y]}); 89 | 90 | lastControlX = x2; 91 | lastControlY = y2; 92 | 93 | currentX = x; 94 | currentY = y; 95 | } 96 | 97 | else if (seg.type === "T") { 98 | var x = seg.values[0]; 99 | var y = seg.values[1]; 100 | 101 | var x1, y1; 102 | 103 | if (lastType === "Q" || lastType === "T") { 104 | x1 = currentX + (currentX - lastControlX); 105 | y1 = currentY + (currentY - lastControlY); 106 | } 107 | else { 108 | x1 = currentX; 109 | y1 = currentY; 110 | } 111 | 112 | var cx1 = currentX + 2 * (x1 - currentX) / 3; 113 | var cy1 = currentY + 2 * (y1 - currentY) / 3; 114 | var cx2 = x + 2 * (x1 - x) / 3; 115 | var cy2 = y + 2 * (y1 - y) / 3; 116 | 117 | reducedPathData.push({type: "C", values: [cx1, cy1, cx2, cy2, x, y]}); 118 | 119 | lastControlX = x1; 120 | lastControlY = y1; 121 | 122 | currentX = x; 123 | currentY = y; 124 | } 125 | 126 | else if (seg.type === "Q") { 127 | var x1 = seg.values[0]; 128 | var y1 = seg.values[1]; 129 | var x = seg.values[2]; 130 | var y = seg.values[3]; 131 | 132 | var cx1 = currentX + 2 * (x1 - currentX) / 3; 133 | var cy1 = currentY + 2 * (y1 - currentY) / 3; 134 | var cx2 = x + 2 * (x1 - x) / 3; 135 | var cy2 = y + 2 * (y1 - y) / 3; 136 | 137 | reducedPathData.push({type: "C", values: [cx1, cy1, cx2, cy2, x, y]}); 138 | 139 | lastControlX = x1; 140 | lastControlY = y1; 141 | 142 | currentX = x; 143 | currentY = y; 144 | } 145 | 146 | else if (seg.type === "A") { 147 | var r1 = Math.abs(seg.values[0]); 148 | var r2 = Math.abs(seg.values[1]); 149 | var angle = seg.values[2]; 150 | var largeArcFlag = seg.values[3]; 151 | var sweepFlag = seg.values[4]; 152 | var x = seg.values[5]; 153 | var y = seg.values[6]; 154 | 155 | if (r1 === 0 || r2 === 0) { 156 | reducedPathData.push({type: "C", values: [currentX, currentY, x, y, x, y]}); 157 | 158 | currentX = x; 159 | currentY = y; 160 | } 161 | else { 162 | if (currentX !== x || currentY !== y) { 163 | var curves = arcToCubicCurves(currentX, currentY, x, y, r1, r2, angle, largeArcFlag, sweepFlag); 164 | 165 | curves.forEach( function(curve) { 166 | reducedPathData.push({type: "C", values: curve}); 167 | }); 168 | 169 | currentX = x; 170 | currentY = y; 171 | } 172 | } 173 | } 174 | 175 | else if (seg.type === "Z") { 176 | reducedPathData.push(seg); 177 | 178 | currentX = subpathX; 179 | currentY = subpathY; 180 | } 181 | 182 | lastType = seg.type; 183 | }); 184 | 185 | return reducedPathData; 186 | } 187 | 188 | function degToRad(degrees) { 189 | return (Math.PI * degrees) / 180; 190 | } 191 | 192 | function rotate(x, y, angleRad) { 193 | var X = x * Math.cos(angleRad) - y * Math.sin(angleRad); 194 | var Y = x * Math.sin(angleRad) + y * Math.cos(angleRad); 195 | return {x: X, y: Y}; 196 | } 197 | 198 | function arcToCubicCurves(x1, y1, x2, y2, r1, r2, angle, largeArcFlag, sweepFlag, _recursive) { 199 | 200 | var angleRad = degToRad(angle); 201 | var params = []; 202 | var f1, f2, cx, cy; 203 | 204 | if (_recursive) { 205 | f1 = _recursive[0]; 206 | f2 = _recursive[1]; 207 | cx = _recursive[2]; 208 | cy = _recursive[3]; 209 | } 210 | else { 211 | var p1 = rotate(x1, y1, -angleRad); 212 | x1 = p1.x; 213 | y1 = p1.y; 214 | 215 | var p2 = rotate(x2, y2, -angleRad); 216 | x2 = p2.x; 217 | y2 = p2.y; 218 | 219 | var x = (x1 - x2) / 2; 220 | var y = (y1 - y2) / 2; 221 | var h = (x * x) / (r1 * r1) + (y * y) / (r2 * r2); 222 | 223 | if (h > 1) { 224 | h = Math.sqrt(h); 225 | r1 = h * r1; 226 | r2 = h * r2; 227 | } 228 | 229 | var sign; 230 | 231 | if (largeArcFlag === sweepFlag) { 232 | sign = -1; 233 | } 234 | else { 235 | sign = 1; 236 | } 237 | 238 | var r1Pow = r1 * r1; 239 | var r2Pow = r2 * r2; 240 | 241 | var left = r1Pow * r2Pow - r1Pow * y * y - r2Pow * x * x; 242 | var right = r1Pow * y * y + r2Pow * x * x; 243 | 244 | var k = sign * Math.sqrt(Math.abs(left/right)); 245 | 246 | cx = k * r1 * y / r2 + (x1 + x2) / 2; 247 | cy = k * -r2 * x / r1 + (y1 + y2) / 2; 248 | 249 | f1 = Math.asin(parseFloat(((y1 - cy) / r2).toFixed(9))); 250 | f2 = Math.asin(parseFloat(((y2 - cy) / r2).toFixed(9))); 251 | 252 | if (x1 < cx) { 253 | f1 = Math.PI - f1; 254 | } 255 | if (x2 < cx) { 256 | f2 = Math.PI - f2; 257 | } 258 | 259 | if (f1 < 0) { 260 | f1 = Math.PI * 2 + f1; 261 | } 262 | if (f2 < 0) { 263 | f2 = Math.PI * 2 + f2; 264 | } 265 | 266 | if (sweepFlag && f1 > f2) { 267 | f1 = f1 - Math.PI * 2; 268 | } 269 | if (!sweepFlag && f2 > f1) { 270 | f2 = f2 - Math.PI * 2; 271 | } 272 | } 273 | 274 | var df = f2 - f1; 275 | 276 | if (Math.abs(df) > (Math.PI * 120 / 180)) { 277 | var f2old = f2; 278 | var x2old = x2; 279 | var y2old = y2; 280 | 281 | if (sweepFlag && f2 > f1) { 282 | f2 = f1 + (Math.PI * 120 / 180) * (1); 283 | } 284 | else { 285 | f2 = f1 + (Math.PI * 120 / 180) * (-1); 286 | } 287 | 288 | x2 = cx + r1 * Math.cos(f2); 289 | y2 = cy + r2 * Math.sin(f2); 290 | params = arcToCubicCurves(x2, y2, x2old, y2old, r1, r2, angle, 0, sweepFlag, [f2, f2old, cx, cy]); 291 | } 292 | 293 | df = f2 - f1; 294 | 295 | var c1 = Math.cos(f1); 296 | var s1 = Math.sin(f1); 297 | var c2 = Math.cos(f2); 298 | var s2 = Math.sin(f2); 299 | var t = Math.tan(df / 4); 300 | var hx = 4 / 3 * r1 * t; 301 | var hy = 4 / 3 * r2 * t; 302 | 303 | var m1 = [x1, y1]; 304 | var m2 = [x1 + hx * s1, y1 - hy * c1]; 305 | var m3 = [x2 + hx * s2, y2 - hy * c2]; 306 | var m4 = [x2, y2]; 307 | 308 | m2[0] = 2 * m1[0] - m2[0]; 309 | m2[1] = 2 * m1[1] - m2[1]; 310 | 311 | if (_recursive) { 312 | return [m2, m3, m4].concat(params); 313 | } 314 | else { 315 | params = [m2, m3, m4].concat(params); 316 | 317 | var curves = []; 318 | 319 | for (var i = 0; i < params.length; i+=3) { 320 | var r1 = rotate(params[i][0], params[i][1], angleRad); 321 | var r2 = rotate(params[i+1][0], params[i+1][1], angleRad); 322 | var r3 = rotate(params[i+2][0], params[i+2][1], angleRad); 323 | curves.push([r1.x, r1.y, r2.x, r2.y, r3.x, r3.y]); 324 | } 325 | 326 | return curves; 327 | } 328 | } 329 | -------------------------------------------------------------------------------- /test/input/fourier-normalized.json: -------------------------------------------------------------------------------- 1 | {"path": "M978.141,416.063c7.732-7.25,21.793,1.315,26.098,1.45 c14.066,0.442,28.632-1.293,34.314-0.725c9.666,0.966,32.381,0.725,39.147-3.142c0,0-2.9-0.967-6.767-1.45 c-3.866-0.483-6.766-2.9-12.565-2.9c-3.057,0-12.083,3.383-14.016,3.383c-1.934,0-8.216-3.866-15.949-2.9 c-7.732,0.967-13.049,5.286-16.915,5.286l-5.8,2.93c6.766,5.8,18.365,12.566,31.897,11.599c13.532-0.966,13.049,0,27.064-8.216 c14.017-8.216,18.366-12.566,16.433,1.45c-1.933,14.016,8.699-11.116,8.699-11.116s2.741-9.988,0-22.715 c-1.931-8.964-15.466-16.432-19.332-20.298c0,0-11.437-31.415-13.532-42.531c-1.291-6.849,12.083,2.417,19.332,6.766 c7.25,4.35,26.099-7.249,30.448-10.149s-3.384-9.666-9.253-9.753c-3.54,2.867-7.693,5.403-15.396,5.403 c-10.633,0-28.031-5.8-28.031-5.8c0.483-9.504-5.958-26.259,4.995-35.281c16.264-13.397,25.36-15.109,37.535-10.149 c4.35,1.771,22.393,25.615,22.393,25.615s-9.668,12.888-12.889,11.599c-3.221-1.288-16.109-14.821-21.909-14.821 s-23.198,2.577-25.132,6.443c-1.934,3.867-5.154,15.466-2.577,12.244s7.733-6.444,7.733-6.444c0.819,2.97,3.605,6.928,7.249,6.928 c4.271,0,7.733-3.029,7.733-6.766c0-1.413-0.497-2.722-1.343-3.806c0.463-0.04,0.91-0.061,1.343-0.061 c6.766,0,22.231,11.599,22.231,11.599s26.581,8.7,26.581,18.366c0,9.666,0.643,23.356,0.643,23.356s30.931,2.577,33.508-15.466 s-12.887-43.82-5.154-43.82c7.733,0,22.557-21.261,22.557-21.261s-7.732,6.444-25.135,8.374 c7.732-2.578,18.044-25.776,18.044-36.086c0-10.31,5.154-15.466-18.044-25.776c15.465-7.733,15.465-38.664-2.577-61.862 c-18.043-23.199-25.775-7.733-25.775-7.733s9.024-25.127-7.085-41.237c-15.678-15.679-31.579-10.314-31.579-10.314 s3.227-19.972-17.396-27.705c-20.621-7.733-39.953,18.043-35.443,7.732c5.166-11.808-14.176-36.086-14.176-36.086 s2.577,18.043-10.31,28.998c-18.526,15.749-33.514-14.182-56.712-16.76c-23.198-2.578-30.931,12.889-30.931,12.889 s-5.434-9.285-25.126-1.285c-20.622,8.377-19.978,23.198-19.978,23.198s-14.174-1.932-32.219,10.956 c-18.045,12.888-15.472,36.726-15.472,36.726s-13.022,5.827-23.198,23.198c-10.95,18.692-5.154,48.974-5.154,48.974 s-12.889,10.311-15.466,25.776c-2.577,15.466,15.466,33.509,15.466,33.509s-12.889,5.155-15.466,12.888 c-2.577,7.733,0,28.354,20.62,43.819c-7.732,12.888,0,28.354,5.156,38.664c5.156,10.31,25.775,15.466,25.775,15.466 s12.889,20.621,2.579,23.198c-10.31,2.577-23.199,7.734-23.199,25.777s-15.465,69.595-20.621,90.216 c-20.622,5.155-28.353,28.354-28.353,28.354s2.577,10.31-12.889,15.465c-15.465,5.156-56.707,43.818-64.439,54.13 c-7.732,10.312-43.82,33.509-56.708,51.551c-12.889,18.045-53.11,87.379-54.13,136.613c-1.125,54.294-4.029,128.715-2.577,134.035 c1.452,5.319,25.777,7.736,43.822,12.892c18.044,5.156,76.041,29.643,101.816,34.798c25.775,5.156,68.306,25.777,81.194,24.488 c12.889-1.29,11.6-41.243,11.6-48.976c0-7.733-6.443-37.377-7.733-50.264s-2.577-36.087,0-50.263 c2.577-14.177,10.312-37.373,9.022-47.685c-1.289-10.312-16.576-35.107-14.178-33.51c34.797,23.198,14.178,94.083,14.178,108.259 c0,14.177,6.443,68.308,1.288,106.972s5.156,27.064,27.065,34.798c21.909,7.732,70.885,5.153,118.57,9.021 c47.687,3.866,112.124,2.739,131.456-6.283c0-11.6,2.901-29.803,1.934-42.53c-0.969-12.729-3.221-58.155-3.221-60.733 c0-2.579-12.887-1.29-12.887-1.29s-4.648,12.185-9.022,15.466c-7.732,5.8-28.354,5.154-31.577,0s-9.664-23.196,0.646-32.219 c10.311-9.022,23.056-9.347,28.353-1.934c6.445,9.021,21.266,8.377,21.266,8.377s-4.511-27.712-7.087-37.376 c-2.577-9.664-16.754-43.816-18.043-48.973c-1.289-5.155-6.445-29.644-9.022-33.51s-12.889-2.579-16.755-1.289 c-3.866,1.289-1.752,9.707-10.31,16.755c-10.956,9.022-28.062-0.977-30.288-5.8c-3.866-8.376,0-28.998,14.177-30.287 c14.176-1.29,17.398-0.644,19.978,7.089s14.176-1.936,14.176-4.512c0-2.577-15.465-37.377-21.908-50.264 s-19.332-45.109-27.065-54.13c-7.732-9.021-15.466-2.577-15.466-2.577s1.934,16.756-5.799,26.422 c-3.601,4.498-25.929,11.886-30.288-0.646c-5.156-14.819-6.443-25.775,7.733-30.931c14.176-5.154,18.688,3.866,25.131-3.866 c5.219-6.261,9.666-9.666,3.223-21.909c-1.2-2.282,0.002-9.022-10.31-11.6s-19.332-18.042-22.554-33.508 c-2.904-13.937-21.263-60.574-27.708-70.885s-3.867-28.353-7.733-30.931c-3.867-2.578-28.356-18.043-45.109-25.776 c-16.753-7.733-28.353-19.331-33.508-32.22s-6.443-18.044,0-24.488c0,0,25.773,22.554,28.351,28.998s48.976,38.664,52.842,43.819 c3.867,5.155,11.6,23.199,11.602,26.421c0,0,25.775,29.643,32.219,37.375c6.443,7.733,11.76,34.638,19.492,51.391 s21.75,25.938,34.637,22.071s56.547-6.285,66.856-11.438c10.31-5.154,4.833-25.132,2.899-53.163 c-1.795-26.034,11.439-43.658,15.306-55.257l10.312-11.599c13.047,4.027,26.58,9.826,27.064,47.685 c0.149,11.599,18.043,61.863,19.332,72.173c1.29,10.311,1.29,27.063,3.867,29.643c2.576,2.578,32.219,28.354,37.374,28.354 c1.29,20.622,2.577,42.528,3.866,60.573s7.894,68.146,2.737,79.744c-5.155,11.6-19.49,24.648-23.356,37.537 c-3.867,12.889-21.909,50.264-27.064,57.996c-5.156,7.733-17.883,9.506-18.045,15.466s10.312,10.31,10.312,27.064 s1.288,42.53,1.288,50.264c0,7.732,2.254,24.648,2.254,31.092c0,0,67.986-7.57,89.894-19.332s64.763-57.996,64.763-57.996 c12.889-9.021,40.275-25.937,38.986-37.535c-2.122-19.093-6.334-101.612-7.089-108.422c-1.288-11.599-18.687-68.146-27.709-72.012 s-56.706-100.526-61.86-105.681c-5.154-5.155-48.976-24.487-55.419-27.064c-6.443-2.579-27.064-92.794-27.064-95.372 c0,0-47.041-31.575-48.33-36.086c-1.29-4.511,13.853-98.754,11.599-100.526c-5.477,40.759-21.91,112.771-58.646,131.454 c-18.042,7.733-51.547,14.825-95.366-13.528c-43.82-28.354-67.017-36.731-82.482-47.042c-15.465-10.311-16.111-26.42-16.111-34.153 c-14.178-1.289-16.749-6.44-21.265-16.11c-6.983-14.954-16.753-18.688-21.909-34.153c-5.156-15.466-5.16-38.024,10.306-30.292 c15.466,7.733,20.625,12.893,28.358,30.936c7.732,18.043,9.658-1.289,9.666-19.332c0.003-8.374,1.289-10.956,5.799-14.822 s43.495-10.149,43.495-10.149c10.149-13.532,27.548-25.131,43.014-25.131c15.465,0,26.581,11.116,28.031,15.465 c1.449,4.35-4.673,13.694-8.699,15.466c-3.957,1.741-9.666,5.799-23.199,6.766c-13.532,0.967-23.198-1.933-30.931-1.933 c6.285-8.86,12.226-11.388,18.094-14.975l0.271,0.476c0,4.271,3.895,7.733,8.699,7.733s8.7-3.462,8.7-7.733 c0-1.068-0.244-2.084-0.684-3.009l1.584-0.213c6.027,0.915,11.665,3.223,16.498,6.123c4.833,2.899,12.405,2.738,14.338-3.062 c1.934-5.799-1.772-12.87-1.772-24.487c0-7.25,3.384-11.277,2.417-14.177c-0.967-2.899-19.336-3.552-32.864-3.222 c-19.815,0.483-37.214,8.216-47.847,14.016l-35.281,27.548c0-10.311,11.597-33.834-1.292-38.99s-18.042-28.354-15.465-36.087 c15.465,7.733,39.957,14.825,46.4,9.67c6.443-5.155-28.354-5.8-30.931-26.42c-2.577-20.62,18.635,12.244,34.154,12.244 c17.399,0-23.198-17.399-13.532-27.709c6.417-6.845,22.229-25.132,22.229-25.132s-1.608,35.441,28.034,30.287 c29.641-5.155,47.686-21.91,51.552-27.065c18.045-1.289,15.468,3.867,29.644,11.599c14.177,7.733,24.488,36.086,18.045,46.397 l10.313-24.487c5.155-11.599,7.742,27.065,21.918,33.509c14.177,6.443,27.08,3.866,27.08,3.866 c1.288,7.088,3.894,36.087,4.539,42.53c-10.954-15.465-11.579-20.943-20.399-26.259c-8.82-5.316-32.019-5.8-40.476-1.934 c-8.458,3.867-16.19,19.332-16.19,27.065c0,0-1.934,6.283,0,10.633c1.933,4.35,9.609,34.934,11.277,39.47 c3.144,8.539,10.471,24.325,11.438,30.125c0.967,5.799,4.028,16.271-3.867,19.332c-9.707,3.762-8.699,1.933-4.832-4.833 c3.866-6.767-2.37-7.766-5.316-1.45c-3.384,7.25-11.116,11.599-15.949,7.733s0.967-10.149,0-12.083s-14.499-2.9-15.466,3.866 c-0.967,6.767-10.251,5.259-13.532-0.966c-4.671-8.861,6.285-16.271,6.285-21.104c-7.733,5.8-18.332,11.868-27.709,21.909 c-13.691,14.66-20.815,42.976-19.979,45.108C968.151,426.212,970.407,423.312,978.141,416.063z", "options": {"normalize": true}} 2 | -------------------------------------------------------------------------------- /test/input/fourier.json: -------------------------------------------------------------------------------- 1 | {"path": "M978.141,416.063c7.732-7.25,21.793,1.315,26.098,1.45 c14.066,0.442,28.632-1.293,34.314-0.725c9.666,0.966,32.381,0.725,39.147-3.142c0,0-2.9-0.967-6.767-1.45 c-3.866-0.483-6.766-2.9-12.565-2.9c-3.057,0-12.083,3.383-14.016,3.383c-1.934,0-8.216-3.866-15.949-2.9 c-7.732,0.967-13.049,5.286-16.915,5.286l-5.8,2.93c6.766,5.8,18.365,12.566,31.897,11.599c13.532-0.966,13.049,0,27.064-8.216 c14.017-8.216,18.366-12.566,16.433,1.45c-1.933,14.016,8.699-11.116,8.699-11.116s2.741-9.988,0-22.715 c-1.931-8.964-15.466-16.432-19.332-20.298c0,0-11.437-31.415-13.532-42.531c-1.291-6.849,12.083,2.417,19.332,6.766 c7.25,4.35,26.099-7.249,30.448-10.149s-3.384-9.666-9.253-9.753c-3.54,2.867-7.693,5.403-15.396,5.403 c-10.633,0-28.031-5.8-28.031-5.8c0.483-9.504-5.958-26.259,4.995-35.281c16.264-13.397,25.36-15.109,37.535-10.149 c4.35,1.771,22.393,25.615,22.393,25.615s-9.668,12.888-12.889,11.599c-3.221-1.288-16.109-14.821-21.909-14.821 s-23.198,2.577-25.132,6.443c-1.934,3.867-5.154,15.466-2.577,12.244s7.733-6.444,7.733-6.444c0.819,2.97,3.605,6.928,7.249,6.928 c4.271,0,7.733-3.029,7.733-6.766c0-1.413-0.497-2.722-1.343-3.806c0.463-0.04,0.91-0.061,1.343-0.061 c6.766,0,22.231,11.599,22.231,11.599s26.581,8.7,26.581,18.366c0,9.666,0.643,23.356,0.643,23.356s30.931,2.577,33.508-15.466 s-12.887-43.82-5.154-43.82c7.733,0,22.557-21.261,22.557-21.261s-7.732,6.444-25.135,8.374 c7.732-2.578,18.044-25.776,18.044-36.086c0-10.31,5.154-15.466-18.044-25.776c15.465-7.733,15.465-38.664-2.577-61.862 c-18.043-23.199-25.775-7.733-25.775-7.733s9.024-25.127-7.085-41.237c-15.678-15.679-31.579-10.314-31.579-10.314 s3.227-19.972-17.396-27.705c-20.621-7.733-39.953,18.043-35.443,7.732c5.166-11.808-14.176-36.086-14.176-36.086 s2.577,18.043-10.31,28.998c-18.526,15.749-33.514-14.182-56.712-16.76c-23.198-2.578-30.931,12.889-30.931,12.889 s-5.434-9.285-25.126-1.285c-20.622,8.377-19.978,23.198-19.978,23.198s-14.174-1.932-32.219,10.956 c-18.045,12.888-15.472,36.726-15.472,36.726s-13.022,5.827-23.198,23.198c-10.95,18.692-5.154,48.974-5.154,48.974 s-12.889,10.311-15.466,25.776c-2.577,15.466,15.466,33.509,15.466,33.509s-12.889,5.155-15.466,12.888 c-2.577,7.733,0,28.354,20.62,43.819c-7.732,12.888,0,28.354,5.156,38.664c5.156,10.31,25.775,15.466,25.775,15.466 s12.889,20.621,2.579,23.198c-10.31,2.577-23.199,7.734-23.199,25.777s-15.465,69.595-20.621,90.216 c-20.622,5.155-28.353,28.354-28.353,28.354s2.577,10.31-12.889,15.465c-15.465,5.156-56.707,43.818-64.439,54.13 c-7.732,10.312-43.82,33.509-56.708,51.551c-12.889,18.045-53.11,87.379-54.13,136.613c-1.125,54.294-4.029,128.715-2.577,134.035 c1.452,5.319,25.777,7.736,43.822,12.892c18.044,5.156,76.041,29.643,101.816,34.798c25.775,5.156,68.306,25.777,81.194,24.488 c12.889-1.29,11.6-41.243,11.6-48.976c0-7.733-6.443-37.377-7.733-50.264s-2.577-36.087,0-50.263 c2.577-14.177,10.312-37.373,9.022-47.685c-1.289-10.312-16.576-35.107-14.178-33.51c34.797,23.198,14.178,94.083,14.178,108.259 c0,14.177,6.443,68.308,1.288,106.972s5.156,27.064,27.065,34.798c21.909,7.732,70.885,5.153,118.57,9.021 c47.687,3.866,112.124,2.739,131.456-6.283c0-11.6,2.901-29.803,1.934-42.53c-0.969-12.729-3.221-58.155-3.221-60.733 c0-2.579-12.887-1.29-12.887-1.29s-4.648,12.185-9.022,15.466c-7.732,5.8-28.354,5.154-31.577,0s-9.664-23.196,0.646-32.219 c10.311-9.022,23.056-9.347,28.353-1.934c6.445,9.021,21.266,8.377,21.266,8.377s-4.511-27.712-7.087-37.376 c-2.577-9.664-16.754-43.816-18.043-48.973c-1.289-5.155-6.445-29.644-9.022-33.51s-12.889-2.579-16.755-1.289 c-3.866,1.289-1.752,9.707-10.31,16.755c-10.956,9.022-28.062-0.977-30.288-5.8c-3.866-8.376,0-28.998,14.177-30.287 c14.176-1.29,17.398-0.644,19.978,7.089s14.176-1.936,14.176-4.512c0-2.577-15.465-37.377-21.908-50.264 s-19.332-45.109-27.065-54.13c-7.732-9.021-15.466-2.577-15.466-2.577s1.934,16.756-5.799,26.422 c-3.601,4.498-25.929,11.886-30.288-0.646c-5.156-14.819-6.443-25.775,7.733-30.931c14.176-5.154,18.688,3.866,25.131-3.866 c5.219-6.261,9.666-9.666,3.223-21.909c-1.2-2.282,0.002-9.022-10.31-11.6s-19.332-18.042-22.554-33.508 c-2.904-13.937-21.263-60.574-27.708-70.885s-3.867-28.353-7.733-30.931c-3.867-2.578-28.356-18.043-45.109-25.776 c-16.753-7.733-28.353-19.331-33.508-32.22s-6.443-18.044,0-24.488c0,0,25.773,22.554,28.351,28.998s48.976,38.664,52.842,43.819 c3.867,5.155,11.6,23.199,11.602,26.421c0,0,25.775,29.643,32.219,37.375c6.443,7.733,11.76,34.638,19.492,51.391 s21.75,25.938,34.637,22.071s56.547-6.285,66.856-11.438c10.31-5.154,4.833-25.132,2.899-53.163 c-1.795-26.034,11.439-43.658,15.306-55.257l10.312-11.599c13.047,4.027,26.58,9.826,27.064,47.685 c0.149,11.599,18.043,61.863,19.332,72.173c1.29,10.311,1.29,27.063,3.867,29.643c2.576,2.578,32.219,28.354,37.374,28.354 c1.29,20.622,2.577,42.528,3.866,60.573s7.894,68.146,2.737,79.744c-5.155,11.6-19.49,24.648-23.356,37.537 c-3.867,12.889-21.909,50.264-27.064,57.996c-5.156,7.733-17.883,9.506-18.045,15.466s10.312,10.31,10.312,27.064 s1.288,42.53,1.288,50.264c0,7.732,2.254,24.648,2.254,31.092c0,0,67.986-7.57,89.894-19.332s64.763-57.996,64.763-57.996 c12.889-9.021,40.275-25.937,38.986-37.535c-2.122-19.093-6.334-101.612-7.089-108.422c-1.288-11.599-18.687-68.146-27.709-72.012 s-56.706-100.526-61.86-105.681c-5.154-5.155-48.976-24.487-55.419-27.064c-6.443-2.579-27.064-92.794-27.064-95.372 c0,0-47.041-31.575-48.33-36.086c-1.29-4.511,13.853-98.754,11.599-100.526c-5.477,40.759-21.91,112.771-58.646,131.454 c-18.042,7.733-51.547,14.825-95.366-13.528c-43.82-28.354-67.017-36.731-82.482-47.042c-15.465-10.311-16.111-26.42-16.111-34.153 c-14.178-1.289-16.749-6.44-21.265-16.11c-6.983-14.954-16.753-18.688-21.909-34.153c-5.156-15.466-5.16-38.024,10.306-30.292 c15.466,7.733,20.625,12.893,28.358,30.936c7.732,18.043,9.658-1.289,9.666-19.332c0.003-8.374,1.289-10.956,5.799-14.822 s43.495-10.149,43.495-10.149c10.149-13.532,27.548-25.131,43.014-25.131c15.465,0,26.581,11.116,28.031,15.465 c1.449,4.35-4.673,13.694-8.699,15.466c-3.957,1.741-9.666,5.799-23.199,6.766c-13.532,0.967-23.198-1.933-30.931-1.933 c6.285-8.86,12.226-11.388,18.094-14.975l0.271,0.476c0,4.271,3.895,7.733,8.699,7.733s8.7-3.462,8.7-7.733 c0-1.068-0.244-2.084-0.684-3.009l1.584-0.213c6.027,0.915,11.665,3.223,16.498,6.123c4.833,2.899,12.405,2.738,14.338-3.062 c1.934-5.799-1.772-12.87-1.772-24.487c0-7.25,3.384-11.277,2.417-14.177c-0.967-2.899-19.336-3.552-32.864-3.222 c-19.815,0.483-37.214,8.216-47.847,14.016l-35.281,27.548c0-10.311,11.597-33.834-1.292-38.99s-18.042-28.354-15.465-36.087 c15.465,7.733,39.957,14.825,46.4,9.67c6.443-5.155-28.354-5.8-30.931-26.42c-2.577-20.62,18.635,12.244,34.154,12.244 c17.399,0-23.198-17.399-13.532-27.709c6.417-6.845,22.229-25.132,22.229-25.132s-1.608,35.441,28.034,30.287 c29.641-5.155,47.686-21.91,51.552-27.065c18.045-1.289,15.468,3.867,29.644,11.599c14.177,7.733,24.488,36.086,18.045,46.397 l10.313-24.487c5.155-11.599,7.742,27.065,21.918,33.509c14.177,6.443,27.08,3.866,27.08,3.866 c1.288,7.088,3.894,36.087,4.539,42.53c-10.954-15.465-11.579-20.943-20.399-26.259c-8.82-5.316-32.019-5.8-40.476-1.934 c-8.458,3.867-16.19,19.332-16.19,27.065c0,0-1.934,6.283,0,10.633c1.933,4.35,9.609,34.934,11.277,39.47 c3.144,8.539,10.471,24.325,11.438,30.125c0.967,5.799,4.028,16.271-3.867,19.332c-9.707,3.762-8.699,1.933-4.832-4.833 c3.866-6.767-2.37-7.766-5.316-1.45c-3.384,7.25-11.116,11.599-15.949,7.733s0.967-10.149,0-12.083s-14.499-2.9-15.466,3.866 c-0.967,6.767-10.251,5.259-13.532-0.966c-4.671-8.861,6.285-16.271,6.285-21.104c-7.733,5.8-18.332,11.868-27.709,21.909 c-13.691,14.66-20.815,42.976-19.979,45.108C968.151,426.212,970.407,423.312,978.141,416.063z"} 2 | -------------------------------------------------------------------------------- /test/output/fourier-normalized.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "M", 4 | "values": [ 5 | 978.141, 6 | 416.063 7 | ] 8 | }, 9 | { 10 | "type": "C", 11 | "values": [ 12 | 985.8729999999999, 13 | 408.813, 14 | 999.934, 15 | 417.378, 16 | 1004.2389999999999, 17 | 417.513 18 | ] 19 | }, 20 | { 21 | "type": "C", 22 | "values": [ 23 | 1018.305, 24 | 417.955, 25 | 1032.8709999999999, 26 | 416.21999999999997, 27 | 1038.5529999999999, 28 | 416.78799999999995 29 | ] 30 | }, 31 | { 32 | "type": "C", 33 | "values": [ 34 | 1048.2189999999998, 35 | 417.75399999999996, 36 | 1070.934, 37 | 417.513, 38 | 1077.6999999999998, 39 | 413.64599999999996 40 | ] 41 | }, 42 | { 43 | "type": "C", 44 | "values": [ 45 | 1077.6999999999998, 46 | 413.64599999999996, 47 | 1074.7999999999997, 48 | 412.679, 49 | 1070.9329999999998, 50 | 412.19599999999997 51 | ] 52 | }, 53 | { 54 | "type": "C", 55 | "values": [ 56 | 1067.0669999999998, 57 | 411.71299999999997, 58 | 1064.1669999999997, 59 | 409.296, 60 | 1058.3679999999997, 61 | 409.296 62 | ] 63 | }, 64 | { 65 | "type": "C", 66 | "values": [ 67 | 1055.3109999999997, 68 | 409.296, 69 | 1046.2849999999996, 70 | 412.679, 71 | 1044.3519999999996, 72 | 412.679 73 | ] 74 | }, 75 | { 76 | "type": "C", 77 | "values": [ 78 | 1042.4179999999997, 79 | 412.679, 80 | 1036.1359999999997, 81 | 408.813, 82 | 1028.4029999999996, 83 | 409.779 84 | ] 85 | }, 86 | { 87 | "type": "C", 88 | "values": [ 89 | 1020.6709999999996, 90 | 410.746, 91 | 1015.3539999999996, 92 | 415.065, 93 | 1011.4879999999996, 94 | 415.065 95 | ] 96 | }, 97 | { 98 | "type": "L", 99 | "values": [ 100 | 1005.6879999999996, 101 | 417.995 102 | ] 103 | }, 104 | { 105 | "type": "C", 106 | "values": [ 107 | 1012.4539999999996, 108 | 423.795, 109 | 1024.0529999999997, 110 | 430.561, 111 | 1037.5849999999996, 112 | 429.594 113 | ] 114 | }, 115 | { 116 | "type": "C", 117 | "values": [ 118 | 1051.1169999999995, 119 | 428.628, 120 | 1050.6339999999996, 121 | 429.594, 122 | 1064.6489999999997, 123 | 421.378 124 | ] 125 | }, 126 | { 127 | "type": "C", 128 | "values": [ 129 | 1078.6659999999997, 130 | 413.162, 131 | 1083.0149999999996, 132 | 408.812, 133 | 1081.0819999999997, 134 | 422.828 135 | ] 136 | }, 137 | { 138 | "type": "C", 139 | "values": [ 140 | 1079.1489999999997, 141 | 436.844, 142 | 1089.7809999999997, 143 | 411.712, 144 | 1089.7809999999997, 145 | 411.712 146 | ] 147 | }, 148 | { 149 | "type": "C", 150 | "values": [ 151 | 1089.7809999999997, 152 | 411.712, 153 | 1092.5219999999997, 154 | 401.724, 155 | 1089.7809999999997, 156 | 388.997 157 | ] 158 | }, 159 | { 160 | "type": "C", 161 | "values": [ 162 | 1087.8499999999997, 163 | 380.033, 164 | 1074.3149999999998, 165 | 372.565, 166 | 1070.4489999999996, 167 | 368.699 168 | ] 169 | }, 170 | { 171 | "type": "C", 172 | "values": [ 173 | 1070.4489999999996, 174 | 368.699, 175 | 1059.0119999999997, 176 | 337.284, 177 | 1056.9169999999997, 178 | 326.168 179 | ] 180 | }, 181 | { 182 | "type": "C", 183 | "values": [ 184 | 1055.6259999999997, 185 | 319.319, 186 | 1068.9999999999998, 187 | 328.585, 188 | 1076.2489999999998, 189 | 332.934 190 | ] 191 | }, 192 | { 193 | "type": "C", 194 | "values": [ 195 | 1083.4989999999998, 196 | 337.28400000000005, 197 | 1102.3479999999997, 198 | 325.685, 199 | 1106.697, 200 | 322.785 201 | ] 202 | }, 203 | { 204 | "type": "C", 205 | "values": [ 206 | 1111.046, 207 | 319.88500000000005, 208 | 1103.3129999999999, 209 | 313.119, 210 | 1097.444, 211 | 313.03200000000004 212 | ] 213 | }, 214 | { 215 | "type": "C", 216 | "values": [ 217 | 1093.904, 218 | 315.89900000000006, 219 | 1089.751, 220 | 318.43500000000006, 221 | 1082.048, 222 | 318.43500000000006 223 | ] 224 | }, 225 | { 226 | "type": "C", 227 | "values": [ 228 | 1071.415, 229 | 318.43500000000006, 230 | 1054.017, 231 | 312.63500000000005, 232 | 1054.017, 233 | 312.63500000000005 234 | ] 235 | }, 236 | { 237 | "type": "C", 238 | "values": [ 239 | 1054.5, 240 | 303.13100000000003, 241 | 1048.059, 242 | 286.37600000000003, 243 | 1059.012, 244 | 277.35400000000004 245 | ] 246 | }, 247 | { 248 | "type": "C", 249 | "values": [ 250 | 1075.2759999999998, 251 | 263.95700000000005, 252 | 1084.3719999999998, 253 | 262.24500000000006, 254 | 1096.547, 255 | 267.20500000000004 256 | ] 257 | }, 258 | { 259 | "type": "C", 260 | "values": [ 261 | 1100.897, 262 | 268.97600000000006, 263 | 1118.94, 264 | 292.82000000000005, 265 | 1118.94, 266 | 292.82000000000005 267 | ] 268 | }, 269 | { 270 | "type": "C", 271 | "values": [ 272 | 1118.94, 273 | 292.82000000000005, 274 | 1109.2720000000002, 275 | 305.708, 276 | 1106.0510000000002, 277 | 304.41900000000004 278 | ] 279 | }, 280 | { 281 | "type": "C", 282 | "values": [ 283 | 1102.8300000000002, 284 | 303.13100000000003, 285 | 1089.9420000000002, 286 | 289.598, 287 | 1084.142, 288 | 289.598 289 | ] 290 | }, 291 | { 292 | "type": "C", 293 | "values": [ 294 | 1078.3419999999999, 295 | 289.598, 296 | 1060.944, 297 | 292.175, 298 | 1059.01, 299 | 296.041 300 | ] 301 | }, 302 | { 303 | "type": "C", 304 | "values": [ 305 | 1057.076, 306 | 299.908, 307 | 1053.856, 308 | 311.507, 309 | 1056.433, 310 | 308.28499999999997 311 | ] 312 | }, 313 | { 314 | "type": "C", 315 | "values": [ 316 | 1059.01, 317 | 305.06299999999993, 318 | 1064.166, 319 | 301.84099999999995, 320 | 1064.166, 321 | 301.84099999999995 322 | ] 323 | }, 324 | { 325 | "type": "C", 326 | "values": [ 327 | 1064.985, 328 | 304.811, 329 | 1067.771, 330 | 308.76899999999995, 331 | 1071.415, 332 | 308.76899999999995 333 | ] 334 | }, 335 | { 336 | "type": "C", 337 | "values": [ 338 | 1075.686, 339 | 308.76899999999995, 340 | 1079.148, 341 | 305.73999999999995, 342 | 1079.148, 343 | 302.00299999999993 344 | ] 345 | }, 346 | { 347 | "type": "C", 348 | "values": [ 349 | 1079.148, 350 | 300.5899999999999, 351 | 1078.6509999999998, 352 | 299.28099999999995, 353 | 1077.8049999999998, 354 | 298.19699999999995 355 | ] 356 | }, 357 | { 358 | "type": "C", 359 | "values": [ 360 | 1078.2679999999998, 361 | 298.1569999999999, 362 | 1078.715, 363 | 298.13599999999997, 364 | 1079.148, 365 | 298.13599999999997 366 | ] 367 | }, 368 | { 369 | "type": "C", 370 | "values": [ 371 | 1085.914, 372 | 298.13599999999997, 373 | 1101.379, 374 | 309.73499999999996, 375 | 1101.379, 376 | 309.73499999999996 377 | ] 378 | }, 379 | { 380 | "type": "C", 381 | "values": [ 382 | 1101.379, 383 | 309.73499999999996, 384 | 1127.9599999999998, 385 | 318.43499999999995, 386 | 1127.9599999999998, 387 | 328.10099999999994 388 | ] 389 | }, 390 | { 391 | "type": "C", 392 | "values": [ 393 | 1127.9599999999998, 394 | 337.76699999999994, 395 | 1128.6029999999998, 396 | 351.45699999999994, 397 | 1128.6029999999998, 398 | 351.45699999999994 399 | ] 400 | }, 401 | { 402 | "type": "C", 403 | "values": [ 404 | 1128.6029999999998, 405 | 351.45699999999994, 406 | 1159.5339999999999, 407 | 354.03399999999993, 408 | 1162.1109999999999, 409 | 335.99099999999993 410 | ] 411 | }, 412 | { 413 | "type": "C", 414 | "values": [ 415 | 1164.6879999999999, 416 | 317.9479999999999, 417 | 1149.224, 418 | 292.17099999999994, 419 | 1156.9569999999999, 420 | 292.17099999999994 421 | ] 422 | }, 423 | { 424 | "type": "C", 425 | "values": [ 426 | 1164.6899999999998, 427 | 292.17099999999994, 428 | 1179.514, 429 | 270.9099999999999, 430 | 1179.514, 431 | 270.9099999999999 432 | ] 433 | }, 434 | { 435 | "type": "C", 436 | "values": [ 437 | 1179.514, 438 | 270.9099999999999, 439 | 1171.782, 440 | 277.3539999999999, 441 | 1154.379, 442 | 279.28399999999993 443 | ] 444 | }, 445 | { 446 | "type": "C", 447 | "values": [ 448 | 1162.1109999999999, 449 | 276.70599999999996, 450 | 1172.423, 451 | 253.50799999999992, 452 | 1172.423, 453 | 243.19799999999992 454 | ] 455 | }, 456 | { 457 | "type": "C", 458 | "values": [ 459 | 1172.423, 460 | 232.88799999999992, 461 | 1177.577, 462 | 227.7319999999999, 463 | 1154.379, 464 | 217.4219999999999 465 | ] 466 | }, 467 | { 468 | "type": "C", 469 | "values": [ 470 | 1169.8439999999998, 471 | 209.6889999999999, 472 | 1169.8439999999998, 473 | 178.75799999999992, 474 | 1151.802, 475 | 155.55999999999992 476 | ] 477 | }, 478 | { 479 | "type": "C", 480 | "values": [ 481 | 1133.759, 482 | 132.3609999999999, 483 | 1126.0269999999998, 484 | 147.8269999999999, 485 | 1126.0269999999998, 486 | 147.8269999999999 487 | ] 488 | }, 489 | { 490 | "type": "C", 491 | "values": [ 492 | 1126.0269999999998, 493 | 147.8269999999999, 494 | 1135.0509999999997, 495 | 122.69999999999992, 496 | 1118.9419999999998, 497 | 106.58999999999992 498 | ] 499 | }, 500 | { 501 | "type": "C", 502 | "values": [ 503 | 1103.2639999999997, 504 | 90.91099999999992, 505 | 1087.3629999999998, 506 | 96.27599999999993, 507 | 1087.3629999999998, 508 | 96.27599999999993 509 | ] 510 | }, 511 | { 512 | "type": "C", 513 | "values": [ 514 | 1087.3629999999998, 515 | 96.27599999999993, 516 | 1090.59, 517 | 76.30399999999992, 518 | 1069.9669999999999, 519 | 68.57099999999993 520 | ] 521 | }, 522 | { 523 | "type": "C", 524 | "values": [ 525 | 1049.3459999999998, 526 | 60.83799999999993, 527 | 1030.014, 528 | 86.61399999999992, 529 | 1034.524, 530 | 76.30299999999993 531 | ] 532 | }, 533 | { 534 | "type": "C", 535 | "values": [ 536 | 1039.6899999999998, 537 | 64.49499999999992, 538 | 1020.3479999999998, 539 | 40.21699999999993, 540 | 1020.3479999999998, 541 | 40.21699999999993 542 | ] 543 | }, 544 | { 545 | "type": "C", 546 | "values": [ 547 | 1020.3479999999998, 548 | 40.21699999999993, 549 | 1022.9249999999998, 550 | 58.25999999999993, 551 | 1010.0379999999999, 552 | 69.21499999999993 553 | ] 554 | }, 555 | { 556 | "type": "C", 557 | "values": [ 558 | 991.512, 559 | 84.96399999999993, 560 | 976.5239999999999, 561 | 55.03299999999993, 562 | 953.3259999999999, 563 | 52.45499999999993 564 | ] 565 | }, 566 | { 567 | "type": "C", 568 | "values": [ 569 | 930.1279999999999, 570 | 49.876999999999924, 571 | 922.3949999999999, 572 | 65.34399999999992, 573 | 922.3949999999999, 574 | 65.34399999999992 575 | ] 576 | }, 577 | { 578 | "type": "C", 579 | "values": [ 580 | 922.3949999999999, 581 | 65.34399999999992, 582 | 916.9609999999999, 583 | 56.058999999999926, 584 | 897.2689999999999, 585 | 64.05899999999993 586 | ] 587 | }, 588 | { 589 | "type": "C", 590 | "values": [ 591 | 876.6469999999999, 592 | 72.43599999999992, 593 | 877.2909999999999, 594 | 87.25699999999992, 595 | 877.2909999999999, 596 | 87.25699999999992 597 | ] 598 | }, 599 | { 600 | "type": "C", 601 | "values": [ 602 | 877.2909999999999, 603 | 87.25699999999992, 604 | 863.117, 605 | 85.32499999999992, 606 | 845.0719999999999, 607 | 98.21299999999992 608 | ] 609 | }, 610 | { 611 | "type": "C", 612 | "values": [ 613 | 827.0269999999999, 614 | 111.10099999999993, 615 | 829.5999999999999, 616 | 134.9389999999999, 617 | 829.5999999999999, 618 | 134.9389999999999 619 | ] 620 | }, 621 | { 622 | "type": "C", 623 | "values": [ 624 | 829.5999999999999, 625 | 134.9389999999999, 626 | 816.5779999999999, 627 | 140.7659999999999, 628 | 806.4019999999999, 629 | 158.13699999999992 630 | ] 631 | }, 632 | { 633 | "type": "C", 634 | "values": [ 635 | 795.4519999999999, 636 | 176.82899999999992, 637 | 801.2479999999999, 638 | 207.1109999999999, 639 | 801.2479999999999, 640 | 207.1109999999999 641 | ] 642 | }, 643 | { 644 | "type": "C", 645 | "values": [ 646 | 801.2479999999999, 647 | 207.1109999999999, 648 | 788.3589999999999, 649 | 217.4219999999999, 650 | 785.7819999999999, 651 | 232.88699999999992 652 | ] 653 | }, 654 | { 655 | "type": "C", 656 | "values": [ 657 | 783.2049999999999, 658 | 248.35299999999992, 659 | 801.2479999999999, 660 | 266.3959999999999, 661 | 801.2479999999999, 662 | 266.3959999999999 663 | ] 664 | }, 665 | { 666 | "type": "C", 667 | "values": [ 668 | 801.2479999999999, 669 | 266.3959999999999, 670 | 788.3589999999999, 671 | 271.5509999999999, 672 | 785.7819999999999, 673 | 279.2839999999999 674 | ] 675 | }, 676 | { 677 | "type": "C", 678 | "values": [ 679 | 783.2049999999999, 680 | 287.0169999999999, 681 | 785.7819999999999, 682 | 307.63799999999986, 683 | 806.4019999999999, 684 | 323.1029999999999 685 | ] 686 | }, 687 | { 688 | "type": "C", 689 | "values": [ 690 | 798.67, 691 | 335.9909999999999, 692 | 806.4019999999999, 693 | 351.4569999999999, 694 | 811.5579999999999, 695 | 361.7669999999999 696 | ] 697 | }, 698 | { 699 | "type": "C", 700 | "values": [ 701 | 816.7139999999998, 702 | 372.0769999999999, 703 | 837.3329999999999, 704 | 377.2329999999999, 705 | 837.3329999999999, 706 | 377.2329999999999 707 | ] 708 | }, 709 | { 710 | "type": "C", 711 | "values": [ 712 | 837.3329999999999, 713 | 377.2329999999999, 714 | 850.2219999999999, 715 | 397.85399999999987, 716 | 839.9119999999998, 717 | 400.43099999999987 718 | ] 719 | }, 720 | { 721 | "type": "C", 722 | "values": [ 723 | 829.6019999999999, 724 | 403.00799999999987, 725 | 816.7129999999999, 726 | 408.16499999999985, 727 | 816.7129999999999, 728 | 426.20799999999986 729 | ] 730 | }, 731 | { 732 | "type": "C", 733 | "values": [ 734 | 816.7129999999999, 735 | 444.25099999999986, 736 | 801.2479999999998, 737 | 495.8029999999999, 738 | 796.0919999999999, 739 | 516.4239999999999 740 | ] 741 | }, 742 | { 743 | "type": "C", 744 | "values": [ 745 | 775.4699999999999, 746 | 521.5789999999998, 747 | 767.7389999999999, 748 | 544.7779999999999, 749 | 767.7389999999999, 750 | 544.7779999999999 751 | ] 752 | }, 753 | { 754 | "type": "C", 755 | "values": [ 756 | 767.7389999999999, 757 | 544.7779999999999, 758 | 770.3159999999999, 759 | 555.0879999999999, 760 | 754.8499999999999, 761 | 560.2429999999999 762 | ] 763 | }, 764 | { 765 | "type": "C", 766 | "values": [ 767 | 739.3849999999999, 768 | 565.3989999999999, 769 | 698.1429999999999, 770 | 604.0609999999999, 771 | 690.411, 772 | 614.3729999999999 773 | ] 774 | }, 775 | { 776 | "type": "C", 777 | "values": [ 778 | 682.679, 779 | 624.685, 780 | 646.5909999999999, 781 | 647.882, 782 | 633.703, 783 | 665.924 784 | ] 785 | }, 786 | { 787 | "type": "C", 788 | "values": [ 789 | 620.814, 790 | 683.9689999999999, 791 | 580.593, 792 | 753.303, 793 | 579.573, 794 | 802.537 795 | ] 796 | }, 797 | { 798 | "type": "C", 799 | "values": [ 800 | 578.448, 801 | 856.831, 802 | 575.544, 803 | 931.2520000000001, 804 | 576.996, 805 | 936.572 806 | ] 807 | }, 808 | { 809 | "type": "C", 810 | "values": [ 811 | 578.448, 812 | 941.891, 813 | 602.773, 814 | 944.308, 815 | 620.818, 816 | 949.464 817 | ] 818 | }, 819 | { 820 | "type": "C", 821 | "values": [ 822 | 638.862, 823 | 954.62, 824 | 696.8589999999999, 825 | 979.1070000000001, 826 | 722.634, 827 | 984.2620000000001 828 | ] 829 | }, 830 | { 831 | "type": "C", 832 | "values": [ 833 | 748.409, 834 | 989.418, 835 | 790.94, 836 | 1010.0390000000001, 837 | 803.828, 838 | 1008.75 839 | ] 840 | }, 841 | { 842 | "type": "C", 843 | "values": [ 844 | 816.717, 845 | 1007.46, 846 | 815.428, 847 | 967.507, 848 | 815.428, 849 | 959.774 850 | ] 851 | }, 852 | { 853 | "type": "C", 854 | "values": [ 855 | 815.428, 856 | 952.041, 857 | 808.985, 858 | 922.397, 859 | 807.695, 860 | 909.51 861 | ] 862 | }, 863 | { 864 | "type": "C", 865 | "values": [ 866 | 806.4050000000001, 867 | 896.6229999999999, 868 | 805.118, 869 | 873.423, 870 | 807.695, 871 | 859.247 872 | ] 873 | }, 874 | { 875 | "type": "C", 876 | "values": [ 877 | 810.272, 878 | 845.0699999999999, 879 | 818.0070000000001, 880 | 821.8739999999999, 881 | 816.7170000000001, 882 | 811.5619999999999 883 | ] 884 | }, 885 | { 886 | "type": "C", 887 | "values": [ 888 | 815.4280000000001, 889 | 801.2499999999999, 890 | 800.1410000000001, 891 | 776.4549999999999, 892 | 802.5390000000001, 893 | 778.0519999999999 894 | ] 895 | }, 896 | { 897 | "type": "C", 898 | "values": [ 899 | 837.3360000000001, 900 | 801.2499999999999, 901 | 816.7170000000001, 902 | 872.1349999999999, 903 | 816.7170000000001, 904 | 886.3109999999999 905 | ] 906 | }, 907 | { 908 | "type": "C", 909 | "values": [ 910 | 816.7170000000001, 911 | 900.4879999999999, 912 | 823.1600000000001, 913 | 954.6189999999999, 914 | 818.0050000000001, 915 | 993.2829999999999 916 | ] 917 | }, 918 | { 919 | "type": "C", 920 | "values": [ 921 | 812.8500000000001, 922 | 1031.947, 923 | 823.1610000000001, 924 | 1020.3469999999999, 925 | 845.0700000000002, 926 | 1028.081 927 | ] 928 | }, 929 | { 930 | "type": "C", 931 | "values": [ 932 | 866.9790000000002, 933 | 1035.8129999999999, 934 | 915.9550000000002, 935 | 1033.234, 936 | 963.6400000000001, 937 | 1037.1019999999999 938 | ] 939 | }, 940 | { 941 | "type": "C", 942 | "values": [ 943 | 1011.3270000000001, 944 | 1040.9679999999998, 945 | 1075.7640000000001, 946 | 1039.841, 947 | 1095.096, 948 | 1030.819 949 | ] 950 | }, 951 | { 952 | "type": "C", 953 | "values": [ 954 | 1095.096, 955 | 1019.2189999999999, 956 | 1097.997, 957 | 1001.016, 958 | 1097.03, 959 | 988.289 960 | ] 961 | }, 962 | { 963 | "type": "C", 964 | "values": [ 965 | 1096.061, 966 | 975.56, 967 | 1093.809, 968 | 930.134, 969 | 1093.809, 970 | 927.556 971 | ] 972 | }, 973 | { 974 | "type": "C", 975 | "values": [ 976 | 1093.809, 977 | 924.9770000000001, 978 | 1080.922, 979 | 926.2660000000001, 980 | 1080.922, 981 | 926.2660000000001 982 | ] 983 | }, 984 | { 985 | "type": "C", 986 | "values": [ 987 | 1080.922, 988 | 926.2660000000001, 989 | 1076.2740000000001, 990 | 938.451, 991 | 1071.9, 992 | 941.7320000000001 993 | ] 994 | }, 995 | { 996 | "type": "C", 997 | "values": [ 998 | 1064.1680000000001, 999 | 947.532, 1000 | 1043.546, 1001 | 946.8860000000001, 1002 | 1040.323, 1003 | 941.7320000000001 1004 | ] 1005 | }, 1006 | { 1007 | "type": "C", 1008 | "values": [ 1009 | 1037.1000000000001, 1010 | 936.5780000000001, 1011 | 1030.659, 1012 | 918.5360000000001, 1013 | 1040.969, 1014 | 909.513 1015 | ] 1016 | }, 1017 | { 1018 | "type": "C", 1019 | "values": [ 1020 | 1051.28, 1021 | 900.491, 1022 | 1064.025, 1023 | 900.166, 1024 | 1069.3220000000001, 1025 | 907.5790000000001 1026 | ] 1027 | }, 1028 | { 1029 | "type": "C", 1030 | "values": [ 1031 | 1075.767, 1032 | 916.6, 1033 | 1090.5880000000002, 1034 | 915.956, 1035 | 1090.5880000000002, 1036 | 915.956 1037 | ] 1038 | }, 1039 | { 1040 | "type": "C", 1041 | "values": [ 1042 | 1090.5880000000002, 1043 | 915.956, 1044 | 1086.0770000000002, 1045 | 888.244, 1046 | 1083.5010000000002, 1047 | 878.58 1048 | ] 1049 | }, 1050 | { 1051 | "type": "C", 1052 | "values": [ 1053 | 1080.9240000000002, 1054 | 868.916, 1055 | 1066.7470000000003, 1056 | 834.764, 1057 | 1065.4580000000003, 1058 | 829.6070000000001 1059 | ] 1060 | }, 1061 | { 1062 | "type": "C", 1063 | "values": [ 1064 | 1064.1690000000003, 1065 | 824.4520000000001, 1066 | 1059.0130000000004, 1067 | 799.9630000000001, 1068 | 1056.4360000000004, 1069 | 796.0970000000001 1070 | ] 1071 | }, 1072 | { 1073 | "type": "C", 1074 | "values": [ 1075 | 1053.8590000000004, 1076 | 792.2310000000001, 1077 | 1043.5470000000005, 1078 | 793.5180000000001, 1079 | 1039.6810000000003, 1080 | 794.8080000000001 1081 | ] 1082 | }, 1083 | { 1084 | "type": "C", 1085 | "values": [ 1086 | 1035.8150000000003, 1087 | 796.0970000000001, 1088 | 1037.9290000000003, 1089 | 804.5150000000001, 1090 | 1029.3710000000003, 1091 | 811.5630000000001 1092 | ] 1093 | }, 1094 | { 1095 | "type": "C", 1096 | "values": [ 1097 | 1018.4150000000003, 1098 | 820.5850000000002, 1099 | 1001.3090000000003, 1100 | 810.5860000000001, 1101 | 999.0830000000003, 1102 | 805.7630000000001 1103 | ] 1104 | }, 1105 | { 1106 | "type": "C", 1107 | "values": [ 1108 | 995.2170000000003, 1109 | 797.3870000000002, 1110 | 999.0830000000003, 1111 | 776.7650000000001, 1112 | 1013.2600000000003, 1113 | 775.4760000000001 1114 | ] 1115 | }, 1116 | { 1117 | "type": "C", 1118 | "values": [ 1119 | 1027.4360000000004, 1120 | 774.1860000000001, 1121 | 1030.6580000000004, 1122 | 774.8320000000001, 1123 | 1033.2380000000003, 1124 | 782.5650000000002 1125 | ] 1126 | }, 1127 | { 1128 | "type": "C", 1129 | "values": [ 1130 | 1035.8180000000002, 1131 | 790.2980000000002, 1132 | 1047.4140000000002, 1133 | 780.6290000000001, 1134 | 1047.4140000000002, 1135 | 778.0530000000001 1136 | ] 1137 | }, 1138 | { 1139 | "type": "C", 1140 | "values": [ 1141 | 1047.4140000000002, 1142 | 775.4760000000001, 1143 | 1031.9490000000003, 1144 | 740.6760000000002, 1145 | 1025.5060000000003, 1146 | 727.7890000000001 1147 | ] 1148 | }, 1149 | { 1150 | "type": "C", 1151 | "values": [ 1152 | 1019.0630000000003, 1153 | 714.902, 1154 | 1006.1740000000003, 1155 | 682.6800000000001, 1156 | 998.4410000000003, 1157 | 673.6590000000001 1158 | ] 1159 | }, 1160 | { 1161 | "type": "C", 1162 | "values": [ 1163 | 990.7090000000003, 1164 | 664.6380000000001, 1165 | 982.9750000000003, 1166 | 671.0820000000001, 1167 | 982.9750000000003, 1168 | 671.0820000000001 1169 | ] 1170 | }, 1171 | { 1172 | "type": "C", 1173 | "values": [ 1174 | 982.9750000000003, 1175 | 671.0820000000001, 1176 | 984.9090000000002, 1177 | 687.8380000000001, 1178 | 977.1760000000003, 1179 | 697.5040000000001 1180 | ] 1181 | }, 1182 | { 1183 | "type": "C", 1184 | "values": [ 1185 | 973.5750000000003, 1186 | 702.0020000000002, 1187 | 951.2470000000003, 1188 | 709.3900000000001, 1189 | 946.8880000000003, 1190 | 696.8580000000002 1191 | ] 1192 | }, 1193 | { 1194 | "type": "C", 1195 | "values": [ 1196 | 941.7320000000003, 1197 | 682.0390000000002, 1198 | 940.4450000000003, 1199 | 671.0830000000002, 1200 | 954.6210000000002, 1201 | 665.9270000000001 1202 | ] 1203 | }, 1204 | { 1205 | "type": "C", 1206 | "values": [ 1207 | 968.7970000000003, 1208 | 660.7730000000001, 1209 | 973.3090000000002, 1210 | 669.7930000000001, 1211 | 979.7520000000002, 1212 | 662.0610000000001 1213 | ] 1214 | }, 1215 | { 1216 | "type": "C", 1217 | "values": [ 1218 | 984.9710000000002, 1219 | 655.8000000000002, 1220 | 989.4180000000002, 1221 | 652.3950000000001, 1222 | 982.9750000000001, 1223 | 640.1520000000002 1224 | ] 1225 | }, 1226 | { 1227 | "type": "C", 1228 | "values": [ 1229 | 981.7750000000001, 1230 | 637.8700000000001, 1231 | 982.9770000000001, 1232 | 631.1300000000001, 1233 | 972.6650000000002, 1234 | 628.5520000000001 1235 | ] 1236 | }, 1237 | { 1238 | "type": "C", 1239 | "values": [ 1240 | 962.3530000000003, 1241 | 625.9740000000002, 1242 | 953.3330000000002, 1243 | 610.5100000000001, 1244 | 950.1110000000002, 1245 | 595.0440000000001 1246 | ] 1247 | }, 1248 | { 1249 | "type": "C", 1250 | "values": [ 1251 | 947.2070000000002, 1252 | 581.1070000000001, 1253 | 928.8480000000002, 1254 | 534.4700000000001, 1255 | 922.4030000000002, 1256 | 524.1590000000001 1257 | ] 1258 | }, 1259 | { 1260 | "type": "C", 1261 | "values": [ 1262 | 915.9580000000003, 1263 | 513.8480000000001, 1264 | 918.5360000000003, 1265 | 495.8060000000001, 1266 | 914.6700000000003, 1267 | 493.2280000000001 1268 | ] 1269 | }, 1270 | { 1271 | "type": "C", 1272 | "values": [ 1273 | 910.8030000000003, 1274 | 490.65000000000015, 1275 | 886.3140000000003, 1276 | 475.1850000000001, 1277 | 869.5610000000003, 1278 | 467.4520000000001 1279 | ] 1280 | }, 1281 | { 1282 | "type": "C", 1283 | "values": [ 1284 | 852.8080000000002, 1285 | 459.7190000000001, 1286 | 841.2080000000003, 1287 | 448.1210000000001, 1288 | 836.0530000000002, 1289 | 435.2320000000001 1290 | ] 1291 | }, 1292 | { 1293 | "type": "C", 1294 | "values": [ 1295 | 830.8980000000001, 1296 | 422.3430000000001, 1297 | 829.6100000000002, 1298 | 417.1880000000001, 1299 | 836.0530000000002, 1300 | 410.7440000000001 1301 | ] 1302 | }, 1303 | { 1304 | "type": "C", 1305 | "values": [ 1306 | 836.0530000000002, 1307 | 410.7440000000001, 1308 | 861.8260000000002, 1309 | 433.29800000000006, 1310 | 864.4040000000002, 1311 | 439.7420000000001 1312 | ] 1313 | }, 1314 | { 1315 | "type": "C", 1316 | "values": [ 1317 | 866.9820000000002, 1318 | 446.1860000000001, 1319 | 913.3800000000002, 1320 | 478.40600000000006, 1321 | 917.2460000000002, 1322 | 483.5610000000001 1323 | ] 1324 | }, 1325 | { 1326 | "type": "C", 1327 | "values": [ 1328 | 921.1130000000002, 1329 | 488.71600000000007, 1330 | 928.8460000000002, 1331 | 506.7600000000001, 1332 | 928.8480000000002, 1333 | 509.9820000000001 1334 | ] 1335 | }, 1336 | { 1337 | "type": "C", 1338 | "values": [ 1339 | 928.8480000000002, 1340 | 509.9820000000001, 1341 | 954.6230000000002, 1342 | 539.6250000000001, 1343 | 961.0670000000002, 1344 | 547.3570000000001 1345 | ] 1346 | }, 1347 | { 1348 | "type": "C", 1349 | "values": [ 1350 | 967.5100000000002, 1351 | 555.09, 1352 | 972.8270000000002, 1353 | 581.9950000000001, 1354 | 980.5590000000002, 1355 | 598.748 1356 | ] 1357 | }, 1358 | { 1359 | "type": "C", 1360 | "values": [ 1361 | 988.2910000000002, 1362 | 615.501, 1363 | 1002.3090000000002, 1364 | 624.686, 1365 | 1015.1960000000001, 1366 | 620.8190000000001 1367 | ] 1368 | }, 1369 | { 1370 | "type": "C", 1371 | "values": [ 1372 | 1028.083, 1373 | 616.9520000000001, 1374 | 1071.7430000000002, 1375 | 614.5340000000001, 1376 | 1082.0520000000001, 1377 | 609.3810000000001 1378 | ] 1379 | }, 1380 | { 1381 | "type": "C", 1382 | "values": [ 1383 | 1092.362, 1384 | 604.2270000000001, 1385 | 1086.8850000000002, 1386 | 584.2490000000001, 1387 | 1084.951, 1388 | 556.2180000000001 1389 | ] 1390 | }, 1391 | { 1392 | "type": "C", 1393 | "values": [ 1394 | 1083.156, 1395 | 530.1840000000001, 1396 | 1096.39, 1397 | 512.5600000000001, 1398 | 1100.257, 1399 | 500.96100000000007 1400 | ] 1401 | }, 1402 | { 1403 | "type": "L", 1404 | "values": [ 1405 | 1110.569, 1406 | 489.3620000000001 1407 | ] 1408 | }, 1409 | { 1410 | "type": "C", 1411 | "values": [ 1412 | 1123.616, 1413 | 493.38900000000007, 1414 | 1137.149, 1415 | 499.1880000000001, 1416 | 1137.633, 1417 | 537.047 1418 | ] 1419 | }, 1420 | { 1421 | "type": "C", 1422 | "values": [ 1423 | 1137.782, 1424 | 548.6460000000001, 1425 | 1155.676, 1426 | 598.9100000000001, 1427 | 1156.9650000000001, 1428 | 609.22 1429 | ] 1430 | }, 1431 | { 1432 | "type": "C", 1433 | "values": [ 1434 | 1158.255, 1435 | 619.5310000000001, 1436 | 1158.255, 1437 | 636.283, 1438 | 1160.832, 1439 | 638.863 1440 | ] 1441 | }, 1442 | { 1443 | "type": "C", 1444 | "values": [ 1445 | 1163.4080000000001, 1446 | 641.441, 1447 | 1193.0510000000002, 1448 | 667.2170000000001, 1449 | 1198.2060000000001, 1450 | 667.2170000000001 1451 | ] 1452 | }, 1453 | { 1454 | "type": "C", 1455 | "values": [ 1456 | 1199.496, 1457 | 687.839, 1458 | 1200.7830000000001, 1459 | 709.7450000000001, 1460 | 1202.0720000000001, 1461 | 727.7900000000001 1462 | ] 1463 | }, 1464 | { 1465 | "type": "C", 1466 | "values": [ 1467 | 1203.361, 1468 | 745.835, 1469 | 1209.9660000000001, 1470 | 795.936, 1471 | 1204.8090000000002, 1472 | 807.5340000000001 1473 | ] 1474 | }, 1475 | { 1476 | "type": "C", 1477 | "values": [ 1478 | 1199.6540000000002, 1479 | 819.1340000000001, 1480 | 1185.3190000000002, 1481 | 832.1820000000001, 1482 | 1181.4530000000002, 1483 | 845.0710000000001 1484 | ] 1485 | }, 1486 | { 1487 | "type": "C", 1488 | "values": [ 1489 | 1177.5860000000002, 1490 | 857.9600000000002, 1491 | 1159.544, 1492 | 895.3350000000002, 1493 | 1154.3890000000001, 1494 | 903.0670000000001 1495 | ] 1496 | }, 1497 | { 1498 | "type": "C", 1499 | "values": [ 1500 | 1149.2330000000002, 1501 | 910.8000000000001, 1502 | 1136.506, 1503 | 912.5730000000001, 1504 | 1136.344, 1505 | 918.5330000000001 1506 | ] 1507 | }, 1508 | { 1509 | "type": "C", 1510 | "values": [ 1511 | 1136.182, 1512 | 924.4930000000002, 1513 | 1146.656, 1514 | 928.8430000000001, 1515 | 1146.656, 1516 | 945.5970000000001 1517 | ] 1518 | }, 1519 | { 1520 | "type": "C", 1521 | "values": [ 1522 | 1146.656, 1523 | 962.3510000000001, 1524 | 1147.944, 1525 | 988.1270000000001, 1526 | 1147.944, 1527 | 995.8610000000001 1528 | ] 1529 | }, 1530 | { 1531 | "type": "C", 1532 | "values": [ 1533 | 1147.944, 1534 | 1003.5930000000001, 1535 | 1150.1979999999999, 1536 | 1020.5090000000001, 1537 | 1150.1979999999999, 1538 | 1026.9530000000002 1539 | ] 1540 | }, 1541 | { 1542 | "type": "C", 1543 | "values": [ 1544 | 1150.1979999999999, 1545 | 1026.9530000000002, 1546 | 1218.184, 1547 | 1019.3830000000002, 1548 | 1240.0919999999999, 1549 | 1007.6210000000002 1550 | ] 1551 | }, 1552 | { 1553 | "type": "C", 1554 | "values": [ 1555 | 1261.9999999999998, 1556 | 995.8590000000003, 1557 | 1304.8549999999998, 1558 | 949.6250000000002, 1559 | 1304.8549999999998, 1560 | 949.6250000000002 1561 | ] 1562 | }, 1563 | { 1564 | "type": "C", 1565 | "values": [ 1566 | 1317.7439999999997, 1567 | 940.6040000000003, 1568 | 1345.1299999999999, 1569 | 923.6880000000002, 1570 | 1343.841, 1571 | 912.0900000000003 1572 | ] 1573 | }, 1574 | { 1575 | "type": "C", 1576 | "values": [ 1577 | 1341.7189999999998, 1578 | 892.9970000000003, 1579 | 1337.5069999999998, 1580 | 810.4780000000003, 1581 | 1336.752, 1582 | 803.6680000000002 1583 | ] 1584 | }, 1585 | { 1586 | "type": "C", 1587 | "values": [ 1588 | 1335.464, 1589 | 792.0690000000002, 1590 | 1318.065, 1591 | 735.5220000000003, 1592 | 1309.043, 1593 | 731.6560000000002 1594 | ] 1595 | }, 1596 | { 1597 | "type": "C", 1598 | "values": [ 1599 | 1300.0209999999997, 1600 | 727.7900000000001, 1601 | 1252.337, 1602 | 631.1300000000002, 1603 | 1247.183, 1604 | 625.9750000000001 1605 | ] 1606 | }, 1607 | { 1608 | "type": "C", 1609 | "values": [ 1610 | 1242.029, 1611 | 620.8200000000002, 1612 | 1198.2069999999999, 1613 | 601.4880000000002, 1614 | 1191.764, 1615 | 598.9110000000002 1616 | ] 1617 | }, 1618 | { 1619 | "type": "C", 1620 | "values": [ 1621 | 1185.321, 1622 | 596.3320000000002, 1623 | 1164.6999999999998, 1624 | 506.1170000000002, 1625 | 1164.6999999999998, 1626 | 503.53900000000016 1627 | ] 1628 | }, 1629 | { 1630 | "type": "C", 1631 | "values": [ 1632 | 1164.6999999999998, 1633 | 503.53900000000016, 1634 | 1117.6589999999999, 1635 | 471.96400000000017, 1636 | 1116.37, 1637 | 467.45300000000015 1638 | ] 1639 | }, 1640 | { 1641 | "type": "C", 1642 | "values": [ 1643 | 1115.08, 1644 | 462.9420000000001, 1645 | 1130.223, 1646 | 368.6990000000001, 1647 | 1127.9689999999998, 1648 | 366.92700000000013 1649 | ] 1650 | }, 1651 | { 1652 | "type": "C", 1653 | "values": [ 1654 | 1122.4919999999997, 1655 | 407.68600000000015, 1656 | 1106.0589999999997, 1657 | 479.69800000000015, 1658 | 1069.3229999999999, 1659 | 498.38100000000014 1660 | ] 1661 | }, 1662 | { 1663 | "type": "C", 1664 | "values": [ 1665 | 1051.281, 1666 | 506.11400000000015, 1667 | 1017.7759999999998, 1668 | 513.2060000000001, 1669 | 973.9569999999999, 1670 | 484.8530000000001 1671 | ] 1672 | }, 1673 | { 1674 | "type": "C", 1675 | "values": [ 1676 | 930.1369999999998, 1677 | 456.49900000000014, 1678 | 906.9399999999998, 1679 | 448.1220000000001, 1680 | 891.4749999999999, 1681 | 437.81100000000015 1682 | ] 1683 | }, 1684 | { 1685 | "type": "C", 1686 | "values": [ 1687 | 876.0099999999999, 1688 | 427.50000000000017, 1689 | 875.3639999999999, 1690 | 411.39100000000013, 1691 | 875.3639999999999, 1692 | 403.65800000000013 1693 | ] 1694 | }, 1695 | { 1696 | "type": "C", 1697 | "values": [ 1698 | 861.1859999999999, 1699 | 402.36900000000014, 1700 | 858.6149999999999, 1701 | 397.21800000000013, 1702 | 854.0989999999999, 1703 | 387.5480000000001 1704 | ] 1705 | }, 1706 | { 1707 | "type": "C", 1708 | "values": [ 1709 | 847.116, 1710 | 372.5940000000001, 1711 | 837.3459999999999, 1712 | 368.8600000000001, 1713 | 832.1899999999999, 1714 | 353.3950000000001 1715 | ] 1716 | }, 1717 | { 1718 | "type": "C", 1719 | "values": [ 1720 | 827.034, 1721 | 337.9290000000001, 1722 | 827.03, 1723 | 315.3710000000001, 1724 | 842.496, 1725 | 323.10300000000007 1726 | ] 1727 | }, 1728 | { 1729 | "type": "C", 1730 | "values": [ 1731 | 857.962, 1732 | 330.83600000000007, 1733 | 863.121, 1734 | 335.9960000000001, 1735 | 870.8539999999999, 1736 | 354.03900000000004 1737 | ] 1738 | }, 1739 | { 1740 | "type": "C", 1741 | "values": [ 1742 | 878.5859999999999, 1743 | 372.08200000000005, 1744 | 880.512, 1745 | 352.75000000000006, 1746 | 880.52, 1747 | 334.70700000000005 1748 | ] 1749 | }, 1750 | { 1751 | "type": "C", 1752 | "values": [ 1753 | 880.523, 1754 | 326.333, 1755 | 881.809, 1756 | 323.75100000000003, 1757 | 886.319, 1758 | 319.88500000000005 1759 | ] 1760 | }, 1761 | { 1762 | "type": "C", 1763 | "values": [ 1764 | 890.829, 1765 | 316.01900000000006, 1766 | 929.814, 1767 | 309.73600000000005, 1768 | 929.814, 1769 | 309.73600000000005 1770 | ] 1771 | }, 1772 | { 1773 | "type": "C", 1774 | "values": [ 1775 | 939.963, 1776 | 296.20400000000006, 1777 | 957.362, 1778 | 284.605, 1779 | 972.828, 1780 | 284.605 1781 | ] 1782 | }, 1783 | { 1784 | "type": "C", 1785 | "values": [ 1786 | 988.293, 1787 | 284.605, 1788 | 999.409, 1789 | 295.721, 1790 | 1000.8589999999999, 1791 | 300.07 1792 | ] 1793 | }, 1794 | { 1795 | "type": "C", 1796 | "values": [ 1797 | 1002.3079999999999, 1798 | 304.42, 1799 | 996.1859999999999, 1800 | 313.764, 1801 | 992.16, 1802 | 315.536 1803 | ] 1804 | }, 1805 | { 1806 | "type": "C", 1807 | "values": [ 1808 | 988.203, 1809 | 317.277, 1810 | 982.4939999999999, 1811 | 321.335, 1812 | 968.961, 1813 | 322.302 1814 | ] 1815 | }, 1816 | { 1817 | "type": "C", 1818 | "values": [ 1819 | 955.429, 1820 | 323.269, 1821 | 945.763, 1822 | 320.369, 1823 | 938.03, 1824 | 320.369 1825 | ] 1826 | }, 1827 | { 1828 | "type": "C", 1829 | "values": [ 1830 | 944.3149999999999, 1831 | 311.509, 1832 | 950.256, 1833 | 308.98100000000005, 1834 | 956.124, 1835 | 305.394 1836 | ] 1837 | }, 1838 | { 1839 | "type": "L", 1840 | "values": [ 1841 | 956.395, 1842 | 305.87 1843 | ] 1844 | }, 1845 | { 1846 | "type": "C", 1847 | "values": [ 1848 | 956.395, 1849 | 310.141, 1850 | 960.29, 1851 | 313.603, 1852 | 965.0939999999999, 1853 | 313.603 1854 | ] 1855 | }, 1856 | { 1857 | "type": "C", 1858 | "values": [ 1859 | 969.8979999999999, 1860 | 313.603, 1861 | 973.794, 1862 | 310.141, 1863 | 973.794, 1864 | 305.87 1865 | ] 1866 | }, 1867 | { 1868 | "type": "C", 1869 | "values": [ 1870 | 973.794, 1871 | 304.802, 1872 | 973.55, 1873 | 303.786, 1874 | 973.11, 1875 | 302.861 1876 | ] 1877 | }, 1878 | { 1879 | "type": "L", 1880 | "values": [ 1881 | 974.694, 1882 | 302.64799999999997 1883 | ] 1884 | }, 1885 | { 1886 | "type": "C", 1887 | "values": [ 1888 | 980.721, 1889 | 303.563, 1890 | 986.3589999999999, 1891 | 305.871, 1892 | 991.192, 1893 | 308.77099999999996 1894 | ] 1895 | }, 1896 | { 1897 | "type": "C", 1898 | "values": [ 1899 | 996.025, 1900 | 311.66999999999996, 1901 | 1003.597, 1902 | 311.50899999999996, 1903 | 1005.53, 1904 | 305.70899999999995 1905 | ] 1906 | }, 1907 | { 1908 | "type": "C", 1909 | "values": [ 1910 | 1007.4639999999999, 1911 | 299.90999999999997, 1912 | 1003.7579999999999, 1913 | 292.83899999999994, 1914 | 1003.7579999999999, 1915 | 281.2219999999999 1916 | ] 1917 | }, 1918 | { 1919 | "type": "C", 1920 | "values": [ 1921 | 1003.7579999999999, 1922 | 273.9719999999999, 1923 | 1007.1419999999999, 1924 | 269.94499999999994, 1925 | 1006.175, 1926 | 267.0449999999999 1927 | ] 1928 | }, 1929 | { 1930 | "type": "C", 1931 | "values": [ 1932 | 1005.208, 1933 | 264.1459999999999, 1934 | 986.8389999999999, 1935 | 263.4929999999999, 1936 | 973.3109999999999, 1937 | 263.8229999999999 1938 | ] 1939 | }, 1940 | { 1941 | "type": "C", 1942 | "values": [ 1943 | 953.4959999999999, 1944 | 264.3059999999999, 1945 | 936.097, 1946 | 272.03899999999993, 1947 | 925.4639999999999, 1948 | 277.83899999999994 1949 | ] 1950 | }, 1951 | { 1952 | "type": "L", 1953 | "values": [ 1954 | 890.183, 1955 | 305.38699999999994 1956 | ] 1957 | }, 1958 | { 1959 | "type": "C", 1960 | "values": [ 1961 | 890.183, 1962 | 295.07599999999996, 1963 | 901.78, 1964 | 271.55299999999994, 1965 | 888.891, 1966 | 266.39699999999993 1967 | ] 1968 | }, 1969 | { 1970 | "type": "C", 1971 | "values": [ 1972 | 876.002, 1973 | 261.24099999999993, 1974 | 870.8489999999999, 1975 | 238.04299999999995, 1976 | 873.4259999999999, 1977 | 230.30999999999995 1978 | ] 1979 | }, 1980 | { 1981 | "type": "C", 1982 | "values": [ 1983 | 888.891, 1984 | 238.04299999999995, 1985 | 913.3829999999999, 1986 | 245.13499999999993, 1987 | 919.8259999999999, 1988 | 239.97999999999993 1989 | ] 1990 | }, 1991 | { 1992 | "type": "C", 1993 | "values": [ 1994 | 926.2689999999999, 1995 | 234.82499999999993, 1996 | 891.4719999999999, 1997 | 234.17999999999992, 1998 | 888.8949999999999, 1999 | 213.55999999999995 2000 | ] 2001 | }, 2002 | { 2003 | "type": "C", 2004 | "values": [ 2005 | 886.3179999999999, 2006 | 192.93999999999994, 2007 | 907.5299999999999, 2008 | 225.80399999999995, 2009 | 923.0489999999999, 2010 | 225.80399999999995 2011 | ] 2012 | }, 2013 | { 2014 | "type": "C", 2015 | "values": [ 2016 | 940.4479999999999, 2017 | 225.80399999999995, 2018 | 899.8509999999999, 2019 | 208.40499999999994, 2020 | 909.5169999999998, 2021 | 198.09499999999994 2022 | ] 2023 | }, 2024 | { 2025 | "type": "C", 2026 | "values": [ 2027 | 915.9339999999999, 2028 | 191.24999999999994, 2029 | 931.7459999999999, 2030 | 172.96299999999994, 2031 | 931.7459999999999, 2032 | 172.96299999999994 2033 | ] 2034 | }, 2035 | { 2036 | "type": "C", 2037 | "values": [ 2038 | 931.7459999999999, 2039 | 172.96299999999994, 2040 | 930.1379999999999, 2041 | 208.40399999999994, 2042 | 959.7799999999999, 2043 | 203.24999999999994 2044 | ] 2045 | }, 2046 | { 2047 | "type": "C", 2048 | "values": [ 2049 | 989.4209999999998, 2050 | 198.09499999999994, 2051 | 1007.4659999999999, 2052 | 181.33999999999995, 2053 | 1011.3319999999999, 2054 | 176.18499999999995 2055 | ] 2056 | }, 2057 | { 2058 | "type": "C", 2059 | "values": [ 2060 | 1029.377, 2061 | 174.89599999999996, 2062 | 1026.8, 2063 | 180.05199999999994, 2064 | 1040.9759999999999, 2065 | 187.78399999999993 2066 | ] 2067 | }, 2068 | { 2069 | "type": "C", 2070 | "values": [ 2071 | 1055.1529999999998, 2072 | 195.51699999999994, 2073 | 1065.464, 2074 | 223.86999999999995, 2075 | 1059.021, 2076 | 234.18099999999993 2077 | ] 2078 | }, 2079 | { 2080 | "type": "L", 2081 | "values": [ 2082 | 1069.334, 2083 | 209.69399999999993 2084 | ] 2085 | }, 2086 | { 2087 | "type": "C", 2088 | "values": [ 2089 | 1074.489, 2090 | 198.09499999999994, 2091 | 1077.076, 2092 | 236.75899999999993, 2093 | 1091.252, 2094 | 243.20299999999992 2095 | ] 2096 | }, 2097 | { 2098 | "type": "C", 2099 | "values": [ 2100 | 1105.4289999999999, 2101 | 249.64599999999993, 2102 | 1118.3319999999999, 2103 | 247.06899999999993, 2104 | 1118.3319999999999, 2105 | 247.06899999999993 2106 | ] 2107 | }, 2108 | { 2109 | "type": "C", 2110 | "values": [ 2111 | 1119.62, 2112 | 254.15699999999993, 2113 | 1122.2259999999999, 2114 | 283.15599999999995, 2115 | 1122.8709999999999, 2116 | 289.59899999999993 2117 | ] 2118 | }, 2119 | { 2120 | "type": "C", 2121 | "values": [ 2122 | 1111.917, 2123 | 274.13399999999996, 2124 | 1111.292, 2125 | 268.65599999999995, 2126 | 1102.4719999999998, 2127 | 263.3399999999999 2128 | ] 2129 | }, 2130 | { 2131 | "type": "C", 2132 | "values": [ 2133 | 1093.6519999999998, 2134 | 258.02399999999994, 2135 | 1070.4529999999997, 2136 | 257.5399999999999, 2137 | 1061.9959999999996, 2138 | 261.4059999999999 2139 | ] 2140 | }, 2141 | { 2142 | "type": "C", 2143 | "values": [ 2144 | 1053.5379999999996, 2145 | 265.2729999999999, 2146 | 1045.8059999999996, 2147 | 280.7379999999999, 2148 | 1045.8059999999996, 2149 | 288.4709999999999 2150 | ] 2151 | }, 2152 | { 2153 | "type": "C", 2154 | "values": [ 2155 | 1045.8059999999996, 2156 | 288.4709999999999, 2157 | 1043.8719999999996, 2158 | 294.7539999999999, 2159 | 1045.8059999999996, 2160 | 299.10399999999987 2161 | ] 2162 | }, 2163 | { 2164 | "type": "C", 2165 | "values": [ 2166 | 1047.7389999999996, 2167 | 303.4539999999999, 2168 | 1055.4149999999995, 2169 | 334.0379999999999, 2170 | 1057.0829999999996, 2171 | 338.57399999999984 2172 | ] 2173 | }, 2174 | { 2175 | "type": "C", 2176 | "values": [ 2177 | 1060.2269999999996, 2178 | 347.11299999999983, 2179 | 1067.5539999999996, 2180 | 362.89899999999983, 2181 | 1068.5209999999997, 2182 | 368.69899999999984 2183 | ] 2184 | }, 2185 | { 2186 | "type": "C", 2187 | "values": [ 2188 | 1069.4879999999998, 2189 | 374.4979999999998, 2190 | 1072.5489999999998, 2191 | 384.96999999999986, 2192 | 1064.6539999999998, 2193 | 388.03099999999984 2194 | ] 2195 | }, 2196 | { 2197 | "type": "C", 2198 | "values": [ 2199 | 1054.9469999999997, 2200 | 391.79299999999984, 2201 | 1055.9549999999997, 2202 | 389.9639999999998, 2203 | 1059.8219999999997, 2204 | 383.1979999999998 2205 | ] 2206 | }, 2207 | { 2208 | "type": "C", 2209 | "values": [ 2210 | 1063.6879999999996, 2211 | 376.4309999999998, 2212 | 1057.4519999999998, 2213 | 375.4319999999998, 2214 | 1054.5059999999996, 2215 | 381.7479999999998 2216 | ] 2217 | }, 2218 | { 2219 | "type": "C", 2220 | "values": [ 2221 | 1051.1219999999996, 2222 | 388.9979999999998, 2223 | 1043.3899999999996, 2224 | 393.3469999999998, 2225 | 1038.5569999999996, 2226 | 389.4809999999998 2227 | ] 2228 | }, 2229 | { 2230 | "type": "C", 2231 | "values": [ 2232 | 1033.7239999999995, 2233 | 385.61499999999984, 2234 | 1039.5239999999997, 2235 | 379.3319999999998, 2236 | 1038.5569999999996, 2237 | 377.3979999999998 2238 | ] 2239 | }, 2240 | { 2241 | "type": "C", 2242 | "values": [ 2243 | 1037.5899999999995, 2244 | 375.46399999999977, 2245 | 1024.0579999999995, 2246 | 374.4979999999998, 2247 | 1023.0909999999996, 2248 | 381.2639999999998 2249 | ] 2250 | }, 2251 | { 2252 | "type": "C", 2253 | "values": [ 2254 | 1022.1239999999996, 2255 | 388.0309999999998, 2256 | 1012.8399999999996, 2257 | 386.5229999999998, 2258 | 1009.5589999999995, 2259 | 380.2979999999998 2260 | ] 2261 | }, 2262 | { 2263 | "type": "C", 2264 | "values": [ 2265 | 1004.8879999999995, 2266 | 371.4369999999998, 2267 | 1015.8439999999995, 2268 | 364.02699999999976, 2269 | 1015.8439999999995, 2270 | 359.1939999999998 2271 | ] 2272 | }, 2273 | { 2274 | "type": "C", 2275 | "values": [ 2276 | 1008.1109999999995, 2277 | 364.9939999999998, 2278 | 997.5119999999995, 2279 | 371.0619999999998, 2280 | 988.1349999999995, 2281 | 381.1029999999998 2282 | ] 2283 | }, 2284 | { 2285 | "type": "C", 2286 | "values": [ 2287 | 974.4439999999995, 2288 | 395.7629999999998, 2289 | 967.3199999999995, 2290 | 424.0789999999998, 2291 | 968.1559999999995, 2292 | 426.2109999999998 2293 | ] 2294 | }, 2295 | { 2296 | "type": "C", 2297 | "values": [ 2298 | 968.151, 2299 | 426.212, 2300 | 970.407, 2301 | 423.312, 2302 | 978.141, 2303 | 416.063 2304 | ] 2305 | }, 2306 | { 2307 | "type": "Z", 2308 | "values": [] 2309 | } 2310 | ] 2311 | -------------------------------------------------------------------------------- /test/output/fourier.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "M", 4 | "values": [ 5 | 978.141, 6 | 416.063 7 | ] 8 | }, 9 | { 10 | "type": "c", 11 | "values": [ 12 | 7.732, 13 | -7.25, 14 | 21.793, 15 | 1.315, 16 | 26.098, 17 | 1.45 18 | ] 19 | }, 20 | { 21 | "type": "c", 22 | "values": [ 23 | 14.066, 24 | 0.442, 25 | 28.632, 26 | -1.2930000000000001, 27 | 34.314, 28 | -0.725 29 | ] 30 | }, 31 | { 32 | "type": "c", 33 | "values": [ 34 | 9.666, 35 | 0.966, 36 | 32.381, 37 | 0.725, 38 | 39.147, 39 | -3.142 40 | ] 41 | }, 42 | { 43 | "type": "c", 44 | "values": [ 45 | 0, 46 | 0, 47 | -2.9, 48 | -0.967, 49 | -6.767, 50 | -1.45 51 | ] 52 | }, 53 | { 54 | "type": "c", 55 | "values": [ 56 | -3.866, 57 | -0.48300000000000004, 58 | -6.766, 59 | -2.9, 60 | -12.565, 61 | -2.9 62 | ] 63 | }, 64 | { 65 | "type": "c", 66 | "values": [ 67 | -3.057, 68 | 0, 69 | -12.083, 70 | 3.383, 71 | -14.016, 72 | 3.383 73 | ] 74 | }, 75 | { 76 | "type": "c", 77 | "values": [ 78 | -1.9340000000000002, 79 | 0, 80 | -8.216, 81 | -3.866, 82 | -15.949, 83 | -2.9 84 | ] 85 | }, 86 | { 87 | "type": "c", 88 | "values": [ 89 | -7.732, 90 | 0.967, 91 | -13.049, 92 | 5.286, 93 | -16.915, 94 | 5.286 95 | ] 96 | }, 97 | { 98 | "type": "l", 99 | "values": [ 100 | -5.8, 101 | 2.93 102 | ] 103 | }, 104 | { 105 | "type": "c", 106 | "values": [ 107 | 6.766, 108 | 5.8, 109 | 18.365, 110 | 12.566, 111 | 31.897, 112 | 11.599 113 | ] 114 | }, 115 | { 116 | "type": "c", 117 | "values": [ 118 | 13.532, 119 | -0.966, 120 | 13.049, 121 | 0, 122 | 27.064, 123 | -8.216 124 | ] 125 | }, 126 | { 127 | "type": "c", 128 | "values": [ 129 | 14.017, 130 | -8.216, 131 | 18.366, 132 | -12.566, 133 | 16.433, 134 | 1.45 135 | ] 136 | }, 137 | { 138 | "type": "c", 139 | "values": [ 140 | -1.933, 141 | 14.016, 142 | 8.699, 143 | -11.116, 144 | 8.699, 145 | -11.116 146 | ] 147 | }, 148 | { 149 | "type": "s", 150 | "values": [ 151 | 2.741, 152 | -9.988, 153 | 0, 154 | -22.715 155 | ] 156 | }, 157 | { 158 | "type": "c", 159 | "values": [ 160 | -1.931, 161 | -8.964, 162 | -15.466, 163 | -16.432, 164 | -19.332, 165 | -20.298000000000002 166 | ] 167 | }, 168 | { 169 | "type": "c", 170 | "values": [ 171 | 0, 172 | 0, 173 | -11.437, 174 | -31.415, 175 | -13.532, 176 | -42.531 177 | ] 178 | }, 179 | { 180 | "type": "c", 181 | "values": [ 182 | -1.291, 183 | -6.849, 184 | 12.083, 185 | 2.417, 186 | 19.332, 187 | 6.766 188 | ] 189 | }, 190 | { 191 | "type": "c", 192 | "values": [ 193 | 7.25, 194 | 4.35, 195 | 26.099, 196 | -7.249, 197 | 30.448, 198 | -10.149000000000001 199 | ] 200 | }, 201 | { 202 | "type": "s", 203 | "values": [ 204 | -3.384, 205 | -9.666, 206 | -9.253, 207 | -9.753 208 | ] 209 | }, 210 | { 211 | "type": "c", 212 | "values": [ 213 | -3.54, 214 | 2.867, 215 | -7.693, 216 | 5.4030000000000005, 217 | -15.396, 218 | 5.4030000000000005 219 | ] 220 | }, 221 | { 222 | "type": "c", 223 | "values": [ 224 | -10.633, 225 | 0, 226 | -28.031, 227 | -5.8, 228 | -28.031, 229 | -5.8 230 | ] 231 | }, 232 | { 233 | "type": "c", 234 | "values": [ 235 | 0.48300000000000004, 236 | -9.504, 237 | -5.958, 238 | -26.259, 239 | 4.995, 240 | -35.281 241 | ] 242 | }, 243 | { 244 | "type": "c", 245 | "values": [ 246 | 16.264, 247 | -13.397, 248 | 25.36, 249 | -15.109, 250 | 37.535, 251 | -10.149000000000001 252 | ] 253 | }, 254 | { 255 | "type": "c", 256 | "values": [ 257 | 4.35, 258 | 1.771, 259 | 22.393, 260 | 25.615, 261 | 22.393, 262 | 25.615 263 | ] 264 | }, 265 | { 266 | "type": "s", 267 | "values": [ 268 | -9.668, 269 | 12.888, 270 | -12.889, 271 | 11.599 272 | ] 273 | }, 274 | { 275 | "type": "c", 276 | "values": [ 277 | -3.221, 278 | -1.288, 279 | -16.109, 280 | -14.821, 281 | -21.909, 282 | -14.821 283 | ] 284 | }, 285 | { 286 | "type": "s", 287 | "values": [ 288 | -23.198, 289 | 2.577, 290 | -25.132, 291 | 6.443 292 | ] 293 | }, 294 | { 295 | "type": "c", 296 | "values": [ 297 | -1.9340000000000002, 298 | 3.867, 299 | -5.154, 300 | 15.466, 301 | -2.577, 302 | 12.244 303 | ] 304 | }, 305 | { 306 | "type": "s", 307 | "values": [ 308 | 7.733, 309 | -6.444, 310 | 7.733, 311 | -6.444 312 | ] 313 | }, 314 | { 315 | "type": "c", 316 | "values": [ 317 | 0.8190000000000001, 318 | 2.9699999999999998, 319 | 3.605, 320 | 6.928, 321 | 7.249, 322 | 6.928 323 | ] 324 | }, 325 | { 326 | "type": "c", 327 | "values": [ 328 | 4.271, 329 | 0, 330 | 7.733, 331 | -3.029, 332 | 7.733, 333 | -6.766 334 | ] 335 | }, 336 | { 337 | "type": "c", 338 | "values": [ 339 | 0, 340 | -1.413, 341 | -0.497, 342 | -2.722, 343 | -1.343, 344 | -3.806 345 | ] 346 | }, 347 | { 348 | "type": "c", 349 | "values": [ 350 | 0.463, 351 | -0.04, 352 | 0.91, 353 | -0.061, 354 | 1.343, 355 | -0.061 356 | ] 357 | }, 358 | { 359 | "type": "c", 360 | "values": [ 361 | 6.766, 362 | 0, 363 | 22.231, 364 | 11.599, 365 | 22.231, 366 | 11.599 367 | ] 368 | }, 369 | { 370 | "type": "s", 371 | "values": [ 372 | 26.581, 373 | 8.7, 374 | 26.581, 375 | 18.366 376 | ] 377 | }, 378 | { 379 | "type": "c", 380 | "values": [ 381 | 0, 382 | 9.666, 383 | 0.643, 384 | 23.356, 385 | 0.643, 386 | 23.356 387 | ] 388 | }, 389 | { 390 | "type": "s", 391 | "values": [ 392 | 30.931, 393 | 2.577, 394 | 33.508, 395 | -15.466 396 | ] 397 | }, 398 | { 399 | "type": "s", 400 | "values": [ 401 | -12.887, 402 | -43.82, 403 | -5.154, 404 | -43.82 405 | ] 406 | }, 407 | { 408 | "type": "c", 409 | "values": [ 410 | 7.733, 411 | 0, 412 | 22.557, 413 | -21.261, 414 | 22.557, 415 | -21.261 416 | ] 417 | }, 418 | { 419 | "type": "s", 420 | "values": [ 421 | -7.732, 422 | 6.444, 423 | -25.135, 424 | 8.374 425 | ] 426 | }, 427 | { 428 | "type": "c", 429 | "values": [ 430 | 7.732, 431 | -2.5780000000000003, 432 | 18.044, 433 | -25.776, 434 | 18.044, 435 | -36.086 436 | ] 437 | }, 438 | { 439 | "type": "c", 440 | "values": [ 441 | 0, 442 | -10.31, 443 | 5.154, 444 | -15.466, 445 | -18.044, 446 | -25.776 447 | ] 448 | }, 449 | { 450 | "type": "c", 451 | "values": [ 452 | 15.465, 453 | -7.733, 454 | 15.465, 455 | -38.664, 456 | -2.577, 457 | -61.862 458 | ] 459 | }, 460 | { 461 | "type": "c", 462 | "values": [ 463 | -18.043, 464 | -23.199, 465 | -25.775, 466 | -7.733, 467 | -25.775, 468 | -7.733 469 | ] 470 | }, 471 | { 472 | "type": "s", 473 | "values": [ 474 | 9.024, 475 | -25.127, 476 | -7.085, 477 | -41.237 478 | ] 479 | }, 480 | { 481 | "type": "c", 482 | "values": [ 483 | -15.678, 484 | -15.679, 485 | -31.579, 486 | -10.314, 487 | -31.579, 488 | -10.314 489 | ] 490 | }, 491 | { 492 | "type": "s", 493 | "values": [ 494 | 3.227, 495 | -19.972, 496 | -17.396, 497 | -27.705 498 | ] 499 | }, 500 | { 501 | "type": "c", 502 | "values": [ 503 | -20.621, 504 | -7.733, 505 | -39.953, 506 | 18.043, 507 | -35.443, 508 | 7.732 509 | ] 510 | }, 511 | { 512 | "type": "c", 513 | "values": [ 514 | 5.166, 515 | -11.808, 516 | -14.176, 517 | -36.086, 518 | -14.176, 519 | -36.086 520 | ] 521 | }, 522 | { 523 | "type": "s", 524 | "values": [ 525 | 2.577, 526 | 18.043, 527 | -10.31, 528 | 28.998 529 | ] 530 | }, 531 | { 532 | "type": "c", 533 | "values": [ 534 | -18.526, 535 | 15.749, 536 | -33.514, 537 | -14.182, 538 | -56.712, 539 | -16.76 540 | ] 541 | }, 542 | { 543 | "type": "c", 544 | "values": [ 545 | -23.198, 546 | -2.5780000000000003, 547 | -30.931, 548 | 12.889, 549 | -30.931, 550 | 12.889 551 | ] 552 | }, 553 | { 554 | "type": "s", 555 | "values": [ 556 | -5.434, 557 | -9.285, 558 | -25.126, 559 | -1.2850000000000001 560 | ] 561 | }, 562 | { 563 | "type": "c", 564 | "values": [ 565 | -20.622, 566 | 8.377, 567 | -19.978, 568 | 23.198, 569 | -19.978, 570 | 23.198 571 | ] 572 | }, 573 | { 574 | "type": "s", 575 | "values": [ 576 | -14.174, 577 | -1.932, 578 | -32.219, 579 | 10.956 580 | ] 581 | }, 582 | { 583 | "type": "c", 584 | "values": [ 585 | -18.045, 586 | 12.888, 587 | -15.472, 588 | 36.726, 589 | -15.472, 590 | 36.726 591 | ] 592 | }, 593 | { 594 | "type": "s", 595 | "values": [ 596 | -13.022, 597 | 5.827, 598 | -23.198, 599 | 23.198 600 | ] 601 | }, 602 | { 603 | "type": "c", 604 | "values": [ 605 | -10.95, 606 | 18.692, 607 | -5.154, 608 | 48.974, 609 | -5.154, 610 | 48.974 611 | ] 612 | }, 613 | { 614 | "type": "s", 615 | "values": [ 616 | -12.889, 617 | 10.311, 618 | -15.466, 619 | 25.776 620 | ] 621 | }, 622 | { 623 | "type": "c", 624 | "values": [ 625 | -2.577, 626 | 15.466, 627 | 15.466, 628 | 33.509, 629 | 15.466, 630 | 33.509 631 | ] 632 | }, 633 | { 634 | "type": "s", 635 | "values": [ 636 | -12.889, 637 | 5.155, 638 | -15.466, 639 | 12.888 640 | ] 641 | }, 642 | { 643 | "type": "c", 644 | "values": [ 645 | -2.577, 646 | 7.733, 647 | 0, 648 | 28.354, 649 | 20.62, 650 | 43.819 651 | ] 652 | }, 653 | { 654 | "type": "c", 655 | "values": [ 656 | -7.732, 657 | 12.888, 658 | 0, 659 | 28.354, 660 | 5.156, 661 | 38.664 662 | ] 663 | }, 664 | { 665 | "type": "c", 666 | "values": [ 667 | 5.156, 668 | 10.31, 669 | 25.775, 670 | 15.466, 671 | 25.775, 672 | 15.466 673 | ] 674 | }, 675 | { 676 | "type": "s", 677 | "values": [ 678 | 12.889, 679 | 20.621, 680 | 2.579, 681 | 23.198 682 | ] 683 | }, 684 | { 685 | "type": "c", 686 | "values": [ 687 | -10.31, 688 | 2.577, 689 | -23.199, 690 | 7.734, 691 | -23.199, 692 | 25.777 693 | ] 694 | }, 695 | { 696 | "type": "s", 697 | "values": [ 698 | -15.465, 699 | 69.595, 700 | -20.621, 701 | 90.216 702 | ] 703 | }, 704 | { 705 | "type": "c", 706 | "values": [ 707 | -20.622, 708 | 5.155, 709 | -28.353, 710 | 28.354, 711 | -28.353, 712 | 28.354 713 | ] 714 | }, 715 | { 716 | "type": "s", 717 | "values": [ 718 | 2.577, 719 | 10.31, 720 | -12.889, 721 | 15.465 722 | ] 723 | }, 724 | { 725 | "type": "c", 726 | "values": [ 727 | -15.465, 728 | 5.156, 729 | -56.707, 730 | 43.818, 731 | -64.439, 732 | 54.13 733 | ] 734 | }, 735 | { 736 | "type": "c", 737 | "values": [ 738 | -7.732, 739 | 10.312, 740 | -43.82, 741 | 33.509, 742 | -56.708, 743 | 51.551 744 | ] 745 | }, 746 | { 747 | "type": "c", 748 | "values": [ 749 | -12.889, 750 | 18.045, 751 | -53.11, 752 | 87.379, 753 | -54.13, 754 | 136.613 755 | ] 756 | }, 757 | { 758 | "type": "c", 759 | "values": [ 760 | -1.125, 761 | 54.294, 762 | -4.029, 763 | 128.715, 764 | -2.577, 765 | 134.035 766 | ] 767 | }, 768 | { 769 | "type": "c", 770 | "values": [ 771 | 1.452, 772 | 5.319, 773 | 25.777, 774 | 7.736, 775 | 43.822, 776 | 12.892 777 | ] 778 | }, 779 | { 780 | "type": "c", 781 | "values": [ 782 | 18.044, 783 | 5.156, 784 | 76.041, 785 | 29.643, 786 | 101.816, 787 | 34.798 788 | ] 789 | }, 790 | { 791 | "type": "c", 792 | "values": [ 793 | 25.775, 794 | 5.156, 795 | 68.306, 796 | 25.777, 797 | 81.194, 798 | 24.488 799 | ] 800 | }, 801 | { 802 | "type": "c", 803 | "values": [ 804 | 12.889, 805 | -1.29, 806 | 11.6, 807 | -41.243, 808 | 11.6, 809 | -48.976 810 | ] 811 | }, 812 | { 813 | "type": "c", 814 | "values": [ 815 | 0, 816 | -7.733, 817 | -6.443, 818 | -37.377, 819 | -7.733, 820 | -50.264 821 | ] 822 | }, 823 | { 824 | "type": "s", 825 | "values": [ 826 | -2.577, 827 | -36.087, 828 | 0, 829 | -50.263 830 | ] 831 | }, 832 | { 833 | "type": "c", 834 | "values": [ 835 | 2.577, 836 | -14.177, 837 | 10.312, 838 | -37.373, 839 | 9.022, 840 | -47.685 841 | ] 842 | }, 843 | { 844 | "type": "c", 845 | "values": [ 846 | -1.2890000000000001, 847 | -10.312, 848 | -16.576, 849 | -35.107, 850 | -14.178, 851 | -33.51 852 | ] 853 | }, 854 | { 855 | "type": "c", 856 | "values": [ 857 | 34.797, 858 | 23.198, 859 | 14.178, 860 | 94.083, 861 | 14.178, 862 | 108.259 863 | ] 864 | }, 865 | { 866 | "type": "c", 867 | "values": [ 868 | 0, 869 | 14.177, 870 | 6.443, 871 | 68.308, 872 | 1.288, 873 | 106.972 874 | ] 875 | }, 876 | { 877 | "type": "s", 878 | "values": [ 879 | 5.156, 880 | 27.064, 881 | 27.065, 882 | 34.798 883 | ] 884 | }, 885 | { 886 | "type": "c", 887 | "values": [ 888 | 21.909, 889 | 7.732, 890 | 70.885, 891 | 5.1530000000000005, 892 | 118.57, 893 | 9.021 894 | ] 895 | }, 896 | { 897 | "type": "c", 898 | "values": [ 899 | 47.687, 900 | 3.866, 901 | 112.124, 902 | 2.739, 903 | 131.456, 904 | -6.283 905 | ] 906 | }, 907 | { 908 | "type": "c", 909 | "values": [ 910 | 0, 911 | -11.6, 912 | 2.901, 913 | -29.803, 914 | 1.9340000000000002, 915 | -42.53 916 | ] 917 | }, 918 | { 919 | "type": "c", 920 | "values": [ 921 | -0.969, 922 | -12.729, 923 | -3.221, 924 | -58.155, 925 | -3.221, 926 | -60.733 927 | ] 928 | }, 929 | { 930 | "type": "c", 931 | "values": [ 932 | 0, 933 | -2.579, 934 | -12.887, 935 | -1.29, 936 | -12.887, 937 | -1.29 938 | ] 939 | }, 940 | { 941 | "type": "s", 942 | "values": [ 943 | -4.648, 944 | 12.185, 945 | -9.022, 946 | 15.466 947 | ] 948 | }, 949 | { 950 | "type": "c", 951 | "values": [ 952 | -7.732, 953 | 5.8, 954 | -28.354, 955 | 5.154, 956 | -31.577, 957 | 0 958 | ] 959 | }, 960 | { 961 | "type": "s", 962 | "values": [ 963 | -9.664, 964 | -23.196, 965 | 0.646, 966 | -32.219 967 | ] 968 | }, 969 | { 970 | "type": "c", 971 | "values": [ 972 | 10.311, 973 | -9.022, 974 | 23.056, 975 | -9.347, 976 | 28.353, 977 | -1.9340000000000002 978 | ] 979 | }, 980 | { 981 | "type": "c", 982 | "values": [ 983 | 6.445, 984 | 9.021, 985 | 21.266, 986 | 8.377, 987 | 21.266, 988 | 8.377 989 | ] 990 | }, 991 | { 992 | "type": "s", 993 | "values": [ 994 | -4.511, 995 | -27.712, 996 | -7.087, 997 | -37.376 998 | ] 999 | }, 1000 | { 1001 | "type": "c", 1002 | "values": [ 1003 | -2.577, 1004 | -9.664, 1005 | -16.754, 1006 | -43.816, 1007 | -18.043, 1008 | -48.973 1009 | ] 1010 | }, 1011 | { 1012 | "type": "c", 1013 | "values": [ 1014 | -1.2890000000000001, 1015 | -5.155, 1016 | -6.445, 1017 | -29.644, 1018 | -9.022, 1019 | -33.51 1020 | ] 1021 | }, 1022 | { 1023 | "type": "s", 1024 | "values": [ 1025 | -12.889, 1026 | -2.579, 1027 | -16.755, 1028 | -1.2890000000000001 1029 | ] 1030 | }, 1031 | { 1032 | "type": "c", 1033 | "values": [ 1034 | -3.866, 1035 | 1.2890000000000001, 1036 | -1.752, 1037 | 9.707, 1038 | -10.31, 1039 | 16.755 1040 | ] 1041 | }, 1042 | { 1043 | "type": "c", 1044 | "values": [ 1045 | -10.956, 1046 | 9.022, 1047 | -28.062, 1048 | -0.977, 1049 | -30.288, 1050 | -5.8 1051 | ] 1052 | }, 1053 | { 1054 | "type": "c", 1055 | "values": [ 1056 | -3.866, 1057 | -8.376, 1058 | 0, 1059 | -28.998, 1060 | 14.177, 1061 | -30.287 1062 | ] 1063 | }, 1064 | { 1065 | "type": "c", 1066 | "values": [ 1067 | 14.176, 1068 | -1.29, 1069 | 17.398, 1070 | -0.644, 1071 | 19.978, 1072 | 7.089 1073 | ] 1074 | }, 1075 | { 1076 | "type": "s", 1077 | "values": [ 1078 | 14.176, 1079 | -1.936, 1080 | 14.176, 1081 | -4.5120000000000005 1082 | ] 1083 | }, 1084 | { 1085 | "type": "c", 1086 | "values": [ 1087 | 0, 1088 | -2.577, 1089 | -15.465, 1090 | -37.377, 1091 | -21.908, 1092 | -50.264 1093 | ] 1094 | }, 1095 | { 1096 | "type": "s", 1097 | "values": [ 1098 | -19.332, 1099 | -45.109, 1100 | -27.065, 1101 | -54.13 1102 | ] 1103 | }, 1104 | { 1105 | "type": "c", 1106 | "values": [ 1107 | -7.732, 1108 | -9.021, 1109 | -15.466, 1110 | -2.577, 1111 | -15.466, 1112 | -2.577 1113 | ] 1114 | }, 1115 | { 1116 | "type": "s", 1117 | "values": [ 1118 | 1.9340000000000002, 1119 | 16.756, 1120 | -5.7989999999999995, 1121 | 26.422 1122 | ] 1123 | }, 1124 | { 1125 | "type": "c", 1126 | "values": [ 1127 | -3.601, 1128 | 4.498, 1129 | -25.929, 1130 | 11.886, 1131 | -30.288, 1132 | -0.646 1133 | ] 1134 | }, 1135 | { 1136 | "type": "c", 1137 | "values": [ 1138 | -5.156, 1139 | -14.819, 1140 | -6.443, 1141 | -25.775, 1142 | 7.733, 1143 | -30.931 1144 | ] 1145 | }, 1146 | { 1147 | "type": "c", 1148 | "values": [ 1149 | 14.176, 1150 | -5.154, 1151 | 18.688, 1152 | 3.866, 1153 | 25.131, 1154 | -3.866 1155 | ] 1156 | }, 1157 | { 1158 | "type": "c", 1159 | "values": [ 1160 | 5.219, 1161 | -6.261, 1162 | 9.666, 1163 | -9.666, 1164 | 3.223, 1165 | -21.909 1166 | ] 1167 | }, 1168 | { 1169 | "type": "c", 1170 | "values": [ 1171 | -1.2, 1172 | -2.282, 1173 | 0.002, 1174 | -9.022, 1175 | -10.31, 1176 | -11.6 1177 | ] 1178 | }, 1179 | { 1180 | "type": "s", 1181 | "values": [ 1182 | -19.332, 1183 | -18.042, 1184 | -22.554, 1185 | -33.508 1186 | ] 1187 | }, 1188 | { 1189 | "type": "c", 1190 | "values": [ 1191 | -2.904, 1192 | -13.937, 1193 | -21.263, 1194 | -60.574, 1195 | -27.708, 1196 | -70.885 1197 | ] 1198 | }, 1199 | { 1200 | "type": "s", 1201 | "values": [ 1202 | -3.867, 1203 | -28.353, 1204 | -7.733, 1205 | -30.931 1206 | ] 1207 | }, 1208 | { 1209 | "type": "c", 1210 | "values": [ 1211 | -3.867, 1212 | -2.5780000000000003, 1213 | -28.356, 1214 | -18.043, 1215 | -45.109, 1216 | -25.776 1217 | ] 1218 | }, 1219 | { 1220 | "type": "c", 1221 | "values": [ 1222 | -16.753, 1223 | -7.733, 1224 | -28.353, 1225 | -19.331, 1226 | -33.508, 1227 | -32.22 1228 | ] 1229 | }, 1230 | { 1231 | "type": "s", 1232 | "values": [ 1233 | -6.443, 1234 | -18.044, 1235 | 0, 1236 | -24.488 1237 | ] 1238 | }, 1239 | { 1240 | "type": "c", 1241 | "values": [ 1242 | 0, 1243 | 0, 1244 | 25.773, 1245 | 22.554, 1246 | 28.351, 1247 | 28.998 1248 | ] 1249 | }, 1250 | { 1251 | "type": "s", 1252 | "values": [ 1253 | 48.976, 1254 | 38.664, 1255 | 52.842, 1256 | 43.819 1257 | ] 1258 | }, 1259 | { 1260 | "type": "c", 1261 | "values": [ 1262 | 3.867, 1263 | 5.155, 1264 | 11.6, 1265 | 23.199, 1266 | 11.602, 1267 | 26.421 1268 | ] 1269 | }, 1270 | { 1271 | "type": "c", 1272 | "values": [ 1273 | 0, 1274 | 0, 1275 | 25.775, 1276 | 29.643, 1277 | 32.219, 1278 | 37.375 1279 | ] 1280 | }, 1281 | { 1282 | "type": "c", 1283 | "values": [ 1284 | 6.443, 1285 | 7.733, 1286 | 11.76, 1287 | 34.638, 1288 | 19.492, 1289 | 51.391 1290 | ] 1291 | }, 1292 | { 1293 | "type": "s", 1294 | "values": [ 1295 | 21.75, 1296 | 25.938, 1297 | 34.637, 1298 | 22.071 1299 | ] 1300 | }, 1301 | { 1302 | "type": "s", 1303 | "values": [ 1304 | 56.547, 1305 | -6.285, 1306 | 66.856, 1307 | -11.438 1308 | ] 1309 | }, 1310 | { 1311 | "type": "c", 1312 | "values": [ 1313 | 10.31, 1314 | -5.154, 1315 | 4.833, 1316 | -25.132, 1317 | 2.899, 1318 | -53.163 1319 | ] 1320 | }, 1321 | { 1322 | "type": "c", 1323 | "values": [ 1324 | -1.795, 1325 | -26.034, 1326 | 11.439, 1327 | -43.658, 1328 | 15.306, 1329 | -55.257 1330 | ] 1331 | }, 1332 | { 1333 | "type": "l", 1334 | "values": [ 1335 | 10.312, 1336 | -11.599 1337 | ] 1338 | }, 1339 | { 1340 | "type": "c", 1341 | "values": [ 1342 | 13.047, 1343 | 4.027, 1344 | 26.58, 1345 | 9.826, 1346 | 27.064, 1347 | 47.685 1348 | ] 1349 | }, 1350 | { 1351 | "type": "c", 1352 | "values": [ 1353 | 0.14900000000000002, 1354 | 11.599, 1355 | 18.043, 1356 | 61.863, 1357 | 19.332, 1358 | 72.173 1359 | ] 1360 | }, 1361 | { 1362 | "type": "c", 1363 | "values": [ 1364 | 1.29, 1365 | 10.311, 1366 | 1.29, 1367 | 27.063, 1368 | 3.867, 1369 | 29.643 1370 | ] 1371 | }, 1372 | { 1373 | "type": "c", 1374 | "values": [ 1375 | 2.576, 1376 | 2.5780000000000003, 1377 | 32.219, 1378 | 28.354, 1379 | 37.374, 1380 | 28.354 1381 | ] 1382 | }, 1383 | { 1384 | "type": "c", 1385 | "values": [ 1386 | 1.29, 1387 | 20.622, 1388 | 2.577, 1389 | 42.528, 1390 | 3.866, 1391 | 60.573 1392 | ] 1393 | }, 1394 | { 1395 | "type": "s", 1396 | "values": [ 1397 | 7.894, 1398 | 68.146, 1399 | 2.737, 1400 | 79.744 1401 | ] 1402 | }, 1403 | { 1404 | "type": "c", 1405 | "values": [ 1406 | -5.155, 1407 | 11.6, 1408 | -19.49, 1409 | 24.648, 1410 | -23.356, 1411 | 37.537 1412 | ] 1413 | }, 1414 | { 1415 | "type": "c", 1416 | "values": [ 1417 | -3.867, 1418 | 12.889, 1419 | -21.909, 1420 | 50.264, 1421 | -27.064, 1422 | 57.996 1423 | ] 1424 | }, 1425 | { 1426 | "type": "c", 1427 | "values": [ 1428 | -5.156, 1429 | 7.733, 1430 | -17.883, 1431 | 9.506, 1432 | -18.045, 1433 | 15.466 1434 | ] 1435 | }, 1436 | { 1437 | "type": "s", 1438 | "values": [ 1439 | 10.312, 1440 | 10.31, 1441 | 10.312, 1442 | 27.064 1443 | ] 1444 | }, 1445 | { 1446 | "type": "s", 1447 | "values": [ 1448 | 1.288, 1449 | 42.53, 1450 | 1.288, 1451 | 50.264 1452 | ] 1453 | }, 1454 | { 1455 | "type": "c", 1456 | "values": [ 1457 | 0, 1458 | 7.732, 1459 | 2.254, 1460 | 24.648, 1461 | 2.254, 1462 | 31.092 1463 | ] 1464 | }, 1465 | { 1466 | "type": "c", 1467 | "values": [ 1468 | 0, 1469 | 0, 1470 | 67.986, 1471 | -7.57, 1472 | 89.894, 1473 | -19.332 1474 | ] 1475 | }, 1476 | { 1477 | "type": "s", 1478 | "values": [ 1479 | 64.763, 1480 | -57.996, 1481 | 64.763, 1482 | -57.996 1483 | ] 1484 | }, 1485 | { 1486 | "type": "c", 1487 | "values": [ 1488 | 12.889, 1489 | -9.021, 1490 | 40.275, 1491 | -25.937, 1492 | 38.986, 1493 | -37.535 1494 | ] 1495 | }, 1496 | { 1497 | "type": "c", 1498 | "values": [ 1499 | -2.122, 1500 | -19.093, 1501 | -6.334, 1502 | -101.612, 1503 | -7.089, 1504 | -108.422 1505 | ] 1506 | }, 1507 | { 1508 | "type": "c", 1509 | "values": [ 1510 | -1.288, 1511 | -11.599, 1512 | -18.687, 1513 | -68.146, 1514 | -27.709, 1515 | -72.012 1516 | ] 1517 | }, 1518 | { 1519 | "type": "s", 1520 | "values": [ 1521 | -56.706, 1522 | -100.526, 1523 | -61.86, 1524 | -105.681 1525 | ] 1526 | }, 1527 | { 1528 | "type": "c", 1529 | "values": [ 1530 | -5.154, 1531 | -5.155, 1532 | -48.976, 1533 | -24.487, 1534 | -55.419, 1535 | -27.064 1536 | ] 1537 | }, 1538 | { 1539 | "type": "c", 1540 | "values": [ 1541 | -6.443, 1542 | -2.579, 1543 | -27.064, 1544 | -92.794, 1545 | -27.064, 1546 | -95.372 1547 | ] 1548 | }, 1549 | { 1550 | "type": "c", 1551 | "values": [ 1552 | 0, 1553 | 0, 1554 | -47.041, 1555 | -31.575, 1556 | -48.33, 1557 | -36.086 1558 | ] 1559 | }, 1560 | { 1561 | "type": "c", 1562 | "values": [ 1563 | -1.29, 1564 | -4.511, 1565 | 13.853, 1566 | -98.754, 1567 | 11.599, 1568 | -100.526 1569 | ] 1570 | }, 1571 | { 1572 | "type": "c", 1573 | "values": [ 1574 | -5.477, 1575 | 40.759, 1576 | -21.91, 1577 | 112.771, 1578 | -58.646, 1579 | 131.454 1580 | ] 1581 | }, 1582 | { 1583 | "type": "c", 1584 | "values": [ 1585 | -18.042, 1586 | 7.733, 1587 | -51.547, 1588 | 14.825, 1589 | -95.366, 1590 | -13.528 1591 | ] 1592 | }, 1593 | { 1594 | "type": "c", 1595 | "values": [ 1596 | -43.82, 1597 | -28.354, 1598 | -67.017, 1599 | -36.731, 1600 | -82.482, 1601 | -47.042 1602 | ] 1603 | }, 1604 | { 1605 | "type": "c", 1606 | "values": [ 1607 | -15.465, 1608 | -10.311, 1609 | -16.111, 1610 | -26.42, 1611 | -16.111, 1612 | -34.153 1613 | ] 1614 | }, 1615 | { 1616 | "type": "c", 1617 | "values": [ 1618 | -14.178, 1619 | -1.2890000000000001, 1620 | -16.749, 1621 | -6.44, 1622 | -21.265, 1623 | -16.11 1624 | ] 1625 | }, 1626 | { 1627 | "type": "c", 1628 | "values": [ 1629 | -6.983, 1630 | -14.954, 1631 | -16.753, 1632 | -18.688, 1633 | -21.909, 1634 | -34.153 1635 | ] 1636 | }, 1637 | { 1638 | "type": "c", 1639 | "values": [ 1640 | -5.156, 1641 | -15.466, 1642 | -5.16, 1643 | -38.024, 1644 | 10.306, 1645 | -30.292 1646 | ] 1647 | }, 1648 | { 1649 | "type": "c", 1650 | "values": [ 1651 | 15.466, 1652 | 7.733, 1653 | 20.625, 1654 | 12.893, 1655 | 28.358, 1656 | 30.936 1657 | ] 1658 | }, 1659 | { 1660 | "type": "c", 1661 | "values": [ 1662 | 7.732, 1663 | 18.043, 1664 | 9.658, 1665 | -1.2890000000000001, 1666 | 9.666, 1667 | -19.332 1668 | ] 1669 | }, 1670 | { 1671 | "type": "c", 1672 | "values": [ 1673 | 0.003, 1674 | -8.374, 1675 | 1.2890000000000001, 1676 | -10.956, 1677 | 5.7989999999999995, 1678 | -14.822 1679 | ] 1680 | }, 1681 | { 1682 | "type": "s", 1683 | "values": [ 1684 | 43.495, 1685 | -10.149000000000001, 1686 | 43.495, 1687 | -10.149000000000001 1688 | ] 1689 | }, 1690 | { 1691 | "type": "c", 1692 | "values": [ 1693 | 10.149000000000001, 1694 | -13.532, 1695 | 27.548000000000002, 1696 | -25.131, 1697 | 43.014, 1698 | -25.131 1699 | ] 1700 | }, 1701 | { 1702 | "type": "c", 1703 | "values": [ 1704 | 15.465, 1705 | 0, 1706 | 26.581, 1707 | 11.116, 1708 | 28.031, 1709 | 15.465 1710 | ] 1711 | }, 1712 | { 1713 | "type": "c", 1714 | "values": [ 1715 | 1.449, 1716 | 4.35, 1717 | -4.673, 1718 | 13.693999999999999, 1719 | -8.699, 1720 | 15.466 1721 | ] 1722 | }, 1723 | { 1724 | "type": "c", 1725 | "values": [ 1726 | -3.957, 1727 | 1.741, 1728 | -9.666, 1729 | 5.7989999999999995, 1730 | -23.199, 1731 | 6.766 1732 | ] 1733 | }, 1734 | { 1735 | "type": "c", 1736 | "values": [ 1737 | -13.532, 1738 | 0.967, 1739 | -23.198, 1740 | -1.933, 1741 | -30.931, 1742 | -1.933 1743 | ] 1744 | }, 1745 | { 1746 | "type": "c", 1747 | "values": [ 1748 | 6.285, 1749 | -8.86, 1750 | 12.226, 1751 | -11.388, 1752 | 18.094, 1753 | -14.975 1754 | ] 1755 | }, 1756 | { 1757 | "type": "l", 1758 | "values": [ 1759 | 0.271, 1760 | 0.47600000000000003 1761 | ] 1762 | }, 1763 | { 1764 | "type": "c", 1765 | "values": [ 1766 | 0, 1767 | 4.271, 1768 | 3.895, 1769 | 7.733, 1770 | 8.699, 1771 | 7.733 1772 | ] 1773 | }, 1774 | { 1775 | "type": "s", 1776 | "values": [ 1777 | 8.7, 1778 | -3.462, 1779 | 8.7, 1780 | -7.733 1781 | ] 1782 | }, 1783 | { 1784 | "type": "c", 1785 | "values": [ 1786 | 0, 1787 | -1.068, 1788 | -0.24400000000000002, 1789 | -2.084, 1790 | -0.6839999999999999, 1791 | -3.009 1792 | ] 1793 | }, 1794 | { 1795 | "type": "l", 1796 | "values": [ 1797 | 1.584, 1798 | -0.21300000000000002 1799 | ] 1800 | }, 1801 | { 1802 | "type": "c", 1803 | "values": [ 1804 | 6.027, 1805 | 0.915, 1806 | 11.665, 1807 | 3.223, 1808 | 16.498, 1809 | 6.123 1810 | ] 1811 | }, 1812 | { 1813 | "type": "c", 1814 | "values": [ 1815 | 4.833, 1816 | 2.899, 1817 | 12.405, 1818 | 2.738, 1819 | 14.338, 1820 | -3.062 1821 | ] 1822 | }, 1823 | { 1824 | "type": "c", 1825 | "values": [ 1826 | 1.9340000000000002, 1827 | -5.7989999999999995, 1828 | -1.772, 1829 | -12.870000000000001, 1830 | -1.772, 1831 | -24.487 1832 | ] 1833 | }, 1834 | { 1835 | "type": "c", 1836 | "values": [ 1837 | 0, 1838 | -7.25, 1839 | 3.384, 1840 | -11.277, 1841 | 2.417, 1842 | -14.177 1843 | ] 1844 | }, 1845 | { 1846 | "type": "c", 1847 | "values": [ 1848 | -0.967, 1849 | -2.899, 1850 | -19.336, 1851 | -3.552, 1852 | -32.864, 1853 | -3.222 1854 | ] 1855 | }, 1856 | { 1857 | "type": "c", 1858 | "values": [ 1859 | -19.815, 1860 | 0.48300000000000004, 1861 | -37.214, 1862 | 8.216, 1863 | -47.847, 1864 | 14.016 1865 | ] 1866 | }, 1867 | { 1868 | "type": "l", 1869 | "values": [ 1870 | -35.281, 1871 | 27.548000000000002 1872 | ] 1873 | }, 1874 | { 1875 | "type": "c", 1876 | "values": [ 1877 | 0, 1878 | -10.311, 1879 | 11.597, 1880 | -33.834, 1881 | -1.292, 1882 | -38.99 1883 | ] 1884 | }, 1885 | { 1886 | "type": "s", 1887 | "values": [ 1888 | -18.042, 1889 | -28.354, 1890 | -15.465, 1891 | -36.087 1892 | ] 1893 | }, 1894 | { 1895 | "type": "c", 1896 | "values": [ 1897 | 15.465, 1898 | 7.733, 1899 | 39.957, 1900 | 14.825, 1901 | 46.4, 1902 | 9.67 1903 | ] 1904 | }, 1905 | { 1906 | "type": "c", 1907 | "values": [ 1908 | 6.443, 1909 | -5.155, 1910 | -28.354, 1911 | -5.8, 1912 | -30.931, 1913 | -26.42 1914 | ] 1915 | }, 1916 | { 1917 | "type": "c", 1918 | "values": [ 1919 | -2.577, 1920 | -20.62, 1921 | 18.635, 1922 | 12.244, 1923 | 34.154, 1924 | 12.244 1925 | ] 1926 | }, 1927 | { 1928 | "type": "c", 1929 | "values": [ 1930 | 17.399, 1931 | 0, 1932 | -23.198, 1933 | -17.399, 1934 | -13.532, 1935 | -27.709 1936 | ] 1937 | }, 1938 | { 1939 | "type": "c", 1940 | "values": [ 1941 | 6.417, 1942 | -6.845, 1943 | 22.229, 1944 | -25.132, 1945 | 22.229, 1946 | -25.132 1947 | ] 1948 | }, 1949 | { 1950 | "type": "s", 1951 | "values": [ 1952 | -1.608, 1953 | 35.441, 1954 | 28.034, 1955 | 30.287 1956 | ] 1957 | }, 1958 | { 1959 | "type": "c", 1960 | "values": [ 1961 | 29.641, 1962 | -5.155, 1963 | 47.686, 1964 | -21.91, 1965 | 51.552, 1966 | -27.065 1967 | ] 1968 | }, 1969 | { 1970 | "type": "c", 1971 | "values": [ 1972 | 18.045, 1973 | -1.2890000000000001, 1974 | 15.468, 1975 | 3.867, 1976 | 29.644, 1977 | 11.599 1978 | ] 1979 | }, 1980 | { 1981 | "type": "c", 1982 | "values": [ 1983 | 14.177, 1984 | 7.733, 1985 | 24.488, 1986 | 36.086, 1987 | 18.045, 1988 | 46.397 1989 | ] 1990 | }, 1991 | { 1992 | "type": "l", 1993 | "values": [ 1994 | 10.313, 1995 | -24.487 1996 | ] 1997 | }, 1998 | { 1999 | "type": "c", 2000 | "values": [ 2001 | 5.155, 2002 | -11.599, 2003 | 7.742, 2004 | 27.065, 2005 | 21.918, 2006 | 33.509 2007 | ] 2008 | }, 2009 | { 2010 | "type": "c", 2011 | "values": [ 2012 | 14.177, 2013 | 6.443, 2014 | 27.08, 2015 | 3.866, 2016 | 27.08, 2017 | 3.866 2018 | ] 2019 | }, 2020 | { 2021 | "type": "c", 2022 | "values": [ 2023 | 1.288, 2024 | 7.088, 2025 | 3.894, 2026 | 36.087, 2027 | 4.539, 2028 | 42.53 2029 | ] 2030 | }, 2031 | { 2032 | "type": "c", 2033 | "values": [ 2034 | -10.954, 2035 | -15.465, 2036 | -11.579, 2037 | -20.943, 2038 | -20.399, 2039 | -26.259 2040 | ] 2041 | }, 2042 | { 2043 | "type": "c", 2044 | "values": [ 2045 | -8.82, 2046 | -5.316, 2047 | -32.019, 2048 | -5.8, 2049 | -40.476, 2050 | -1.9340000000000002 2051 | ] 2052 | }, 2053 | { 2054 | "type": "c", 2055 | "values": [ 2056 | -8.458, 2057 | 3.867, 2058 | -16.19, 2059 | 19.332, 2060 | -16.19, 2061 | 27.065 2062 | ] 2063 | }, 2064 | { 2065 | "type": "c", 2066 | "values": [ 2067 | 0, 2068 | 0, 2069 | -1.9340000000000002, 2070 | 6.283, 2071 | 0, 2072 | 10.633 2073 | ] 2074 | }, 2075 | { 2076 | "type": "c", 2077 | "values": [ 2078 | 1.933, 2079 | 4.35, 2080 | 9.609, 2081 | 34.934, 2082 | 11.277, 2083 | 39.47 2084 | ] 2085 | }, 2086 | { 2087 | "type": "c", 2088 | "values": [ 2089 | 3.144, 2090 | 8.539, 2091 | 10.471, 2092 | 24.325, 2093 | 11.438, 2094 | 30.125 2095 | ] 2096 | }, 2097 | { 2098 | "type": "c", 2099 | "values": [ 2100 | 0.967, 2101 | 5.7989999999999995, 2102 | 4.028, 2103 | 16.271, 2104 | -3.867, 2105 | 19.332 2106 | ] 2107 | }, 2108 | { 2109 | "type": "c", 2110 | "values": [ 2111 | -9.707, 2112 | 3.762, 2113 | -8.699, 2114 | 1.933, 2115 | -4.832, 2116 | -4.833 2117 | ] 2118 | }, 2119 | { 2120 | "type": "c", 2121 | "values": [ 2122 | 3.866, 2123 | -6.767, 2124 | -2.37, 2125 | -7.766, 2126 | -5.316, 2127 | -1.45 2128 | ] 2129 | }, 2130 | { 2131 | "type": "c", 2132 | "values": [ 2133 | -3.384, 2134 | 7.25, 2135 | -11.116, 2136 | 11.599, 2137 | -15.949, 2138 | 7.733 2139 | ] 2140 | }, 2141 | { 2142 | "type": "s", 2143 | "values": [ 2144 | 0.967, 2145 | -10.149000000000001, 2146 | 0, 2147 | -12.083 2148 | ] 2149 | }, 2150 | { 2151 | "type": "s", 2152 | "values": [ 2153 | -14.499, 2154 | -2.9, 2155 | -15.466, 2156 | 3.866 2157 | ] 2158 | }, 2159 | { 2160 | "type": "c", 2161 | "values": [ 2162 | -0.967, 2163 | 6.767, 2164 | -10.251, 2165 | 5.259, 2166 | -13.532, 2167 | -0.966 2168 | ] 2169 | }, 2170 | { 2171 | "type": "c", 2172 | "values": [ 2173 | -4.671, 2174 | -8.861, 2175 | 6.285, 2176 | -16.271, 2177 | 6.285, 2178 | -21.104 2179 | ] 2180 | }, 2181 | { 2182 | "type": "c", 2183 | "values": [ 2184 | -7.733, 2185 | 5.8, 2186 | -18.332, 2187 | 11.868, 2188 | -27.709, 2189 | 21.909 2190 | ] 2191 | }, 2192 | { 2193 | "type": "c", 2194 | "values": [ 2195 | -13.691, 2196 | 14.66, 2197 | -20.815, 2198 | 42.976, 2199 | -19.979, 2200 | 45.108 2201 | ] 2202 | }, 2203 | { 2204 | "type": "C", 2205 | "values": [ 2206 | 968.151, 2207 | 426.212, 2208 | 970.407, 2209 | 423.312, 2210 | 978.141, 2211 | 416.063 2212 | ] 2213 | }, 2214 | { 2215 | "type": "Z", 2216 | "values": [] 2217 | } 2218 | ] 2219 | -------------------------------------------------------------------------------- /test/parse-test.js: -------------------------------------------------------------------------------- 1 | import {readdirSync, readFileSync, writeFileSync} from "fs"; 2 | import {extname, join} from "path"; 3 | import tape from "tape-await"; 4 | import parse from "../src/parse.js"; 5 | 6 | readdirSync(join("test", "input")).forEach(file => { 7 | if (extname(file) !== ".json") return; 8 | tape(`parse ${file}`, test => { 9 | const infile = join("test", "input", file); 10 | const outfile = join("test", "output", file); 11 | const input = JSON.parse(readFileSync(infile, "utf8")); 12 | let actual = parse(input.path, input.options); 13 | let expected; 14 | try { 15 | expected = JSON.parse(readFileSync(outfile, "utf8")); 16 | } catch (error) { 17 | if (error.code === "ENOENT") { 18 | console.warn(`! generating ${outfile}`); 19 | writeFileSync(outfile, JSON.stringify(actual, null, 2) + "\n", "utf8"); 20 | return; 21 | } 22 | throw error; 23 | } 24 | test.deepEqual(actual, expected); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/highlight@^7.0.0": 13 | version "7.0.0" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 15 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@types/estree@0.0.39": 22 | version "0.0.39" 23 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 24 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 25 | 26 | "@types/node@*", "@types/node@^12.0.10": 27 | version "12.0.12" 28 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.12.tgz#cc791b402360db1eaf7176479072f91ee6c6c7ca" 29 | integrity sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ== 30 | 31 | "@types/resolve@0.0.8": 32 | version "0.0.8" 33 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" 34 | integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== 35 | dependencies: 36 | "@types/node" "*" 37 | 38 | acorn@^6.1.1: 39 | version "6.1.1" 40 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" 41 | integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== 42 | 43 | ansi-styles@^3.2.1: 44 | version "3.2.1" 45 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 46 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 47 | dependencies: 48 | color-convert "^1.9.0" 49 | 50 | balanced-match@^1.0.0: 51 | version "1.0.0" 52 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 53 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 54 | 55 | brace-expansion@^1.1.7: 56 | version "1.1.11" 57 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 58 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 59 | dependencies: 60 | balanced-match "^1.0.0" 61 | concat-map "0.0.1" 62 | 63 | buffer-from@^1.0.0: 64 | version "1.1.1" 65 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 66 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 67 | 68 | builtin-modules@^3.1.0: 69 | version "3.1.0" 70 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" 71 | integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== 72 | 73 | chalk@^2.0.0: 74 | version "2.4.2" 75 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 76 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 77 | dependencies: 78 | ansi-styles "^3.2.1" 79 | escape-string-regexp "^1.0.5" 80 | supports-color "^5.3.0" 81 | 82 | color-convert@^1.9.0: 83 | version "1.9.3" 84 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 85 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 86 | dependencies: 87 | color-name "1.1.3" 88 | 89 | color-name@1.1.3: 90 | version "1.1.3" 91 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 92 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 93 | 94 | commander@^2.19.0: 95 | version "2.20.0" 96 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" 97 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== 98 | 99 | concat-map@0.0.1: 100 | version "0.0.1" 101 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 102 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 103 | 104 | core-util-is@~1.0.0: 105 | version "1.0.2" 106 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 107 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 108 | 109 | deep-equal@~1.0.1: 110 | version "1.0.1" 111 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 112 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= 113 | 114 | define-properties@^1.1.2: 115 | version "1.1.3" 116 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 117 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 118 | dependencies: 119 | object-keys "^1.0.12" 120 | 121 | defined@~1.0.0: 122 | version "1.0.0" 123 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 124 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 125 | 126 | es-abstract@^1.5.0: 127 | version "1.13.0" 128 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" 129 | integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== 130 | dependencies: 131 | es-to-primitive "^1.2.0" 132 | function-bind "^1.1.1" 133 | has "^1.0.3" 134 | is-callable "^1.1.4" 135 | is-regex "^1.0.4" 136 | object-keys "^1.0.12" 137 | 138 | es-to-primitive@^1.2.0: 139 | version "1.2.0" 140 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 141 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 142 | dependencies: 143 | is-callable "^1.1.4" 144 | is-date-object "^1.0.1" 145 | is-symbol "^1.0.2" 146 | 147 | escape-string-regexp@^1.0.5: 148 | version "1.0.5" 149 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 150 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 151 | 152 | esm@3: 153 | version "3.2.25" 154 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" 155 | integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== 156 | 157 | esutils@^2.0.2: 158 | version "2.0.2" 159 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 160 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 161 | 162 | for-each@~0.3.3: 163 | version "0.3.3" 164 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 165 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 166 | dependencies: 167 | is-callable "^1.1.3" 168 | 169 | fs.realpath@^1.0.0: 170 | version "1.0.0" 171 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 172 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 173 | 174 | function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: 175 | version "1.1.1" 176 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 177 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 178 | 179 | glob@~7.1.4: 180 | version "7.1.4" 181 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 182 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 183 | dependencies: 184 | fs.realpath "^1.0.0" 185 | inflight "^1.0.4" 186 | inherits "2" 187 | minimatch "^3.0.4" 188 | once "^1.3.0" 189 | path-is-absolute "^1.0.0" 190 | 191 | has-flag@^3.0.0: 192 | version "3.0.0" 193 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 194 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 195 | 196 | has-symbols@^1.0.0: 197 | version "1.0.0" 198 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 199 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 200 | 201 | has@^1.0.1, has@^1.0.3, has@~1.0.3: 202 | version "1.0.3" 203 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 204 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 205 | dependencies: 206 | function-bind "^1.1.1" 207 | 208 | inflight@^1.0.4: 209 | version "1.0.6" 210 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 211 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 212 | dependencies: 213 | once "^1.3.0" 214 | wrappy "1" 215 | 216 | inherits@2, inherits@~2.0.3, inherits@~2.0.4: 217 | version "2.0.4" 218 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 219 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 220 | 221 | is-callable@^1.1.3, is-callable@^1.1.4: 222 | version "1.1.4" 223 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 224 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 225 | 226 | is-date-object@^1.0.1: 227 | version "1.0.1" 228 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 229 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 230 | 231 | is-module@^1.0.0: 232 | version "1.0.0" 233 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 234 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 235 | 236 | is-regex@^1.0.4: 237 | version "1.0.4" 238 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 239 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 240 | dependencies: 241 | has "^1.0.1" 242 | 243 | is-symbol@^1.0.2: 244 | version "1.0.2" 245 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 246 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 247 | dependencies: 248 | has-symbols "^1.0.0" 249 | 250 | isarray@~1.0.0: 251 | version "1.0.0" 252 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 253 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 254 | 255 | jest-worker@^24.0.0: 256 | version "24.6.0" 257 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" 258 | integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== 259 | dependencies: 260 | merge-stream "^1.0.1" 261 | supports-color "^6.1.0" 262 | 263 | js-tokens@^4.0.0: 264 | version "4.0.0" 265 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 266 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 267 | 268 | merge-stream@^1.0.1: 269 | version "1.0.1" 270 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" 271 | integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= 272 | dependencies: 273 | readable-stream "^2.0.1" 274 | 275 | minimatch@^3.0.4: 276 | version "3.0.4" 277 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 278 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 279 | dependencies: 280 | brace-expansion "^1.1.7" 281 | 282 | minimist@~1.2.0: 283 | version "1.2.0" 284 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 285 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 286 | 287 | object-inspect@~1.6.0: 288 | version "1.6.0" 289 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" 290 | integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== 291 | 292 | object-keys@^1.0.12: 293 | version "1.1.1" 294 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 295 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 296 | 297 | once@^1.3.0: 298 | version "1.4.0" 299 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 300 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 301 | dependencies: 302 | wrappy "1" 303 | 304 | path-is-absolute@^1.0.0: 305 | version "1.0.1" 306 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 307 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 308 | 309 | path-parse@^1.0.6: 310 | version "1.0.6" 311 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 312 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 313 | 314 | process-nextick-args@~2.0.0: 315 | version "2.0.1" 316 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 317 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 318 | 319 | readable-stream@^2.0.1: 320 | version "2.3.6" 321 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 322 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 323 | dependencies: 324 | core-util-is "~1.0.0" 325 | inherits "~2.0.3" 326 | isarray "~1.0.0" 327 | process-nextick-args "~2.0.0" 328 | safe-buffer "~5.1.1" 329 | string_decoder "~1.1.1" 330 | util-deprecate "~1.0.1" 331 | 332 | resolve@^1.10.0, resolve@~1.11.1: 333 | version "1.11.1" 334 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" 335 | integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== 336 | dependencies: 337 | path-parse "^1.0.6" 338 | 339 | resumer@~0.0.0: 340 | version "0.0.0" 341 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 342 | integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= 343 | dependencies: 344 | through "~2.3.4" 345 | 346 | rollup-plugin-node-resolve@4: 347 | version "4.2.4" 348 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz#7d370f8d6fd3031006a0032c38262dd9be3c6250" 349 | integrity sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw== 350 | dependencies: 351 | "@types/resolve" "0.0.8" 352 | builtin-modules "^3.1.0" 353 | is-module "^1.0.0" 354 | resolve "^1.10.0" 355 | 356 | rollup-plugin-terser@4: 357 | version "4.0.4" 358 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz#6f661ef284fa7c27963d242601691dc3d23f994e" 359 | integrity sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg== 360 | dependencies: 361 | "@babel/code-frame" "^7.0.0" 362 | jest-worker "^24.0.0" 363 | serialize-javascript "^1.6.1" 364 | terser "^3.14.1" 365 | 366 | rollup@1: 367 | version "1.16.4" 368 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.16.4.tgz#0a13bace39cf6c1784781e383e605d1b6274c2f4" 369 | integrity sha512-Bht8QXoo2dJc8lUGyEMfnfKCV7hkf1oLzN6L8YdDE2toaaoCe5DxoqYjTyKswWQyiZseViZw9quEdDRz0YXifw== 370 | dependencies: 371 | "@types/estree" "0.0.39" 372 | "@types/node" "^12.0.10" 373 | acorn "^6.1.1" 374 | 375 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 376 | version "5.1.2" 377 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 378 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 379 | 380 | serialize-javascript@^1.6.1: 381 | version "1.7.0" 382 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" 383 | integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== 384 | 385 | source-map-support@~0.5.10: 386 | version "0.5.12" 387 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" 388 | integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== 389 | dependencies: 390 | buffer-from "^1.0.0" 391 | source-map "^0.6.0" 392 | 393 | source-map@^0.6.0, source-map@~0.6.1: 394 | version "0.6.1" 395 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 396 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 397 | 398 | string.prototype.trim@~1.1.2: 399 | version "1.1.2" 400 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" 401 | integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= 402 | dependencies: 403 | define-properties "^1.1.2" 404 | es-abstract "^1.5.0" 405 | function-bind "^1.0.2" 406 | 407 | string_decoder@~1.1.1: 408 | version "1.1.1" 409 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 410 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 411 | dependencies: 412 | safe-buffer "~5.1.0" 413 | 414 | supports-color@^5.3.0: 415 | version "5.5.0" 416 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 417 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 418 | dependencies: 419 | has-flag "^3.0.0" 420 | 421 | supports-color@^6.1.0: 422 | version "6.1.0" 423 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 424 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 425 | dependencies: 426 | has-flag "^3.0.0" 427 | 428 | tape-await@^0.1.2: 429 | version "0.1.2" 430 | resolved "https://registry.yarnpkg.com/tape-await/-/tape-await-0.1.2.tgz#41f99110a2bc4728732d8bc058278b2fbf3c0bec" 431 | integrity sha512-Gt1bXilp9uRTVj+DecLDs37tP1XwGXfFzWVqQEfW7foO9TNacy+aN5TdT0Kv6LI5t/9l3iOE4nX2hr2SQ4+OSg== 432 | 433 | tape@4: 434 | version "4.11.0" 435 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.11.0.tgz#63d41accd95e45a23a874473051c57fdbc58edc1" 436 | integrity sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA== 437 | dependencies: 438 | deep-equal "~1.0.1" 439 | defined "~1.0.0" 440 | for-each "~0.3.3" 441 | function-bind "~1.1.1" 442 | glob "~7.1.4" 443 | has "~1.0.3" 444 | inherits "~2.0.4" 445 | minimist "~1.2.0" 446 | object-inspect "~1.6.0" 447 | resolve "~1.11.1" 448 | resumer "~0.0.0" 449 | string.prototype.trim "~1.1.2" 450 | through "~2.3.8" 451 | 452 | terser@^3.14.1: 453 | version "3.17.0" 454 | resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" 455 | integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== 456 | dependencies: 457 | commander "^2.19.0" 458 | source-map "~0.6.1" 459 | source-map-support "~0.5.10" 460 | 461 | through@~2.3.4, through@~2.3.8: 462 | version "2.3.8" 463 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 464 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 465 | 466 | util-deprecate@~1.0.1: 467 | version "1.0.2" 468 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 469 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 470 | 471 | wrappy@1: 472 | version "1.0.2" 473 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 474 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 475 | --------------------------------------------------------------------------------