From 39831ae9872345f1d83c2fd02d0c754377343051 Mon Sep 17 00:00:00 2001 From: Jake Read <jake.read@cba.mit.edu> Date: Mon, 28 Oct 2019 10:40:30 -0400 Subject: [PATCH] prototype planner skeleton --- LOG.md | 2 +- hunks/adhoc/consumer.js | 30 + hunks/adhoc/saturn.js | 45 + hunks/adhoc/tpath.js | 42 + save/contexts/cuttlefish/stest.json | 173 ++ test_files/example-path.js | 3654 +++++++++++++++++++++++++++ test_files/example-path.json | 3652 ++++++++++++++++++++++++++ typeset.js | 2 +- 8 files changed, 7598 insertions(+), 2 deletions(-) create mode 100644 hunks/adhoc/consumer.js create mode 100644 hunks/adhoc/saturn.js create mode 100644 hunks/adhoc/tpath.js create mode 100644 save/contexts/cuttlefish/stest.json create mode 100644 test_files/example-path.js create mode 100644 test_files/example-path.json diff --git a/LOG.md b/LOG.md index f1bc187..2a6ad70 100644 --- a/LOG.md +++ b/LOG.md @@ -8,7 +8,7 @@ things that *should work* before MW - don't have to push new outputs / inputs to the hunk manually (but cross compatible) - confusing if we make it, and it doesn't appear, wtf? - err path cleanup ... i.e. cover cases of new hunk writing: - syntax errors (in code, on load) - - file naming errors + - file naming errors ## Dev Golf diff --git a/hunks/adhoc/consumer.js b/hunks/adhoc/consumer.js new file mode 100644 index 0000000..c9030ec --- /dev/null +++ b/hunks/adhoc/consumer.js @@ -0,0 +1,30 @@ +/* + +mimic / prototype steppers downstream, consuming on known timestep + +*/ + +import { + Hunkify, + Input, + Output, + State +} from '../hunks.js' + +export default function Consumer(){ + Hunkify(this) + + let takeup = this.input('number', 'takes') + let taken = false + let period = this.state('number', 'period', 50) + + this.loop = () => { + if(takeup.io() && !taken){ + takeup.get() + taken = true + setTimeout(() => { + taken = false + }, period.value) + } + } +} diff --git a/hunks/adhoc/saturn.js b/hunks/adhoc/saturn.js new file mode 100644 index 0000000..a5d1746 --- /dev/null +++ b/hunks/adhoc/saturn.js @@ -0,0 +1,45 @@ +/* + +accel planning for networked controllers + +*/ + +import { + Hunkify, + Input, + Output, + State +} from '../hunks.js' + +export default function Saturn(){ + Hunkify(this) + + let inpts = this.input('array', 'posn') + let outx = this.output('number', 'outx') + let outy = this.output('number', 'outy') + let outz = this.output('number', 'outz') + let outp = this.output('array', 'posn') + let period = this.state('number', 'period', 50) // in ms, + + let allclear = () => { + return (!outx.io() && !outy.io() && !outz.io()) + } + + // our path (and num segs to plan over) + let opl = 64 + let op = [] + + this.loop = () => { + if(op.length < opl && inpts.io()){ + op.push(inpts.get()) + } + if(allclear()){ + if(op.length){ + let np = op.shift() + outx.put(np[0]) + outy.put(np[1]) + outz.put(np[2]) + } + } + } +} diff --git a/hunks/adhoc/tpath.js b/hunks/adhoc/tpath.js new file mode 100644 index 0000000..81ff430 --- /dev/null +++ b/hunks/adhoc/tpath.js @@ -0,0 +1,42 @@ +/* + +testing path output -> saturn + +*/ + +import { + Hunkify, + Input, + Output, + State +} from '../hunks.js' + +import * as expath from '../../test_files/example-path.js' + +export default function TPFCOUT(){ + Hunkify(this) + + // copy this in au manuel + let ogpath = expath.default.arr + let path = [] + + let outPosn = this.output('array', 'position') + let outReset = this.state('boolean', 'reset', false) + outReset.onChange = (value) => { + path = JSON.parse(JSON.stringify(ogpath)) + } + + this.init = () => { + path = JSON.parse(JSON.stringify(ogpath)) + console.log(path) + } + + // copies out, one at a time, fc pressure + this.loop = () => { + if(path.length){ + if(!outPosn.io()){ + outPosn.put(path.shift()) + } + } + } +} diff --git a/save/contexts/cuttlefish/stest.json b/save/contexts/cuttlefish/stest.json new file mode 100644 index 0000000..7f9daee --- /dev/null +++ b/save/contexts/cuttlefish/stest.json @@ -0,0 +1,173 @@ +{ + "interpreterName": "cuttlefish", + "interpreterVersion": "v0.1", + "hunks": [ + { + "type": "manager", + "name": "nrol", + "inputs": [ + { + "name": "msgs", + "type": "byteArray" + } + ], + "outputs": [ + { + "name": "msgs", + "type": "byteArray", + "connections": [ + { + "inHunkIndex": "1", + "inHunkInput": "0" + } + ] + } + ] + }, + { + "type": "view", + "name": "tlview", + "inputs": [ + { + "name": "msgs", + "type": "byteArray" + } + ], + "outputs": [ + { + "name": "msgs", + "type": "byteArray", + "connections": [ + { + "inHunkIndex": "0", + "inHunkInput": "0" + } + ] + } + ] + }, + { + "type": "adhoc/saturn", + "name": "adhoc/saturn_2", + "inputs": [ + { + "name": "posn", + "type": "array" + } + ], + "outputs": [ + { + "name": "outx", + "type": "number", + "connections": [ + { + "inHunkIndex": "4", + "inHunkInput": "0" + } + ] + }, + { + "name": "outy", + "type": "number", + "connections": [ + { + "inHunkIndex": "5", + "inHunkInput": "0" + } + ] + }, + { + "name": "outz", + "type": "number", + "connections": [ + { + "inHunkIndex": "6", + "inHunkInput": "0" + } + ] + } + ], + "states": [ + { + "name": "period", + "type": "number", + "value": "50" + } + ] + }, + { + "type": "adhoc/tpath", + "name": "adhoc/tpath_3", + "outputs": [ + { + "name": "position", + "type": "array", + "connections": [ + { + "inHunkIndex": "2", + "inHunkInput": "0" + } + ] + } + ], + "states": [ + { + "name": "reset", + "type": "boolean", + "value": "false" + } + ] + }, + { + "type": "adhoc/consumer", + "name": "adhoc/consumer_4", + "inputs": [ + { + "name": "takes", + "type": "number" + } + ], + "states": [ + { + "name": "period", + "type": "number", + "value": "50" + } + ] + }, + { + "type": "adhoc/consumer", + "name": "adhoc/consumer_5", + "inputs": [ + { + "name": "takes", + "type": "number" + } + ], + "states": [ + { + "name": "period", + "type": "number", + "value": "50" + } + ] + }, + { + "type": "adhoc/consumer", + "name": "adhoc/consumer_6", + "inputs": [ + { + "name": "takes", + "type": "number" + } + ], + "states": [ + { + "name": "period", + "type": "number", + "value": "50" + } + ] + } + ] +} \ No newline at end of file diff --git a/test_files/example-path.js b/test_files/example-path.js new file mode 100644 index 0000000..c13a41d --- /dev/null +++ b/test_files/example-path.js @@ -0,0 +1,3654 @@ +export default { + arr: [ + [ + 63, + 63, + 50 + ], + [ + 63, + 63, + -5 + ], + [ + 1791, + 63, + -5 + ], + [ + 1791, + 1854, + -5 + ], + [ + 63, + 1854, + -5 + ], + [ + 63, + 63, + -5 + ], + [ + 63, + 63, + 50 + ], + [ + 172, + 135, + 50 + ], + [ + 172, + 135, + -5 + ], + [ + 172, + 195, + -5 + ], + [ + 201, + 195, + -5 + ], + [ + 201, + 249, + -5 + ], + [ + 169, + 249, + -5 + ], + [ + 169, + 335, + -5 + ], + [ + 201, + 335, + -5 + ], + [ + 201, + 405, + -5 + ], + [ + 204, + 405, + -5 + ], + [ + 204, + 411, + -5 + ], + [ + 253, + 411, + -5 + ], + [ + 253, + 382, + -5 + ], + [ + 218, + 382, + -5 + ], + [ + 218, + 335, + -5 + ], + [ + 250, + 335, + -5 + ], + [ + 250, + 249, + -5 + ], + [ + 218, + 249, + -5 + ], + [ + 218, + 195, + -5 + ], + [ + 222, + 195, + -5 + ], + [ + 222, + 135, + -5 + ], + [ + 172, + 135, + -5 + ], + [ + 172, + 135, + 50 + ], + [ + 366, + 97, + 50 + ], + [ + 366, + 97, + -5 + ], + [ + 366, + 135, + -5 + ], + [ + 350, + 135, + -5 + ], + [ + 350, + 195, + -5 + ], + [ + 400, + 195, + -5 + ], + [ + 400, + 135, + -5 + ], + [ + 383, + 135, + -5 + ], + [ + 383, + 114, + -5 + ], + [ + 683, + 114, + -5 + ], + [ + 683, + 182, + -5 + ], + [ + 661, + 182, + -5 + ], + [ + 661, + 308, + -5 + ], + [ + 723, + 308, + -5 + ], + [ + 723, + 182, + -5 + ], + [ + 700, + 182, + -5 + ], + [ + 700, + 114, + -5 + ], + [ + 1329, + 114, + -5 + ], + [ + 1329, + 182, + -5 + ], + [ + 1306, + 182, + -5 + ], + [ + 1306, + 308, + -5 + ], + [ + 1368, + 308, + -5 + ], + [ + 1368, + 182, + -5 + ], + [ + 1346, + 182, + -5 + ], + [ + 1346, + 114, + -5 + ], + [ + 1740, + 114, + -5 + ], + [ + 1740, + 1024, + -5 + ], + [ + 1672, + 1024, + -5 + ], + [ + 1672, + 1001, + -5 + ], + [ + 1546, + 1001, + -5 + ], + [ + 1546, + 1063, + -5 + ], + [ + 1672, + 1063, + -5 + ], + [ + 1672, + 1041, + -5 + ], + [ + 1740, + 1041, + -5 + ], + [ + 1740, + 1791, + -5 + ], + [ + 1033, + 1791, + -5 + ], + [ + 1033, + 1722, + -5 + ], + [ + 1056, + 1722, + -5 + ], + [ + 1056, + 1596, + -5 + ], + [ + 994, + 1596, + -5 + ], + [ + 994, + 1722, + -5 + ], + [ + 1017, + 1722, + -5 + ], + [ + 1017, + 1807, + -5 + ], + [ + 1757, + 1807, + -5 + ], + [ + 1757, + 97, + -5 + ], + [ + 366, + 97, + -5 + ], + [ + 366, + 97, + 50 + ], + [ + 436, + 135, + 50 + ], + [ + 436, + 135, + -5 + ], + [ + 436, + 284, + -5 + ], + [ + 402, + 284, + -5 + ], + [ + 402, + 249, + -5 + ], + [ + 322, + 249, + -5 + ], + [ + 322, + 335, + -5 + ], + [ + 402, + 335, + -5 + ], + [ + 402, + 300, + -5 + ], + [ + 436, + 300, + -5 + ], + [ + 436, + 436, + -5 + ], + [ + 368, + 436, + -5 + ], + [ + 368, + 430, + -5 + ], + [ + 318, + 430, + -5 + ], + [ + 318, + 459, + -5 + ], + [ + 368, + 459, + -5 + ], + [ + 368, + 453, + -5 + ], + [ + 436, + 453, + -5 + ], + [ + 436, + 588, + -5 + ], + [ + 402, + 588, + -5 + ], + [ + 402, + 554, + -5 + ], + [ + 322, + 554, + -5 + ], + [ + 322, + 588, + -5 + ], + [ + 309, + 588, + -5 + ], + [ + 309, + 1096, + -5 + ], + [ + 270, + 1096, + -5 + ], + [ + 270, + 1073, + -5 + ], + [ + 144, + 1073, + -5 + ], + [ + 144, + 1136, + -5 + ], + [ + 270, + 1136, + -5 + ], + [ + 270, + 1113, + -5 + ], + [ + 309, + 1113, + -5 + ], + [ + 309, + 1176, + -5 + ], + [ + 618, + 1176, + -5 + ], + [ + 618, + 1100, + -5 + ], + [ + 704, + 1100, + -5 + ], + [ + 704, + 1084, + -5 + ], + [ + 601, + 1084, + -5 + ], + [ + 601, + 1160, + -5 + ], + [ + 326, + 1160, + -5 + ], + [ + 326, + 639, + -5 + ], + [ + 402, + 639, + -5 + ], + [ + 402, + 605, + -5 + ], + [ + 453, + 605, + -5 + ], + [ + 453, + 152, + -5 + ], + [ + 620, + 152, + -5 + ], + [ + 620, + 364, + -5 + ], + [ + 683, + 364, + -5 + ], + [ + 683, + 454, + -5 + ], + [ + 661, + 454, + -5 + ], + [ + 661, + 580, + -5 + ], + [ + 723, + 580, + -5 + ], + [ + 723, + 454, + -5 + ], + [ + 700, + 454, + -5 + ], + [ + 700, + 364, + -5 + ], + [ + 764, + 364, + -5 + ], + [ + 764, + 152, + -5 + ], + [ + 1265, + 152, + -5 + ], + [ + 1265, + 389, + -5 + ], + [ + 1329, + 389, + -5 + ], + [ + 1329, + 454, + -5 + ], + [ + 1306, + 454, + -5 + ], + [ + 1306, + 580, + -5 + ], + [ + 1368, + 580, + -5 + ], + [ + 1368, + 454, + -5 + ], + [ + 1346, + 454, + -5 + ], + [ + 1346, + 389, + -5 + ], + [ + 1409, + 389, + -5 + ], + [ + 1409, + 152, + -5 + ], + [ + 1702, + 152, + -5 + ], + [ + 1702, + 804, + -5 + ], + [ + 1227, + 804, + -5 + ], + [ + 1227, + 844, + -5 + ], + [ + 1099, + 844, + -5 + ], + [ + 1099, + 861, + -5 + ], + [ + 1244, + 861, + -5 + ], + [ + 1244, + 821, + -5 + ], + [ + 1702, + 821, + -5 + ], + [ + 1702, + 960, + -5 + ], + [ + 1490, + 960, + -5 + ], + [ + 1490, + 1024, + -5 + ], + [ + 1400, + 1024, + -5 + ], + [ + 1400, + 1001, + -5 + ], + [ + 1274, + 1001, + -5 + ], + [ + 1274, + 1063, + -5 + ], + [ + 1400, + 1063, + -5 + ], + [ + 1400, + 1041, + -5 + ], + [ + 1490, + 1041, + -5 + ], + [ + 1490, + 1104, + -5 + ], + [ + 1702, + 1104, + -5 + ], + [ + 1702, + 1623, + -5 + ], + [ + 1579, + 1623, + -5 + ], + [ + 1579, + 1559, + -5 + ], + [ + 1494, + 1559, + -5 + ], + [ + 1494, + 1640, + -5 + ], + [ + 1702, + 1640, + -5 + ], + [ + 1702, + 1752, + -5 + ], + [ + 1097, + 1752, + -5 + ], + [ + 1097, + 1540, + -5 + ], + [ + 1033, + 1540, + -5 + ], + [ + 1033, + 1451, + -5 + ], + [ + 1056, + 1451, + -5 + ], + [ + 1056, + 1325, + -5 + ], + [ + 994, + 1325, + -5 + ], + [ + 994, + 1451, + -5 + ], + [ + 1017, + 1451, + -5 + ], + [ + 1017, + 1540, + -5 + ], + [ + 953, + 1540, + -5 + ], + [ + 953, + 1752, + -5 + ], + [ + 605, + 1752, + -5 + ], + [ + 605, + 1640, + -5 + ], + [ + 640, + 1640, + -5 + ], + [ + 640, + 1559, + -5 + ], + [ + 554, + 1559, + -5 + ], + [ + 554, + 1591, + -5 + ], + [ + 250, + 1591, + -5 + ], + [ + 250, + 1479, + -5 + ], + [ + 279, + 1479, + -5 + ], + [ + 279, + 1378, + -5 + ], + [ + 250, + 1378, + -5 + ], + [ + 250, + 1338, + -5 + ], + [ + 330, + 1338, + -5 + ], + [ + 330, + 1252, + -5 + ], + [ + 249, + 1252, + -5 + ], + [ + 249, + 1287, + -5 + ], + [ + 233, + 1287, + -5 + ], + [ + 233, + 1378, + -5 + ], + [ + 204, + 1378, + -5 + ], + [ + 204, + 1479, + -5 + ], + [ + 233, + 1479, + -5 + ], + [ + 233, + 1608, + -5 + ], + [ + 554, + 1608, + -5 + ], + [ + 554, + 1640, + -5 + ], + [ + 588, + 1640, + -5 + ], + [ + 588, + 1769, + -5 + ], + [ + 970, + 1769, + -5 + ], + [ + 970, + 1557, + -5 + ], + [ + 1080, + 1557, + -5 + ], + [ + 1080, + 1769, + -5 + ], + [ + 1719, + 1769, + -5 + ], + [ + 1719, + 1087, + -5 + ], + [ + 1507, + 1087, + -5 + ], + [ + 1507, + 977, + -5 + ], + [ + 1719, + 977, + -5 + ], + [ + 1719, + 135, + -5 + ], + [ + 1392, + 135, + -5 + ], + [ + 1392, + 372, + -5 + ], + [ + 1282, + 372, + -5 + ], + [ + 1282, + 135, + -5 + ], + [ + 747, + 135, + -5 + ], + [ + 747, + 347, + -5 + ], + [ + 637, + 347, + -5 + ], + [ + 637, + 135, + -5 + ], + [ + 436, + 135, + -5 + ], + [ + 436, + 135, + 50 + ], + [ + 534, + 182, + 50 + ], + [ + 534, + 182, + -5 + ], + [ + 534, + 308, + -5 + ], + [ + 556, + 308, + -5 + ], + [ + 556, + 415, + -5 + ], + [ + 620, + 415, + -5 + ], + [ + 620, + 652, + -5 + ], + [ + 793, + 652, + -5 + ], + [ + 793, + 924, + -5 + ], + [ + 642, + 924, + -5 + ], + [ + 642, + 941, + -5 + ], + [ + 810, + 941, + -5 + ], + [ + 810, + 635, + -5 + ], + [ + 637, + 635, + -5 + ], + [ + 637, + 398, + -5 + ], + [ + 573, + 398, + -5 + ], + [ + 573, + 308, + -5 + ], + [ + 596, + 308, + -5 + ], + [ + 596, + 182, + -5 + ], + [ + 534, + 182, + -5 + ], + [ + 534, + 182, + 50 + ], + [ + 788, + 182, + 50 + ], + [ + 788, + 182, + -5 + ], + [ + 788, + 308, + -5 + ], + [ + 850, + 308, + -5 + ], + [ + 850, + 253, + -5 + ], + [ + 873, + 253, + -5 + ], + [ + 873, + 1004, + -5 + ], + [ + 642, + 1004, + -5 + ], + [ + 642, + 1021, + -5 + ], + [ + 890, + 1021, + -5 + ], + [ + 890, + 237, + -5 + ], + [ + 850, + 237, + -5 + ], + [ + 850, + 182, + -5 + ], + [ + 788, + 182, + -5 + ], + [ + 788, + 182, + 50 + ], + [ + 788, + 454, + 50 + ], + [ + 788, + 454, + -5 + ], + [ + 788, + 580, + -5 + ], + [ + 792, + 580, + -5 + ], + [ + 792, + 582, + -5 + ], + [ + 796, + 586, + -5 + ], + [ + 798, + 588, + -5 + ], + [ + 807, + 594, + -5 + ], + [ + 809, + 594, + -5 + ], + [ + 817, + 596, + -5 + ], + [ + 825, + 596, + -5 + ], + [ + 833, + 593, + -5 + ], + [ + 833, + 964, + -5 + ], + [ + 642, + 964, + -5 + ], + [ + 642, + 981, + -5 + ], + [ + 850, + 981, + -5 + ], + [ + 850, + 454, + -5 + ], + [ + 788, + 454, + -5 + ], + [ + 788, + 454, + 50 + ], + [ + 534, + 454, + 50 + ], + [ + 534, + 454, + -5 + ], + [ + 534, + 580, + -5 + ], + [ + 556, + 580, + -5 + ], + [ + 556, + 690, + -5 + ], + [ + 753, + 690, + -5 + ], + [ + 753, + 884, + -5 + ], + [ + 642, + 884, + -5 + ], + [ + 642, + 901, + -5 + ], + [ + 770, + 901, + -5 + ], + [ + 770, + 673, + -5 + ], + [ + 573, + 673, + -5 + ], + [ + 573, + 580, + -5 + ], + [ + 596, + 580, + -5 + ], + [ + 596, + 454, + -5 + ], + [ + 534, + 454, + -5 + ], + [ + 534, + 454, + 50 + ], + [ + 354, + 681, + 50 + ], + [ + 354, + 681, + -5 + ], + [ + 354, + 766, + -5 + ], + [ + 360, + 766, + -5 + ], + [ + 360, + 1113, + -5 + ], + [ + 416, + 1113, + -5 + ], + [ + 416, + 1136, + -5 + ], + [ + 542, + 1136, + -5 + ], + [ + 542, + 1073, + -5 + ], + [ + 416, + 1073, + -5 + ], + [ + 416, + 1096, + -5 + ], + [ + 377, + 1096, + -5 + ], + [ + 377, + 766, + -5 + ], + [ + 434, + 766, + -5 + ], + [ + 434, + 732, + -5 + ], + [ + 665, + 732, + -5 + ], + [ + 665, + 804, + -5 + ], + [ + 642, + 804, + -5 + ], + [ + 642, + 821, + -5 + ], + [ + 704, + 821, + -5 + ], + [ + 704, + 804, + -5 + ], + [ + 681, + 804, + -5 + ], + [ + 681, + 715, + -5 + ], + [ + 434, + 715, + -5 + ], + [ + 434, + 681, + -5 + ], + [ + 354, + 681, + -5 + ], + [ + 354, + 681, + 50 + ], + [ + 416, + 819, + 50 + ], + [ + 416, + 819, + -5 + ], + [ + 416, + 882, + -5 + ], + [ + 546, + 882, + -5 + ], + [ + 559, + 877, + -5 + ], + [ + 568, + 868, + -5 + ], + [ + 572, + 861, + -5 + ], + [ + 704, + 861, + -5 + ], + [ + 704, + 844, + -5 + ], + [ + 573, + 844, + -5 + ], + [ + 568, + 833, + -5 + ], + [ + 560, + 825, + -5 + ], + [ + 551, + 821, + -5 + ], + [ + 539, + 819, + -5 + ], + [ + 416, + 819, + -5 + ], + [ + 416, + 819, + 50 + ], + [ + 416, + 946, + 50 + ], + [ + 416, + 946, + -5 + ], + [ + 416, + 1009, + -5 + ], + [ + 542, + 1009, + -5 + ], + [ + 542, + 946, + -5 + ], + [ + 416, + 946, + -5 + ], + [ + 416, + 946, + 50 + ], + [ + 601, + 1044, + 50 + ], + [ + 601, + 1044, + -5 + ], + [ + 601, + 1061, + -5 + ], + [ + 704, + 1061, + -5 + ], + [ + 704, + 1044, + -5 + ], + [ + 601, + 1044, + -5 + ], + [ + 601, + 1044, + 50 + ], + [ + 793, + 1149, + 50 + ], + [ + 793, + 1149, + -5 + ], + [ + 793, + 1236, + -5 + ], + [ + 436, + 1236, + -5 + ], + [ + 436, + 1378, + -5 + ], + [ + 407, + 1378, + -5 + ], + [ + 407, + 1479, + -5 + ], + [ + 482, + 1479, + -5 + ], + [ + 482, + 1378, + -5 + ], + [ + 453, + 1378, + -5 + ], + [ + 453, + 1253, + -5 + ], + [ + 810, + 1253, + -5 + ], + [ + 810, + 1149, + -5 + ], + [ + 793, + 1149, + -5 + ], + [ + 793, + 1149, + 50 + ], + [ + 833, + 1149, + 50 + ], + [ + 833, + 1149, + -5 + ], + [ + 833, + 1274, + -5 + ], + [ + 715, + 1274, + -5 + ], + [ + 715, + 1407, + -5 + ], + [ + 681, + 1407, + -5 + ], + [ + 681, + 1487, + -5 + ], + [ + 766, + 1487, + -5 + ], + [ + 766, + 1407, + -5 + ], + [ + 732, + 1407, + -5 + ], + [ + 732, + 1291, + -5 + ], + [ + 850, + 1291, + -5 + ], + [ + 850, + 1149, + -5 + ], + [ + 833, + 1149, + -5 + ], + [ + 833, + 1149, + 50 + ], + [ + 873, + 1149, + 50 + ], + [ + 873, + 1149, + -5 + ], + [ + 873, + 1253, + -5 + ], + [ + 890, + 1253, + -5 + ], + [ + 890, + 1149, + -5 + ], + [ + 873, + 1149, + -5 + ], + [ + 873, + 1149, + 50 + ], + [ + 913, + 1149, + 50 + ], + [ + 913, + 1149, + -5 + ], + [ + 913, + 1311, + -5 + ], + [ + 910, + 1311, + -5 + ], + [ + 904, + 1309, + -5 + ], + [ + 902, + 1309, + -5 + ], + [ + 894, + 1308, + -5 + ], + [ + 883, + 1312, + -5 + ], + [ + 873, + 1321, + -5 + ], + [ + 870, + 1325, + -5 + ], + [ + 867, + 1325, + -5 + ], + [ + 867, + 1451, + -5 + ], + [ + 929, + 1451, + -5 + ], + [ + 929, + 1396, + -5 + ], + [ + 930, + 1149, + -5 + ], + [ + 913, + 1149, + -5 + ], + [ + 913, + 1149, + 50 + ], + [ + 953, + 1149, + 50 + ], + [ + 953, + 1149, + -5 + ], + [ + 953, + 1490, + -5 + ], + [ + 890, + 1490, + -5 + ], + [ + 890, + 1596, + -5 + ], + [ + 867, + 1596, + -5 + ], + [ + 867, + 1722, + -5 + ], + [ + 929, + 1722, + -5 + ], + [ + 929, + 1596, + -5 + ], + [ + 906, + 1596, + -5 + ], + [ + 906, + 1506, + -5 + ], + [ + 970, + 1506, + -5 + ], + [ + 970, + 1149, + -5 + ], + [ + 953, + 1149, + -5 + ], + [ + 953, + 1149, + 50 + ], + [ + 993, + 1149, + 50 + ], + [ + 993, + 1149, + -5 + ], + [ + 993, + 1256, + -5 + ], + [ + 1080, + 1256, + -5 + ], + [ + 1080, + 1506, + -5 + ], + [ + 1144, + 1506, + -5 + ], + [ + 1144, + 1596, + -5 + ], + [ + 1121, + 1596, + -5 + ], + [ + 1121, + 1722, + -5 + ], + [ + 1183, + 1722, + -5 + ], + [ + 1183, + 1640, + -5 + ], + [ + 1452, + 1640, + -5 + ], + [ + 1452, + 1559, + -5 + ], + [ + 1367, + 1559, + -5 + ], + [ + 1367, + 1623, + -5 + ], + [ + 1183, + 1623, + -5 + ], + [ + 1183, + 1596, + -5 + ], + [ + 1160, + 1596, + -5 + ], + [ + 1160, + 1490, + -5 + ], + [ + 1097, + 1490, + -5 + ], + [ + 1097, + 1240, + -5 + ], + [ + 1010, + 1240, + -5 + ], + [ + 1010, + 1149, + -5 + ], + [ + 993, + 1149, + -5 + ], + [ + 993, + 1149, + 50 + ], + [ + 1033, + 1149, + 50 + ], + [ + 1033, + 1149, + -5 + ], + [ + 1033, + 1214, + -5 + ], + [ + 1144, + 1214, + -5 + ], + [ + 1144, + 1325, + -5 + ], + [ + 1121, + 1325, + -5 + ], + [ + 1121, + 1451, + -5 + ], + [ + 1183, + 1451, + -5 + ], + [ + 1183, + 1325, + -5 + ], + [ + 1160, + 1325, + -5 + ], + [ + 1160, + 1198, + -5 + ], + [ + 1050, + 1198, + -5 + ], + [ + 1050, + 1149, + -5 + ], + [ + 1033, + 1149, + -5 + ], + [ + 1033, + 1149, + 50 + ], + [ + 1099, + 1084, + 50 + ], + [ + 1099, + 1084, + -5 + ], + [ + 1099, + 1100, + -5 + ], + [ + 1189, + 1100, + -5 + ], + [ + 1189, + 1167, + -5 + ], + [ + 1259, + 1167, + -5 + ], + [ + 1259, + 1169, + -5 + ], + [ + 1265, + 1179, + -5 + ], + [ + 1268, + 1182, + -5 + ], + [ + 1274, + 1187, + -5 + ], + [ + 1274, + 1190, + -5 + ], + [ + 1400, + 1190, + -5 + ], + [ + 1400, + 1128, + -5 + ], + [ + 1274, + 1128, + -5 + ], + [ + 1274, + 1132, + -5 + ], + [ + 1267, + 1137, + -5 + ], + [ + 1260, + 1147, + -5 + ], + [ + 1260, + 1149, + -5 + ], + [ + 1258, + 1151, + -5 + ], + [ + 1206, + 1151, + -5 + ], + [ + 1206, + 1084, + -5 + ], + [ + 1099, + 1084, + -5 + ], + [ + 1099, + 1084, + 50 + ], + [ + 1099, + 1044, + 50 + ], + [ + 1099, + 1044, + -5 + ], + [ + 1099, + 1061, + -5 + ], + [ + 1227, + 1061, + -5 + ], + [ + 1227, + 1104, + -5 + ], + [ + 1439, + 1104, + -5 + ], + [ + 1439, + 1167, + -5 + ], + [ + 1546, + 1167, + -5 + ], + [ + 1546, + 1190, + -5 + ], + [ + 1672, + 1190, + -5 + ], + [ + 1672, + 1128, + -5 + ], + [ + 1546, + 1128, + -5 + ], + [ + 1546, + 1151, + -5 + ], + [ + 1456, + 1151, + -5 + ], + [ + 1456, + 1087, + -5 + ], + [ + 1244, + 1087, + -5 + ], + [ + 1244, + 1044, + -5 + ], + [ + 1099, + 1044, + -5 + ], + [ + 1099, + 1044, + 50 + ], + [ + 1058, + 924, + 50 + ], + [ + 1058, + 924, + -5 + ], + [ + 1058, + 941, + -5 + ], + [ + 1161, + 941, + -5 + ], + [ + 1161, + 924, + -5 + ], + [ + 1058, + 924, + -5 + ], + [ + 1058, + 924, + 50 + ], + [ + 1058, + 884, + 50 + ], + [ + 1058, + 884, + -5 + ], + [ + 1058, + 901, + -5 + ], + [ + 1161, + 901, + -5 + ], + [ + 1161, + 884, + -5 + ], + [ + 1058, + 884, + -5 + ], + [ + 1058, + 884, + 50 + ], + [ + 1274, + 874, + 50 + ], + [ + 1274, + 874, + -5 + ], + [ + 1274, + 897, + -5 + ], + [ + 1189, + 897, + -5 + ], + [ + 1189, + 964, + -5 + ], + [ + 1099, + 964, + -5 + ], + [ + 1099, + 981, + -5 + ], + [ + 1206, + 981, + -5 + ], + [ + 1206, + 914, + -5 + ], + [ + 1274, + 914, + -5 + ], + [ + 1274, + 936, + -5 + ], + [ + 1400, + 936, + -5 + ], + [ + 1400, + 874, + -5 + ], + [ + 1274, + 874, + -5 + ], + [ + 1274, + 874, + 50 + ], + [ + 1546, + 874, + 50 + ], + [ + 1546, + 874, + -5 + ], + [ + 1546, + 897, + -5 + ], + [ + 1439, + 897, + -5 + ], + [ + 1439, + 960, + -5 + ], + [ + 1227, + 960, + -5 + ], + [ + 1227, + 1004, + -5 + ], + [ + 1099, + 1004, + -5 + ], + [ + 1099, + 1021, + -5 + ], + [ + 1244, + 1021, + -5 + ], + [ + 1244, + 977, + -5 + ], + [ + 1456, + 977, + -5 + ], + [ + 1456, + 914, + -5 + ], + [ + 1546, + 914, + -5 + ], + [ + 1546, + 936, + -5 + ], + [ + 1672, + 936, + -5 + ], + [ + 1672, + 874, + -5 + ], + [ + 1546, + 874, + -5 + ], + [ + 1546, + 874, + 50 + ], + [ + 1433, + 454, + 50 + ], + [ + 1433, + 454, + -5 + ], + [ + 1433, + 580, + -5 + ], + [ + 1437, + 580, + -5 + ], + [ + 1445, + 590, + -5 + ], + [ + 1447, + 590, + -5 + ], + [ + 1449, + 592, + -5 + ], + [ + 1456, + 596, + -5 + ], + [ + 1456, + 639, + -5 + ], + [ + 993, + 639, + -5 + ], + [ + 993, + 755, + -5 + ], + [ + 1010, + 755, + -5 + ], + [ + 1010, + 656, + -5 + ], + [ + 1473, + 656, + -5 + ], + [ + 1473, + 595, + -5 + ], + [ + 1484, + 589, + -5 + ], + [ + 1492, + 580, + -5 + ], + [ + 1495, + 580, + -5 + ], + [ + 1495, + 454, + -5 + ], + [ + 1433, + 454, + -5 + ], + [ + 1433, + 454, + 50 + ], + [ + 1179, + 454, + 50 + ], + [ + 1179, + 454, + -5 + ], + [ + 1179, + 508, + -5 + ], + [ + 953, + 508, + -5 + ], + [ + 953, + 755, + -5 + ], + [ + 970, + 755, + -5 + ], + [ + 970, + 525, + -5 + ], + [ + 1179, + 525, + -5 + ], + [ + 1179, + 580, + -5 + ], + [ + 1241, + 580, + -5 + ], + [ + 1241, + 454, + -5 + ], + [ + 1179, + 454, + -5 + ], + [ + 1179, + 454, + 50 + ], + [ + 1179, + 182, + 50 + ], + [ + 1179, + 182, + -5 + ], + [ + 1179, + 237, + -5 + ], + [ + 913, + 237, + -5 + ], + [ + 913, + 755, + -5 + ], + [ + 930, + 755, + -5 + ], + [ + 930, + 253, + -5 + ], + [ + 1179, + 253, + -5 + ], + [ + 1179, + 308, + -5 + ], + [ + 1241, + 308, + -5 + ], + [ + 1241, + 182, + -5 + ], + [ + 1179, + 182, + -5 + ], + [ + 1179, + 182, + 50 + ], + [ + 1433, + 182, + 50 + ], + [ + 1433, + 182, + -5 + ], + [ + 1433, + 308, + -5 + ], + [ + 1495, + 308, + -5 + ], + [ + 1495, + 253, + -5 + ], + [ + 1519, + 253, + -5 + ], + [ + 1519, + 715, + -5 + ], + [ + 1050, + 715, + -5 + ], + [ + 1050, + 692, + -5 + ], + [ + 1033, + 692, + -5 + ], + [ + 1033, + 755, + -5 + ], + [ + 1050, + 755, + -5 + ], + [ + 1050, + 732, + -5 + ], + [ + 1536, + 732, + -5 + ], + [ + 1536, + 237, + -5 + ], + [ + 1495, + 237, + -5 + ], + [ + 1495, + 182, + -5 + ], + [ + 1433, + 182, + -5 + ], + [ + 1433, + 182, + 50 + ], + [ + 1367, + 1407, + 50 + ], + [ + 1367, + 1407, + -5 + ], + [ + 1367, + 1487, + -5 + ], + [ + 1452, + 1487, + -5 + ], + [ + 1452, + 1456, + -5 + ], + [ + 1494, + 1456, + -5 + ], + [ + 1494, + 1487, + -5 + ], + [ + 1579, + 1487, + -5 + ], + [ + 1579, + 1407, + -5 + ], + [ + 1494, + 1407, + -5 + ], + [ + 1494, + 1439, + -5 + ], + [ + 1452, + 1439, + -5 + ], + [ + 1452, + 1407, + -5 + ], + [ + 1367, + 1407, + -5 + ], + [ + 1367, + 1407, + 50 + ], + [ + 554, + 1407, + 50 + ], + [ + 554, + 1407, + -5 + ], + [ + 554, + 1487, + -5 + ], + [ + 588, + 1487, + -5 + ], + [ + 588, + 1532, + -5 + ], + [ + 715, + 1532, + -5 + ], + [ + 715, + 1559, + -5 + ], + [ + 681, + 1559, + -5 + ], + [ + 681, + 1640, + -5 + ], + [ + 766, + 1640, + -5 + ], + [ + 766, + 1559, + -5 + ], + [ + 732, + 1559, + -5 + ], + [ + 732, + 1515, + -5 + ], + [ + 605, + 1515, + -5 + ], + [ + 605, + 1487, + -5 + ], + [ + 640, + 1487, + -5 + ], + [ + 640, + 1407, + -5 + ], + [ + 554, + 1407, + -5 + ], + [ + 554, + 1407, + 50 + ], + [ + 407, + 1695, + 50 + ], + [ + 407, + 1695, + -5 + ], + [ + 407, + 1796, + -5 + ], + [ + 482, + 1796, + -5 + ], + [ + 482, + 1695, + -5 + ], + [ + 407, + 1695, + -5 + ], + [ + 407, + 1695, + 50 + ], + [ + 204, + 1695, + 50 + ], + [ + 204, + 1695, + -5 + ], + [ + 204, + 1796, + -5 + ], + [ + 279, + 1796, + -5 + ], + [ + 279, + 1695, + -5 + ], + [ + 204, + 1695, + -5 + ], + [ + 204, + 1695, + 50 + ], + [ + 144, + 946, + 50 + ], + [ + 144, + 946, + -5 + ], + [ + 144, + 1009, + -5 + ], + [ + 270, + 1009, + -5 + ], + [ + 270, + 946, + -5 + ], + [ + 144, + 946, + -5 + ], + [ + 144, + 946, + 50 + ], + [ + 204, + 477, + 50 + ], + [ + 204, + 477, + -5 + ], + [ + 204, + 484, + -5 + ], + [ + 201, + 484, + -5 + ], + [ + 201, + 554, + -5 + ], + [ + 169, + 554, + -5 + ], + [ + 169, + 639, + -5 + ], + [ + 233, + 639, + -5 + ], + [ + 233, + 681, + -5 + ], + [ + 201, + 681, + -5 + ], + [ + 201, + 766, + -5 + ], + [ + 233, + 766, + -5 + ], + [ + 233, + 819, + -5 + ], + [ + 144, + 819, + -5 + ], + [ + 144, + 842, + -5 + ], + [ + 97, + 842, + -5 + ], + [ + 97, + 1338, + -5 + ], + [ + 177, + 1338, + -5 + ], + [ + 177, + 1252, + -5 + ], + [ + 114, + 1252, + -5 + ], + [ + 114, + 1214, + -5 + ], + [ + 770, + 1214, + -5 + ], + [ + 770, + 1100, + -5 + ], + [ + 970, + 1100, + -5 + ], + [ + 970, + 821, + -5 + ], + [ + 1161, + 821, + -5 + ], + [ + 1161, + 804, + -5 + ], + [ + 953, + 804, + -5 + ], + [ + 953, + 1084, + -5 + ], + [ + 753, + 1084, + -5 + ], + [ + 753, + 1198, + -5 + ], + [ + 114, + 1198, + -5 + ], + [ + 114, + 859, + -5 + ], + [ + 144, + 859, + -5 + ], + [ + 144, + 882, + -5 + ], + [ + 270, + 882, + -5 + ], + [ + 270, + 819, + -5 + ], + [ + 250, + 819, + -5 + ], + [ + 250, + 766, + -5 + ], + [ + 281, + 766, + -5 + ], + [ + 281, + 681, + -5 + ], + [ + 250, + 681, + -5 + ], + [ + 250, + 554, + -5 + ], + [ + 218, + 554, + -5 + ], + [ + 218, + 507, + -5 + ], + [ + 253, + 507, + -5 + ], + [ + 253, + 477, + -5 + ], + [ + 204, + 477, + -5 + ], + [ + 204, + 477, + 50 + ] + ] +} diff --git a/test_files/example-path.json b/test_files/example-path.json new file mode 100644 index 0000000..cc8e89a --- /dev/null +++ b/test_files/example-path.json @@ -0,0 +1,3652 @@ +[ + [ + 63, + 63, + 50 + ], + [ + 63, + 63, + -5 + ], + [ + 1791, + 63, + -5 + ], + [ + 1791, + 1854, + -5 + ], + [ + 63, + 1854, + -5 + ], + [ + 63, + 63, + -5 + ], + [ + 63, + 63, + 50 + ], + [ + 172, + 135, + 50 + ], + [ + 172, + 135, + -5 + ], + [ + 172, + 195, + -5 + ], + [ + 201, + 195, + -5 + ], + [ + 201, + 249, + -5 + ], + [ + 169, + 249, + -5 + ], + [ + 169, + 335, + -5 + ], + [ + 201, + 335, + -5 + ], + [ + 201, + 405, + -5 + ], + [ + 204, + 405, + -5 + ], + [ + 204, + 411, + -5 + ], + [ + 253, + 411, + -5 + ], + [ + 253, + 382, + -5 + ], + [ + 218, + 382, + -5 + ], + [ + 218, + 335, + -5 + ], + [ + 250, + 335, + -5 + ], + [ + 250, + 249, + -5 + ], + [ + 218, + 249, + -5 + ], + [ + 218, + 195, + -5 + ], + [ + 222, + 195, + -5 + ], + [ + 222, + 135, + -5 + ], + [ + 172, + 135, + -5 + ], + [ + 172, + 135, + 50 + ], + [ + 366, + 97, + 50 + ], + [ + 366, + 97, + -5 + ], + [ + 366, + 135, + -5 + ], + [ + 350, + 135, + -5 + ], + [ + 350, + 195, + -5 + ], + [ + 400, + 195, + -5 + ], + [ + 400, + 135, + -5 + ], + [ + 383, + 135, + -5 + ], + [ + 383, + 114, + -5 + ], + [ + 683, + 114, + -5 + ], + [ + 683, + 182, + -5 + ], + [ + 661, + 182, + -5 + ], + [ + 661, + 308, + -5 + ], + [ + 723, + 308, + -5 + ], + [ + 723, + 182, + -5 + ], + [ + 700, + 182, + -5 + ], + [ + 700, + 114, + -5 + ], + [ + 1329, + 114, + -5 + ], + [ + 1329, + 182, + -5 + ], + [ + 1306, + 182, + -5 + ], + [ + 1306, + 308, + -5 + ], + [ + 1368, + 308, + -5 + ], + [ + 1368, + 182, + -5 + ], + [ + 1346, + 182, + -5 + ], + [ + 1346, + 114, + -5 + ], + [ + 1740, + 114, + -5 + ], + [ + 1740, + 1024, + -5 + ], + [ + 1672, + 1024, + -5 + ], + [ + 1672, + 1001, + -5 + ], + [ + 1546, + 1001, + -5 + ], + [ + 1546, + 1063, + -5 + ], + [ + 1672, + 1063, + -5 + ], + [ + 1672, + 1041, + -5 + ], + [ + 1740, + 1041, + -5 + ], + [ + 1740, + 1791, + -5 + ], + [ + 1033, + 1791, + -5 + ], + [ + 1033, + 1722, + -5 + ], + [ + 1056, + 1722, + -5 + ], + [ + 1056, + 1596, + -5 + ], + [ + 994, + 1596, + -5 + ], + [ + 994, + 1722, + -5 + ], + [ + 1017, + 1722, + -5 + ], + [ + 1017, + 1807, + -5 + ], + [ + 1757, + 1807, + -5 + ], + [ + 1757, + 97, + -5 + ], + [ + 366, + 97, + -5 + ], + [ + 366, + 97, + 50 + ], + [ + 436, + 135, + 50 + ], + [ + 436, + 135, + -5 + ], + [ + 436, + 284, + -5 + ], + [ + 402, + 284, + -5 + ], + [ + 402, + 249, + -5 + ], + [ + 322, + 249, + -5 + ], + [ + 322, + 335, + -5 + ], + [ + 402, + 335, + -5 + ], + [ + 402, + 300, + -5 + ], + [ + 436, + 300, + -5 + ], + [ + 436, + 436, + -5 + ], + [ + 368, + 436, + -5 + ], + [ + 368, + 430, + -5 + ], + [ + 318, + 430, + -5 + ], + [ + 318, + 459, + -5 + ], + [ + 368, + 459, + -5 + ], + [ + 368, + 453, + -5 + ], + [ + 436, + 453, + -5 + ], + [ + 436, + 588, + -5 + ], + [ + 402, + 588, + -5 + ], + [ + 402, + 554, + -5 + ], + [ + 322, + 554, + -5 + ], + [ + 322, + 588, + -5 + ], + [ + 309, + 588, + -5 + ], + [ + 309, + 1096, + -5 + ], + [ + 270, + 1096, + -5 + ], + [ + 270, + 1073, + -5 + ], + [ + 144, + 1073, + -5 + ], + [ + 144, + 1136, + -5 + ], + [ + 270, + 1136, + -5 + ], + [ + 270, + 1113, + -5 + ], + [ + 309, + 1113, + -5 + ], + [ + 309, + 1176, + -5 + ], + [ + 618, + 1176, + -5 + ], + [ + 618, + 1100, + -5 + ], + [ + 704, + 1100, + -5 + ], + [ + 704, + 1084, + -5 + ], + [ + 601, + 1084, + -5 + ], + [ + 601, + 1160, + -5 + ], + [ + 326, + 1160, + -5 + ], + [ + 326, + 639, + -5 + ], + [ + 402, + 639, + -5 + ], + [ + 402, + 605, + -5 + ], + [ + 453, + 605, + -5 + ], + [ + 453, + 152, + -5 + ], + [ + 620, + 152, + -5 + ], + [ + 620, + 364, + -5 + ], + [ + 683, + 364, + -5 + ], + [ + 683, + 454, + -5 + ], + [ + 661, + 454, + -5 + ], + [ + 661, + 580, + -5 + ], + [ + 723, + 580, + -5 + ], + [ + 723, + 454, + -5 + ], + [ + 700, + 454, + -5 + ], + [ + 700, + 364, + -5 + ], + [ + 764, + 364, + -5 + ], + [ + 764, + 152, + -5 + ], + [ + 1265, + 152, + -5 + ], + [ + 1265, + 389, + -5 + ], + [ + 1329, + 389, + -5 + ], + [ + 1329, + 454, + -5 + ], + [ + 1306, + 454, + -5 + ], + [ + 1306, + 580, + -5 + ], + [ + 1368, + 580, + -5 + ], + [ + 1368, + 454, + -5 + ], + [ + 1346, + 454, + -5 + ], + [ + 1346, + 389, + -5 + ], + [ + 1409, + 389, + -5 + ], + [ + 1409, + 152, + -5 + ], + [ + 1702, + 152, + -5 + ], + [ + 1702, + 804, + -5 + ], + [ + 1227, + 804, + -5 + ], + [ + 1227, + 844, + -5 + ], + [ + 1099, + 844, + -5 + ], + [ + 1099, + 861, + -5 + ], + [ + 1244, + 861, + -5 + ], + [ + 1244, + 821, + -5 + ], + [ + 1702, + 821, + -5 + ], + [ + 1702, + 960, + -5 + ], + [ + 1490, + 960, + -5 + ], + [ + 1490, + 1024, + -5 + ], + [ + 1400, + 1024, + -5 + ], + [ + 1400, + 1001, + -5 + ], + [ + 1274, + 1001, + -5 + ], + [ + 1274, + 1063, + -5 + ], + [ + 1400, + 1063, + -5 + ], + [ + 1400, + 1041, + -5 + ], + [ + 1490, + 1041, + -5 + ], + [ + 1490, + 1104, + -5 + ], + [ + 1702, + 1104, + -5 + ], + [ + 1702, + 1623, + -5 + ], + [ + 1579, + 1623, + -5 + ], + [ + 1579, + 1559, + -5 + ], + [ + 1494, + 1559, + -5 + ], + [ + 1494, + 1640, + -5 + ], + [ + 1702, + 1640, + -5 + ], + [ + 1702, + 1752, + -5 + ], + [ + 1097, + 1752, + -5 + ], + [ + 1097, + 1540, + -5 + ], + [ + 1033, + 1540, + -5 + ], + [ + 1033, + 1451, + -5 + ], + [ + 1056, + 1451, + -5 + ], + [ + 1056, + 1325, + -5 + ], + [ + 994, + 1325, + -5 + ], + [ + 994, + 1451, + -5 + ], + [ + 1017, + 1451, + -5 + ], + [ + 1017, + 1540, + -5 + ], + [ + 953, + 1540, + -5 + ], + [ + 953, + 1752, + -5 + ], + [ + 605, + 1752, + -5 + ], + [ + 605, + 1640, + -5 + ], + [ + 640, + 1640, + -5 + ], + [ + 640, + 1559, + -5 + ], + [ + 554, + 1559, + -5 + ], + [ + 554, + 1591, + -5 + ], + [ + 250, + 1591, + -5 + ], + [ + 250, + 1479, + -5 + ], + [ + 279, + 1479, + -5 + ], + [ + 279, + 1378, + -5 + ], + [ + 250, + 1378, + -5 + ], + [ + 250, + 1338, + -5 + ], + [ + 330, + 1338, + -5 + ], + [ + 330, + 1252, + -5 + ], + [ + 249, + 1252, + -5 + ], + [ + 249, + 1287, + -5 + ], + [ + 233, + 1287, + -5 + ], + [ + 233, + 1378, + -5 + ], + [ + 204, + 1378, + -5 + ], + [ + 204, + 1479, + -5 + ], + [ + 233, + 1479, + -5 + ], + [ + 233, + 1608, + -5 + ], + [ + 554, + 1608, + -5 + ], + [ + 554, + 1640, + -5 + ], + [ + 588, + 1640, + -5 + ], + [ + 588, + 1769, + -5 + ], + [ + 970, + 1769, + -5 + ], + [ + 970, + 1557, + -5 + ], + [ + 1080, + 1557, + -5 + ], + [ + 1080, + 1769, + -5 + ], + [ + 1719, + 1769, + -5 + ], + [ + 1719, + 1087, + -5 + ], + [ + 1507, + 1087, + -5 + ], + [ + 1507, + 977, + -5 + ], + [ + 1719, + 977, + -5 + ], + [ + 1719, + 135, + -5 + ], + [ + 1392, + 135, + -5 + ], + [ + 1392, + 372, + -5 + ], + [ + 1282, + 372, + -5 + ], + [ + 1282, + 135, + -5 + ], + [ + 747, + 135, + -5 + ], + [ + 747, + 347, + -5 + ], + [ + 637, + 347, + -5 + ], + [ + 637, + 135, + -5 + ], + [ + 436, + 135, + -5 + ], + [ + 436, + 135, + 50 + ], + [ + 534, + 182, + 50 + ], + [ + 534, + 182, + -5 + ], + [ + 534, + 308, + -5 + ], + [ + 556, + 308, + -5 + ], + [ + 556, + 415, + -5 + ], + [ + 620, + 415, + -5 + ], + [ + 620, + 652, + -5 + ], + [ + 793, + 652, + -5 + ], + [ + 793, + 924, + -5 + ], + [ + 642, + 924, + -5 + ], + [ + 642, + 941, + -5 + ], + [ + 810, + 941, + -5 + ], + [ + 810, + 635, + -5 + ], + [ + 637, + 635, + -5 + ], + [ + 637, + 398, + -5 + ], + [ + 573, + 398, + -5 + ], + [ + 573, + 308, + -5 + ], + [ + 596, + 308, + -5 + ], + [ + 596, + 182, + -5 + ], + [ + 534, + 182, + -5 + ], + [ + 534, + 182, + 50 + ], + [ + 788, + 182, + 50 + ], + [ + 788, + 182, + -5 + ], + [ + 788, + 308, + -5 + ], + [ + 850, + 308, + -5 + ], + [ + 850, + 253, + -5 + ], + [ + 873, + 253, + -5 + ], + [ + 873, + 1004, + -5 + ], + [ + 642, + 1004, + -5 + ], + [ + 642, + 1021, + -5 + ], + [ + 890, + 1021, + -5 + ], + [ + 890, + 237, + -5 + ], + [ + 850, + 237, + -5 + ], + [ + 850, + 182, + -5 + ], + [ + 788, + 182, + -5 + ], + [ + 788, + 182, + 50 + ], + [ + 788, + 454, + 50 + ], + [ + 788, + 454, + -5 + ], + [ + 788, + 580, + -5 + ], + [ + 792, + 580, + -5 + ], + [ + 792, + 582, + -5 + ], + [ + 796, + 586, + -5 + ], + [ + 798, + 588, + -5 + ], + [ + 807, + 594, + -5 + ], + [ + 809, + 594, + -5 + ], + [ + 817, + 596, + -5 + ], + [ + 825, + 596, + -5 + ], + [ + 833, + 593, + -5 + ], + [ + 833, + 964, + -5 + ], + [ + 642, + 964, + -5 + ], + [ + 642, + 981, + -5 + ], + [ + 850, + 981, + -5 + ], + [ + 850, + 454, + -5 + ], + [ + 788, + 454, + -5 + ], + [ + 788, + 454, + 50 + ], + [ + 534, + 454, + 50 + ], + [ + 534, + 454, + -5 + ], + [ + 534, + 580, + -5 + ], + [ + 556, + 580, + -5 + ], + [ + 556, + 690, + -5 + ], + [ + 753, + 690, + -5 + ], + [ + 753, + 884, + -5 + ], + [ + 642, + 884, + -5 + ], + [ + 642, + 901, + -5 + ], + [ + 770, + 901, + -5 + ], + [ + 770, + 673, + -5 + ], + [ + 573, + 673, + -5 + ], + [ + 573, + 580, + -5 + ], + [ + 596, + 580, + -5 + ], + [ + 596, + 454, + -5 + ], + [ + 534, + 454, + -5 + ], + [ + 534, + 454, + 50 + ], + [ + 354, + 681, + 50 + ], + [ + 354, + 681, + -5 + ], + [ + 354, + 766, + -5 + ], + [ + 360, + 766, + -5 + ], + [ + 360, + 1113, + -5 + ], + [ + 416, + 1113, + -5 + ], + [ + 416, + 1136, + -5 + ], + [ + 542, + 1136, + -5 + ], + [ + 542, + 1073, + -5 + ], + [ + 416, + 1073, + -5 + ], + [ + 416, + 1096, + -5 + ], + [ + 377, + 1096, + -5 + ], + [ + 377, + 766, + -5 + ], + [ + 434, + 766, + -5 + ], + [ + 434, + 732, + -5 + ], + [ + 665, + 732, + -5 + ], + [ + 665, + 804, + -5 + ], + [ + 642, + 804, + -5 + ], + [ + 642, + 821, + -5 + ], + [ + 704, + 821, + -5 + ], + [ + 704, + 804, + -5 + ], + [ + 681, + 804, + -5 + ], + [ + 681, + 715, + -5 + ], + [ + 434, + 715, + -5 + ], + [ + 434, + 681, + -5 + ], + [ + 354, + 681, + -5 + ], + [ + 354, + 681, + 50 + ], + [ + 416, + 819, + 50 + ], + [ + 416, + 819, + -5 + ], + [ + 416, + 882, + -5 + ], + [ + 546, + 882, + -5 + ], + [ + 559, + 877, + -5 + ], + [ + 568, + 868, + -5 + ], + [ + 572, + 861, + -5 + ], + [ + 704, + 861, + -5 + ], + [ + 704, + 844, + -5 + ], + [ + 573, + 844, + -5 + ], + [ + 568, + 833, + -5 + ], + [ + 560, + 825, + -5 + ], + [ + 551, + 821, + -5 + ], + [ + 539, + 819, + -5 + ], + [ + 416, + 819, + -5 + ], + [ + 416, + 819, + 50 + ], + [ + 416, + 946, + 50 + ], + [ + 416, + 946, + -5 + ], + [ + 416, + 1009, + -5 + ], + [ + 542, + 1009, + -5 + ], + [ + 542, + 946, + -5 + ], + [ + 416, + 946, + -5 + ], + [ + 416, + 946, + 50 + ], + [ + 601, + 1044, + 50 + ], + [ + 601, + 1044, + -5 + ], + [ + 601, + 1061, + -5 + ], + [ + 704, + 1061, + -5 + ], + [ + 704, + 1044, + -5 + ], + [ + 601, + 1044, + -5 + ], + [ + 601, + 1044, + 50 + ], + [ + 793, + 1149, + 50 + ], + [ + 793, + 1149, + -5 + ], + [ + 793, + 1236, + -5 + ], + [ + 436, + 1236, + -5 + ], + [ + 436, + 1378, + -5 + ], + [ + 407, + 1378, + -5 + ], + [ + 407, + 1479, + -5 + ], + [ + 482, + 1479, + -5 + ], + [ + 482, + 1378, + -5 + ], + [ + 453, + 1378, + -5 + ], + [ + 453, + 1253, + -5 + ], + [ + 810, + 1253, + -5 + ], + [ + 810, + 1149, + -5 + ], + [ + 793, + 1149, + -5 + ], + [ + 793, + 1149, + 50 + ], + [ + 833, + 1149, + 50 + ], + [ + 833, + 1149, + -5 + ], + [ + 833, + 1274, + -5 + ], + [ + 715, + 1274, + -5 + ], + [ + 715, + 1407, + -5 + ], + [ + 681, + 1407, + -5 + ], + [ + 681, + 1487, + -5 + ], + [ + 766, + 1487, + -5 + ], + [ + 766, + 1407, + -5 + ], + [ + 732, + 1407, + -5 + ], + [ + 732, + 1291, + -5 + ], + [ + 850, + 1291, + -5 + ], + [ + 850, + 1149, + -5 + ], + [ + 833, + 1149, + -5 + ], + [ + 833, + 1149, + 50 + ], + [ + 873, + 1149, + 50 + ], + [ + 873, + 1149, + -5 + ], + [ + 873, + 1253, + -5 + ], + [ + 890, + 1253, + -5 + ], + [ + 890, + 1149, + -5 + ], + [ + 873, + 1149, + -5 + ], + [ + 873, + 1149, + 50 + ], + [ + 913, + 1149, + 50 + ], + [ + 913, + 1149, + -5 + ], + [ + 913, + 1311, + -5 + ], + [ + 910, + 1311, + -5 + ], + [ + 904, + 1309, + -5 + ], + [ + 902, + 1309, + -5 + ], + [ + 894, + 1308, + -5 + ], + [ + 883, + 1312, + -5 + ], + [ + 873, + 1321, + -5 + ], + [ + 870, + 1325, + -5 + ], + [ + 867, + 1325, + -5 + ], + [ + 867, + 1451, + -5 + ], + [ + 929, + 1451, + -5 + ], + [ + 929, + 1396, + -5 + ], + [ + 930, + 1149, + -5 + ], + [ + 913, + 1149, + -5 + ], + [ + 913, + 1149, + 50 + ], + [ + 953, + 1149, + 50 + ], + [ + 953, + 1149, + -5 + ], + [ + 953, + 1490, + -5 + ], + [ + 890, + 1490, + -5 + ], + [ + 890, + 1596, + -5 + ], + [ + 867, + 1596, + -5 + ], + [ + 867, + 1722, + -5 + ], + [ + 929, + 1722, + -5 + ], + [ + 929, + 1596, + -5 + ], + [ + 906, + 1596, + -5 + ], + [ + 906, + 1506, + -5 + ], + [ + 970, + 1506, + -5 + ], + [ + 970, + 1149, + -5 + ], + [ + 953, + 1149, + -5 + ], + [ + 953, + 1149, + 50 + ], + [ + 993, + 1149, + 50 + ], + [ + 993, + 1149, + -5 + ], + [ + 993, + 1256, + -5 + ], + [ + 1080, + 1256, + -5 + ], + [ + 1080, + 1506, + -5 + ], + [ + 1144, + 1506, + -5 + ], + [ + 1144, + 1596, + -5 + ], + [ + 1121, + 1596, + -5 + ], + [ + 1121, + 1722, + -5 + ], + [ + 1183, + 1722, + -5 + ], + [ + 1183, + 1640, + -5 + ], + [ + 1452, + 1640, + -5 + ], + [ + 1452, + 1559, + -5 + ], + [ + 1367, + 1559, + -5 + ], + [ + 1367, + 1623, + -5 + ], + [ + 1183, + 1623, + -5 + ], + [ + 1183, + 1596, + -5 + ], + [ + 1160, + 1596, + -5 + ], + [ + 1160, + 1490, + -5 + ], + [ + 1097, + 1490, + -5 + ], + [ + 1097, + 1240, + -5 + ], + [ + 1010, + 1240, + -5 + ], + [ + 1010, + 1149, + -5 + ], + [ + 993, + 1149, + -5 + ], + [ + 993, + 1149, + 50 + ], + [ + 1033, + 1149, + 50 + ], + [ + 1033, + 1149, + -5 + ], + [ + 1033, + 1214, + -5 + ], + [ + 1144, + 1214, + -5 + ], + [ + 1144, + 1325, + -5 + ], + [ + 1121, + 1325, + -5 + ], + [ + 1121, + 1451, + -5 + ], + [ + 1183, + 1451, + -5 + ], + [ + 1183, + 1325, + -5 + ], + [ + 1160, + 1325, + -5 + ], + [ + 1160, + 1198, + -5 + ], + [ + 1050, + 1198, + -5 + ], + [ + 1050, + 1149, + -5 + ], + [ + 1033, + 1149, + -5 + ], + [ + 1033, + 1149, + 50 + ], + [ + 1099, + 1084, + 50 + ], + [ + 1099, + 1084, + -5 + ], + [ + 1099, + 1100, + -5 + ], + [ + 1189, + 1100, + -5 + ], + [ + 1189, + 1167, + -5 + ], + [ + 1259, + 1167, + -5 + ], + [ + 1259, + 1169, + -5 + ], + [ + 1265, + 1179, + -5 + ], + [ + 1268, + 1182, + -5 + ], + [ + 1274, + 1187, + -5 + ], + [ + 1274, + 1190, + -5 + ], + [ + 1400, + 1190, + -5 + ], + [ + 1400, + 1128, + -5 + ], + [ + 1274, + 1128, + -5 + ], + [ + 1274, + 1132, + -5 + ], + [ + 1267, + 1137, + -5 + ], + [ + 1260, + 1147, + -5 + ], + [ + 1260, + 1149, + -5 + ], + [ + 1258, + 1151, + -5 + ], + [ + 1206, + 1151, + -5 + ], + [ + 1206, + 1084, + -5 + ], + [ + 1099, + 1084, + -5 + ], + [ + 1099, + 1084, + 50 + ], + [ + 1099, + 1044, + 50 + ], + [ + 1099, + 1044, + -5 + ], + [ + 1099, + 1061, + -5 + ], + [ + 1227, + 1061, + -5 + ], + [ + 1227, + 1104, + -5 + ], + [ + 1439, + 1104, + -5 + ], + [ + 1439, + 1167, + -5 + ], + [ + 1546, + 1167, + -5 + ], + [ + 1546, + 1190, + -5 + ], + [ + 1672, + 1190, + -5 + ], + [ + 1672, + 1128, + -5 + ], + [ + 1546, + 1128, + -5 + ], + [ + 1546, + 1151, + -5 + ], + [ + 1456, + 1151, + -5 + ], + [ + 1456, + 1087, + -5 + ], + [ + 1244, + 1087, + -5 + ], + [ + 1244, + 1044, + -5 + ], + [ + 1099, + 1044, + -5 + ], + [ + 1099, + 1044, + 50 + ], + [ + 1058, + 924, + 50 + ], + [ + 1058, + 924, + -5 + ], + [ + 1058, + 941, + -5 + ], + [ + 1161, + 941, + -5 + ], + [ + 1161, + 924, + -5 + ], + [ + 1058, + 924, + -5 + ], + [ + 1058, + 924, + 50 + ], + [ + 1058, + 884, + 50 + ], + [ + 1058, + 884, + -5 + ], + [ + 1058, + 901, + -5 + ], + [ + 1161, + 901, + -5 + ], + [ + 1161, + 884, + -5 + ], + [ + 1058, + 884, + -5 + ], + [ + 1058, + 884, + 50 + ], + [ + 1274, + 874, + 50 + ], + [ + 1274, + 874, + -5 + ], + [ + 1274, + 897, + -5 + ], + [ + 1189, + 897, + -5 + ], + [ + 1189, + 964, + -5 + ], + [ + 1099, + 964, + -5 + ], + [ + 1099, + 981, + -5 + ], + [ + 1206, + 981, + -5 + ], + [ + 1206, + 914, + -5 + ], + [ + 1274, + 914, + -5 + ], + [ + 1274, + 936, + -5 + ], + [ + 1400, + 936, + -5 + ], + [ + 1400, + 874, + -5 + ], + [ + 1274, + 874, + -5 + ], + [ + 1274, + 874, + 50 + ], + [ + 1546, + 874, + 50 + ], + [ + 1546, + 874, + -5 + ], + [ + 1546, + 897, + -5 + ], + [ + 1439, + 897, + -5 + ], + [ + 1439, + 960, + -5 + ], + [ + 1227, + 960, + -5 + ], + [ + 1227, + 1004, + -5 + ], + [ + 1099, + 1004, + -5 + ], + [ + 1099, + 1021, + -5 + ], + [ + 1244, + 1021, + -5 + ], + [ + 1244, + 977, + -5 + ], + [ + 1456, + 977, + -5 + ], + [ + 1456, + 914, + -5 + ], + [ + 1546, + 914, + -5 + ], + [ + 1546, + 936, + -5 + ], + [ + 1672, + 936, + -5 + ], + [ + 1672, + 874, + -5 + ], + [ + 1546, + 874, + -5 + ], + [ + 1546, + 874, + 50 + ], + [ + 1433, + 454, + 50 + ], + [ + 1433, + 454, + -5 + ], + [ + 1433, + 580, + -5 + ], + [ + 1437, + 580, + -5 + ], + [ + 1445, + 590, + -5 + ], + [ + 1447, + 590, + -5 + ], + [ + 1449, + 592, + -5 + ], + [ + 1456, + 596, + -5 + ], + [ + 1456, + 639, + -5 + ], + [ + 993, + 639, + -5 + ], + [ + 993, + 755, + -5 + ], + [ + 1010, + 755, + -5 + ], + [ + 1010, + 656, + -5 + ], + [ + 1473, + 656, + -5 + ], + [ + 1473, + 595, + -5 + ], + [ + 1484, + 589, + -5 + ], + [ + 1492, + 580, + -5 + ], + [ + 1495, + 580, + -5 + ], + [ + 1495, + 454, + -5 + ], + [ + 1433, + 454, + -5 + ], + [ + 1433, + 454, + 50 + ], + [ + 1179, + 454, + 50 + ], + [ + 1179, + 454, + -5 + ], + [ + 1179, + 508, + -5 + ], + [ + 953, + 508, + -5 + ], + [ + 953, + 755, + -5 + ], + [ + 970, + 755, + -5 + ], + [ + 970, + 525, + -5 + ], + [ + 1179, + 525, + -5 + ], + [ + 1179, + 580, + -5 + ], + [ + 1241, + 580, + -5 + ], + [ + 1241, + 454, + -5 + ], + [ + 1179, + 454, + -5 + ], + [ + 1179, + 454, + 50 + ], + [ + 1179, + 182, + 50 + ], + [ + 1179, + 182, + -5 + ], + [ + 1179, + 237, + -5 + ], + [ + 913, + 237, + -5 + ], + [ + 913, + 755, + -5 + ], + [ + 930, + 755, + -5 + ], + [ + 930, + 253, + -5 + ], + [ + 1179, + 253, + -5 + ], + [ + 1179, + 308, + -5 + ], + [ + 1241, + 308, + -5 + ], + [ + 1241, + 182, + -5 + ], + [ + 1179, + 182, + -5 + ], + [ + 1179, + 182, + 50 + ], + [ + 1433, + 182, + 50 + ], + [ + 1433, + 182, + -5 + ], + [ + 1433, + 308, + -5 + ], + [ + 1495, + 308, + -5 + ], + [ + 1495, + 253, + -5 + ], + [ + 1519, + 253, + -5 + ], + [ + 1519, + 715, + -5 + ], + [ + 1050, + 715, + -5 + ], + [ + 1050, + 692, + -5 + ], + [ + 1033, + 692, + -5 + ], + [ + 1033, + 755, + -5 + ], + [ + 1050, + 755, + -5 + ], + [ + 1050, + 732, + -5 + ], + [ + 1536, + 732, + -5 + ], + [ + 1536, + 237, + -5 + ], + [ + 1495, + 237, + -5 + ], + [ + 1495, + 182, + -5 + ], + [ + 1433, + 182, + -5 + ], + [ + 1433, + 182, + 50 + ], + [ + 1367, + 1407, + 50 + ], + [ + 1367, + 1407, + -5 + ], + [ + 1367, + 1487, + -5 + ], + [ + 1452, + 1487, + -5 + ], + [ + 1452, + 1456, + -5 + ], + [ + 1494, + 1456, + -5 + ], + [ + 1494, + 1487, + -5 + ], + [ + 1579, + 1487, + -5 + ], + [ + 1579, + 1407, + -5 + ], + [ + 1494, + 1407, + -5 + ], + [ + 1494, + 1439, + -5 + ], + [ + 1452, + 1439, + -5 + ], + [ + 1452, + 1407, + -5 + ], + [ + 1367, + 1407, + -5 + ], + [ + 1367, + 1407, + 50 + ], + [ + 554, + 1407, + 50 + ], + [ + 554, + 1407, + -5 + ], + [ + 554, + 1487, + -5 + ], + [ + 588, + 1487, + -5 + ], + [ + 588, + 1532, + -5 + ], + [ + 715, + 1532, + -5 + ], + [ + 715, + 1559, + -5 + ], + [ + 681, + 1559, + -5 + ], + [ + 681, + 1640, + -5 + ], + [ + 766, + 1640, + -5 + ], + [ + 766, + 1559, + -5 + ], + [ + 732, + 1559, + -5 + ], + [ + 732, + 1515, + -5 + ], + [ + 605, + 1515, + -5 + ], + [ + 605, + 1487, + -5 + ], + [ + 640, + 1487, + -5 + ], + [ + 640, + 1407, + -5 + ], + [ + 554, + 1407, + -5 + ], + [ + 554, + 1407, + 50 + ], + [ + 407, + 1695, + 50 + ], + [ + 407, + 1695, + -5 + ], + [ + 407, + 1796, + -5 + ], + [ + 482, + 1796, + -5 + ], + [ + 482, + 1695, + -5 + ], + [ + 407, + 1695, + -5 + ], + [ + 407, + 1695, + 50 + ], + [ + 204, + 1695, + 50 + ], + [ + 204, + 1695, + -5 + ], + [ + 204, + 1796, + -5 + ], + [ + 279, + 1796, + -5 + ], + [ + 279, + 1695, + -5 + ], + [ + 204, + 1695, + -5 + ], + [ + 204, + 1695, + 50 + ], + [ + 144, + 946, + 50 + ], + [ + 144, + 946, + -5 + ], + [ + 144, + 1009, + -5 + ], + [ + 270, + 1009, + -5 + ], + [ + 270, + 946, + -5 + ], + [ + 144, + 946, + -5 + ], + [ + 144, + 946, + 50 + ], + [ + 204, + 477, + 50 + ], + [ + 204, + 477, + -5 + ], + [ + 204, + 484, + -5 + ], + [ + 201, + 484, + -5 + ], + [ + 201, + 554, + -5 + ], + [ + 169, + 554, + -5 + ], + [ + 169, + 639, + -5 + ], + [ + 233, + 639, + -5 + ], + [ + 233, + 681, + -5 + ], + [ + 201, + 681, + -5 + ], + [ + 201, + 766, + -5 + ], + [ + 233, + 766, + -5 + ], + [ + 233, + 819, + -5 + ], + [ + 144, + 819, + -5 + ], + [ + 144, + 842, + -5 + ], + [ + 97, + 842, + -5 + ], + [ + 97, + 1338, + -5 + ], + [ + 177, + 1338, + -5 + ], + [ + 177, + 1252, + -5 + ], + [ + 114, + 1252, + -5 + ], + [ + 114, + 1214, + -5 + ], + [ + 770, + 1214, + -5 + ], + [ + 770, + 1100, + -5 + ], + [ + 970, + 1100, + -5 + ], + [ + 970, + 821, + -5 + ], + [ + 1161, + 821, + -5 + ], + [ + 1161, + 804, + -5 + ], + [ + 953, + 804, + -5 + ], + [ + 953, + 1084, + -5 + ], + [ + 753, + 1084, + -5 + ], + [ + 753, + 1198, + -5 + ], + [ + 114, + 1198, + -5 + ], + [ + 114, + 859, + -5 + ], + [ + 144, + 859, + -5 + ], + [ + 144, + 882, + -5 + ], + [ + 270, + 882, + -5 + ], + [ + 270, + 819, + -5 + ], + [ + 250, + 819, + -5 + ], + [ + 250, + 766, + -5 + ], + [ + 281, + 766, + -5 + ], + [ + 281, + 681, + -5 + ], + [ + 250, + 681, + -5 + ], + [ + 250, + 554, + -5 + ], + [ + 218, + 554, + -5 + ], + [ + 218, + 507, + -5 + ], + [ + 253, + 507, + -5 + ], + [ + 253, + 477, + -5 + ], + [ + 204, + 477, + -5 + ], + [ + 204, + 477, + 50 + ] +] diff --git a/typeset.js b/typeset.js index 036129b..087e48d 100644 --- a/typeset.js +++ b/typeset.js @@ -514,7 +514,7 @@ const TSET = [ copy: { array: (arr) => [...arr], reference: (arr) => { - return arr + return arr } } } -- GitLab