From d808837cd368c3772962be591aa6532bcc0cf3e4 Mon Sep 17 00:00:00 2001
From: jianghaiyue <jianghaiyue@zkyt.com>
Date: 星期一, 22 九月 2025 12:11:37 +0800
Subject: [PATCH] 更新版本
---
algo-zkd/src/main/java/com/algo/service/CollisionResolver.java | 74
algo-zkd/man_code.json | 10012 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
algo-zkd/src/main/java/com/algo/config/BaseDataConfig.java | 2
algo-zkd/src/main/java/com/algo/model/CTUPhysicalConfig.java | 161
algo-zkd/src/main/java/com/algo/model/PathCode.java | 44
algo-zkd/src/main/java/com/algo/service/PathPlanningService.java | 19
algo-zkd/src/main/java/com/algo/util/PathTimeCalculator.java | 318 +
algo-zkd/src/main/java/com/algo/util/JsonUtils.java | 198
algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java | 208
9 files changed, 10,968 insertions(+), 68 deletions(-)
diff --git a/algo-zkd/man_code.json b/algo-zkd/man_code.json
new file mode 100644
index 0000000..674a111
--- /dev/null
+++ b/algo-zkd/man_code.json
@@ -0,0 +1,10012 @@
+{
+ "path_id_to_coordinates": {
+ "1": [
+ {
+ "x": 0.0,
+ "y": 0.0
+ }
+ ],
+ "2": [
+ {
+ "x": 0.0,
+ "y": 1270.0
+ }
+ ],
+ "3": [
+ {
+ "x": 0.0,
+ "y": 2240.0
+ }
+ ],
+ "4": [
+ {
+ "x": 0.0,
+ "y": 3210.0
+ }
+ ],
+ "5": [
+ {
+ "x": 0.0,
+ "y": 4180.0
+ }
+ ],
+ "6": [
+ {
+ "x": 0.0,
+ "y": 4964.5
+ }
+ ],
+ "7": [
+ {
+ "x": 0.0,
+ "y": 5749.0
+ }
+ ],
+ "8": [
+ {
+ "x": 0.0,
+ "y": 6249.0
+ }
+ ],
+ "9": [
+ {
+ "x": 0.0,
+ "y": 6749.0
+ }
+ ],
+ "10": [
+ {
+ "x": 0.0,
+ "y": 7249.0
+ }
+ ],
+ "11": [
+ {
+ "x": 0.0,
+ "y": 7904.0
+ }
+ ],
+ "12": [
+ {
+ "x": 0.0,
+ "y": 8404.0
+ }
+ ],
+ "13": [
+ {
+ "x": 0.0,
+ "y": 8904.0
+ }
+ ],
+ "14": [
+ {
+ "x": 0.0,
+ "y": 9404.0
+ }
+ ],
+ "15": [
+ {
+ "x": 0.0,
+ "y": 10145.0
+ }
+ ],
+ "16": [
+ {
+ "x": 0.0,
+ "y": 10929.5
+ }
+ ],
+ "17": [
+ {
+ "x": 0.0,
+ "y": 11714.0
+ }
+ ],
+ "18": [
+ {
+ "x": 0.0,
+ "y": 12214.0
+ }
+ ],
+ "19": [
+ {
+ "x": 0.0,
+ "y": 12714.0
+ }
+ ],
+ "20": [
+ {
+ "x": 0.0,
+ "y": 13214.0
+ }
+ ],
+ "21": [
+ {
+ "x": 0.0,
+ "y": 13869.0
+ }
+ ],
+ "22": [
+ {
+ "x": 0.0,
+ "y": 14369.0
+ }
+ ],
+ "23": [
+ {
+ "x": 0.0,
+ "y": 14869.0
+ }
+ ],
+ "24": [
+ {
+ "x": 0.0,
+ "y": 15369.0
+ }
+ ],
+ "25": [
+ {
+ "x": 0.0,
+ "y": 16110.0
+ }
+ ],
+ "26": [
+ {
+ "x": 0.0,
+ "y": 16894.5
+ }
+ ],
+ "27": [
+ {
+ "x": 0.0,
+ "y": 17679.0
+ }
+ ],
+ "28": [
+ {
+ "x": 0.0,
+ "y": 18179.0
+ }
+ ],
+ "29": [
+ {
+ "x": 0.0,
+ "y": 18679.0
+ }
+ ],
+ "30": [
+ {
+ "x": 0.0,
+ "y": 19179.0
+ }
+ ],
+ "31": [
+ {
+ "x": 0.0,
+ "y": 19834.0
+ }
+ ],
+ "32": [
+ {
+ "x": 0.0,
+ "y": 20334.0
+ }
+ ],
+ "33": [
+ {
+ "x": 0.0,
+ "y": 20834.0
+ }
+ ],
+ "34": [
+ {
+ "x": 0.0,
+ "y": 21334.0
+ }
+ ],
+ "35": [
+ {
+ "x": 0.0,
+ "y": 22075.0
+ }
+ ],
+ "36": [
+ {
+ "x": 1195.0,
+ "y": 0.0
+ }
+ ],
+ "37": [
+ {
+ "x": 1195.0,
+ "y": 2240.0
+ }
+ ],
+ "38": [
+ {
+ "x": 1195.0,
+ "y": 4180.0
+ }
+ ],
+ "39": [
+ {
+ "x": 1195.0,
+ "y": 10145.0
+ }
+ ],
+ "40": [
+ {
+ "x": 1195.0,
+ "y": 16110.0
+ }
+ ],
+ "41": [
+ {
+ "x": 1195.0,
+ "y": 22075.0
+ }
+ ],
+ "42": [
+ {
+ "x": 2390.0,
+ "y": 0.0
+ }
+ ],
+ "43": [
+ {
+ "x": 2390.0,
+ "y": 1270.0
+ }
+ ],
+ "44": [
+ {
+ "x": 2390.0,
+ "y": 2240.0
+ }
+ ],
+ "45": [
+ {
+ "x": 2390.0,
+ "y": 3210.0
+ }
+ ],
+ "46": [
+ {
+ "x": 2390.0,
+ "y": 4180.0
+ }
+ ],
+ "47": [
+ {
+ "x": 2390.0,
+ "y": 4964.5
+ }
+ ],
+ "48": [
+ {
+ "x": 2390.0,
+ "y": 5749.0
+ }
+ ],
+ "49": [
+ {
+ "x": 2390.0,
+ "y": 6249.0
+ }
+ ],
+ "50": [
+ {
+ "x": 2390.0,
+ "y": 6749.0
+ }
+ ],
+ "51": [
+ {
+ "x": 2390.0,
+ "y": 7249.0
+ }
+ ],
+ "52": [
+ {
+ "x": 2390.0,
+ "y": 7904.0
+ }
+ ],
+ "53": [
+ {
+ "x": 2390.0,
+ "y": 8404.0
+ }
+ ],
+ "54": [
+ {
+ "x": 2390.0,
+ "y": 8904.0
+ }
+ ],
+ "55": [
+ {
+ "x": 2390.0,
+ "y": 9404.0
+ }
+ ],
+ "56": [
+ {
+ "x": 2390.0,
+ "y": 10145.0
+ }
+ ],
+ "57": [
+ {
+ "x": 2390.0,
+ "y": 10929.5
+ }
+ ],
+ "58": [
+ {
+ "x": 2390.0,
+ "y": 11714.0
+ }
+ ],
+ "59": [
+ {
+ "x": 2390.0,
+ "y": 12214.0
+ }
+ ],
+ "60": [
+ {
+ "x": 2390.0,
+ "y": 12714.0
+ }
+ ],
+ "61": [
+ {
+ "x": 2390.0,
+ "y": 13214.0
+ }
+ ],
+ "62": [
+ {
+ "x": 2390.0,
+ "y": 13869.0
+ }
+ ],
+ "63": [
+ {
+ "x": 2390.0,
+ "y": 14369.0
+ }
+ ],
+ "64": [
+ {
+ "x": 2390.0,
+ "y": 14869.0
+ }
+ ],
+ "65": [
+ {
+ "x": 2390.0,
+ "y": 15369.0
+ }
+ ],
+ "66": [
+ {
+ "x": 2390.0,
+ "y": 16110.0
+ }
+ ],
+ "67": [
+ {
+ "x": 2390.0,
+ "y": 16894.5
+ }
+ ],
+ "68": [
+ {
+ "x": 2390.0,
+ "y": 17679.0
+ }
+ ],
+ "69": [
+ {
+ "x": 2390.0,
+ "y": 18179.0
+ }
+ ],
+ "70": [
+ {
+ "x": 2390.0,
+ "y": 18679.0
+ }
+ ],
+ "71": [
+ {
+ "x": 2390.0,
+ "y": 19179.0
+ }
+ ],
+ "72": [
+ {
+ "x": 2390.0,
+ "y": 19834.0
+ }
+ ],
+ "73": [
+ {
+ "x": 2390.0,
+ "y": 20334.0
+ }
+ ],
+ "74": [
+ {
+ "x": 2390.0,
+ "y": 20834.0
+ }
+ ],
+ "75": [
+ {
+ "x": 2390.0,
+ "y": 21334.0
+ }
+ ],
+ "76": [
+ {
+ "x": 2390.0,
+ "y": 22075.0
+ }
+ ],
+ "77": [
+ {
+ "x": 3585.0,
+ "y": 0.0
+ }
+ ],
+ "78": [
+ {
+ "x": 3585.0,
+ "y": 2240.0
+ }
+ ],
+ "79": [
+ {
+ "x": 3585.0,
+ "y": 4180.0
+ }
+ ],
+ "80": [
+ {
+ "x": 3585.0,
+ "y": 10145.0
+ }
+ ],
+ "81": [
+ {
+ "x": 3585.0,
+ "y": 16110.0
+ }
+ ],
+ "82": [
+ {
+ "x": 3585.0,
+ "y": 22075.0
+ }
+ ],
+ "83": [
+ {
+ "x": 4780.0,
+ "y": 0.0
+ }
+ ],
+ "84": [
+ {
+ "x": 4780.0,
+ "y": 1270.0
+ }
+ ],
+ "85": [
+ {
+ "x": 4780.0,
+ "y": 2240.0
+ }
+ ],
+ "86": [
+ {
+ "x": 4780.0,
+ "y": 3210.0
+ }
+ ],
+ "87": [
+ {
+ "x": 4780.0,
+ "y": 4180.0
+ }
+ ],
+ "88": [
+ {
+ "x": 4780.0,
+ "y": 4964.5
+ }
+ ],
+ "89": [
+ {
+ "x": 4780.0,
+ "y": 5749.0
+ }
+ ],
+ "90": [
+ {
+ "x": 4780.0,
+ "y": 6249.0
+ }
+ ],
+ "91": [
+ {
+ "x": 4780.0,
+ "y": 6749.0
+ }
+ ],
+ "92": [
+ {
+ "x": 4780.0,
+ "y": 7249.0
+ }
+ ],
+ "93": [
+ {
+ "x": 4780.0,
+ "y": 7904.0
+ }
+ ],
+ "94": [
+ {
+ "x": 4780.0,
+ "y": 8404.0
+ }
+ ],
+ "95": [
+ {
+ "x": 4780.0,
+ "y": 8904.0
+ }
+ ],
+ "96": [
+ {
+ "x": 4780.0,
+ "y": 9404.0
+ }
+ ],
+ "97": [
+ {
+ "x": 4780.0,
+ "y": 10145.0
+ }
+ ],
+ "98": [
+ {
+ "x": 4780.0,
+ "y": 10929.5
+ }
+ ],
+ "99": [
+ {
+ "x": 4780.0,
+ "y": 11714.0
+ }
+ ],
+ "100": [
+ {
+ "x": 4780.0,
+ "y": 12214.0
+ }
+ ],
+ "101": [
+ {
+ "x": 4780.0,
+ "y": 12714.0
+ }
+ ],
+ "102": [
+ {
+ "x": 4780.0,
+ "y": 13214.0
+ }
+ ],
+ "103": [
+ {
+ "x": 4780.0,
+ "y": 13869.0
+ }
+ ],
+ "104": [
+ {
+ "x": 4780.0,
+ "y": 14369.0
+ }
+ ],
+ "105": [
+ {
+ "x": 4780.0,
+ "y": 14869.0
+ }
+ ],
+ "106": [
+ {
+ "x": 4780.0,
+ "y": 15369.0
+ }
+ ],
+ "107": [
+ {
+ "x": 4780.0,
+ "y": 16110.0
+ }
+ ],
+ "108": [
+ {
+ "x": 4780.0,
+ "y": 16894.5
+ }
+ ],
+ "109": [
+ {
+ "x": 4780.0,
+ "y": 17679.0
+ }
+ ],
+ "110": [
+ {
+ "x": 4780.0,
+ "y": 18179.0
+ }
+ ],
+ "111": [
+ {
+ "x": 4780.0,
+ "y": 18679.0
+ }
+ ],
+ "112": [
+ {
+ "x": 4780.0,
+ "y": 19179.0
+ }
+ ],
+ "113": [
+ {
+ "x": 4780.0,
+ "y": 19834.0
+ }
+ ],
+ "114": [
+ {
+ "x": 4780.0,
+ "y": 20334.0
+ }
+ ],
+ "115": [
+ {
+ "x": 4780.0,
+ "y": 20834.0
+ }
+ ],
+ "116": [
+ {
+ "x": 4780.0,
+ "y": 21334.0
+ }
+ ],
+ "117": [
+ {
+ "x": 4780.0,
+ "y": 22075.0
+ }
+ ],
+ "118": [
+ {
+ "x": 5835.0,
+ "y": 0.0
+ }
+ ],
+ "119": [
+ {
+ "x": 5835.0,
+ "y": 2240.0
+ }
+ ],
+ "120": [
+ {
+ "x": 5835.0,
+ "y": 4180.0
+ }
+ ],
+ "121": [
+ {
+ "x": 5835.0,
+ "y": 10145.0
+ }
+ ],
+ "122": [
+ {
+ "x": 5835.0,
+ "y": 16110.0
+ }
+ ],
+ "123": [
+ {
+ "x": 5835.0,
+ "y": 22075.0
+ }
+ ],
+ "124": [
+ {
+ "x": 6890.0,
+ "y": 0.0
+ }
+ ],
+ "125": [
+ {
+ "x": 6890.0,
+ "y": 2240.0
+ }
+ ],
+ "126": [
+ {
+ "x": 6890.0,
+ "y": 4180.0
+ }
+ ],
+ "127": [
+ {
+ "x": 6890.0,
+ "y": 4980.0
+ }
+ ],
+ "128": [
+ {
+ "x": 6890.0,
+ "y": 6085.0
+ }
+ ],
+ "129": [
+ {
+ "x": 6890.0,
+ "y": 7162.5
+ }
+ ],
+ "130": [
+ {
+ "x": 6890.0,
+ "y": 8240.0
+ }
+ ],
+ "131": [
+ {
+ "x": 6890.0,
+ "y": 9345.0
+ }
+ ],
+ "132": [
+ {
+ "x": 6890.0,
+ "y": 10145.0
+ }
+ ],
+ "133": [
+ {
+ "x": 6890.0,
+ "y": 10945.0
+ }
+ ],
+ "134": [
+ {
+ "x": 6890.0,
+ "y": 12050.0
+ }
+ ],
+ "135": [
+ {
+ "x": 6890.0,
+ "y": 16110.0
+ }
+ ],
+ "136": [
+ {
+ "x": 6890.0,
+ "y": 16910.0
+ }
+ ],
+ "137": [
+ {
+ "x": 6890.0,
+ "y": 18015.0
+ }
+ ],
+ "138": [
+ {
+ "x": 6890.0,
+ "y": 19092.5
+ }
+ ],
+ "139": [
+ {
+ "x": 6890.0,
+ "y": 20170.0
+ }
+ ],
+ "140": [
+ {
+ "x": 6890.0,
+ "y": 21275.0
+ }
+ ],
+ "141": [
+ {
+ "x": 6890.0,
+ "y": 22075.0
+ }
+ ],
+ "142": [
+ {
+ "x": 7945.0,
+ "y": 0.0
+ }
+ ],
+ "143": [
+ {
+ "x": 7945.0,
+ "y": 2240.0
+ }
+ ],
+ "144": [
+ {
+ "x": 7945.0,
+ "y": 4180.0
+ }
+ ],
+ "145": [
+ {
+ "x": 7945.0,
+ "y": 10145.0
+ }
+ ],
+ "146": [
+ {
+ "x": 7945.0,
+ "y": 16110.0
+ }
+ ],
+ "147": [
+ {
+ "x": 7945.0,
+ "y": 22075.0
+ }
+ ],
+ "148": [
+ {
+ "x": 9000.0,
+ "y": 0.0
+ }
+ ],
+ "149": [
+ {
+ "x": 9000.0,
+ "y": 1270.0
+ }
+ ],
+ "150": [
+ {
+ "x": 9000.0,
+ "y": 2240.0
+ }
+ ],
+ "151": [
+ {
+ "x": 9000.0,
+ "y": 3210.0
+ }
+ ],
+ "152": [
+ {
+ "x": 9000.0,
+ "y": 4180.0
+ }
+ ],
+ "153": [
+ {
+ "x": 9000.0,
+ "y": 4964.5
+ }
+ ],
+ "154": [
+ {
+ "x": 9000.0,
+ "y": 5749.0
+ }
+ ],
+ "155": [
+ {
+ "x": 9000.0,
+ "y": 6249.0
+ }
+ ],
+ "156": [
+ {
+ "x": 9000.0,
+ "y": 6749.0
+ }
+ ],
+ "157": [
+ {
+ "x": 9000.0,
+ "y": 7249.0
+ }
+ ],
+ "158": [
+ {
+ "x": 9000.0,
+ "y": 7904.0
+ }
+ ],
+ "159": [
+ {
+ "x": 9000.0,
+ "y": 8404.0
+ }
+ ],
+ "160": [
+ {
+ "x": 9000.0,
+ "y": 8904.0
+ }
+ ],
+ "161": [
+ {
+ "x": 9000.0,
+ "y": 9404.0
+ }
+ ],
+ "162": [
+ {
+ "x": 9000.0,
+ "y": 10145.0
+ }
+ ],
+ "163": [
+ {
+ "x": 9000.0,
+ "y": 10929.5
+ }
+ ],
+ "164": [
+ {
+ "x": 9000.0,
+ "y": 11714.0
+ }
+ ],
+ "165": [
+ {
+ "x": 9000.0,
+ "y": 12214.0
+ }
+ ],
+ "166": [
+ {
+ "x": 9000.0,
+ "y": 12714.0
+ }
+ ],
+ "167": [
+ {
+ "x": 9000.0,
+ "y": 13214.0
+ }
+ ],
+ "168": [
+ {
+ "x": 9000.0,
+ "y": 13869.0
+ }
+ ],
+ "169": [
+ {
+ "x": 9000.0,
+ "y": 14369.0
+ }
+ ],
+ "170": [
+ {
+ "x": 9000.0,
+ "y": 14869.0
+ }
+ ],
+ "171": [
+ {
+ "x": 9000.0,
+ "y": 15369.0
+ }
+ ],
+ "172": [
+ {
+ "x": 9000.0,
+ "y": 16110.0
+ }
+ ],
+ "173": [
+ {
+ "x": 9000.0,
+ "y": 16894.5
+ }
+ ],
+ "174": [
+ {
+ "x": 9000.0,
+ "y": 17679.0
+ }
+ ],
+ "175": [
+ {
+ "x": 9000.0,
+ "y": 18179.0
+ }
+ ],
+ "176": [
+ {
+ "x": 9000.0,
+ "y": 18679.0
+ }
+ ],
+ "177": [
+ {
+ "x": 9000.0,
+ "y": 19179.0
+ }
+ ],
+ "178": [
+ {
+ "x": 9000.0,
+ "y": 19834.0
+ }
+ ],
+ "179": [
+ {
+ "x": 9000.0,
+ "y": 20334.0
+ }
+ ],
+ "180": [
+ {
+ "x": 9000.0,
+ "y": 20834.0
+ }
+ ],
+ "181": [
+ {
+ "x": 9000.0,
+ "y": 21334.0
+ }
+ ],
+ "182": [
+ {
+ "x": 9000.0,
+ "y": 22075.0
+ }
+ ],
+ "183": [
+ {
+ "x": 10195.0,
+ "y": 2240.0
+ }
+ ],
+ "184": [
+ {
+ "x": 10195.0,
+ "y": 4180.0
+ }
+ ],
+ "185": [
+ {
+ "x": 10195.0,
+ "y": 10145.0
+ }
+ ],
+ "186": [
+ {
+ "x": 10195.0,
+ "y": 16110.0
+ }
+ ],
+ "187": [
+ {
+ "x": 10195.0,
+ "y": 22075.0
+ }
+ ],
+ "189": [
+ {
+ "x": 11390.0,
+ "y": 300.0
+ }
+ ],
+ "190": [
+ {
+ "x": 11390.0,
+ "y": 1270.0
+ }
+ ],
+ "191": [
+ {
+ "x": 11390.0,
+ "y": 2240.0
+ }
+ ],
+ "192": [
+ {
+ "x": 11390.0,
+ "y": 3210.0
+ }
+ ],
+ "193": [
+ {
+ "x": 11390.0,
+ "y": 4180.0
+ }
+ ],
+ "194": [
+ {
+ "x": 11390.0,
+ "y": 4964.5
+ }
+ ],
+ "195": [
+ {
+ "x": 11390.0,
+ "y": 5749.0
+ }
+ ],
+ "196": [
+ {
+ "x": 11390.0,
+ "y": 6249.0
+ }
+ ],
+ "197": [
+ {
+ "x": 11390.0,
+ "y": 6749.0
+ }
+ ],
+ "198": [
+ {
+ "x": 11390.0,
+ "y": 7249.0
+ }
+ ],
+ "199": [
+ {
+ "x": 11390.0,
+ "y": 7904.0
+ }
+ ],
+ "200": [
+ {
+ "x": 11390.0,
+ "y": 8404.0
+ }
+ ],
+ "201": [
+ {
+ "x": 11390.0,
+ "y": 8904.0
+ }
+ ],
+ "202": [
+ {
+ "x": 11390.0,
+ "y": 9404.0
+ }
+ ],
+ "203": [
+ {
+ "x": 11390.0,
+ "y": 10145.0
+ }
+ ],
+ "204": [
+ {
+ "x": 11390.0,
+ "y": 10929.5
+ }
+ ],
+ "205": [
+ {
+ "x": 11390.0,
+ "y": 11714.0
+ }
+ ],
+ "206": [
+ {
+ "x": 11390.0,
+ "y": 12214.0
+ }
+ ],
+ "207": [
+ {
+ "x": 11390.0,
+ "y": 12714.0
+ }
+ ],
+ "208": [
+ {
+ "x": 11390.0,
+ "y": 13214.0
+ }
+ ],
+ "209": [
+ {
+ "x": 11390.0,
+ "y": 13869.0
+ }
+ ],
+ "210": [
+ {
+ "x": 11390.0,
+ "y": 14369.0
+ }
+ ],
+ "211": [
+ {
+ "x": 11390.0,
+ "y": 14869.0
+ }
+ ],
+ "212": [
+ {
+ "x": 11390.0,
+ "y": 15369.0
+ }
+ ],
+ "213": [
+ {
+ "x": 11390.0,
+ "y": 16110.0
+ }
+ ],
+ "214": [
+ {
+ "x": 11390.0,
+ "y": 16894.5
+ }
+ ],
+ "215": [
+ {
+ "x": 11390.0,
+ "y": 17679.0
+ }
+ ],
+ "216": [
+ {
+ "x": 11390.0,
+ "y": 18179.0
+ }
+ ],
+ "217": [
+ {
+ "x": 11390.0,
+ "y": 18679.0
+ }
+ ],
+ "218": [
+ {
+ "x": 11390.0,
+ "y": 19179.0
+ }
+ ],
+ "219": [
+ {
+ "x": 11390.0,
+ "y": 19834.0
+ }
+ ],
+ "220": [
+ {
+ "x": 11390.0,
+ "y": 20334.0
+ }
+ ],
+ "221": [
+ {
+ "x": 11390.0,
+ "y": 20834.0
+ }
+ ],
+ "222": [
+ {
+ "x": 11390.0,
+ "y": 21334.0
+ }
+ ],
+ "223": [
+ {
+ "x": 11390.0,
+ "y": 22075.0
+ }
+ ],
+ "224": [
+ {
+ "x": 12585.0,
+ "y": 2240.0
+ }
+ ],
+ "225": [
+ {
+ "x": 12585.0,
+ "y": 4180.0
+ }
+ ],
+ "226": [
+ {
+ "x": 12585.0,
+ "y": 10145.0
+ }
+ ],
+ "227": [
+ {
+ "x": 12585.0,
+ "y": 16110.0
+ }
+ ],
+ "228": [
+ {
+ "x": 12585.0,
+ "y": 22075.0
+ }
+ ],
+ "230": [
+ {
+ "x": 13780.0,
+ "y": 300.0
+ }
+ ],
+ "231": [
+ {
+ "x": 13780.0,
+ "y": 1270.0
+ }
+ ],
+ "232": [
+ {
+ "x": 13780.0,
+ "y": 2240.0
+ }
+ ],
+ "233": [
+ {
+ "x": 13780.0,
+ "y": 3210.0
+ }
+ ],
+ "234": [
+ {
+ "x": 13780.0,
+ "y": 4180.0
+ }
+ ],
+ "235": [
+ {
+ "x": 13780.0,
+ "y": 4964.5
+ }
+ ],
+ "236": [
+ {
+ "x": 13780.0,
+ "y": 5749.0
+ }
+ ],
+ "237": [
+ {
+ "x": 13780.0,
+ "y": 6249.0
+ }
+ ],
+ "238": [
+ {
+ "x": 13780.0,
+ "y": 6749.0
+ }
+ ],
+ "239": [
+ {
+ "x": 13780.0,
+ "y": 7249.0
+ }
+ ],
+ "240": [
+ {
+ "x": 13780.0,
+ "y": 7904.0
+ }
+ ],
+ "241": [
+ {
+ "x": 13780.0,
+ "y": 8404.0
+ }
+ ],
+ "242": [
+ {
+ "x": 13780.0,
+ "y": 8904.0
+ }
+ ],
+ "243": [
+ {
+ "x": 13780.0,
+ "y": 9404.0
+ }
+ ],
+ "244": [
+ {
+ "x": 13780.0,
+ "y": 10145.0
+ }
+ ],
+ "245": [
+ {
+ "x": 13780.0,
+ "y": 10929.5
+ }
+ ],
+ "246": [
+ {
+ "x": 13780.0,
+ "y": 11714.0
+ }
+ ],
+ "247": [
+ {
+ "x": 13780.0,
+ "y": 12214.0
+ }
+ ],
+ "248": [
+ {
+ "x": 13780.0,
+ "y": 12714.0
+ }
+ ],
+ "249": [
+ {
+ "x": 13780.0,
+ "y": 13214.0
+ }
+ ],
+ "250": [
+ {
+ "x": 13780.0,
+ "y": 13869.0
+ }
+ ],
+ "251": [
+ {
+ "x": 13780.0,
+ "y": 14369.0
+ }
+ ],
+ "252": [
+ {
+ "x": 13780.0,
+ "y": 14869.0
+ }
+ ],
+ "253": [
+ {
+ "x": 13780.0,
+ "y": 15369.0
+ }
+ ],
+ "254": [
+ {
+ "x": 13780.0,
+ "y": 16110.0
+ }
+ ],
+ "255": [
+ {
+ "x": 13780.0,
+ "y": 16894.5
+ }
+ ],
+ "256": [
+ {
+ "x": 13780.0,
+ "y": 17679.0
+ }
+ ],
+ "257": [
+ {
+ "x": 13780.0,
+ "y": 18179.0
+ }
+ ],
+ "258": [
+ {
+ "x": 13780.0,
+ "y": 18679.0
+ }
+ ],
+ "259": [
+ {
+ "x": 13780.0,
+ "y": 19179.0
+ }
+ ],
+ "260": [
+ {
+ "x": 13780.0,
+ "y": 19834.0
+ }
+ ],
+ "261": [
+ {
+ "x": 13780.0,
+ "y": 20334.0
+ }
+ ],
+ "262": [
+ {
+ "x": 13780.0,
+ "y": 20834.0
+ }
+ ],
+ "263": [
+ {
+ "x": 13780.0,
+ "y": 21334.0
+ }
+ ],
+ "264": [
+ {
+ "x": 13780.0,
+ "y": 22075.0
+ }
+ ],
+ "265": [
+ {
+ "x": 14706.25,
+ "y": 2240.0
+ }
+ ],
+ "266": [
+ {
+ "x": 14706.25,
+ "y": 4180.0
+ }
+ ],
+ "267": [
+ {
+ "x": 14706.25,
+ "y": 10145.0
+ }
+ ],
+ "268": [
+ {
+ "x": 14706.25,
+ "y": 16110.0
+ }
+ ],
+ "269": [
+ {
+ "x": 14706.25,
+ "y": 22075.0
+ }
+ ],
+ "270": [
+ {
+ "x": 15632.5,
+ "y": 2240.0
+ }
+ ],
+ "271": [
+ {
+ "x": 15632.5,
+ "y": 4180.0
+ }
+ ],
+ "272": [
+ {
+ "x": 15632.5,
+ "y": 4980.0
+ }
+ ],
+ "273": [
+ {
+ "x": 15632.5,
+ "y": 6085.0
+ }
+ ],
+ "274": [
+ {
+ "x": 15632.5,
+ "y": 7162.5
+ }
+ ],
+ "275": [
+ {
+ "x": 15632.5,
+ "y": 8240.0
+ }
+ ],
+ "276": [
+ {
+ "x": 15632.5,
+ "y": 9345.0
+ }
+ ],
+ "277": [
+ {
+ "x": 15632.5,
+ "y": 10145.0
+ }
+ ],
+ "278": [
+ {
+ "x": 15632.5,
+ "y": 10945.0
+ }
+ ],
+ "279": [
+ {
+ "x": 15632.5,
+ "y": 12050.0
+ }
+ ],
+ "280": [
+ {
+ "x": 15632.5,
+ "y": 16110.0
+ }
+ ],
+ "281": [
+ {
+ "x": 15632.5,
+ "y": 16910.0
+ }
+ ],
+ "282": [
+ {
+ "x": 15632.5,
+ "y": 18015.0
+ }
+ ],
+ "283": [
+ {
+ "x": 15632.5,
+ "y": 19092.5
+ }
+ ],
+ "284": [
+ {
+ "x": 15632.5,
+ "y": 20170.0
+ }
+ ],
+ "285": [
+ {
+ "x": 15632.5,
+ "y": 21275.0
+ }
+ ],
+ "286": [
+ {
+ "x": 15632.5,
+ "y": 22075.0
+ }
+ ],
+ "287": [
+ {
+ "x": 16558.75,
+ "y": 2240.0
+ }
+ ],
+ "288": [
+ {
+ "x": 16558.75,
+ "y": 4180.0
+ }
+ ],
+ "289": [
+ {
+ "x": 16558.75,
+ "y": 10145.0
+ }
+ ],
+ "290": [
+ {
+ "x": 16558.75,
+ "y": 16110.0
+ }
+ ],
+ "291": [
+ {
+ "x": 16558.75,
+ "y": 22075.0
+ }
+ ],
+ "292": [
+ {
+ "x": 17485.0,
+ "y": 0.0
+ }
+ ],
+ "293": [
+ {
+ "x": 17485.0,
+ "y": 1270.0
+ }
+ ],
+ "294": [
+ {
+ "x": 17485.0,
+ "y": 2240.0
+ }
+ ],
+ "295": [
+ {
+ "x": 17485.0,
+ "y": 3210.0
+ }
+ ],
+ "296": [
+ {
+ "x": 17485.0,
+ "y": 4180.0
+ }
+ ],
+ "297": [
+ {
+ "x": 17485.0,
+ "y": 4964.5
+ }
+ ],
+ "298": [
+ {
+ "x": 17485.0,
+ "y": 5749.0
+ }
+ ],
+ "299": [
+ {
+ "x": 17485.0,
+ "y": 6249.0
+ }
+ ],
+ "300": [
+ {
+ "x": 17485.0,
+ "y": 6749.0
+ }
+ ],
+ "301": [
+ {
+ "x": 17485.0,
+ "y": 7249.0
+ }
+ ],
+ "302": [
+ {
+ "x": 17485.0,
+ "y": 7904.0
+ }
+ ],
+ "303": [
+ {
+ "x": 17485.0,
+ "y": 8404.0
+ }
+ ],
+ "304": [
+ {
+ "x": 17485.0,
+ "y": 8904.0
+ }
+ ],
+ "305": [
+ {
+ "x": 17485.0,
+ "y": 9404.0
+ }
+ ],
+ "306": [
+ {
+ "x": 17485.0,
+ "y": 10145.0
+ }
+ ],
+ "307": [
+ {
+ "x": 17485.0,
+ "y": 10929.5
+ }
+ ],
+ "308": [
+ {
+ "x": 17485.0,
+ "y": 11714.0
+ }
+ ],
+ "309": [
+ {
+ "x": 17485.0,
+ "y": 12214.0
+ }
+ ],
+ "310": [
+ {
+ "x": 17485.0,
+ "y": 12714.0
+ }
+ ],
+ "311": [
+ {
+ "x": 17485.0,
+ "y": 13214.0
+ }
+ ],
+ "312": [
+ {
+ "x": 17485.0,
+ "y": 13869.0
+ }
+ ],
+ "313": [
+ {
+ "x": 17485.0,
+ "y": 14369.0
+ }
+ ],
+ "314": [
+ {
+ "x": 17485.0,
+ "y": 14869.0
+ }
+ ],
+ "315": [
+ {
+ "x": 17485.0,
+ "y": 15369.0
+ }
+ ],
+ "316": [
+ {
+ "x": 17485.0,
+ "y": 16110.0
+ }
+ ],
+ "317": [
+ {
+ "x": 17485.0,
+ "y": 16894.5
+ }
+ ],
+ "318": [
+ {
+ "x": 17485.0,
+ "y": 17679.0
+ }
+ ],
+ "319": [
+ {
+ "x": 17485.0,
+ "y": 18179.0
+ }
+ ],
+ "320": [
+ {
+ "x": 17485.0,
+ "y": 18679.0
+ }
+ ],
+ "321": [
+ {
+ "x": 17485.0,
+ "y": 19179.0
+ }
+ ],
+ "322": [
+ {
+ "x": 17485.0,
+ "y": 19834.0
+ }
+ ],
+ "323": [
+ {
+ "x": 17485.0,
+ "y": 20334.0
+ }
+ ],
+ "324": [
+ {
+ "x": 17485.0,
+ "y": 20834.0
+ }
+ ],
+ "325": [
+ {
+ "x": 17485.0,
+ "y": 21334.0
+ }
+ ],
+ "326": [
+ {
+ "x": 17485.0,
+ "y": 22075.0
+ }
+ ],
+ "327": [
+ {
+ "x": 17485.0,
+ "y": 22859.5
+ }
+ ],
+ "328": [
+ {
+ "x": 17485.0,
+ "y": 23644.0
+ }
+ ],
+ "329": [
+ {
+ "x": 17485.0,
+ "y": 24144.0
+ }
+ ],
+ "330": [
+ {
+ "x": 17485.0,
+ "y": 24644.0
+ }
+ ],
+ "331": [
+ {
+ "x": 17485.0,
+ "y": 25144.0
+ }
+ ],
+ "332": [
+ {
+ "x": 17485.0,
+ "y": 25885.0
+ }
+ ],
+ "333": [
+ {
+ "x": 17485.0,
+ "y": 26669.5
+ }
+ ],
+ "334": [
+ {
+ "x": 17485.0,
+ "y": 27454.0
+ }
+ ],
+ "335": [
+ {
+ "x": 17485.0,
+ "y": 27954.0
+ }
+ ],
+ "336": [
+ {
+ "x": 17485.0,
+ "y": 28454.0
+ }
+ ],
+ "337": [
+ {
+ "x": 17485.0,
+ "y": 28954.0
+ }
+ ],
+ "338": [
+ {
+ "x": 17485.0,
+ "y": 29695.0
+ }
+ ],
+ "339": [
+ {
+ "x": 18680.0,
+ "y": 0.0
+ }
+ ],
+ "340": [
+ {
+ "x": 18680.0,
+ "y": 2240.0
+ }
+ ],
+ "341": [
+ {
+ "x": 18680.0,
+ "y": 4180.0
+ }
+ ],
+ "342": [
+ {
+ "x": 18680.0,
+ "y": 10145.0
+ }
+ ],
+ "343": [
+ {
+ "x": 18680.0,
+ "y": 16110.0
+ }
+ ],
+ "344": [
+ {
+ "x": 18680.0,
+ "y": 22075.0
+ }
+ ],
+ "345": [
+ {
+ "x": 18680.0,
+ "y": 25885.0
+ }
+ ],
+ "346": [
+ {
+ "x": 18680.0,
+ "y": 29695.0
+ }
+ ],
+ "347": [
+ {
+ "x": 19875.0,
+ "y": 0.0
+ }
+ ],
+ "348": [
+ {
+ "x": 19875.0,
+ "y": 1270.0
+ }
+ ],
+ "349": [
+ {
+ "x": 19875.0,
+ "y": 2240.0
+ }
+ ],
+ "350": [
+ {
+ "x": 19875.0,
+ "y": 3210.0
+ }
+ ],
+ "351": [
+ {
+ "x": 19875.0,
+ "y": 4180.0
+ }
+ ],
+ "352": [
+ {
+ "x": 19875.0,
+ "y": 4964.5
+ }
+ ],
+ "353": [
+ {
+ "x": 19875.0,
+ "y": 5749.0
+ }
+ ],
+ "354": [
+ {
+ "x": 19875.0,
+ "y": 6249.0
+ }
+ ],
+ "355": [
+ {
+ "x": 19875.0,
+ "y": 6749.0
+ }
+ ],
+ "356": [
+ {
+ "x": 19875.0,
+ "y": 7249.0
+ }
+ ],
+ "357": [
+ {
+ "x": 19875.0,
+ "y": 7904.0
+ }
+ ],
+ "358": [
+ {
+ "x": 19875.0,
+ "y": 8404.0
+ }
+ ],
+ "359": [
+ {
+ "x": 19875.0,
+ "y": 8904.0
+ }
+ ],
+ "360": [
+ {
+ "x": 19875.0,
+ "y": 9404.0
+ }
+ ],
+ "361": [
+ {
+ "x": 19875.0,
+ "y": 10145.0
+ }
+ ],
+ "362": [
+ {
+ "x": 19875.0,
+ "y": 10929.5
+ }
+ ],
+ "363": [
+ {
+ "x": 19875.0,
+ "y": 11714.0
+ }
+ ],
+ "364": [
+ {
+ "x": 19875.0,
+ "y": 12214.0
+ }
+ ],
+ "365": [
+ {
+ "x": 19875.0,
+ "y": 12714.0
+ }
+ ],
+ "366": [
+ {
+ "x": 19875.0,
+ "y": 13214.0
+ }
+ ],
+ "367": [
+ {
+ "x": 19875.0,
+ "y": 13869.0
+ }
+ ],
+ "368": [
+ {
+ "x": 19875.0,
+ "y": 14369.0
+ }
+ ],
+ "369": [
+ {
+ "x": 19875.0,
+ "y": 14869.0
+ }
+ ],
+ "370": [
+ {
+ "x": 19875.0,
+ "y": 15369.0
+ }
+ ],
+ "371": [
+ {
+ "x": 19875.0,
+ "y": 16110.0
+ }
+ ],
+ "372": [
+ {
+ "x": 19875.0,
+ "y": 16894.5
+ }
+ ],
+ "373": [
+ {
+ "x": 19875.0,
+ "y": 17679.0
+ }
+ ],
+ "374": [
+ {
+ "x": 19875.0,
+ "y": 18179.0
+ }
+ ],
+ "375": [
+ {
+ "x": 19875.0,
+ "y": 18679.0
+ }
+ ],
+ "376": [
+ {
+ "x": 19875.0,
+ "y": 19179.0
+ }
+ ],
+ "377": [
+ {
+ "x": 19875.0,
+ "y": 19834.0
+ }
+ ],
+ "378": [
+ {
+ "x": 19875.0,
+ "y": 20334.0
+ }
+ ],
+ "379": [
+ {
+ "x": 19875.0,
+ "y": 20834.0
+ }
+ ],
+ "380": [
+ {
+ "x": 19875.0,
+ "y": 21334.0
+ }
+ ],
+ "381": [
+ {
+ "x": 19875.0,
+ "y": 22075.0
+ }
+ ],
+ "382": [
+ {
+ "x": 19875.0,
+ "y": 22859.5
+ }
+ ],
+ "383": [
+ {
+ "x": 19875.0,
+ "y": 23644.0
+ }
+ ],
+ "384": [
+ {
+ "x": 19875.0,
+ "y": 24144.0
+ }
+ ],
+ "385": [
+ {
+ "x": 19875.0,
+ "y": 24644.0
+ }
+ ],
+ "386": [
+ {
+ "x": 19875.0,
+ "y": 25144.0
+ }
+ ],
+ "387": [
+ {
+ "x": 19875.0,
+ "y": 25885.0
+ }
+ ],
+ "388": [
+ {
+ "x": 19875.0,
+ "y": 26669.5
+ }
+ ],
+ "389": [
+ {
+ "x": 19875.0,
+ "y": 27454.0
+ }
+ ],
+ "390": [
+ {
+ "x": 19875.0,
+ "y": 27954.0
+ }
+ ],
+ "391": [
+ {
+ "x": 19875.0,
+ "y": 28454.0
+ }
+ ],
+ "392": [
+ {
+ "x": 19875.0,
+ "y": 28954.0
+ }
+ ],
+ "393": [
+ {
+ "x": 19875.0,
+ "y": 29695.0
+ }
+ ],
+ "394": [
+ {
+ "x": 21070.0,
+ "y": 0.0
+ }
+ ],
+ "395": [
+ {
+ "x": 21070.0,
+ "y": 2240.0
+ }
+ ],
+ "396": [
+ {
+ "x": 21070.0,
+ "y": 4180.0
+ }
+ ],
+ "397": [
+ {
+ "x": 21070.0,
+ "y": 10145.0
+ }
+ ],
+ "398": [
+ {
+ "x": 21070.0,
+ "y": 16110.0
+ }
+ ],
+ "399": [
+ {
+ "x": 21070.0,
+ "y": 22075.0
+ }
+ ],
+ "400": [
+ {
+ "x": 21070.0,
+ "y": 25885.0
+ }
+ ],
+ "401": [
+ {
+ "x": 21070.0,
+ "y": 29695.0
+ }
+ ],
+ "402": [
+ {
+ "x": 22265.0,
+ "y": 0.0
+ }
+ ],
+ "403": [
+ {
+ "x": 22265.0,
+ "y": 1270.0
+ }
+ ],
+ "404": [
+ {
+ "x": 22265.0,
+ "y": 2240.0
+ }
+ ],
+ "405": [
+ {
+ "x": 22265.0,
+ "y": 3210.0
+ }
+ ],
+ "406": [
+ {
+ "x": 22265.0,
+ "y": 4180.0
+ }
+ ],
+ "407": [
+ {
+ "x": 22265.0,
+ "y": 4964.5
+ }
+ ],
+ "408": [
+ {
+ "x": 22265.0,
+ "y": 5749.0
+ }
+ ],
+ "409": [
+ {
+ "x": 22265.0,
+ "y": 6249.0
+ }
+ ],
+ "410": [
+ {
+ "x": 22265.0,
+ "y": 6749.0
+ }
+ ],
+ "411": [
+ {
+ "x": 22265.0,
+ "y": 7249.0
+ }
+ ],
+ "412": [
+ {
+ "x": 22265.0,
+ "y": 7904.0
+ }
+ ],
+ "413": [
+ {
+ "x": 22265.0,
+ "y": 8404.0
+ }
+ ],
+ "414": [
+ {
+ "x": 22265.0,
+ "y": 8904.0
+ }
+ ],
+ "415": [
+ {
+ "x": 22265.0,
+ "y": 9404.0
+ }
+ ],
+ "416": [
+ {
+ "x": 22265.0,
+ "y": 10145.0
+ }
+ ],
+ "417": [
+ {
+ "x": 22265.0,
+ "y": 10929.5
+ }
+ ],
+ "418": [
+ {
+ "x": 22265.0,
+ "y": 11714.0
+ }
+ ],
+ "419": [
+ {
+ "x": 22265.0,
+ "y": 12214.0
+ }
+ ],
+ "420": [
+ {
+ "x": 22265.0,
+ "y": 12714.0
+ }
+ ],
+ "421": [
+ {
+ "x": 22265.0,
+ "y": 13214.0
+ }
+ ],
+ "422": [
+ {
+ "x": 22265.0,
+ "y": 13869.0
+ }
+ ],
+ "423": [
+ {
+ "x": 22265.0,
+ "y": 14369.0
+ }
+ ],
+ "424": [
+ {
+ "x": 22265.0,
+ "y": 14869.0
+ }
+ ],
+ "425": [
+ {
+ "x": 22265.0,
+ "y": 15369.0
+ }
+ ],
+ "426": [
+ {
+ "x": 22265.0,
+ "y": 16110.0
+ }
+ ],
+ "427": [
+ {
+ "x": 22265.0,
+ "y": 16894.5
+ }
+ ],
+ "428": [
+ {
+ "x": 22265.0,
+ "y": 17679.0
+ }
+ ],
+ "429": [
+ {
+ "x": 22265.0,
+ "y": 18179.0
+ }
+ ],
+ "430": [
+ {
+ "x": 22265.0,
+ "y": 18679.0
+ }
+ ],
+ "431": [
+ {
+ "x": 22265.0,
+ "y": 19179.0
+ }
+ ],
+ "432": [
+ {
+ "x": 22265.0,
+ "y": 19834.0
+ }
+ ],
+ "433": [
+ {
+ "x": 22265.0,
+ "y": 20334.0
+ }
+ ],
+ "434": [
+ {
+ "x": 22265.0,
+ "y": 20834.0
+ }
+ ],
+ "435": [
+ {
+ "x": 22265.0,
+ "y": 21334.0
+ }
+ ],
+ "436": [
+ {
+ "x": 22265.0,
+ "y": 22075.0
+ }
+ ],
+ "437": [
+ {
+ "x": 22265.0,
+ "y": 22859.5
+ }
+ ],
+ "438": [
+ {
+ "x": 22265.0,
+ "y": 23644.0
+ }
+ ],
+ "439": [
+ {
+ "x": 22265.0,
+ "y": 24144.0
+ }
+ ],
+ "440": [
+ {
+ "x": 22265.0,
+ "y": 24644.0
+ }
+ ],
+ "441": [
+ {
+ "x": 22265.0,
+ "y": 25144.0
+ }
+ ],
+ "442": [
+ {
+ "x": 22265.0,
+ "y": 25885.0
+ }
+ ],
+ "443": [
+ {
+ "x": 22265.0,
+ "y": 26669.5
+ }
+ ],
+ "444": [
+ {
+ "x": 22265.0,
+ "y": 27454.0
+ }
+ ],
+ "445": [
+ {
+ "x": 22265.0,
+ "y": 27954.0
+ }
+ ],
+ "446": [
+ {
+ "x": 22265.0,
+ "y": 28454.0
+ }
+ ],
+ "447": [
+ {
+ "x": 22265.0,
+ "y": 28954.0
+ }
+ ],
+ "448": [
+ {
+ "x": 22265.0,
+ "y": 29695.0
+ }
+ ],
+ "449": [
+ {
+ "x": 23320.0,
+ "y": 0.0
+ }
+ ],
+ "450": [
+ {
+ "x": 23320.0,
+ "y": 2240.0
+ }
+ ],
+ "451": [
+ {
+ "x": 23320.0,
+ "y": 4180.0
+ }
+ ],
+ "452": [
+ {
+ "x": 23320.0,
+ "y": 10145.0
+ }
+ ],
+ "453": [
+ {
+ "x": 23320.0,
+ "y": 16110.0
+ }
+ ],
+ "454": [
+ {
+ "x": 23320.0,
+ "y": 22075.0
+ }
+ ],
+ "455": [
+ {
+ "x": 23320.0,
+ "y": 25885.0
+ }
+ ],
+ "456": [
+ {
+ "x": 23320.0,
+ "y": 29695.0
+ }
+ ],
+ "457": [
+ {
+ "x": 24375.0,
+ "y": 0.0
+ }
+ ],
+ "458": [
+ {
+ "x": 24375.0,
+ "y": 2240.0
+ }
+ ],
+ "459": [
+ {
+ "x": 24375.0,
+ "y": 4180.0
+ }
+ ],
+ "460": [
+ {
+ "x": 24375.0,
+ "y": 4980.0
+ }
+ ],
+ "461": [
+ {
+ "x": 24375.0,
+ "y": 6085.0
+ }
+ ],
+ "462": [
+ {
+ "x": 24375.0,
+ "y": 7162.5
+ }
+ ],
+ "463": [
+ {
+ "x": 24375.0,
+ "y": 8240.0
+ }
+ ],
+ "464": [
+ {
+ "x": 24375.0,
+ "y": 9345.0
+ }
+ ],
+ "465": [
+ {
+ "x": 24375.0,
+ "y": 10145.0
+ }
+ ],
+ "466": [
+ {
+ "x": 24375.0,
+ "y": 10945.0
+ }
+ ],
+ "467": [
+ {
+ "x": 24375.0,
+ "y": 12050.0
+ }
+ ],
+ "468": [
+ {
+ "x": 24375.0,
+ "y": 16110.0
+ }
+ ],
+ "469": [
+ {
+ "x": 24375.0,
+ "y": 16910.0
+ }
+ ],
+ "470": [
+ {
+ "x": 24375.0,
+ "y": 18015.0
+ }
+ ],
+ "471": [
+ {
+ "x": 24375.0,
+ "y": 19092.5
+ }
+ ],
+ "472": [
+ {
+ "x": 24375.0,
+ "y": 20170.0
+ }
+ ],
+ "473": [
+ {
+ "x": 24375.0,
+ "y": 21275.0
+ }
+ ],
+ "474": [
+ {
+ "x": 24375.0,
+ "y": 22075.0
+ }
+ ],
+ "475": [
+ {
+ "x": 24375.0,
+ "y": 22875.0
+ }
+ ],
+ "476": [
+ {
+ "x": 24375.0,
+ "y": 23980.0
+ }
+ ],
+ "477": [
+ {
+ "x": 24375.0,
+ "y": 25085.0
+ }
+ ],
+ "478": [
+ {
+ "x": 24375.0,
+ "y": 25885.0
+ }
+ ],
+ "479": [
+ {
+ "x": 24375.0,
+ "y": 26685.0
+ }
+ ],
+ "480": [
+ {
+ "x": 24375.0,
+ "y": 27790.0
+ }
+ ],
+ "481": [
+ {
+ "x": 24375.0,
+ "y": 28895.0
+ }
+ ],
+ "482": [
+ {
+ "x": 24375.0,
+ "y": 29695.0
+ }
+ ],
+ "483": [
+ {
+ "x": 25430.0,
+ "y": 0.0
+ }
+ ],
+ "484": [
+ {
+ "x": 25430.0,
+ "y": 2240.0
+ }
+ ],
+ "485": [
+ {
+ "x": 25430.0,
+ "y": 4180.0
+ }
+ ],
+ "486": [
+ {
+ "x": 25430.0,
+ "y": 10145.0
+ }
+ ],
+ "487": [
+ {
+ "x": 25430.0,
+ "y": 16110.0
+ }
+ ],
+ "488": [
+ {
+ "x": 25430.0,
+ "y": 22075.0
+ }
+ ],
+ "489": [
+ {
+ "x": 25430.0,
+ "y": 25885.0
+ }
+ ],
+ "490": [
+ {
+ "x": 25430.0,
+ "y": 29695.0
+ }
+ ],
+ "491": [
+ {
+ "x": 26485.0,
+ "y": 0.0
+ }
+ ],
+ "492": [
+ {
+ "x": 26485.0,
+ "y": 1270.0
+ }
+ ],
+ "493": [
+ {
+ "x": 26485.0,
+ "y": 2240.0
+ }
+ ],
+ "494": [
+ {
+ "x": 26485.0,
+ "y": 3210.0
+ }
+ ],
+ "495": [
+ {
+ "x": 26485.0,
+ "y": 4180.0
+ }
+ ],
+ "496": [
+ {
+ "x": 26485.0,
+ "y": 4964.5
+ }
+ ],
+ "497": [
+ {
+ "x": 26485.0,
+ "y": 5749.0
+ }
+ ],
+ "498": [
+ {
+ "x": 26485.0,
+ "y": 6249.0
+ }
+ ],
+ "499": [
+ {
+ "x": 26485.0,
+ "y": 6749.0
+ }
+ ],
+ "500": [
+ {
+ "x": 26485.0,
+ "y": 7249.0
+ }
+ ],
+ "501": [
+ {
+ "x": 26485.0,
+ "y": 7904.0
+ }
+ ],
+ "502": [
+ {
+ "x": 26485.0,
+ "y": 8404.0
+ }
+ ],
+ "503": [
+ {
+ "x": 26485.0,
+ "y": 8904.0
+ }
+ ],
+ "504": [
+ {
+ "x": 26485.0,
+ "y": 9404.0
+ }
+ ],
+ "505": [
+ {
+ "x": 26485.0,
+ "y": 10145.0
+ }
+ ],
+ "506": [
+ {
+ "x": 26485.0,
+ "y": 10929.5
+ }
+ ],
+ "507": [
+ {
+ "x": 26485.0,
+ "y": 11714.0
+ }
+ ],
+ "508": [
+ {
+ "x": 26485.0,
+ "y": 12214.0
+ }
+ ],
+ "509": [
+ {
+ "x": 26485.0,
+ "y": 12714.0
+ }
+ ],
+ "510": [
+ {
+ "x": 26485.0,
+ "y": 13214.0
+ }
+ ],
+ "511": [
+ {
+ "x": 26485.0,
+ "y": 13869.0
+ }
+ ],
+ "512": [
+ {
+ "x": 26485.0,
+ "y": 14369.0
+ }
+ ],
+ "513": [
+ {
+ "x": 26485.0,
+ "y": 14869.0
+ }
+ ],
+ "514": [
+ {
+ "x": 26485.0,
+ "y": 15369.0
+ }
+ ],
+ "515": [
+ {
+ "x": 26485.0,
+ "y": 16110.0
+ }
+ ],
+ "516": [
+ {
+ "x": 26485.0,
+ "y": 16894.5
+ }
+ ],
+ "517": [
+ {
+ "x": 26485.0,
+ "y": 17679.0
+ }
+ ],
+ "518": [
+ {
+ "x": 26485.0,
+ "y": 18179.0
+ }
+ ],
+ "519": [
+ {
+ "x": 26485.0,
+ "y": 18679.0
+ }
+ ],
+ "520": [
+ {
+ "x": 26485.0,
+ "y": 19179.0
+ }
+ ],
+ "521": [
+ {
+ "x": 26485.0,
+ "y": 19834.0
+ }
+ ],
+ "522": [
+ {
+ "x": 26485.0,
+ "y": 20334.0
+ }
+ ],
+ "523": [
+ {
+ "x": 26485.0,
+ "y": 20834.0
+ }
+ ],
+ "524": [
+ {
+ "x": 26485.0,
+ "y": 21334.0
+ }
+ ],
+ "525": [
+ {
+ "x": 26485.0,
+ "y": 22075.0
+ }
+ ],
+ "526": [
+ {
+ "x": 26485.0,
+ "y": 22859.5
+ }
+ ],
+ "527": [
+ {
+ "x": 26485.0,
+ "y": 23644.0
+ }
+ ],
+ "528": [
+ {
+ "x": 26485.0,
+ "y": 24144.0
+ }
+ ],
+ "529": [
+ {
+ "x": 26485.0,
+ "y": 24644.0
+ }
+ ],
+ "530": [
+ {
+ "x": 26485.0,
+ "y": 25144.0
+ }
+ ],
+ "531": [
+ {
+ "x": 26485.0,
+ "y": 25885.0
+ }
+ ],
+ "532": [
+ {
+ "x": 26485.0,
+ "y": 26669.5
+ }
+ ],
+ "533": [
+ {
+ "x": 26485.0,
+ "y": 27454.0
+ }
+ ],
+ "534": [
+ {
+ "x": 26485.0,
+ "y": 27954.0
+ }
+ ],
+ "535": [
+ {
+ "x": 26485.0,
+ "y": 28454.0
+ }
+ ],
+ "536": [
+ {
+ "x": 26485.0,
+ "y": 28954.0
+ }
+ ],
+ "537": [
+ {
+ "x": 26485.0,
+ "y": 29695.0
+ }
+ ],
+ "538": [
+ {
+ "x": 27680.0,
+ "y": 2240.0
+ }
+ ],
+ "539": [
+ {
+ "x": 27680.0,
+ "y": 4180.0
+ }
+ ],
+ "540": [
+ {
+ "x": 27680.0,
+ "y": 10145.0
+ }
+ ],
+ "541": [
+ {
+ "x": 27680.0,
+ "y": 16110.0
+ }
+ ],
+ "542": [
+ {
+ "x": 27680.0,
+ "y": 22075.0
+ }
+ ],
+ "543": [
+ {
+ "x": 27680.0,
+ "y": 25885.0
+ }
+ ],
+ "544": [
+ {
+ "x": 27680.0,
+ "y": 29695.0
+ }
+ ],
+ "546": [
+ {
+ "x": 28875.0,
+ "y": 300.0
+ }
+ ],
+ "547": [
+ {
+ "x": 28875.0,
+ "y": 1270.0
+ }
+ ],
+ "548": [
+ {
+ "x": 28875.0,
+ "y": 2240.0
+ }
+ ],
+ "549": [
+ {
+ "x": 28875.0,
+ "y": 3210.0
+ }
+ ],
+ "550": [
+ {
+ "x": 28875.0,
+ "y": 4180.0
+ }
+ ],
+ "551": [
+ {
+ "x": 28875.0,
+ "y": 4964.5
+ }
+ ],
+ "552": [
+ {
+ "x": 28875.0,
+ "y": 5749.0
+ }
+ ],
+ "553": [
+ {
+ "x": 28875.0,
+ "y": 6249.0
+ }
+ ],
+ "554": [
+ {
+ "x": 28875.0,
+ "y": 6749.0
+ }
+ ],
+ "555": [
+ {
+ "x": 28875.0,
+ "y": 7249.0
+ }
+ ],
+ "556": [
+ {
+ "x": 28875.0,
+ "y": 7904.0
+ }
+ ],
+ "557": [
+ {
+ "x": 28875.0,
+ "y": 8404.0
+ }
+ ],
+ "558": [
+ {
+ "x": 28875.0,
+ "y": 8904.0
+ }
+ ],
+ "559": [
+ {
+ "x": 28875.0,
+ "y": 9404.0
+ }
+ ],
+ "560": [
+ {
+ "x": 28875.0,
+ "y": 10145.0
+ }
+ ],
+ "561": [
+ {
+ "x": 28875.0,
+ "y": 10929.5
+ }
+ ],
+ "562": [
+ {
+ "x": 28875.0,
+ "y": 11714.0
+ }
+ ],
+ "563": [
+ {
+ "x": 28875.0,
+ "y": 12214.0
+ }
+ ],
+ "564": [
+ {
+ "x": 28875.0,
+ "y": 12714.0
+ }
+ ],
+ "565": [
+ {
+ "x": 28875.0,
+ "y": 13214.0
+ }
+ ],
+ "566": [
+ {
+ "x": 28875.0,
+ "y": 13869.0
+ }
+ ],
+ "567": [
+ {
+ "x": 28875.0,
+ "y": 14369.0
+ }
+ ],
+ "568": [
+ {
+ "x": 28875.0,
+ "y": 14869.0
+ }
+ ],
+ "569": [
+ {
+ "x": 28875.0,
+ "y": 15369.0
+ }
+ ],
+ "570": [
+ {
+ "x": 28875.0,
+ "y": 16110.0
+ }
+ ],
+ "571": [
+ {
+ "x": 28875.0,
+ "y": 16894.5
+ }
+ ],
+ "572": [
+ {
+ "x": 28875.0,
+ "y": 17679.0
+ }
+ ],
+ "573": [
+ {
+ "x": 28875.0,
+ "y": 18179.0
+ }
+ ],
+ "574": [
+ {
+ "x": 28875.0,
+ "y": 18679.0
+ }
+ ],
+ "575": [
+ {
+ "x": 28875.0,
+ "y": 19179.0
+ }
+ ],
+ "576": [
+ {
+ "x": 28875.0,
+ "y": 19834.0
+ }
+ ],
+ "577": [
+ {
+ "x": 28875.0,
+ "y": 20334.0
+ }
+ ],
+ "578": [
+ {
+ "x": 28875.0,
+ "y": 20834.0
+ }
+ ],
+ "579": [
+ {
+ "x": 28875.0,
+ "y": 21334.0
+ }
+ ],
+ "580": [
+ {
+ "x": 28875.0,
+ "y": 22075.0
+ }
+ ],
+ "581": [
+ {
+ "x": 28875.0,
+ "y": 22859.5
+ }
+ ],
+ "582": [
+ {
+ "x": 28875.0,
+ "y": 23644.0
+ }
+ ],
+ "583": [
+ {
+ "x": 28875.0,
+ "y": 24144.0
+ }
+ ],
+ "584": [
+ {
+ "x": 28875.0,
+ "y": 24644.0
+ }
+ ],
+ "585": [
+ {
+ "x": 28875.0,
+ "y": 25144.0
+ }
+ ],
+ "586": [
+ {
+ "x": 28875.0,
+ "y": 25885.0
+ }
+ ],
+ "587": [
+ {
+ "x": 28875.0,
+ "y": 26669.5
+ }
+ ],
+ "588": [
+ {
+ "x": 28875.0,
+ "y": 27454.0
+ }
+ ],
+ "589": [
+ {
+ "x": 28875.0,
+ "y": 27954.0
+ }
+ ],
+ "590": [
+ {
+ "x": 28875.0,
+ "y": 28454.0
+ }
+ ],
+ "591": [
+ {
+ "x": 28875.0,
+ "y": 28954.0
+ }
+ ],
+ "592": [
+ {
+ "x": 28875.0,
+ "y": 29695.0
+ }
+ ],
+ "593": [
+ {
+ "x": 30070.0,
+ "y": 2240.0
+ }
+ ],
+ "594": [
+ {
+ "x": 30070.0,
+ "y": 4180.0
+ }
+ ],
+ "595": [
+ {
+ "x": 30070.0,
+ "y": 10145.0
+ }
+ ],
+ "596": [
+ {
+ "x": 30070.0,
+ "y": 16110.0
+ }
+ ],
+ "597": [
+ {
+ "x": 30070.0,
+ "y": 22075.0
+ }
+ ],
+ "598": [
+ {
+ "x": 30070.0,
+ "y": 25885.0
+ }
+ ],
+ "599": [
+ {
+ "x": 30070.0,
+ "y": 29695.0
+ }
+ ],
+ "601": [
+ {
+ "x": 31265.0,
+ "y": 300.0
+ }
+ ],
+ "602": [
+ {
+ "x": 31265.0,
+ "y": 1270.0
+ }
+ ],
+ "603": [
+ {
+ "x": 31265.0,
+ "y": 2240.0
+ }
+ ],
+ "604": [
+ {
+ "x": 31265.0,
+ "y": 3210.0
+ }
+ ],
+ "605": [
+ {
+ "x": 31265.0,
+ "y": 4180.0
+ }
+ ],
+ "606": [
+ {
+ "x": 31265.0,
+ "y": 4964.5
+ }
+ ],
+ "607": [
+ {
+ "x": 31265.0,
+ "y": 5749.0
+ }
+ ],
+ "608": [
+ {
+ "x": 31265.0,
+ "y": 6249.0
+ }
+ ],
+ "609": [
+ {
+ "x": 31265.0,
+ "y": 6749.0
+ }
+ ],
+ "610": [
+ {
+ "x": 31265.0,
+ "y": 7249.0
+ }
+ ],
+ "611": [
+ {
+ "x": 31265.0,
+ "y": 7904.0
+ }
+ ],
+ "612": [
+ {
+ "x": 31265.0,
+ "y": 8404.0
+ }
+ ],
+ "613": [
+ {
+ "x": 31265.0,
+ "y": 8904.0
+ }
+ ],
+ "614": [
+ {
+ "x": 31265.0,
+ "y": 9404.0
+ }
+ ],
+ "615": [
+ {
+ "x": 31265.0,
+ "y": 10145.0
+ }
+ ],
+ "616": [
+ {
+ "x": 31265.0,
+ "y": 10929.5
+ }
+ ],
+ "617": [
+ {
+ "x": 31265.0,
+ "y": 11714.0
+ }
+ ],
+ "618": [
+ {
+ "x": 31265.0,
+ "y": 12214.0
+ }
+ ],
+ "619": [
+ {
+ "x": 31265.0,
+ "y": 12714.0
+ }
+ ],
+ "620": [
+ {
+ "x": 31265.0,
+ "y": 13214.0
+ }
+ ],
+ "621": [
+ {
+ "x": 31265.0,
+ "y": 13869.0
+ }
+ ],
+ "622": [
+ {
+ "x": 31265.0,
+ "y": 14369.0
+ }
+ ],
+ "623": [
+ {
+ "x": 31265.0,
+ "y": 14869.0
+ }
+ ],
+ "624": [
+ {
+ "x": 31265.0,
+ "y": 15369.0
+ }
+ ],
+ "625": [
+ {
+ "x": 31265.0,
+ "y": 16110.0
+ }
+ ],
+ "626": [
+ {
+ "x": 31265.0,
+ "y": 16894.5
+ }
+ ],
+ "627": [
+ {
+ "x": 31265.0,
+ "y": 17679.0
+ }
+ ],
+ "628": [
+ {
+ "x": 31265.0,
+ "y": 18179.0
+ }
+ ],
+ "629": [
+ {
+ "x": 31265.0,
+ "y": 18679.0
+ }
+ ],
+ "630": [
+ {
+ "x": 31265.0,
+ "y": 19179.0
+ }
+ ],
+ "631": [
+ {
+ "x": 31265.0,
+ "y": 19834.0
+ }
+ ],
+ "632": [
+ {
+ "x": 31265.0,
+ "y": 20334.0
+ }
+ ],
+ "633": [
+ {
+ "x": 31265.0,
+ "y": 20834.0
+ }
+ ],
+ "634": [
+ {
+ "x": 31265.0,
+ "y": 21334.0
+ }
+ ],
+ "635": [
+ {
+ "x": 31265.0,
+ "y": 22075.0
+ }
+ ],
+ "636": [
+ {
+ "x": 31265.0,
+ "y": 22859.5
+ }
+ ],
+ "637": [
+ {
+ "x": 31265.0,
+ "y": 23644.0
+ }
+ ],
+ "638": [
+ {
+ "x": 31265.0,
+ "y": 24144.0
+ }
+ ],
+ "639": [
+ {
+ "x": 31265.0,
+ "y": 24644.0
+ }
+ ],
+ "640": [
+ {
+ "x": 31265.0,
+ "y": 25144.0
+ }
+ ],
+ "641": [
+ {
+ "x": 31265.0,
+ "y": 25885.0
+ }
+ ],
+ "642": [
+ {
+ "x": 31265.0,
+ "y": 26669.5
+ }
+ ],
+ "643": [
+ {
+ "x": 31265.0,
+ "y": 27454.0
+ }
+ ],
+ "644": [
+ {
+ "x": 31265.0,
+ "y": 27954.0
+ }
+ ],
+ "645": [
+ {
+ "x": 31265.0,
+ "y": 28454.0
+ }
+ ],
+ "646": [
+ {
+ "x": 31265.0,
+ "y": 28954.0
+ }
+ ],
+ "647": [
+ {
+ "x": 31265.0,
+ "y": 29695.0
+ }
+ ],
+ "648": [
+ {
+ "x": 32320.0,
+ "y": 2240.0
+ }
+ ],
+ "649": [
+ {
+ "x": 32320.0,
+ "y": 4180.0
+ }
+ ],
+ "650": [
+ {
+ "x": 32320.0,
+ "y": 10145.0
+ }
+ ],
+ "651": [
+ {
+ "x": 32320.0,
+ "y": 16110.0
+ }
+ ],
+ "652": [
+ {
+ "x": 32320.0,
+ "y": 22075.0
+ }
+ ],
+ "653": [
+ {
+ "x": 32320.0,
+ "y": 25885.0
+ }
+ ],
+ "654": [
+ {
+ "x": 32320.0,
+ "y": 29695.0
+ }
+ ],
+ "655": [
+ {
+ "x": 33375.0,
+ "y": 2240.0
+ }
+ ],
+ "656": [
+ {
+ "x": 33375.0,
+ "y": 4180.0
+ }
+ ],
+ "657": [
+ {
+ "x": 33375.0,
+ "y": 4980.0
+ }
+ ],
+ "658": [
+ {
+ "x": 33375.0,
+ "y": 6085.0
+ }
+ ],
+ "659": [
+ {
+ "x": 33375.0,
+ "y": 7162.5
+ }
+ ],
+ "660": [
+ {
+ "x": 33375.0,
+ "y": 8240.0
+ }
+ ],
+ "661": [
+ {
+ "x": 33375.0,
+ "y": 9345.0
+ }
+ ],
+ "662": [
+ {
+ "x": 33375.0,
+ "y": 10145.0
+ }
+ ],
+ "663": [
+ {
+ "x": 33375.0,
+ "y": 10945.0
+ }
+ ],
+ "664": [
+ {
+ "x": 33375.0,
+ "y": 12050.0
+ }
+ ],
+ "665": [
+ {
+ "x": 33375.0,
+ "y": 16110.0
+ }
+ ],
+ "666": [
+ {
+ "x": 33375.0,
+ "y": 16910.0
+ }
+ ],
+ "667": [
+ {
+ "x": 33375.0,
+ "y": 18015.0
+ }
+ ],
+ "668": [
+ {
+ "x": 33375.0,
+ "y": 19092.5
+ }
+ ],
+ "669": [
+ {
+ "x": 33375.0,
+ "y": 20170.0
+ }
+ ],
+ "670": [
+ {
+ "x": 33375.0,
+ "y": 21275.0
+ }
+ ],
+ "671": [
+ {
+ "x": 33375.0,
+ "y": 22075.0
+ }
+ ],
+ "672": [
+ {
+ "x": 33375.0,
+ "y": 22875.0
+ }
+ ],
+ "673": [
+ {
+ "x": 33375.0,
+ "y": 23980.0
+ }
+ ],
+ "674": [
+ {
+ "x": 33375.0,
+ "y": 25085.0
+ }
+ ],
+ "675": [
+ {
+ "x": 33375.0,
+ "y": 25885.0
+ }
+ ],
+ "676": [
+ {
+ "x": 33375.0,
+ "y": 26685.0
+ }
+ ],
+ "677": [
+ {
+ "x": 33375.0,
+ "y": 27790.0
+ }
+ ],
+ "678": [
+ {
+ "x": 33375.0,
+ "y": 28895.0
+ }
+ ],
+ "679": [
+ {
+ "x": 33375.0,
+ "y": 29695.0
+ }
+ ],
+ "680": [
+ {
+ "x": 34430.0,
+ "y": 2240.0
+ }
+ ],
+ "681": [
+ {
+ "x": 34430.0,
+ "y": 4180.0
+ }
+ ],
+ "682": [
+ {
+ "x": 34430.0,
+ "y": 10145.0
+ }
+ ],
+ "683": [
+ {
+ "x": 34430.0,
+ "y": 16110.0
+ }
+ ],
+ "684": [
+ {
+ "x": 34430.0,
+ "y": 22075.0
+ }
+ ],
+ "685": [
+ {
+ "x": 34430.0,
+ "y": 25885.0
+ }
+ ],
+ "686": [
+ {
+ "x": 34430.0,
+ "y": 29695.0
+ }
+ ],
+ "687": [
+ {
+ "x": 35485.0,
+ "y": 0.0
+ }
+ ],
+ "688": [
+ {
+ "x": 35485.0,
+ "y": 1270.0
+ }
+ ],
+ "689": [
+ {
+ "x": 35485.0,
+ "y": 2240.0
+ }
+ ],
+ "690": [
+ {
+ "x": 35485.0,
+ "y": 3210.0
+ }
+ ],
+ "691": [
+ {
+ "x": 35485.0,
+ "y": 4180.0
+ }
+ ],
+ "692": [
+ {
+ "x": 35485.0,
+ "y": 4964.5
+ }
+ ],
+ "693": [
+ {
+ "x": 35485.0,
+ "y": 5749.0
+ }
+ ],
+ "694": [
+ {
+ "x": 35485.0,
+ "y": 6249.0
+ }
+ ],
+ "695": [
+ {
+ "x": 35485.0,
+ "y": 6749.0
+ }
+ ],
+ "696": [
+ {
+ "x": 35485.0,
+ "y": 7249.0
+ }
+ ],
+ "697": [
+ {
+ "x": 35485.0,
+ "y": 7904.0
+ }
+ ],
+ "698": [
+ {
+ "x": 35485.0,
+ "y": 8404.0
+ }
+ ],
+ "699": [
+ {
+ "x": 35485.0,
+ "y": 8904.0
+ }
+ ],
+ "700": [
+ {
+ "x": 35485.0,
+ "y": 9404.0
+ }
+ ],
+ "701": [
+ {
+ "x": 35485.0,
+ "y": 10145.0
+ }
+ ],
+ "702": [
+ {
+ "x": 35485.0,
+ "y": 10929.5
+ }
+ ],
+ "703": [
+ {
+ "x": 35485.0,
+ "y": 11714.0
+ }
+ ],
+ "704": [
+ {
+ "x": 35485.0,
+ "y": 12214.0
+ }
+ ],
+ "705": [
+ {
+ "x": 35485.0,
+ "y": 12714.0
+ }
+ ],
+ "706": [
+ {
+ "x": 35485.0,
+ "y": 13214.0
+ }
+ ],
+ "707": [
+ {
+ "x": 35485.0,
+ "y": 13869.0
+ }
+ ],
+ "708": [
+ {
+ "x": 35485.0,
+ "y": 14369.0
+ }
+ ],
+ "709": [
+ {
+ "x": 35485.0,
+ "y": 14869.0
+ }
+ ],
+ "710": [
+ {
+ "x": 35485.0,
+ "y": 15369.0
+ }
+ ],
+ "711": [
+ {
+ "x": 35485.0,
+ "y": 16110.0
+ }
+ ],
+ "712": [
+ {
+ "x": 35485.0,
+ "y": 16894.5
+ }
+ ],
+ "713": [
+ {
+ "x": 35485.0,
+ "y": 17679.0
+ }
+ ],
+ "714": [
+ {
+ "x": 35485.0,
+ "y": 18179.0
+ }
+ ],
+ "715": [
+ {
+ "x": 35485.0,
+ "y": 18679.0
+ }
+ ],
+ "716": [
+ {
+ "x": 35485.0,
+ "y": 19179.0
+ }
+ ],
+ "717": [
+ {
+ "x": 35485.0,
+ "y": 19834.0
+ }
+ ],
+ "718": [
+ {
+ "x": 35485.0,
+ "y": 20334.0
+ }
+ ],
+ "719": [
+ {
+ "x": 35485.0,
+ "y": 20834.0
+ }
+ ],
+ "720": [
+ {
+ "x": 35485.0,
+ "y": 21334.0
+ }
+ ],
+ "721": [
+ {
+ "x": 35485.0,
+ "y": 22075.0
+ }
+ ],
+ "722": [
+ {
+ "x": 35485.0,
+ "y": 22859.5
+ }
+ ],
+ "723": [
+ {
+ "x": 35485.0,
+ "y": 23644.0
+ }
+ ],
+ "724": [
+ {
+ "x": 35485.0,
+ "y": 24144.0
+ }
+ ],
+ "725": [
+ {
+ "x": 35485.0,
+ "y": 24644.0
+ }
+ ],
+ "726": [
+ {
+ "x": 35485.0,
+ "y": 25144.0
+ }
+ ],
+ "727": [
+ {
+ "x": 35485.0,
+ "y": 25885.0
+ }
+ ],
+ "728": [
+ {
+ "x": 35485.0,
+ "y": 26669.5
+ }
+ ],
+ "729": [
+ {
+ "x": 35485.0,
+ "y": 27454.0
+ }
+ ],
+ "730": [
+ {
+ "x": 35485.0,
+ "y": 27954.0
+ }
+ ],
+ "731": [
+ {
+ "x": 35485.0,
+ "y": 28454.0
+ }
+ ],
+ "732": [
+ {
+ "x": 35485.0,
+ "y": 28954.0
+ }
+ ],
+ "733": [
+ {
+ "x": 35485.0,
+ "y": 29695.0
+ }
+ ],
+ "734": [
+ {
+ "x": 36680.0,
+ "y": 0.0
+ }
+ ],
+ "735": [
+ {
+ "x": 36680.0,
+ "y": 2240.0
+ }
+ ],
+ "736": [
+ {
+ "x": 36680.0,
+ "y": 4180.0
+ }
+ ],
+ "737": [
+ {
+ "x": 36680.0,
+ "y": 10145.0
+ }
+ ],
+ "738": [
+ {
+ "x": 36680.0,
+ "y": 16110.0
+ }
+ ],
+ "739": [
+ {
+ "x": 36680.0,
+ "y": 22075.0
+ }
+ ],
+ "740": [
+ {
+ "x": 36680.0,
+ "y": 25885.0
+ }
+ ],
+ "741": [
+ {
+ "x": 36680.0,
+ "y": 29695.0
+ }
+ ],
+ "742": [
+ {
+ "x": 37875.0,
+ "y": 0.0
+ }
+ ],
+ "743": [
+ {
+ "x": 37875.0,
+ "y": 1270.0
+ }
+ ],
+ "744": [
+ {
+ "x": 37875.0,
+ "y": 2240.0
+ }
+ ],
+ "745": [
+ {
+ "x": 37875.0,
+ "y": 3210.0
+ }
+ ],
+ "746": [
+ {
+ "x": 37875.0,
+ "y": 4180.0
+ }
+ ],
+ "747": [
+ {
+ "x": 37875.0,
+ "y": 4964.5
+ }
+ ],
+ "748": [
+ {
+ "x": 37875.0,
+ "y": 5749.0
+ }
+ ],
+ "749": [
+ {
+ "x": 37875.0,
+ "y": 6249.0
+ }
+ ],
+ "750": [
+ {
+ "x": 37875.0,
+ "y": 6749.0
+ }
+ ],
+ "751": [
+ {
+ "x": 37875.0,
+ "y": 7249.0
+ }
+ ],
+ "752": [
+ {
+ "x": 37875.0,
+ "y": 7904.0
+ }
+ ],
+ "753": [
+ {
+ "x": 37875.0,
+ "y": 8404.0
+ }
+ ],
+ "754": [
+ {
+ "x": 37875.0,
+ "y": 8904.0
+ }
+ ],
+ "755": [
+ {
+ "x": 37875.0,
+ "y": 9404.0
+ }
+ ],
+ "756": [
+ {
+ "x": 37875.0,
+ "y": 10145.0
+ }
+ ],
+ "757": [
+ {
+ "x": 37875.0,
+ "y": 10929.5
+ }
+ ],
+ "758": [
+ {
+ "x": 37875.0,
+ "y": 11714.0
+ }
+ ],
+ "759": [
+ {
+ "x": 37875.0,
+ "y": 12214.0
+ }
+ ],
+ "760": [
+ {
+ "x": 37875.0,
+ "y": 12714.0
+ }
+ ],
+ "761": [
+ {
+ "x": 37875.0,
+ "y": 13214.0
+ }
+ ],
+ "762": [
+ {
+ "x": 37875.0,
+ "y": 13869.0
+ }
+ ],
+ "763": [
+ {
+ "x": 37875.0,
+ "y": 14369.0
+ }
+ ],
+ "764": [
+ {
+ "x": 37875.0,
+ "y": 14869.0
+ }
+ ],
+ "765": [
+ {
+ "x": 37875.0,
+ "y": 15369.0
+ }
+ ],
+ "766": [
+ {
+ "x": 37875.0,
+ "y": 16110.0
+ }
+ ],
+ "767": [
+ {
+ "x": 37875.0,
+ "y": 16894.5
+ }
+ ],
+ "768": [
+ {
+ "x": 37875.0,
+ "y": 17679.0
+ }
+ ],
+ "769": [
+ {
+ "x": 37875.0,
+ "y": 18179.0
+ }
+ ],
+ "770": [
+ {
+ "x": 37875.0,
+ "y": 18679.0
+ }
+ ],
+ "771": [
+ {
+ "x": 37875.0,
+ "y": 19179.0
+ }
+ ],
+ "772": [
+ {
+ "x": 37875.0,
+ "y": 19834.0
+ }
+ ],
+ "773": [
+ {
+ "x": 37875.0,
+ "y": 20334.0
+ }
+ ],
+ "774": [
+ {
+ "x": 37875.0,
+ "y": 20834.0
+ }
+ ],
+ "775": [
+ {
+ "x": 37875.0,
+ "y": 21334.0
+ }
+ ],
+ "776": [
+ {
+ "x": 37875.0,
+ "y": 22075.0
+ }
+ ],
+ "777": [
+ {
+ "x": 37875.0,
+ "y": 22859.5
+ }
+ ],
+ "778": [
+ {
+ "x": 37875.0,
+ "y": 23644.0
+ }
+ ],
+ "779": [
+ {
+ "x": 37875.0,
+ "y": 24144.0
+ }
+ ],
+ "780": [
+ {
+ "x": 37875.0,
+ "y": 24644.0
+ }
+ ],
+ "781": [
+ {
+ "x": 37875.0,
+ "y": 25144.0
+ }
+ ],
+ "782": [
+ {
+ "x": 37875.0,
+ "y": 25885.0
+ }
+ ],
+ "783": [
+ {
+ "x": 37875.0,
+ "y": 26669.5
+ }
+ ],
+ "784": [
+ {
+ "x": 37875.0,
+ "y": 27454.0
+ }
+ ],
+ "785": [
+ {
+ "x": 37875.0,
+ "y": 27954.0
+ }
+ ],
+ "786": [
+ {
+ "x": 37875.0,
+ "y": 28454.0
+ }
+ ],
+ "787": [
+ {
+ "x": 37875.0,
+ "y": 28954.0
+ }
+ ],
+ "788": [
+ {
+ "x": 37875.0,
+ "y": 29695.0
+ }
+ ],
+ "789": [
+ {
+ "x": 39070.0,
+ "y": 0.0
+ }
+ ],
+ "790": [
+ {
+ "x": 39070.0,
+ "y": 2240.0
+ }
+ ],
+ "791": [
+ {
+ "x": 39070.0,
+ "y": 4180.0
+ }
+ ],
+ "792": [
+ {
+ "x": 39070.0,
+ "y": 10145.0
+ }
+ ],
+ "793": [
+ {
+ "x": 39070.0,
+ "y": 16110.0
+ }
+ ],
+ "794": [
+ {
+ "x": 39070.0,
+ "y": 22075.0
+ }
+ ],
+ "795": [
+ {
+ "x": 39070.0,
+ "y": 25885.0
+ }
+ ],
+ "796": [
+ {
+ "x": 39070.0,
+ "y": 29695.0
+ }
+ ],
+ "797": [
+ {
+ "x": 40265.0,
+ "y": 0.0
+ }
+ ],
+ "798": [
+ {
+ "x": 40265.0,
+ "y": 1270.0
+ }
+ ],
+ "799": [
+ {
+ "x": 40265.0,
+ "y": 2240.0
+ }
+ ],
+ "800": [
+ {
+ "x": 40265.0,
+ "y": 3210.0
+ }
+ ],
+ "801": [
+ {
+ "x": 40265.0,
+ "y": 4180.0
+ }
+ ],
+ "802": [
+ {
+ "x": 40265.0,
+ "y": 4964.5
+ }
+ ],
+ "803": [
+ {
+ "x": 40265.0,
+ "y": 5749.0
+ }
+ ],
+ "804": [
+ {
+ "x": 40265.0,
+ "y": 6249.0
+ }
+ ],
+ "805": [
+ {
+ "x": 40265.0,
+ "y": 6749.0
+ }
+ ],
+ "806": [
+ {
+ "x": 40265.0,
+ "y": 7249.0
+ }
+ ],
+ "807": [
+ {
+ "x": 40265.0,
+ "y": 7904.0
+ }
+ ],
+ "808": [
+ {
+ "x": 40265.0,
+ "y": 8404.0
+ }
+ ],
+ "809": [
+ {
+ "x": 40265.0,
+ "y": 8904.0
+ }
+ ],
+ "810": [
+ {
+ "x": 40265.0,
+ "y": 9404.0
+ }
+ ],
+ "811": [
+ {
+ "x": 40265.0,
+ "y": 10145.0
+ }
+ ],
+ "812": [
+ {
+ "x": 40265.0,
+ "y": 10929.5
+ }
+ ],
+ "813": [
+ {
+ "x": 40265.0,
+ "y": 11714.0
+ }
+ ],
+ "814": [
+ {
+ "x": 40265.0,
+ "y": 12214.0
+ }
+ ],
+ "815": [
+ {
+ "x": 40265.0,
+ "y": 12714.0
+ }
+ ],
+ "816": [
+ {
+ "x": 40265.0,
+ "y": 13214.0
+ }
+ ],
+ "817": [
+ {
+ "x": 40265.0,
+ "y": 13869.0
+ }
+ ],
+ "818": [
+ {
+ "x": 40265.0,
+ "y": 14369.0
+ }
+ ],
+ "819": [
+ {
+ "x": 40265.0,
+ "y": 14869.0
+ }
+ ],
+ "820": [
+ {
+ "x": 40265.0,
+ "y": 15369.0
+ }
+ ],
+ "821": [
+ {
+ "x": 40265.0,
+ "y": 16110.0
+ }
+ ],
+ "822": [
+ {
+ "x": 40265.0,
+ "y": 16894.5
+ }
+ ],
+ "823": [
+ {
+ "x": 40265.0,
+ "y": 17679.0
+ }
+ ],
+ "824": [
+ {
+ "x": 40265.0,
+ "y": 18179.0
+ }
+ ],
+ "825": [
+ {
+ "x": 40265.0,
+ "y": 18679.0
+ }
+ ],
+ "826": [
+ {
+ "x": 40265.0,
+ "y": 19179.0
+ }
+ ],
+ "827": [
+ {
+ "x": 40265.0,
+ "y": 19834.0
+ }
+ ],
+ "828": [
+ {
+ "x": 40265.0,
+ "y": 20334.0
+ }
+ ],
+ "829": [
+ {
+ "x": 40265.0,
+ "y": 20834.0
+ }
+ ],
+ "830": [
+ {
+ "x": 40265.0,
+ "y": 21334.0
+ }
+ ],
+ "831": [
+ {
+ "x": 40265.0,
+ "y": 22075.0
+ }
+ ],
+ "832": [
+ {
+ "x": 40265.0,
+ "y": 22859.5
+ }
+ ],
+ "833": [
+ {
+ "x": 40265.0,
+ "y": 23644.0
+ }
+ ],
+ "834": [
+ {
+ "x": 40265.0,
+ "y": 24144.0
+ }
+ ],
+ "835": [
+ {
+ "x": 40265.0,
+ "y": 24644.0
+ }
+ ],
+ "836": [
+ {
+ "x": 40265.0,
+ "y": 25144.0
+ }
+ ],
+ "837": [
+ {
+ "x": 40265.0,
+ "y": 25885.0
+ }
+ ],
+ "838": [
+ {
+ "x": 40265.0,
+ "y": 26669.5
+ }
+ ],
+ "839": [
+ {
+ "x": 40265.0,
+ "y": 27454.0
+ }
+ ],
+ "840": [
+ {
+ "x": 40265.0,
+ "y": 27954.0
+ }
+ ],
+ "841": [
+ {
+ "x": 40265.0,
+ "y": 28454.0
+ }
+ ],
+ "842": [
+ {
+ "x": 40265.0,
+ "y": 28954.0
+ }
+ ],
+ "843": [
+ {
+ "x": 40265.0,
+ "y": 29695.0
+ }
+ ],
+ "844": [
+ {
+ "x": 41320.0,
+ "y": 0.0
+ }
+ ],
+ "845": [
+ {
+ "x": 41320.0,
+ "y": 2240.0
+ }
+ ],
+ "846": [
+ {
+ "x": 41320.0,
+ "y": 4180.0
+ }
+ ],
+ "847": [
+ {
+ "x": 41320.0,
+ "y": 10145.0
+ }
+ ],
+ "848": [
+ {
+ "x": 41320.0,
+ "y": 16110.0
+ }
+ ],
+ "849": [
+ {
+ "x": 41320.0,
+ "y": 22075.0
+ }
+ ],
+ "850": [
+ {
+ "x": 41320.0,
+ "y": 25885.0
+ }
+ ],
+ "851": [
+ {
+ "x": 41320.0,
+ "y": 29695.0
+ }
+ ],
+ "852": [
+ {
+ "x": 42375.0,
+ "y": 0.0
+ }
+ ],
+ "853": [
+ {
+ "x": 42375.0,
+ "y": 2240.0
+ }
+ ],
+ "854": [
+ {
+ "x": 42375.0,
+ "y": 4180.0
+ }
+ ],
+ "855": [
+ {
+ "x": 42375.0,
+ "y": 4980.0
+ }
+ ],
+ "856": [
+ {
+ "x": 42375.0,
+ "y": 6085.0
+ }
+ ],
+ "857": [
+ {
+ "x": 42375.0,
+ "y": 7162.5
+ }
+ ],
+ "858": [
+ {
+ "x": 42375.0,
+ "y": 8240.0
+ }
+ ],
+ "859": [
+ {
+ "x": 42375.0,
+ "y": 9345.0
+ }
+ ],
+ "860": [
+ {
+ "x": 42375.0,
+ "y": 10145.0
+ }
+ ],
+ "861": [
+ {
+ "x": 42375.0,
+ "y": 10945.0
+ }
+ ],
+ "862": [
+ {
+ "x": 42375.0,
+ "y": 12050.0
+ }
+ ],
+ "863": [
+ {
+ "x": 42375.0,
+ "y": 16110.0
+ }
+ ],
+ "864": [
+ {
+ "x": 42375.0,
+ "y": 16910.0
+ }
+ ],
+ "865": [
+ {
+ "x": 42375.0,
+ "y": 18015.0
+ }
+ ],
+ "866": [
+ {
+ "x": 42375.0,
+ "y": 19092.5
+ }
+ ],
+ "867": [
+ {
+ "x": 42375.0,
+ "y": 20170.0
+ }
+ ],
+ "868": [
+ {
+ "x": 42375.0,
+ "y": 21275.0
+ }
+ ],
+ "869": [
+ {
+ "x": 42375.0,
+ "y": 22075.0
+ }
+ ],
+ "870": [
+ {
+ "x": 42375.0,
+ "y": 22875.0
+ }
+ ],
+ "871": [
+ {
+ "x": 42375.0,
+ "y": 23980.0
+ }
+ ],
+ "872": [
+ {
+ "x": 42375.0,
+ "y": 25085.0
+ }
+ ],
+ "873": [
+ {
+ "x": 42375.0,
+ "y": 25885.0
+ }
+ ],
+ "874": [
+ {
+ "x": 42375.0,
+ "y": 26685.0
+ }
+ ],
+ "875": [
+ {
+ "x": 42375.0,
+ "y": 27790.0
+ }
+ ],
+ "876": [
+ {
+ "x": 42375.0,
+ "y": 28895.0
+ }
+ ],
+ "877": [
+ {
+ "x": 42375.0,
+ "y": 29695.0
+ }
+ ],
+ "878": [
+ {
+ "x": 43430.0,
+ "y": 0.0
+ }
+ ],
+ "879": [
+ {
+ "x": 43430.0,
+ "y": 2240.0
+ }
+ ],
+ "880": [
+ {
+ "x": 43430.0,
+ "y": 4180.0
+ }
+ ],
+ "881": [
+ {
+ "x": 43430.0,
+ "y": 10145.0
+ }
+ ],
+ "882": [
+ {
+ "x": 43430.0,
+ "y": 16110.0
+ }
+ ],
+ "883": [
+ {
+ "x": 43430.0,
+ "y": 22075.0
+ }
+ ],
+ "884": [
+ {
+ "x": 43430.0,
+ "y": 25885.0
+ }
+ ],
+ "885": [
+ {
+ "x": 43430.0,
+ "y": 29695.0
+ }
+ ],
+ "886": [
+ {
+ "x": 44485.0,
+ "y": 0.0
+ }
+ ],
+ "887": [
+ {
+ "x": 44485.0,
+ "y": 1270.0
+ }
+ ],
+ "888": [
+ {
+ "x": 44485.0,
+ "y": 2240.0
+ }
+ ],
+ "889": [
+ {
+ "x": 44485.0,
+ "y": 3210.0
+ }
+ ],
+ "890": [
+ {
+ "x": 44485.0,
+ "y": 4180.0
+ }
+ ],
+ "891": [
+ {
+ "x": 44485.0,
+ "y": 4964.5
+ }
+ ],
+ "892": [
+ {
+ "x": 44485.0,
+ "y": 5749.0
+ }
+ ],
+ "893": [
+ {
+ "x": 44485.0,
+ "y": 6249.0
+ }
+ ],
+ "894": [
+ {
+ "x": 44485.0,
+ "y": 6749.0
+ }
+ ],
+ "895": [
+ {
+ "x": 44485.0,
+ "y": 7249.0
+ }
+ ],
+ "896": [
+ {
+ "x": 44485.0,
+ "y": 7904.0
+ }
+ ],
+ "897": [
+ {
+ "x": 44485.0,
+ "y": 8404.0
+ }
+ ],
+ "898": [
+ {
+ "x": 44485.0,
+ "y": 8904.0
+ }
+ ],
+ "899": [
+ {
+ "x": 44485.0,
+ "y": 9404.0
+ }
+ ],
+ "900": [
+ {
+ "x": 44485.0,
+ "y": 10145.0
+ }
+ ],
+ "901": [
+ {
+ "x": 44485.0,
+ "y": 10929.5
+ }
+ ],
+ "902": [
+ {
+ "x": 44485.0,
+ "y": 11714.0
+ }
+ ],
+ "903": [
+ {
+ "x": 44485.0,
+ "y": 12214.0
+ }
+ ],
+ "904": [
+ {
+ "x": 44485.0,
+ "y": 12714.0
+ }
+ ],
+ "905": [
+ {
+ "x": 44485.0,
+ "y": 13214.0
+ }
+ ],
+ "906": [
+ {
+ "x": 44485.0,
+ "y": 13869.0
+ }
+ ],
+ "907": [
+ {
+ "x": 44485.0,
+ "y": 14369.0
+ }
+ ],
+ "908": [
+ {
+ "x": 44485.0,
+ "y": 14869.0
+ }
+ ],
+ "909": [
+ {
+ "x": 44485.0,
+ "y": 15369.0
+ }
+ ],
+ "910": [
+ {
+ "x": 44485.0,
+ "y": 16110.0
+ }
+ ],
+ "911": [
+ {
+ "x": 44485.0,
+ "y": 16894.5
+ }
+ ],
+ "912": [
+ {
+ "x": 44485.0,
+ "y": 17679.0
+ }
+ ],
+ "913": [
+ {
+ "x": 44485.0,
+ "y": 18179.0
+ }
+ ],
+ "914": [
+ {
+ "x": 44485.0,
+ "y": 18679.0
+ }
+ ],
+ "915": [
+ {
+ "x": 44485.0,
+ "y": 19179.0
+ }
+ ],
+ "916": [
+ {
+ "x": 44485.0,
+ "y": 19834.0
+ }
+ ],
+ "917": [
+ {
+ "x": 44485.0,
+ "y": 20334.0
+ }
+ ],
+ "918": [
+ {
+ "x": 44485.0,
+ "y": 20834.0
+ }
+ ],
+ "919": [
+ {
+ "x": 44485.0,
+ "y": 21334.0
+ }
+ ],
+ "920": [
+ {
+ "x": 44485.0,
+ "y": 22075.0
+ }
+ ],
+ "921": [
+ {
+ "x": 44485.0,
+ "y": 22859.5
+ }
+ ],
+ "922": [
+ {
+ "x": 44485.0,
+ "y": 23644.0
+ }
+ ],
+ "923": [
+ {
+ "x": 44485.0,
+ "y": 24144.0
+ }
+ ],
+ "924": [
+ {
+ "x": 44485.0,
+ "y": 24644.0
+ }
+ ],
+ "925": [
+ {
+ "x": 44485.0,
+ "y": 25144.0
+ }
+ ],
+ "926": [
+ {
+ "x": 44485.0,
+ "y": 25885.0
+ }
+ ],
+ "927": [
+ {
+ "x": 44485.0,
+ "y": 26669.5
+ }
+ ],
+ "928": [
+ {
+ "x": 44485.0,
+ "y": 27454.0
+ }
+ ],
+ "929": [
+ {
+ "x": 44485.0,
+ "y": 27954.0
+ }
+ ],
+ "930": [
+ {
+ "x": 44485.0,
+ "y": 28454.0
+ }
+ ],
+ "931": [
+ {
+ "x": 44485.0,
+ "y": 28954.0
+ }
+ ],
+ "932": [
+ {
+ "x": 44485.0,
+ "y": 29695.0
+ }
+ ],
+ "933": [
+ {
+ "x": 45680.0,
+ "y": 2240.0
+ }
+ ],
+ "934": [
+ {
+ "x": 45680.0,
+ "y": 4180.0
+ }
+ ],
+ "935": [
+ {
+ "x": 45680.0,
+ "y": 10145.0
+ }
+ ],
+ "936": [
+ {
+ "x": 45680.0,
+ "y": 16110.0
+ }
+ ],
+ "937": [
+ {
+ "x": 45680.0,
+ "y": 22075.0
+ }
+ ],
+ "938": [
+ {
+ "x": 45680.0,
+ "y": 25885.0
+ }
+ ],
+ "939": [
+ {
+ "x": 45680.0,
+ "y": 29695.0
+ }
+ ],
+ "941": [
+ {
+ "x": 46875.0,
+ "y": 300.0
+ }
+ ],
+ "942": [
+ {
+ "x": 46875.0,
+ "y": 1270.0
+ }
+ ],
+ "943": [
+ {
+ "x": 46875.0,
+ "y": 2240.0
+ }
+ ],
+ "944": [
+ {
+ "x": 46875.0,
+ "y": 3210.0
+ }
+ ],
+ "945": [
+ {
+ "x": 46875.0,
+ "y": 4180.0
+ }
+ ],
+ "946": [
+ {
+ "x": 46875.0,
+ "y": 4964.5
+ }
+ ],
+ "947": [
+ {
+ "x": 46875.0,
+ "y": 5749.0
+ }
+ ],
+ "948": [
+ {
+ "x": 46875.0,
+ "y": 6249.0
+ }
+ ],
+ "949": [
+ {
+ "x": 46875.0,
+ "y": 6749.0
+ }
+ ],
+ "950": [
+ {
+ "x": 46875.0,
+ "y": 7249.0
+ }
+ ],
+ "951": [
+ {
+ "x": 46875.0,
+ "y": 7904.0
+ }
+ ],
+ "952": [
+ {
+ "x": 46875.0,
+ "y": 8404.0
+ }
+ ],
+ "953": [
+ {
+ "x": 46875.0,
+ "y": 8904.0
+ }
+ ],
+ "954": [
+ {
+ "x": 46875.0,
+ "y": 9404.0
+ }
+ ],
+ "955": [
+ {
+ "x": 46875.0,
+ "y": 10145.0
+ }
+ ],
+ "956": [
+ {
+ "x": 46875.0,
+ "y": 10929.5
+ }
+ ],
+ "957": [
+ {
+ "x": 46875.0,
+ "y": 11714.0
+ }
+ ],
+ "958": [
+ {
+ "x": 46875.0,
+ "y": 12214.0
+ }
+ ],
+ "959": [
+ {
+ "x": 46875.0,
+ "y": 12714.0
+ }
+ ],
+ "960": [
+ {
+ "x": 46875.0,
+ "y": 13214.0
+ }
+ ],
+ "961": [
+ {
+ "x": 46875.0,
+ "y": 13869.0
+ }
+ ],
+ "962": [
+ {
+ "x": 46875.0,
+ "y": 14369.0
+ }
+ ],
+ "963": [
+ {
+ "x": 46875.0,
+ "y": 14869.0
+ }
+ ],
+ "964": [
+ {
+ "x": 46875.0,
+ "y": 15369.0
+ }
+ ],
+ "965": [
+ {
+ "x": 46875.0,
+ "y": 16110.0
+ }
+ ],
+ "966": [
+ {
+ "x": 46875.0,
+ "y": 16894.5
+ }
+ ],
+ "967": [
+ {
+ "x": 46875.0,
+ "y": 17679.0
+ }
+ ],
+ "968": [
+ {
+ "x": 46875.0,
+ "y": 18179.0
+ }
+ ],
+ "969": [
+ {
+ "x": 46875.0,
+ "y": 18679.0
+ }
+ ],
+ "970": [
+ {
+ "x": 46875.0,
+ "y": 19179.0
+ }
+ ],
+ "971": [
+ {
+ "x": 46875.0,
+ "y": 19834.0
+ }
+ ],
+ "972": [
+ {
+ "x": 46875.0,
+ "y": 20334.0
+ }
+ ],
+ "973": [
+ {
+ "x": 46875.0,
+ "y": 20834.0
+ }
+ ],
+ "974": [
+ {
+ "x": 46875.0,
+ "y": 21334.0
+ }
+ ],
+ "975": [
+ {
+ "x": 46875.0,
+ "y": 22075.0
+ }
+ ],
+ "976": [
+ {
+ "x": 46875.0,
+ "y": 22859.5
+ }
+ ],
+ "977": [
+ {
+ "x": 46875.0,
+ "y": 23644.0
+ }
+ ],
+ "978": [
+ {
+ "x": 46875.0,
+ "y": 24144.0
+ }
+ ],
+ "979": [
+ {
+ "x": 46875.0,
+ "y": 24644.0
+ }
+ ],
+ "980": [
+ {
+ "x": 46875.0,
+ "y": 25144.0
+ }
+ ],
+ "981": [
+ {
+ "x": 46875.0,
+ "y": 25885.0
+ }
+ ],
+ "982": [
+ {
+ "x": 46875.0,
+ "y": 26669.5
+ }
+ ],
+ "983": [
+ {
+ "x": 46875.0,
+ "y": 27454.0
+ }
+ ],
+ "984": [
+ {
+ "x": 46875.0,
+ "y": 27954.0
+ }
+ ],
+ "985": [
+ {
+ "x": 46875.0,
+ "y": 28454.0
+ }
+ ],
+ "986": [
+ {
+ "x": 46875.0,
+ "y": 28954.0
+ }
+ ],
+ "987": [
+ {
+ "x": 46875.0,
+ "y": 29695.0
+ }
+ ],
+ "988": [
+ {
+ "x": 48070.0,
+ "y": 2240.0
+ }
+ ],
+ "989": [
+ {
+ "x": 48070.0,
+ "y": 4180.0
+ }
+ ],
+ "990": [
+ {
+ "x": 48070.0,
+ "y": 10145.0
+ }
+ ],
+ "991": [
+ {
+ "x": 48070.0,
+ "y": 16110.0
+ }
+ ],
+ "992": [
+ {
+ "x": 48070.0,
+ "y": 22075.0
+ }
+ ],
+ "993": [
+ {
+ "x": 48070.0,
+ "y": 25885.0
+ }
+ ],
+ "994": [
+ {
+ "x": 48070.0,
+ "y": 29695.0
+ }
+ ],
+ "996": [
+ {
+ "x": 49265.0,
+ "y": 300.0
+ }
+ ],
+ "997": [
+ {
+ "x": 49265.0,
+ "y": 1270.0
+ }
+ ],
+ "998": [
+ {
+ "x": 49265.0,
+ "y": 2240.0
+ }
+ ],
+ "999": [
+ {
+ "x": 49265.0,
+ "y": 3210.0
+ }
+ ],
+ "1000": [
+ {
+ "x": 49265.0,
+ "y": 4180.0
+ }
+ ],
+ "1001": [
+ {
+ "x": 49265.0,
+ "y": 4964.5
+ }
+ ],
+ "1002": [
+ {
+ "x": 49265.0,
+ "y": 5749.0
+ }
+ ],
+ "1003": [
+ {
+ "x": 49265.0,
+ "y": 6249.0
+ }
+ ],
+ "1004": [
+ {
+ "x": 49265.0,
+ "y": 6749.0
+ }
+ ],
+ "1005": [
+ {
+ "x": 49265.0,
+ "y": 7249.0
+ }
+ ],
+ "1006": [
+ {
+ "x": 49265.0,
+ "y": 7904.0
+ }
+ ],
+ "1007": [
+ {
+ "x": 49265.0,
+ "y": 8404.0
+ }
+ ],
+ "1008": [
+ {
+ "x": 49265.0,
+ "y": 8904.0
+ }
+ ],
+ "1009": [
+ {
+ "x": 49265.0,
+ "y": 9404.0
+ }
+ ],
+ "1010": [
+ {
+ "x": 49265.0,
+ "y": 10145.0
+ }
+ ],
+ "1011": [
+ {
+ "x": 49265.0,
+ "y": 10929.5
+ }
+ ],
+ "1012": [
+ {
+ "x": 49265.0,
+ "y": 11714.0
+ }
+ ],
+ "1013": [
+ {
+ "x": 49265.0,
+ "y": 12214.0
+ }
+ ],
+ "1014": [
+ {
+ "x": 49265.0,
+ "y": 12714.0
+ }
+ ],
+ "1015": [
+ {
+ "x": 49265.0,
+ "y": 13214.0
+ }
+ ],
+ "1016": [
+ {
+ "x": 49265.0,
+ "y": 13869.0
+ }
+ ],
+ "1017": [
+ {
+ "x": 49265.0,
+ "y": 14369.0
+ }
+ ],
+ "1018": [
+ {
+ "x": 49265.0,
+ "y": 14869.0
+ }
+ ],
+ "1019": [
+ {
+ "x": 49265.0,
+ "y": 15369.0
+ }
+ ],
+ "1020": [
+ {
+ "x": 49265.0,
+ "y": 16110.0
+ }
+ ],
+ "1021": [
+ {
+ "x": 49265.0,
+ "y": 16894.5
+ }
+ ],
+ "1022": [
+ {
+ "x": 49265.0,
+ "y": 17679.0
+ }
+ ],
+ "1023": [
+ {
+ "x": 49265.0,
+ "y": 18179.0
+ }
+ ],
+ "1024": [
+ {
+ "x": 49265.0,
+ "y": 18679.0
+ }
+ ],
+ "1025": [
+ {
+ "x": 49265.0,
+ "y": 19179.0
+ }
+ ],
+ "1026": [
+ {
+ "x": 49265.0,
+ "y": 19834.0
+ }
+ ],
+ "1027": [
+ {
+ "x": 49265.0,
+ "y": 20334.0
+ }
+ ],
+ "1028": [
+ {
+ "x": 49265.0,
+ "y": 20834.0
+ }
+ ],
+ "1029": [
+ {
+ "x": 49265.0,
+ "y": 21334.0
+ }
+ ],
+ "1030": [
+ {
+ "x": 49265.0,
+ "y": 22075.0
+ }
+ ],
+ "1031": [
+ {
+ "x": 49265.0,
+ "y": 22859.5
+ }
+ ],
+ "1032": [
+ {
+ "x": 49265.0,
+ "y": 23644.0
+ }
+ ],
+ "1033": [
+ {
+ "x": 49265.0,
+ "y": 24144.0
+ }
+ ],
+ "1034": [
+ {
+ "x": 49265.0,
+ "y": 24644.0
+ }
+ ],
+ "1035": [
+ {
+ "x": 49265.0,
+ "y": 25144.0
+ }
+ ],
+ "1036": [
+ {
+ "x": 49265.0,
+ "y": 25885.0
+ }
+ ],
+ "1037": [
+ {
+ "x": 49265.0,
+ "y": 26669.5
+ }
+ ],
+ "1038": [
+ {
+ "x": 49265.0,
+ "y": 27454.0
+ }
+ ],
+ "1039": [
+ {
+ "x": 49265.0,
+ "y": 27954.0
+ }
+ ],
+ "1040": [
+ {
+ "x": 49265.0,
+ "y": 28454.0
+ }
+ ],
+ "1041": [
+ {
+ "x": 49265.0,
+ "y": 28954.0
+ }
+ ],
+ "1042": [
+ {
+ "x": 49265.0,
+ "y": 29695.0
+ }
+ ],
+ "1043": [
+ {
+ "x": 50320.0,
+ "y": 2240.0
+ }
+ ],
+ "1044": [
+ {
+ "x": 50320.0,
+ "y": 4180.0
+ }
+ ],
+ "1045": [
+ {
+ "x": 50320.0,
+ "y": 10145.0
+ }
+ ],
+ "1046": [
+ {
+ "x": 50320.0,
+ "y": 16110.0
+ }
+ ],
+ "1047": [
+ {
+ "x": 50320.0,
+ "y": 22075.0
+ }
+ ],
+ "1048": [
+ {
+ "x": 50320.0,
+ "y": 25885.0
+ }
+ ],
+ "1049": [
+ {
+ "x": 50320.0,
+ "y": 29695.0
+ }
+ ],
+ "1050": [
+ {
+ "x": 51375.0,
+ "y": 2240.0
+ }
+ ],
+ "1051": [
+ {
+ "x": 51375.0,
+ "y": 4180.0
+ }
+ ],
+ "1052": [
+ {
+ "x": 51375.0,
+ "y": 4980.0
+ }
+ ],
+ "1053": [
+ {
+ "x": 51375.0,
+ "y": 6085.0
+ }
+ ],
+ "1054": [
+ {
+ "x": 51375.0,
+ "y": 7162.5
+ }
+ ],
+ "1055": [
+ {
+ "x": 51375.0,
+ "y": 8240.0
+ }
+ ],
+ "1056": [
+ {
+ "x": 51375.0,
+ "y": 9345.0
+ }
+ ],
+ "1057": [
+ {
+ "x": 51375.0,
+ "y": 10145.0
+ }
+ ],
+ "1058": [
+ {
+ "x": 51375.0,
+ "y": 10945.0
+ }
+ ],
+ "1059": [
+ {
+ "x": 51375.0,
+ "y": 12050.0
+ }
+ ],
+ "1060": [
+ {
+ "x": 51375.0,
+ "y": 16110.0
+ }
+ ],
+ "1061": [
+ {
+ "x": 51375.0,
+ "y": 16910.0
+ }
+ ],
+ "1062": [
+ {
+ "x": 51375.0,
+ "y": 18015.0
+ }
+ ],
+ "1063": [
+ {
+ "x": 51375.0,
+ "y": 19092.5
+ }
+ ],
+ "1064": [
+ {
+ "x": 51375.0,
+ "y": 20170.0
+ }
+ ],
+ "1065": [
+ {
+ "x": 51375.0,
+ "y": 21275.0
+ }
+ ],
+ "1066": [
+ {
+ "x": 51375.0,
+ "y": 22075.0
+ }
+ ],
+ "1067": [
+ {
+ "x": 51375.0,
+ "y": 22875.0
+ }
+ ],
+ "1068": [
+ {
+ "x": 51375.0,
+ "y": 23980.0
+ }
+ ],
+ "1069": [
+ {
+ "x": 51375.0,
+ "y": 25085.0
+ }
+ ],
+ "1070": [
+ {
+ "x": 51375.0,
+ "y": 25885.0
+ }
+ ],
+ "1071": [
+ {
+ "x": 51375.0,
+ "y": 26685.0
+ }
+ ],
+ "1072": [
+ {
+ "x": 51375.0,
+ "y": 27790.0
+ }
+ ],
+ "1073": [
+ {
+ "x": 51375.0,
+ "y": 28895.0
+ }
+ ],
+ "1074": [
+ {
+ "x": 51375.0,
+ "y": 29695.0
+ }
+ ],
+ "1075": [
+ {
+ "x": 52430.0,
+ "y": 2240.0
+ }
+ ],
+ "1076": [
+ {
+ "x": 52430.0,
+ "y": 4180.0
+ }
+ ],
+ "1077": [
+ {
+ "x": 52430.0,
+ "y": 10145.0
+ }
+ ],
+ "1078": [
+ {
+ "x": 52430.0,
+ "y": 16110.0
+ }
+ ],
+ "1079": [
+ {
+ "x": 52430.0,
+ "y": 22075.0
+ }
+ ],
+ "1080": [
+ {
+ "x": 52430.0,
+ "y": 25885.0
+ }
+ ],
+ "1081": [
+ {
+ "x": 52430.0,
+ "y": 29695.0
+ }
+ ],
+ "1082": [
+ {
+ "x": 53485.0,
+ "y": 0.0
+ }
+ ],
+ "1083": [
+ {
+ "x": 53485.0,
+ "y": 1270.0
+ }
+ ],
+ "1084": [
+ {
+ "x": 53485.0,
+ "y": 2240.0
+ }
+ ],
+ "1085": [
+ {
+ "x": 53485.0,
+ "y": 3210.0
+ }
+ ],
+ "1086": [
+ {
+ "x": 53485.0,
+ "y": 4180.0
+ }
+ ],
+ "1087": [
+ {
+ "x": 53485.0,
+ "y": 4964.5
+ }
+ ],
+ "1088": [
+ {
+ "x": 53485.0,
+ "y": 5749.0
+ }
+ ],
+ "1089": [
+ {
+ "x": 53485.0,
+ "y": 6249.0
+ }
+ ],
+ "1090": [
+ {
+ "x": 53485.0,
+ "y": 6749.0
+ }
+ ],
+ "1091": [
+ {
+ "x": 53485.0,
+ "y": 7249.0
+ }
+ ],
+ "1092": [
+ {
+ "x": 53485.0,
+ "y": 7904.0
+ }
+ ],
+ "1093": [
+ {
+ "x": 53485.0,
+ "y": 8404.0
+ }
+ ],
+ "1094": [
+ {
+ "x": 53485.0,
+ "y": 8904.0
+ }
+ ],
+ "1095": [
+ {
+ "x": 53485.0,
+ "y": 9404.0
+ }
+ ],
+ "1096": [
+ {
+ "x": 53485.0,
+ "y": 10145.0
+ }
+ ],
+ "1097": [
+ {
+ "x": 53485.0,
+ "y": 10929.5
+ }
+ ],
+ "1098": [
+ {
+ "x": 53485.0,
+ "y": 11714.0
+ }
+ ],
+ "1099": [
+ {
+ "x": 53485.0,
+ "y": 12214.0
+ }
+ ],
+ "1100": [
+ {
+ "x": 53485.0,
+ "y": 12714.0
+ }
+ ],
+ "1101": [
+ {
+ "x": 53485.0,
+ "y": 13214.0
+ }
+ ],
+ "1102": [
+ {
+ "x": 53485.0,
+ "y": 13869.0
+ }
+ ],
+ "1103": [
+ {
+ "x": 53485.0,
+ "y": 14369.0
+ }
+ ],
+ "1104": [
+ {
+ "x": 53485.0,
+ "y": 14869.0
+ }
+ ],
+ "1105": [
+ {
+ "x": 53485.0,
+ "y": 15369.0
+ }
+ ],
+ "1106": [
+ {
+ "x": 53485.0,
+ "y": 16110.0
+ }
+ ],
+ "1107": [
+ {
+ "x": 53485.0,
+ "y": 16894.5
+ }
+ ],
+ "1108": [
+ {
+ "x": 53485.0,
+ "y": 17679.0
+ }
+ ],
+ "1109": [
+ {
+ "x": 53485.0,
+ "y": 18179.0
+ }
+ ],
+ "1110": [
+ {
+ "x": 53485.0,
+ "y": 18679.0
+ }
+ ],
+ "1111": [
+ {
+ "x": 53485.0,
+ "y": 19179.0
+ }
+ ],
+ "1112": [
+ {
+ "x": 53485.0,
+ "y": 19834.0
+ }
+ ],
+ "1113": [
+ {
+ "x": 53485.0,
+ "y": 20334.0
+ }
+ ],
+ "1114": [
+ {
+ "x": 53485.0,
+ "y": 20834.0
+ }
+ ],
+ "1115": [
+ {
+ "x": 53485.0,
+ "y": 21334.0
+ }
+ ],
+ "1116": [
+ {
+ "x": 53485.0,
+ "y": 22075.0
+ }
+ ],
+ "1117": [
+ {
+ "x": 53485.0,
+ "y": 22859.5
+ }
+ ],
+ "1118": [
+ {
+ "x": 53485.0,
+ "y": 23644.0
+ }
+ ],
+ "1119": [
+ {
+ "x": 53485.0,
+ "y": 24144.0
+ }
+ ],
+ "1120": [
+ {
+ "x": 53485.0,
+ "y": 24644.0
+ }
+ ],
+ "1121": [
+ {
+ "x": 53485.0,
+ "y": 25144.0
+ }
+ ],
+ "1122": [
+ {
+ "x": 53485.0,
+ "y": 25885.0
+ }
+ ],
+ "1123": [
+ {
+ "x": 53485.0,
+ "y": 26669.5
+ }
+ ],
+ "1124": [
+ {
+ "x": 53485.0,
+ "y": 27454.0
+ }
+ ],
+ "1125": [
+ {
+ "x": 53485.0,
+ "y": 27954.0
+ }
+ ],
+ "1126": [
+ {
+ "x": 53485.0,
+ "y": 28454.0
+ }
+ ],
+ "1127": [
+ {
+ "x": 53485.0,
+ "y": 28954.0
+ }
+ ],
+ "1128": [
+ {
+ "x": 53485.0,
+ "y": 29695.0
+ }
+ ],
+ "1129": [
+ {
+ "x": 54680.0,
+ "y": 0.0
+ }
+ ],
+ "1130": [
+ {
+ "x": 54680.0,
+ "y": 2240.0
+ }
+ ],
+ "1131": [
+ {
+ "x": 54680.0,
+ "y": 4180.0
+ }
+ ],
+ "1132": [
+ {
+ "x": 54680.0,
+ "y": 10145.0
+ }
+ ],
+ "1133": [
+ {
+ "x": 54680.0,
+ "y": 16110.0
+ }
+ ],
+ "1134": [
+ {
+ "x": 54680.0,
+ "y": 22075.0
+ }
+ ],
+ "1135": [
+ {
+ "x": 54680.0,
+ "y": 25885.0
+ }
+ ],
+ "1136": [
+ {
+ "x": 54680.0,
+ "y": 29695.0
+ }
+ ],
+ "1137": [
+ {
+ "x": 55875.0,
+ "y": 0.0
+ }
+ ],
+ "1138": [
+ {
+ "x": 55875.0,
+ "y": 1270.0
+ }
+ ],
+ "1139": [
+ {
+ "x": 55875.0,
+ "y": 2240.0
+ }
+ ],
+ "1140": [
+ {
+ "x": 55875.0,
+ "y": 3210.0
+ }
+ ],
+ "1141": [
+ {
+ "x": 55875.0,
+ "y": 4180.0
+ }
+ ],
+ "1142": [
+ {
+ "x": 55875.0,
+ "y": 4964.5
+ }
+ ],
+ "1143": [
+ {
+ "x": 55875.0,
+ "y": 5749.0
+ }
+ ],
+ "1144": [
+ {
+ "x": 55875.0,
+ "y": 6249.0
+ }
+ ],
+ "1145": [
+ {
+ "x": 55875.0,
+ "y": 6749.0
+ }
+ ],
+ "1146": [
+ {
+ "x": 55875.0,
+ "y": 7249.0
+ }
+ ],
+ "1147": [
+ {
+ "x": 55875.0,
+ "y": 7904.0
+ }
+ ],
+ "1148": [
+ {
+ "x": 55875.0,
+ "y": 8404.0
+ }
+ ],
+ "1149": [
+ {
+ "x": 55875.0,
+ "y": 8904.0
+ }
+ ],
+ "1150": [
+ {
+ "x": 55875.0,
+ "y": 9404.0
+ }
+ ],
+ "1151": [
+ {
+ "x": 55875.0,
+ "y": 10145.0
+ }
+ ],
+ "1152": [
+ {
+ "x": 55875.0,
+ "y": 10929.5
+ }
+ ],
+ "1153": [
+ {
+ "x": 55875.0,
+ "y": 11714.0
+ }
+ ],
+ "1154": [
+ {
+ "x": 55875.0,
+ "y": 12214.0
+ }
+ ],
+ "1155": [
+ {
+ "x": 55875.0,
+ "y": 12714.0
+ }
+ ],
+ "1156": [
+ {
+ "x": 55875.0,
+ "y": 13214.0
+ }
+ ],
+ "1157": [
+ {
+ "x": 55875.0,
+ "y": 13869.0
+ }
+ ],
+ "1158": [
+ {
+ "x": 55875.0,
+ "y": 14369.0
+ }
+ ],
+ "1159": [
+ {
+ "x": 55875.0,
+ "y": 14869.0
+ }
+ ],
+ "1160": [
+ {
+ "x": 55875.0,
+ "y": 15369.0
+ }
+ ],
+ "1161": [
+ {
+ "x": 55875.0,
+ "y": 16110.0
+ }
+ ],
+ "1162": [
+ {
+ "x": 55875.0,
+ "y": 16894.5
+ }
+ ],
+ "1163": [
+ {
+ "x": 55875.0,
+ "y": 17679.0
+ }
+ ],
+ "1164": [
+ {
+ "x": 55875.0,
+ "y": 18179.0
+ }
+ ],
+ "1165": [
+ {
+ "x": 55875.0,
+ "y": 18679.0
+ }
+ ],
+ "1166": [
+ {
+ "x": 55875.0,
+ "y": 19179.0
+ }
+ ],
+ "1167": [
+ {
+ "x": 55875.0,
+ "y": 19834.0
+ }
+ ],
+ "1168": [
+ {
+ "x": 55875.0,
+ "y": 20334.0
+ }
+ ],
+ "1169": [
+ {
+ "x": 55875.0,
+ "y": 20834.0
+ }
+ ],
+ "1170": [
+ {
+ "x": 55875.0,
+ "y": 21334.0
+ }
+ ],
+ "1171": [
+ {
+ "x": 55875.0,
+ "y": 22075.0
+ }
+ ],
+ "1172": [
+ {
+ "x": 55875.0,
+ "y": 22859.5
+ }
+ ],
+ "1173": [
+ {
+ "x": 55875.0,
+ "y": 23644.0
+ }
+ ],
+ "1174": [
+ {
+ "x": 55875.0,
+ "y": 24144.0
+ }
+ ],
+ "1175": [
+ {
+ "x": 55875.0,
+ "y": 24644.0
+ }
+ ],
+ "1176": [
+ {
+ "x": 55875.0,
+ "y": 25144.0
+ }
+ ],
+ "1177": [
+ {
+ "x": 55875.0,
+ "y": 25885.0
+ }
+ ],
+ "1178": [
+ {
+ "x": 55875.0,
+ "y": 26669.5
+ }
+ ],
+ "1179": [
+ {
+ "x": 55875.0,
+ "y": 27454.0
+ }
+ ],
+ "1180": [
+ {
+ "x": 55875.0,
+ "y": 27954.0
+ }
+ ],
+ "1181": [
+ {
+ "x": 55875.0,
+ "y": 28454.0
+ }
+ ],
+ "1182": [
+ {
+ "x": 55875.0,
+ "y": 28954.0
+ }
+ ],
+ "1183": [
+ {
+ "x": 55875.0,
+ "y": 29695.0
+ }
+ ],
+ "1184": [
+ {
+ "x": 57070.0,
+ "y": 0.0
+ }
+ ],
+ "1185": [
+ {
+ "x": 57070.0,
+ "y": 2240.0
+ }
+ ],
+ "1186": [
+ {
+ "x": 57070.0,
+ "y": 4180.0
+ }
+ ],
+ "1187": [
+ {
+ "x": 57070.0,
+ "y": 10145.0
+ }
+ ],
+ "1188": [
+ {
+ "x": 57070.0,
+ "y": 16110.0
+ }
+ ],
+ "1189": [
+ {
+ "x": 57070.0,
+ "y": 22075.0
+ }
+ ],
+ "1190": [
+ {
+ "x": 57070.0,
+ "y": 25885.0
+ }
+ ],
+ "1191": [
+ {
+ "x": 57070.0,
+ "y": 29695.0
+ }
+ ],
+ "1192": [
+ {
+ "x": 58265.0,
+ "y": 0.0
+ }
+ ],
+ "1193": [
+ {
+ "x": 58265.0,
+ "y": 1270.0
+ }
+ ],
+ "1194": [
+ {
+ "x": 58265.0,
+ "y": 2240.0
+ }
+ ],
+ "1195": [
+ {
+ "x": 58265.0,
+ "y": 3210.0
+ }
+ ],
+ "1196": [
+ {
+ "x": 58265.0,
+ "y": 4180.0
+ }
+ ],
+ "1197": [
+ {
+ "x": 58265.0,
+ "y": 4964.5
+ }
+ ],
+ "1198": [
+ {
+ "x": 58265.0,
+ "y": 5749.0
+ }
+ ],
+ "1199": [
+ {
+ "x": 58265.0,
+ "y": 6249.0
+ }
+ ],
+ "1200": [
+ {
+ "x": 58265.0,
+ "y": 6749.0
+ }
+ ],
+ "1201": [
+ {
+ "x": 58265.0,
+ "y": 7249.0
+ }
+ ],
+ "1202": [
+ {
+ "x": 58265.0,
+ "y": 7904.0
+ }
+ ],
+ "1203": [
+ {
+ "x": 58265.0,
+ "y": 8404.0
+ }
+ ],
+ "1204": [
+ {
+ "x": 58265.0,
+ "y": 8904.0
+ }
+ ],
+ "1205": [
+ {
+ "x": 58265.0,
+ "y": 9404.0
+ }
+ ],
+ "1206": [
+ {
+ "x": 58265.0,
+ "y": 10145.0
+ }
+ ],
+ "1207": [
+ {
+ "x": 58265.0,
+ "y": 10929.5
+ }
+ ],
+ "1208": [
+ {
+ "x": 58265.0,
+ "y": 11714.0
+ }
+ ],
+ "1209": [
+ {
+ "x": 58265.0,
+ "y": 12214.0
+ }
+ ],
+ "1210": [
+ {
+ "x": 58265.0,
+ "y": 12714.0
+ }
+ ],
+ "1211": [
+ {
+ "x": 58265.0,
+ "y": 13214.0
+ }
+ ],
+ "1212": [
+ {
+ "x": 58265.0,
+ "y": 13869.0
+ }
+ ],
+ "1213": [
+ {
+ "x": 58265.0,
+ "y": 14369.0
+ }
+ ],
+ "1214": [
+ {
+ "x": 58265.0,
+ "y": 14869.0
+ }
+ ],
+ "1215": [
+ {
+ "x": 58265.0,
+ "y": 15369.0
+ }
+ ],
+ "1216": [
+ {
+ "x": 58265.0,
+ "y": 16110.0
+ }
+ ],
+ "1217": [
+ {
+ "x": 58265.0,
+ "y": 16894.5
+ }
+ ],
+ "1218": [
+ {
+ "x": 58265.0,
+ "y": 17679.0
+ }
+ ],
+ "1219": [
+ {
+ "x": 58265.0,
+ "y": 18179.0
+ }
+ ],
+ "1220": [
+ {
+ "x": 58265.0,
+ "y": 18679.0
+ }
+ ],
+ "1221": [
+ {
+ "x": 58265.0,
+ "y": 19179.0
+ }
+ ],
+ "1222": [
+ {
+ "x": 58265.0,
+ "y": 19834.0
+ }
+ ],
+ "1223": [
+ {
+ "x": 58265.0,
+ "y": 20334.0
+ }
+ ],
+ "1224": [
+ {
+ "x": 58265.0,
+ "y": 20834.0
+ }
+ ],
+ "1225": [
+ {
+ "x": 58265.0,
+ "y": 21334.0
+ }
+ ],
+ "1226": [
+ {
+ "x": 58265.0,
+ "y": 22075.0
+ }
+ ],
+ "1227": [
+ {
+ "x": 58265.0,
+ "y": 22859.5
+ }
+ ],
+ "1228": [
+ {
+ "x": 58265.0,
+ "y": 23644.0
+ }
+ ],
+ "1229": [
+ {
+ "x": 58265.0,
+ "y": 24144.0
+ }
+ ],
+ "1230": [
+ {
+ "x": 58265.0,
+ "y": 24644.0
+ }
+ ],
+ "1231": [
+ {
+ "x": 58265.0,
+ "y": 25144.0
+ }
+ ],
+ "1232": [
+ {
+ "x": 58265.0,
+ "y": 25885.0
+ }
+ ],
+ "1233": [
+ {
+ "x": 58265.0,
+ "y": 26669.5
+ }
+ ],
+ "1234": [
+ {
+ "x": 58265.0,
+ "y": 27454.0
+ }
+ ],
+ "1235": [
+ {
+ "x": 58265.0,
+ "y": 27954.0
+ }
+ ],
+ "1236": [
+ {
+ "x": 58265.0,
+ "y": 28454.0
+ }
+ ],
+ "1237": [
+ {
+ "x": 58265.0,
+ "y": 28954.0
+ }
+ ],
+ "1238": [
+ {
+ "x": 58265.0,
+ "y": 29695.0
+ }
+ ],
+ "1239": [
+ {
+ "x": 59320.0,
+ "y": 0.0
+ }
+ ],
+ "1240": [
+ {
+ "x": 59320.0,
+ "y": 2240.0
+ }
+ ],
+ "1241": [
+ {
+ "x": 59320.0,
+ "y": 4180.0
+ }
+ ],
+ "1242": [
+ {
+ "x": 59320.0,
+ "y": 10145.0
+ }
+ ],
+ "1243": [
+ {
+ "x": 59320.0,
+ "y": 16110.0
+ }
+ ],
+ "1244": [
+ {
+ "x": 59320.0,
+ "y": 22075.0
+ }
+ ],
+ "1245": [
+ {
+ "x": 59320.0,
+ "y": 25885.0
+ }
+ ],
+ "1246": [
+ {
+ "x": 59320.0,
+ "y": 29695.0
+ }
+ ],
+ "1247": [
+ {
+ "x": 60375.0,
+ "y": 0.0
+ }
+ ],
+ "1248": [
+ {
+ "x": 60375.0,
+ "y": 2240.0
+ }
+ ],
+ "1249": [
+ {
+ "x": 60375.0,
+ "y": 4180.0
+ }
+ ],
+ "1250": [
+ {
+ "x": 60375.0,
+ "y": 4980.0
+ }
+ ],
+ "1251": [
+ {
+ "x": 60375.0,
+ "y": 6085.0
+ }
+ ],
+ "1252": [
+ {
+ "x": 60375.0,
+ "y": 7162.5
+ }
+ ],
+ "1253": [
+ {
+ "x": 60375.0,
+ "y": 8240.0
+ }
+ ],
+ "1254": [
+ {
+ "x": 60375.0,
+ "y": 9345.0
+ }
+ ],
+ "1255": [
+ {
+ "x": 60375.0,
+ "y": 10145.0
+ }
+ ],
+ "1256": [
+ {
+ "x": 60375.0,
+ "y": 10945.0
+ }
+ ],
+ "1257": [
+ {
+ "x": 60375.0,
+ "y": 12050.0
+ }
+ ],
+ "1258": [
+ {
+ "x": 60375.0,
+ "y": 16110.0
+ }
+ ],
+ "1259": [
+ {
+ "x": 60375.0,
+ "y": 16910.0
+ }
+ ],
+ "1260": [
+ {
+ "x": 60375.0,
+ "y": 18015.0
+ }
+ ],
+ "1261": [
+ {
+ "x": 60375.0,
+ "y": 19092.5
+ }
+ ],
+ "1262": [
+ {
+ "x": 60375.0,
+ "y": 20170.0
+ }
+ ],
+ "1263": [
+ {
+ "x": 60375.0,
+ "y": 21275.0
+ }
+ ],
+ "1264": [
+ {
+ "x": 60375.0,
+ "y": 22075.0
+ }
+ ],
+ "1265": [
+ {
+ "x": 60375.0,
+ "y": 22875.0
+ }
+ ],
+ "1266": [
+ {
+ "x": 60375.0,
+ "y": 23980.0
+ }
+ ],
+ "1267": [
+ {
+ "x": 60375.0,
+ "y": 25085.0
+ }
+ ],
+ "1268": [
+ {
+ "x": 60375.0,
+ "y": 25885.0
+ }
+ ],
+ "1269": [
+ {
+ "x": 60375.0,
+ "y": 26685.0
+ }
+ ],
+ "1270": [
+ {
+ "x": 60375.0,
+ "y": 27790.0
+ }
+ ],
+ "1271": [
+ {
+ "x": 60375.0,
+ "y": 28895.0
+ }
+ ],
+ "1272": [
+ {
+ "x": 60375.0,
+ "y": 29695.0
+ }
+ ],
+ "1273": [
+ {
+ "x": 61430.0,
+ "y": 0.0
+ }
+ ],
+ "1274": [
+ {
+ "x": 61430.0,
+ "y": 2240.0
+ }
+ ],
+ "1275": [
+ {
+ "x": 61430.0,
+ "y": 4180.0
+ }
+ ],
+ "1276": [
+ {
+ "x": 61430.0,
+ "y": 10145.0
+ }
+ ],
+ "1277": [
+ {
+ "x": 61430.0,
+ "y": 16110.0
+ }
+ ],
+ "1278": [
+ {
+ "x": 61430.0,
+ "y": 22075.0
+ }
+ ],
+ "1279": [
+ {
+ "x": 61430.0,
+ "y": 25885.0
+ }
+ ],
+ "1280": [
+ {
+ "x": 61430.0,
+ "y": 29695.0
+ }
+ ],
+ "1281": [
+ {
+ "x": 62485.0,
+ "y": 0.0
+ }
+ ],
+ "1282": [
+ {
+ "x": 62485.0,
+ "y": 1270.0
+ }
+ ],
+ "1283": [
+ {
+ "x": 62485.0,
+ "y": 2240.0
+ }
+ ],
+ "1284": [
+ {
+ "x": 62485.0,
+ "y": 3210.0
+ }
+ ],
+ "1285": [
+ {
+ "x": 62485.0,
+ "y": 4180.0
+ }
+ ],
+ "1286": [
+ {
+ "x": 62485.0,
+ "y": 4964.5
+ }
+ ],
+ "1287": [
+ {
+ "x": 62485.0,
+ "y": 5749.0
+ }
+ ],
+ "1288": [
+ {
+ "x": 62485.0,
+ "y": 6249.0
+ }
+ ],
+ "1289": [
+ {
+ "x": 62485.0,
+ "y": 6749.0
+ }
+ ],
+ "1290": [
+ {
+ "x": 62485.0,
+ "y": 7249.0
+ }
+ ],
+ "1291": [
+ {
+ "x": 62485.0,
+ "y": 7904.0
+ }
+ ],
+ "1292": [
+ {
+ "x": 62485.0,
+ "y": 8404.0
+ }
+ ],
+ "1293": [
+ {
+ "x": 62485.0,
+ "y": 8904.0
+ }
+ ],
+ "1294": [
+ {
+ "x": 62485.0,
+ "y": 9404.0
+ }
+ ],
+ "1295": [
+ {
+ "x": 62485.0,
+ "y": 10145.0
+ }
+ ],
+ "1296": [
+ {
+ "x": 62485.0,
+ "y": 10929.5
+ }
+ ],
+ "1297": [
+ {
+ "x": 62485.0,
+ "y": 11714.0
+ }
+ ],
+ "1298": [
+ {
+ "x": 62485.0,
+ "y": 12214.0
+ }
+ ],
+ "1299": [
+ {
+ "x": 62485.0,
+ "y": 12714.0
+ }
+ ],
+ "1300": [
+ {
+ "x": 62485.0,
+ "y": 13214.0
+ }
+ ],
+ "1301": [
+ {
+ "x": 62485.0,
+ "y": 13869.0
+ }
+ ],
+ "1302": [
+ {
+ "x": 62485.0,
+ "y": 14369.0
+ }
+ ],
+ "1303": [
+ {
+ "x": 62485.0,
+ "y": 14869.0
+ }
+ ],
+ "1304": [
+ {
+ "x": 62485.0,
+ "y": 15369.0
+ }
+ ],
+ "1305": [
+ {
+ "x": 62485.0,
+ "y": 16110.0
+ }
+ ],
+ "1306": [
+ {
+ "x": 62485.0,
+ "y": 16894.5
+ }
+ ],
+ "1307": [
+ {
+ "x": 62485.0,
+ "y": 17679.0
+ }
+ ],
+ "1308": [
+ {
+ "x": 62485.0,
+ "y": 18179.0
+ }
+ ],
+ "1309": [
+ {
+ "x": 62485.0,
+ "y": 18679.0
+ }
+ ],
+ "1310": [
+ {
+ "x": 62485.0,
+ "y": 19179.0
+ }
+ ],
+ "1311": [
+ {
+ "x": 62485.0,
+ "y": 19834.0
+ }
+ ],
+ "1312": [
+ {
+ "x": 62485.0,
+ "y": 20334.0
+ }
+ ],
+ "1313": [
+ {
+ "x": 62485.0,
+ "y": 20834.0
+ }
+ ],
+ "1314": [
+ {
+ "x": 62485.0,
+ "y": 21334.0
+ }
+ ],
+ "1315": [
+ {
+ "x": 62485.0,
+ "y": 22075.0
+ }
+ ],
+ "1316": [
+ {
+ "x": 62485.0,
+ "y": 22859.5
+ }
+ ],
+ "1317": [
+ {
+ "x": 62485.0,
+ "y": 23644.0
+ }
+ ],
+ "1318": [
+ {
+ "x": 62485.0,
+ "y": 24144.0
+ }
+ ],
+ "1319": [
+ {
+ "x": 62485.0,
+ "y": 24644.0
+ }
+ ],
+ "1320": [
+ {
+ "x": 62485.0,
+ "y": 25144.0
+ }
+ ],
+ "1321": [
+ {
+ "x": 62485.0,
+ "y": 25885.0
+ }
+ ],
+ "1322": [
+ {
+ "x": 62485.0,
+ "y": 26669.5
+ }
+ ],
+ "1323": [
+ {
+ "x": 62485.0,
+ "y": 27454.0
+ }
+ ],
+ "1324": [
+ {
+ "x": 62485.0,
+ "y": 27954.0
+ }
+ ],
+ "1325": [
+ {
+ "x": 62485.0,
+ "y": 28454.0
+ }
+ ],
+ "1326": [
+ {
+ "x": 62485.0,
+ "y": 28954.0
+ }
+ ],
+ "1327": [
+ {
+ "x": 62485.0,
+ "y": 29695.0
+ }
+ ],
+ "1328": [
+ {
+ "x": 63680.0,
+ "y": 2240.0
+ }
+ ],
+ "1329": [
+ {
+ "x": 63680.0,
+ "y": 4180.0
+ }
+ ],
+ "1330": [
+ {
+ "x": 63680.0,
+ "y": 10145.0
+ }
+ ],
+ "1331": [
+ {
+ "x": 63680.0,
+ "y": 16110.0
+ }
+ ],
+ "1332": [
+ {
+ "x": 63680.0,
+ "y": 22075.0
+ }
+ ],
+ "1333": [
+ {
+ "x": 63680.0,
+ "y": 25885.0
+ }
+ ],
+ "1334": [
+ {
+ "x": 63680.0,
+ "y": 29695.0
+ }
+ ],
+ "1336": [
+ {
+ "x": 64875.0,
+ "y": 300.0
+ }
+ ],
+ "1337": [
+ {
+ "x": 64875.0,
+ "y": 1270.0
+ }
+ ],
+ "1338": [
+ {
+ "x": 64875.0,
+ "y": 2240.0
+ }
+ ],
+ "1339": [
+ {
+ "x": 64875.0,
+ "y": 3210.0
+ }
+ ],
+ "1340": [
+ {
+ "x": 64875.0,
+ "y": 4180.0
+ }
+ ],
+ "1341": [
+ {
+ "x": 64875.0,
+ "y": 4964.5
+ }
+ ],
+ "1342": [
+ {
+ "x": 64875.0,
+ "y": 5749.0
+ }
+ ],
+ "1343": [
+ {
+ "x": 64875.0,
+ "y": 6249.0
+ }
+ ],
+ "1344": [
+ {
+ "x": 64875.0,
+ "y": 6749.0
+ }
+ ],
+ "1345": [
+ {
+ "x": 64875.0,
+ "y": 7249.0
+ }
+ ],
+ "1346": [
+ {
+ "x": 64875.0,
+ "y": 7904.0
+ }
+ ],
+ "1347": [
+ {
+ "x": 64875.0,
+ "y": 8404.0
+ }
+ ],
+ "1348": [
+ {
+ "x": 64875.0,
+ "y": 8904.0
+ }
+ ],
+ "1349": [
+ {
+ "x": 64875.0,
+ "y": 9404.0
+ }
+ ],
+ "1350": [
+ {
+ "x": 64875.0,
+ "y": 10145.0
+ }
+ ],
+ "1351": [
+ {
+ "x": 64875.0,
+ "y": 10929.5
+ }
+ ],
+ "1352": [
+ {
+ "x": 64875.0,
+ "y": 11714.0
+ }
+ ],
+ "1353": [
+ {
+ "x": 64875.0,
+ "y": 12214.0
+ }
+ ],
+ "1354": [
+ {
+ "x": 64875.0,
+ "y": 12714.0
+ }
+ ],
+ "1355": [
+ {
+ "x": 64875.0,
+ "y": 13214.0
+ }
+ ],
+ "1356": [
+ {
+ "x": 64875.0,
+ "y": 13869.0
+ }
+ ],
+ "1357": [
+ {
+ "x": 64875.0,
+ "y": 14369.0
+ }
+ ],
+ "1358": [
+ {
+ "x": 64875.0,
+ "y": 14869.0
+ }
+ ],
+ "1359": [
+ {
+ "x": 64875.0,
+ "y": 15369.0
+ }
+ ],
+ "1360": [
+ {
+ "x": 64875.0,
+ "y": 16110.0
+ }
+ ],
+ "1361": [
+ {
+ "x": 64875.0,
+ "y": 16894.5
+ }
+ ],
+ "1362": [
+ {
+ "x": 64875.0,
+ "y": 17679.0
+ }
+ ],
+ "1363": [
+ {
+ "x": 64875.0,
+ "y": 18179.0
+ }
+ ],
+ "1364": [
+ {
+ "x": 64875.0,
+ "y": 18679.0
+ }
+ ],
+ "1365": [
+ {
+ "x": 64875.0,
+ "y": 19179.0
+ }
+ ],
+ "1366": [
+ {
+ "x": 64875.0,
+ "y": 19834.0
+ }
+ ],
+ "1367": [
+ {
+ "x": 64875.0,
+ "y": 20334.0
+ }
+ ],
+ "1368": [
+ {
+ "x": 64875.0,
+ "y": 20834.0
+ }
+ ],
+ "1369": [
+ {
+ "x": 64875.0,
+ "y": 21334.0
+ }
+ ],
+ "1370": [
+ {
+ "x": 64875.0,
+ "y": 22075.0
+ }
+ ],
+ "1371": [
+ {
+ "x": 64875.0,
+ "y": 22859.5
+ }
+ ],
+ "1372": [
+ {
+ "x": 64875.0,
+ "y": 23644.0
+ }
+ ],
+ "1373": [
+ {
+ "x": 64875.0,
+ "y": 24144.0
+ }
+ ],
+ "1374": [
+ {
+ "x": 64875.0,
+ "y": 24644.0
+ }
+ ],
+ "1375": [
+ {
+ "x": 64875.0,
+ "y": 25144.0
+ }
+ ],
+ "1377": [
+ {
+ "x": 64875.0,
+ "y": 26669.5
+ }
+ ],
+ "1378": [
+ {
+ "x": 64875.0,
+ "y": 27454.0
+ }
+ ],
+ "1379": [
+ {
+ "x": 64875.0,
+ "y": 27954.0
+ }
+ ],
+ "1380": [
+ {
+ "x": 64875.0,
+ "y": 28454.0
+ }
+ ],
+ "1381": [
+ {
+ "x": 64875.0,
+ "y": 28954.0
+ }
+ ],
+ "1382": [
+ {
+ "x": 64875.0,
+ "y": 29695.0
+ }
+ ],
+ "1383": [
+ {
+ "x": 66070.0,
+ "y": 2240.0
+ }
+ ],
+ "1384": [
+ {
+ "x": 66070.0,
+ "y": 4180.0
+ }
+ ],
+ "1385": [
+ {
+ "x": 66070.0,
+ "y": 10145.0
+ }
+ ],
+ "1386": [
+ {
+ "x": 66070.0,
+ "y": 16110.0
+ }
+ ],
+ "1387": [
+ {
+ "x": 66070.0,
+ "y": 22075.0
+ }
+ ],
+ "1388": [
+ {
+ "x": 66070.0,
+ "y": 25885.0
+ }
+ ],
+ "1389": [
+ {
+ "x": 66070.0,
+ "y": 29695.0
+ }
+ ],
+ "1391": [
+ {
+ "x": 67265.0,
+ "y": 300.0
+ }
+ ],
+ "1392": [
+ {
+ "x": 67265.0,
+ "y": 1270.0
+ }
+ ],
+ "1393": [
+ {
+ "x": 67265.0,
+ "y": 2240.0
+ }
+ ],
+ "1394": [
+ {
+ "x": 67265.0,
+ "y": 3210.0
+ }
+ ],
+ "1395": [
+ {
+ "x": 67265.0,
+ "y": 4180.0
+ }
+ ],
+ "1396": [
+ {
+ "x": 67265.0,
+ "y": 4964.5
+ }
+ ],
+ "1397": [
+ {
+ "x": 67265.0,
+ "y": 5749.0
+ }
+ ],
+ "1398": [
+ {
+ "x": 67265.0,
+ "y": 6249.0
+ }
+ ],
+ "1399": [
+ {
+ "x": 67265.0,
+ "y": 6749.0
+ }
+ ],
+ "1400": [
+ {
+ "x": 67265.0,
+ "y": 7249.0
+ }
+ ],
+ "1401": [
+ {
+ "x": 67265.0,
+ "y": 7904.0
+ }
+ ],
+ "1402": [
+ {
+ "x": 67265.0,
+ "y": 8404.0
+ }
+ ],
+ "1403": [
+ {
+ "x": 67265.0,
+ "y": 8904.0
+ }
+ ],
+ "1404": [
+ {
+ "x": 67265.0,
+ "y": 9404.0
+ }
+ ],
+ "1405": [
+ {
+ "x": 67265.0,
+ "y": 10145.0
+ }
+ ],
+ "1406": [
+ {
+ "x": 67265.0,
+ "y": 10929.5
+ }
+ ],
+ "1407": [
+ {
+ "x": 67265.0,
+ "y": 11714.0
+ }
+ ],
+ "1408": [
+ {
+ "x": 67265.0,
+ "y": 12214.0
+ }
+ ],
+ "1409": [
+ {
+ "x": 67265.0,
+ "y": 12714.0
+ }
+ ],
+ "1410": [
+ {
+ "x": 67265.0,
+ "y": 13214.0
+ }
+ ],
+ "1411": [
+ {
+ "x": 67265.0,
+ "y": 13869.0
+ }
+ ],
+ "1412": [
+ {
+ "x": 67265.0,
+ "y": 14369.0
+ }
+ ],
+ "1413": [
+ {
+ "x": 67265.0,
+ "y": 14869.0
+ }
+ ],
+ "1414": [
+ {
+ "x": 67265.0,
+ "y": 15369.0
+ }
+ ],
+ "1415": [
+ {
+ "x": 67265.0,
+ "y": 16110.0
+ }
+ ],
+ "1416": [
+ {
+ "x": 67265.0,
+ "y": 16894.5
+ }
+ ],
+ "1417": [
+ {
+ "x": 67265.0,
+ "y": 17679.0
+ }
+ ],
+ "1418": [
+ {
+ "x": 67265.0,
+ "y": 18179.0
+ }
+ ],
+ "1419": [
+ {
+ "x": 67265.0,
+ "y": 18679.0
+ }
+ ],
+ "1420": [
+ {
+ "x": 67265.0,
+ "y": 19179.0
+ }
+ ],
+ "1421": [
+ {
+ "x": 67265.0,
+ "y": 19834.0
+ }
+ ],
+ "1422": [
+ {
+ "x": 67265.0,
+ "y": 20334.0
+ }
+ ],
+ "1423": [
+ {
+ "x": 67265.0,
+ "y": 20834.0
+ }
+ ],
+ "1424": [
+ {
+ "x": 67265.0,
+ "y": 21334.0
+ }
+ ],
+ "1425": [
+ {
+ "x": 67265.0,
+ "y": 22075.0
+ }
+ ],
+ "1426": [
+ {
+ "x": 67265.0,
+ "y": 22859.5
+ }
+ ],
+ "1427": [
+ {
+ "x": 67265.0,
+ "y": 23644.0
+ }
+ ],
+ "1428": [
+ {
+ "x": 67265.0,
+ "y": 24144.0
+ }
+ ],
+ "1429": [
+ {
+ "x": 67265.0,
+ "y": 24644.0
+ }
+ ],
+ "1430": [
+ {
+ "x": 67265.0,
+ "y": 25144.0
+ }
+ ],
+ "1431": [
+ {
+ "x": 67265.0,
+ "y": 25885.0
+ }
+ ],
+ "1432": [
+ {
+ "x": 67265.0,
+ "y": 26669.5
+ }
+ ],
+ "1433": [
+ {
+ "x": 67265.0,
+ "y": 27454.0
+ }
+ ],
+ "1434": [
+ {
+ "x": 67265.0,
+ "y": 27954.0
+ }
+ ],
+ "1435": [
+ {
+ "x": 67265.0,
+ "y": 28454.0
+ }
+ ],
+ "1436": [
+ {
+ "x": 67265.0,
+ "y": 28954.0
+ }
+ ],
+ "1437": [
+ {
+ "x": 67265.0,
+ "y": 29695.0
+ }
+ ],
+ "1438": [
+ {
+ "x": 68191.25,
+ "y": 2240.0
+ }
+ ],
+ "1439": [
+ {
+ "x": 68191.25,
+ "y": 4180.0
+ }
+ ],
+ "1440": [
+ {
+ "x": 68191.25,
+ "y": 10145.0
+ }
+ ],
+ "1441": [
+ {
+ "x": 68191.25,
+ "y": 16110.0
+ }
+ ],
+ "1442": [
+ {
+ "x": 68191.25,
+ "y": 22075.0
+ }
+ ],
+ "1443": [
+ {
+ "x": 69117.5,
+ "y": 2240.0
+ }
+ ],
+ "1444": [
+ {
+ "x": 69117.5,
+ "y": 4180.0
+ }
+ ],
+ "1445": [
+ {
+ "x": 69117.5,
+ "y": 4980.0
+ }
+ ],
+ "1446": [
+ {
+ "x": 69117.5,
+ "y": 6085.0
+ }
+ ],
+ "1447": [
+ {
+ "x": 69117.5,
+ "y": 7162.5
+ }
+ ],
+ "1448": [
+ {
+ "x": 69117.5,
+ "y": 8240.0
+ }
+ ],
+ "1449": [
+ {
+ "x": 69117.5,
+ "y": 9345.0
+ }
+ ],
+ "1450": [
+ {
+ "x": 69117.5,
+ "y": 10145.0
+ }
+ ],
+ "1451": [
+ {
+ "x": 69117.5,
+ "y": 10945.0
+ }
+ ],
+ "1452": [
+ {
+ "x": 69117.5,
+ "y": 12050.0
+ }
+ ],
+ "1453": [
+ {
+ "x": 69117.5,
+ "y": 16110.0
+ }
+ ],
+ "1454": [
+ {
+ "x": 69117.5,
+ "y": 16910.0
+ }
+ ],
+ "1455": [
+ {
+ "x": 69117.5,
+ "y": 18015.0
+ }
+ ],
+ "1456": [
+ {
+ "x": 69117.5,
+ "y": 19092.5
+ }
+ ],
+ "1457": [
+ {
+ "x": 69117.5,
+ "y": 20170.0
+ }
+ ],
+ "1458": [
+ {
+ "x": 69117.5,
+ "y": 21275.0
+ }
+ ],
+ "1459": [
+ {
+ "x": 69117.5,
+ "y": 22075.0
+ }
+ ],
+ "1460": [
+ {
+ "x": 70043.75,
+ "y": 2240.0
+ }
+ ],
+ "1461": [
+ {
+ "x": 70043.75,
+ "y": 4180.0
+ }
+ ],
+ "1462": [
+ {
+ "x": 70043.75,
+ "y": 10145.0
+ }
+ ],
+ "1463": [
+ {
+ "x": 70043.75,
+ "y": 16110.0
+ }
+ ],
+ "1464": [
+ {
+ "x": 70043.75,
+ "y": 22075.0
+ }
+ ],
+ "1465": [
+ {
+ "x": 70970.0,
+ "y": 300.0
+ }
+ ],
+ "1466": [
+ {
+ "x": 70970.0,
+ "y": 1270.0
+ }
+ ],
+ "1467": [
+ {
+ "x": 70970.0,
+ "y": 2240.0
+ }
+ ],
+ "1468": [
+ {
+ "x": 70970.0,
+ "y": 3210.0
+ }
+ ],
+ "1469": [
+ {
+ "x": 70970.0,
+ "y": 4180.0
+ }
+ ],
+ "1470": [
+ {
+ "x": 70970.0,
+ "y": 4964.5
+ }
+ ],
+ "1471": [
+ {
+ "x": 70970.0,
+ "y": 5749.0
+ }
+ ],
+ "1472": [
+ {
+ "x": 70970.0,
+ "y": 6249.0
+ }
+ ],
+ "1473": [
+ {
+ "x": 70970.0,
+ "y": 6749.0
+ }
+ ],
+ "1474": [
+ {
+ "x": 70970.0,
+ "y": 7249.0
+ }
+ ],
+ "1475": [
+ {
+ "x": 70970.0,
+ "y": 7904.0
+ }
+ ],
+ "1476": [
+ {
+ "x": 70970.0,
+ "y": 8404.0
+ }
+ ],
+ "1477": [
+ {
+ "x": 70970.0,
+ "y": 8904.0
+ }
+ ],
+ "1478": [
+ {
+ "x": 70970.0,
+ "y": 9404.0
+ }
+ ],
+ "1479": [
+ {
+ "x": 70970.0,
+ "y": 10145.0
+ }
+ ],
+ "1480": [
+ {
+ "x": 70970.0,
+ "y": 10929.5
+ }
+ ],
+ "1481": [
+ {
+ "x": 70970.0,
+ "y": 11714.0
+ }
+ ],
+ "1482": [
+ {
+ "x": 70970.0,
+ "y": 12214.0
+ }
+ ],
+ "1483": [
+ {
+ "x": 70970.0,
+ "y": 12714.0
+ }
+ ],
+ "1484": [
+ {
+ "x": 70970.0,
+ "y": 13214.0
+ }
+ ],
+ "1485": [
+ {
+ "x": 70970.0,
+ "y": 13869.0
+ }
+ ],
+ "1486": [
+ {
+ "x": 70970.0,
+ "y": 14369.0
+ }
+ ],
+ "1487": [
+ {
+ "x": 70970.0,
+ "y": 14869.0
+ }
+ ],
+ "1488": [
+ {
+ "x": 70970.0,
+ "y": 15369.0
+ }
+ ],
+ "1489": [
+ {
+ "x": 70970.0,
+ "y": 16110.0
+ }
+ ],
+ "1490": [
+ {
+ "x": 70970.0,
+ "y": 16894.5
+ }
+ ],
+ "1491": [
+ {
+ "x": 70970.0,
+ "y": 17679.0
+ }
+ ],
+ "1492": [
+ {
+ "x": 70970.0,
+ "y": 18179.0
+ }
+ ],
+ "1493": [
+ {
+ "x": 70970.0,
+ "y": 18679.0
+ }
+ ],
+ "1494": [
+ {
+ "x": 70970.0,
+ "y": 19179.0
+ }
+ ],
+ "1495": [
+ {
+ "x": 70970.0,
+ "y": 19834.0
+ }
+ ],
+ "1496": [
+ {
+ "x": 70970.0,
+ "y": 20334.0
+ }
+ ],
+ "1497": [
+ {
+ "x": 70970.0,
+ "y": 20834.0
+ }
+ ],
+ "1498": [
+ {
+ "x": 70970.0,
+ "y": 21334.0
+ }
+ ],
+ "1499": [
+ {
+ "x": 70970.0,
+ "y": 22075.0
+ }
+ ],
+ "1501": [
+ {
+ "x": 72165.0,
+ "y": 2240.0
+ }
+ ],
+ "1502": [
+ {
+ "x": 72165.0,
+ "y": 4180.0
+ }
+ ],
+ "1503": [
+ {
+ "x": 72165.0,
+ "y": 10145.0
+ }
+ ],
+ "1504": [
+ {
+ "x": 72165.0,
+ "y": 16110.0
+ }
+ ],
+ "1505": [
+ {
+ "x": 72165.0,
+ "y": 22075.0
+ }
+ ],
+ "1506": [
+ {
+ "x": 73360.0,
+ "y": 0.0
+ }
+ ],
+ "1507": [
+ {
+ "x": 73360.0,
+ "y": 1270.0
+ }
+ ],
+ "1508": [
+ {
+ "x": 73360.0,
+ "y": 2240.0
+ }
+ ],
+ "1509": [
+ {
+ "x": 73360.0,
+ "y": 3210.0
+ }
+ ],
+ "1510": [
+ {
+ "x": 73360.0,
+ "y": 4180.0
+ }
+ ],
+ "1511": [
+ {
+ "x": 73360.0,
+ "y": 4964.5
+ }
+ ],
+ "1512": [
+ {
+ "x": 73360.0,
+ "y": 5749.0
+ }
+ ],
+ "1513": [
+ {
+ "x": 73360.0,
+ "y": 6249.0
+ }
+ ],
+ "1514": [
+ {
+ "x": 73360.0,
+ "y": 6749.0
+ }
+ ],
+ "1515": [
+ {
+ "x": 73360.0,
+ "y": 7249.0
+ }
+ ],
+ "1516": [
+ {
+ "x": 73360.0,
+ "y": 7904.0
+ }
+ ],
+ "1517": [
+ {
+ "x": 73360.0,
+ "y": 8404.0
+ }
+ ],
+ "1518": [
+ {
+ "x": 73360.0,
+ "y": 8904.0
+ }
+ ],
+ "1519": [
+ {
+ "x": 73360.0,
+ "y": 9404.0
+ }
+ ],
+ "1520": [
+ {
+ "x": 73360.0,
+ "y": 10145.0
+ }
+ ],
+ "1521": [
+ {
+ "x": 73360.0,
+ "y": 10929.5
+ }
+ ],
+ "1522": [
+ {
+ "x": 73360.0,
+ "y": 11714.0
+ }
+ ],
+ "1523": [
+ {
+ "x": 73360.0,
+ "y": 12214.0
+ }
+ ],
+ "1524": [
+ {
+ "x": 73360.0,
+ "y": 12714.0
+ }
+ ],
+ "1525": [
+ {
+ "x": 73360.0,
+ "y": 13214.0
+ }
+ ],
+ "1526": [
+ {
+ "x": 73360.0,
+ "y": 13869.0
+ }
+ ],
+ "1527": [
+ {
+ "x": 73360.0,
+ "y": 14369.0
+ }
+ ],
+ "1528": [
+ {
+ "x": 73360.0,
+ "y": 14869.0
+ }
+ ],
+ "1529": [
+ {
+ "x": 73360.0,
+ "y": 15369.0
+ }
+ ],
+ "1530": [
+ {
+ "x": 73360.0,
+ "y": 16110.0
+ }
+ ],
+ "1531": [
+ {
+ "x": 73360.0,
+ "y": 16894.5
+ }
+ ],
+ "1532": [
+ {
+ "x": 73360.0,
+ "y": 17679.0
+ }
+ ],
+ "1533": [
+ {
+ "x": 73360.0,
+ "y": 18179.0
+ }
+ ],
+ "1534": [
+ {
+ "x": 73360.0,
+ "y": 18679.0
+ }
+ ],
+ "1535": [
+ {
+ "x": 73360.0,
+ "y": 19179.0
+ }
+ ],
+ "1536": [
+ {
+ "x": 73360.0,
+ "y": 19834.0
+ }
+ ],
+ "1537": [
+ {
+ "x": 73360.0,
+ "y": 20334.0
+ }
+ ],
+ "1538": [
+ {
+ "x": 73360.0,
+ "y": 20834.0
+ }
+ ],
+ "1539": [
+ {
+ "x": 73360.0,
+ "y": 21334.0
+ }
+ ],
+ "1540": [
+ {
+ "x": 73360.0,
+ "y": 22075.0
+ }
+ ],
+ "1541": [
+ {
+ "x": 74555.0,
+ "y": 0.0
+ }
+ ],
+ "1542": [
+ {
+ "x": 74555.0,
+ "y": 2240.0
+ }
+ ],
+ "1543": [
+ {
+ "x": 74555.0,
+ "y": 4180.0
+ }
+ ],
+ "1544": [
+ {
+ "x": 74555.0,
+ "y": 10145.0
+ }
+ ],
+ "1545": [
+ {
+ "x": 74555.0,
+ "y": 16110.0
+ }
+ ],
+ "1546": [
+ {
+ "x": 74555.0,
+ "y": 22075.0
+ }
+ ],
+ "1547": [
+ {
+ "x": 75750.0,
+ "y": 0.0
+ }
+ ],
+ "1548": [
+ {
+ "x": 75750.0,
+ "y": 1270.0
+ }
+ ],
+ "1549": [
+ {
+ "x": 75750.0,
+ "y": 2240.0
+ }
+ ],
+ "1550": [
+ {
+ "x": 75750.0,
+ "y": 3210.0
+ }
+ ],
+ "1551": [
+ {
+ "x": 75750.0,
+ "y": 4180.0
+ }
+ ],
+ "1552": [
+ {
+ "x": 75750.0,
+ "y": 4964.5
+ }
+ ],
+ "1553": [
+ {
+ "x": 75750.0,
+ "y": 5749.0
+ }
+ ],
+ "1554": [
+ {
+ "x": 75750.0,
+ "y": 6249.0
+ }
+ ],
+ "1555": [
+ {
+ "x": 75750.0,
+ "y": 6749.0
+ }
+ ],
+ "1556": [
+ {
+ "x": 75750.0,
+ "y": 7249.0
+ }
+ ],
+ "1557": [
+ {
+ "x": 75750.0,
+ "y": 7904.0
+ }
+ ],
+ "1558": [
+ {
+ "x": 75750.0,
+ "y": 8404.0
+ }
+ ],
+ "1559": [
+ {
+ "x": 75750.0,
+ "y": 8904.0
+ }
+ ],
+ "1560": [
+ {
+ "x": 75750.0,
+ "y": 9404.0
+ }
+ ],
+ "1561": [
+ {
+ "x": 75750.0,
+ "y": 10145.0
+ }
+ ],
+ "1562": [
+ {
+ "x": 75750.0,
+ "y": 10929.5
+ }
+ ],
+ "1563": [
+ {
+ "x": 75750.0,
+ "y": 11714.0
+ }
+ ],
+ "1564": [
+ {
+ "x": 75750.0,
+ "y": 12214.0
+ }
+ ],
+ "1565": [
+ {
+ "x": 75750.0,
+ "y": 12714.0
+ }
+ ],
+ "1566": [
+ {
+ "x": 75750.0,
+ "y": 13214.0
+ }
+ ],
+ "1567": [
+ {
+ "x": 75750.0,
+ "y": 13869.0
+ }
+ ],
+ "1568": [
+ {
+ "x": 75750.0,
+ "y": 14369.0
+ }
+ ],
+ "1569": [
+ {
+ "x": 75750.0,
+ "y": 14869.0
+ }
+ ],
+ "1570": [
+ {
+ "x": 75750.0,
+ "y": 15369.0
+ }
+ ],
+ "1571": [
+ {
+ "x": 75750.0,
+ "y": 16110.0
+ }
+ ],
+ "1572": [
+ {
+ "x": 75750.0,
+ "y": 16894.5
+ }
+ ],
+ "1573": [
+ {
+ "x": 75750.0,
+ "y": 17679.0
+ }
+ ],
+ "1574": [
+ {
+ "x": 75750.0,
+ "y": 18179.0
+ }
+ ],
+ "1575": [
+ {
+ "x": 75750.0,
+ "y": 18679.0
+ }
+ ],
+ "1576": [
+ {
+ "x": 75750.0,
+ "y": 19179.0
+ }
+ ],
+ "1577": [
+ {
+ "x": 75750.0,
+ "y": 19834.0
+ }
+ ],
+ "1578": [
+ {
+ "x": 75750.0,
+ "y": 20334.0
+ }
+ ],
+ "1579": [
+ {
+ "x": 75750.0,
+ "y": 20834.0
+ }
+ ],
+ "1580": [
+ {
+ "x": 75750.0,
+ "y": 21334.0
+ }
+ ],
+ "1581": [
+ {
+ "x": 75750.0,
+ "y": 22075.0
+ }
+ ],
+ "1582": [
+ {
+ "x": 76805.0,
+ "y": 0.0
+ }
+ ],
+ "1583": [
+ {
+ "x": 76805.0,
+ "y": 2240.0
+ }
+ ],
+ "1584": [
+ {
+ "x": 76805.0,
+ "y": 4180.0
+ }
+ ],
+ "1585": [
+ {
+ "x": 76805.0,
+ "y": 10145.0
+ }
+ ],
+ "1586": [
+ {
+ "x": 76805.0,
+ "y": 16110.0
+ }
+ ],
+ "1587": [
+ {
+ "x": 76805.0,
+ "y": 22075.0
+ }
+ ],
+ "1588": [
+ {
+ "x": 77860.0,
+ "y": 0.0
+ }
+ ],
+ "1589": [
+ {
+ "x": 77860.0,
+ "y": 2240.0
+ }
+ ],
+ "1590": [
+ {
+ "x": 77860.0,
+ "y": 4180.0
+ }
+ ],
+ "1591": [
+ {
+ "x": 77860.0,
+ "y": 4980.0
+ }
+ ],
+ "1592": [
+ {
+ "x": 77860.0,
+ "y": 6085.0
+ }
+ ],
+ "1593": [
+ {
+ "x": 77860.0,
+ "y": 7162.5
+ }
+ ],
+ "1594": [
+ {
+ "x": 77860.0,
+ "y": 8240.0
+ }
+ ],
+ "1595": [
+ {
+ "x": 77860.0,
+ "y": 9345.0
+ }
+ ],
+ "1596": [
+ {
+ "x": 77860.0,
+ "y": 10145.0
+ }
+ ],
+ "1597": [
+ {
+ "x": 77860.0,
+ "y": 10945.0
+ }
+ ],
+ "1598": [
+ {
+ "x": 77860.0,
+ "y": 12050.0
+ }
+ ],
+ "1599": [
+ {
+ "x": 77860.0,
+ "y": 16110.0
+ }
+ ],
+ "1600": [
+ {
+ "x": 77860.0,
+ "y": 16910.0
+ }
+ ],
+ "1601": [
+ {
+ "x": 77860.0,
+ "y": 18015.0
+ }
+ ],
+ "1602": [
+ {
+ "x": 77860.0,
+ "y": 19092.5
+ }
+ ],
+ "1603": [
+ {
+ "x": 77860.0,
+ "y": 20170.0
+ }
+ ],
+ "1604": [
+ {
+ "x": 77860.0,
+ "y": 21275.0
+ }
+ ],
+ "1605": [
+ {
+ "x": 77860.0,
+ "y": 22075.0
+ }
+ ],
+ "1606": [
+ {
+ "x": 78915.0,
+ "y": 0.0
+ }
+ ],
+ "1607": [
+ {
+ "x": 78915.0,
+ "y": 2240.0
+ }
+ ],
+ "1608": [
+ {
+ "x": 78915.0,
+ "y": 4180.0
+ }
+ ],
+ "1609": [
+ {
+ "x": 78915.0,
+ "y": 10145.0
+ }
+ ],
+ "1610": [
+ {
+ "x": 78915.0,
+ "y": 16110.0
+ }
+ ],
+ "1611": [
+ {
+ "x": 78915.0,
+ "y": 22075.0
+ }
+ ],
+ "1612": [
+ {
+ "x": 79970.0,
+ "y": 0.0
+ }
+ ],
+ "1613": [
+ {
+ "x": 79970.0,
+ "y": 1270.0
+ }
+ ],
+ "1614": [
+ {
+ "x": 79970.0,
+ "y": 2240.0
+ }
+ ],
+ "1615": [
+ {
+ "x": 79970.0,
+ "y": 3210.0
+ }
+ ],
+ "1616": [
+ {
+ "x": 79970.0,
+ "y": 4180.0
+ }
+ ],
+ "1617": [
+ {
+ "x": 79970.0,
+ "y": 4964.5
+ }
+ ],
+ "1618": [
+ {
+ "x": 79970.0,
+ "y": 5749.0
+ }
+ ],
+ "1619": [
+ {
+ "x": 79970.0,
+ "y": 6249.0
+ }
+ ],
+ "1620": [
+ {
+ "x": 79970.0,
+ "y": 6749.0
+ }
+ ],
+ "1621": [
+ {
+ "x": 79970.0,
+ "y": 7249.0
+ }
+ ],
+ "1622": [
+ {
+ "x": 79970.0,
+ "y": 7904.0
+ }
+ ],
+ "1623": [
+ {
+ "x": 79970.0,
+ "y": 8404.0
+ }
+ ],
+ "1624": [
+ {
+ "x": 79970.0,
+ "y": 8904.0
+ }
+ ],
+ "1625": [
+ {
+ "x": 79970.0,
+ "y": 9404.0
+ }
+ ],
+ "1626": [
+ {
+ "x": 79970.0,
+ "y": 10145.0
+ }
+ ],
+ "1627": [
+ {
+ "x": 79970.0,
+ "y": 10929.5
+ }
+ ],
+ "1628": [
+ {
+ "x": 79970.0,
+ "y": 11714.0
+ }
+ ],
+ "1629": [
+ {
+ "x": 79970.0,
+ "y": 12214.0
+ }
+ ],
+ "1630": [
+ {
+ "x": 79970.0,
+ "y": 12714.0
+ }
+ ],
+ "1631": [
+ {
+ "x": 79970.0,
+ "y": 13214.0
+ }
+ ],
+ "1632": [
+ {
+ "x": 79970.0,
+ "y": 13869.0
+ }
+ ],
+ "1633": [
+ {
+ "x": 79970.0,
+ "y": 14369.0
+ }
+ ],
+ "1634": [
+ {
+ "x": 79970.0,
+ "y": 14869.0
+ }
+ ],
+ "1635": [
+ {
+ "x": 79970.0,
+ "y": 15369.0
+ }
+ ],
+ "1636": [
+ {
+ "x": 79970.0,
+ "y": 16110.0
+ }
+ ],
+ "1637": [
+ {
+ "x": 79970.0,
+ "y": 16894.5
+ }
+ ],
+ "1638": [
+ {
+ "x": 79970.0,
+ "y": 17679.0
+ }
+ ],
+ "1639": [
+ {
+ "x": 79970.0,
+ "y": 18179.0
+ }
+ ],
+ "1640": [
+ {
+ "x": 79970.0,
+ "y": 18679.0
+ }
+ ],
+ "1641": [
+ {
+ "x": 79970.0,
+ "y": 19179.0
+ }
+ ],
+ "1642": [
+ {
+ "x": 79970.0,
+ "y": 19834.0
+ }
+ ],
+ "1643": [
+ {
+ "x": 79970.0,
+ "y": 20334.0
+ }
+ ],
+ "1644": [
+ {
+ "x": 79970.0,
+ "y": 20834.0
+ }
+ ],
+ "1645": [
+ {
+ "x": 79970.0,
+ "y": 21334.0
+ }
+ ],
+ "1646": [
+ {
+ "x": 79970.0,
+ "y": 22075.0
+ }
+ ],
+ "1647": [
+ {
+ "x": 81165.0,
+ "y": 2240.0
+ }
+ ],
+ "1648": [
+ {
+ "x": 81165.0,
+ "y": 4180.0
+ }
+ ],
+ "1649": [
+ {
+ "x": 81165.0,
+ "y": 10145.0
+ }
+ ],
+ "1653": [
+ {
+ "x": 82360.0,
+ "y": 300.0
+ }
+ ],
+ "1654": [
+ {
+ "x": 82360.0,
+ "y": 1270.0
+ }
+ ],
+ "1655": [
+ {
+ "x": 82360.0,
+ "y": 2240.0
+ }
+ ],
+ "1656": [
+ {
+ "x": 82360.0,
+ "y": 3210.0
+ }
+ ],
+ "1657": [
+ {
+ "x": 82360.0,
+ "y": 4180.0
+ }
+ ],
+ "1658": [
+ {
+ "x": 82360.0,
+ "y": 4964.5
+ }
+ ],
+ "1659": [
+ {
+ "x": 82360.0,
+ "y": 5749.0
+ }
+ ],
+ "1660": [
+ {
+ "x": 82360.0,
+ "y": 6249.0
+ }
+ ],
+ "1661": [
+ {
+ "x": 82360.0,
+ "y": 6749.0
+ }
+ ],
+ "1662": [
+ {
+ "x": 82360.0,
+ "y": 7249.0
+ }
+ ],
+ "1663": [
+ {
+ "x": 82360.0,
+ "y": 7904.0
+ }
+ ],
+ "1664": [
+ {
+ "x": 82360.0,
+ "y": 8404.0
+ }
+ ],
+ "1665": [
+ {
+ "x": 82360.0,
+ "y": 8904.0
+ }
+ ],
+ "1666": [
+ {
+ "x": 82360.0,
+ "y": 9404.0
+ }
+ ],
+ "1667": [
+ {
+ "x": 82360.0,
+ "y": 10145.0
+ }
+ ],
+ "1708": [
+ {
+ "x": 15632.5,
+ "y": 300.0
+ }
+ ],
+ "1709": [
+ {
+ "x": 15632.5,
+ "y": 1270.0
+ }
+ ],
+ "1714": [
+ {
+ "x": 51375.0,
+ "y": 1270.0
+ }
+ ],
+ "1713": [
+ {
+ "x": 51375.0,
+ "y": 300.0
+ }
+ ],
+ "1717": [
+ {
+ "x": 69117.5,
+ "y": 1270.0
+ }
+ ],
+ "1716": [
+ {
+ "x": 69117.5,
+ "y": 300.0
+ }
+ ],
+ "1718": [
+ {
+ "x": 15632.5,
+ "y": 3210.0
+ }
+ ],
+ "1712": [
+ {
+ "x": 33375.0,
+ "y": 1270.0
+ }
+ ],
+ "1711": [
+ {
+ "x": 33375.0,
+ "y": 300.0
+ }
+ ],
+ "1719": [
+ {
+ "x": 33375.0,
+ "y": 3210.0
+ }
+ ],
+ "1720": [
+ {
+ "x": 51375.0,
+ "y": 3210.0
+ }
+ ],
+ "1800": [
+ {
+ "x": 69117.5,
+ "y": 3210.0
+ }
+ ],
+ "1850": [
+ {
+ "x": 83555.0,
+ "y": 10145.0
+ }
+ ],
+ "1851": [
+ {
+ "x": 84750.0,
+ "y": 10145.0
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/algo-zkd/src/main/java/com/algo/config/BaseDataConfig.java b/algo-zkd/src/main/java/com/algo/config/BaseDataConfig.java
index 24e04a6..eb3971a 100644
--- a/algo-zkd/src/main/java/com/algo/config/BaseDataConfig.java
+++ b/algo-zkd/src/main/java/com/algo/config/BaseDataConfig.java
@@ -1,4 +1,4 @@
-//package com.algo.config;
+package com.algo.config;//package com.algo.config;
//
//import com.algo.expose.BaseDataService;
//import com.algo.expose.impl.BaseDataServiceImpl;
diff --git a/algo-zkd/src/main/java/com/algo/model/CTUPhysicalConfig.java b/algo-zkd/src/main/java/com/algo/model/CTUPhysicalConfig.java
index a63d923..d201612 100644
--- a/algo-zkd/src/main/java/com/algo/model/CTUPhysicalConfig.java
+++ b/algo-zkd/src/main/java/com/algo/model/CTUPhysicalConfig.java
@@ -71,16 +71,16 @@
*/
private double standardPointDistance;
- // 榛樿鏋勯�犲嚱鏁� - 浣跨敤鎺ㄨ崘鐨勯粯璁ゅ��
+ // 榛樿鏋勯�犲嚱鏁� - 浣跨敤鍩轰簬瀹為檯鍦哄湴鐨勭墿鐞嗗弬鏁�
public CTUPhysicalConfig() {
- this.maxSpeed = 2.0; // 2绫�/绉�
- this.normalSpeed = 1.5; // 1.5绫�/绉�
- this.maxAcceleration = 1.0; // 1绫�/绉捖�
- this.maxDeceleration = 1.5; // 1.5绫�/绉捖�
- this.turnTime90 = 2.0; // 90搴﹁浆鍚戦渶瑕�2绉�
- this.turnTime180 = 4.0; // 180搴﹁浆鍚戦渶瑕�4绉�
+ this.maxSpeed = 1.0; // 1000mm/s = 1.0绫�/绉�
+ this.normalSpeed = 1.0; // 姝e父杩愯閫熷害100%鏈�澶ч�熷害
+ this.maxAcceleration = 0.4; // 400 mm/s^2 = 0.4绫�/绉捖�
+ this.maxDeceleration = 0.4; // 鐩稿悓鐨勫姞鍑忛�熷害
+ this.turnTime90 = 4.0; // 姣�90搴﹁浆鍚戦渶瑕�4绉�
+ this.turnTime180 = 8.0; // 180搴﹁浆鍚戦渶瑕�8绉�
this.minSafetyDistance = 3.0; // 鏈�灏忓畨鍏ㄨ窛绂�3绫�
- this.minFollowingDistance = 2.0; // 鏈�灏忚窡闅忚窛绂�2绫�
+ this.minFollowingDistance = 3.0; // 鏈�灏忚窡闅忚窛绂�3绫�
this.ctuLength = 1.5; // CTU闀垮害1.5绫�
this.ctuWidth = 1.0; // CTU瀹藉害1绫�
this.startupTime = 1.0; // 鍚姩鏃堕棿1绉�
@@ -301,6 +301,151 @@
return distance >= minDistance;
}
+ /**
+ * 璁$畻绮剧‘鐨勭Щ鍔ㄦ椂闂达紝鑰冭檻鍔犻�熷害銆佸噺閫熷害鍜屽疄闄呰窛绂�
+ *
+ * @param distance 瀹為檯绉诲姩璺濈锛堢背锛�
+ * @param startSpeed 璧峰閫熷害锛堢背/绉掞級
+ * @param endSpeed 缁撴潫閫熷害锛堢背/绉掞級
+ * @param targetSpeed 鐩爣宸¤埅閫熷害锛堢背/绉掞級
+ * @return 绉诲姩鏃堕棿锛堢锛�
+ */
+ public double calculatePreciseMovementTime(double distance, double startSpeed, double endSpeed, double targetSpeed) {
+ if (distance <= 0) return 0.0;
+
+ // 濡傛灉璺濈寰堢煭锛岀洿鎺ヨ绠楀钩鍧囬�熷害
+ if (distance < 0.5) { // 灏忎簬0.5绫�
+ double avgSpeed = Math.max(0.1, (startSpeed + endSpeed) / 2.0);
+ return distance / avgSpeed;
+ }
+
+ double totalTime = 0.0;
+ double currentSpeed = startSpeed;
+ double remainingDistance = distance;
+
+ // 闃舵1: 鍔犻�熷埌鐩爣閫熷害
+ if (currentSpeed < targetSpeed) {
+ double accelerationTime = (targetSpeed - currentSpeed) / maxAcceleration;
+ double accelerationDistance = currentSpeed * accelerationTime + 0.5 * maxAcceleration * accelerationTime * accelerationTime;
+
+ if (accelerationDistance < remainingDistance) {
+ totalTime += accelerationTime;
+ remainingDistance -= accelerationDistance;
+ currentSpeed = targetSpeed;
+ } else {
+ // 璺濈涓嶈冻浠ュ畬鍏ㄥ姞閫燂紝鐩存帴璁$畻
+ return calculateTimeForShortDistance(distance, startSpeed, endSpeed);
+ }
+ }
+
+ // 闃舵2: 鍑忛�熷埌鐩爣缁撴潫閫熷害
+ double decelerationDistance = 0.0;
+ double decelerationTime = 0.0;
+ if (currentSpeed > endSpeed) {
+ decelerationTime = (currentSpeed - endSpeed) / maxDeceleration;
+ decelerationDistance = endSpeed * decelerationTime + 0.5 * maxDeceleration * decelerationTime * decelerationTime;
+ }
+
+ // 闃舵3: 鍖�閫熷贰鑸�
+ if (remainingDistance > decelerationDistance) {
+ double cruisingDistance = remainingDistance - decelerationDistance;
+ double cruisingTime = cruisingDistance / currentSpeed;
+ totalTime += cruisingTime;
+ }
+
+ // 娣诲姞鍑忛�熸椂闂�
+ totalTime += decelerationTime;
+
+ return totalTime;
+ }
+
+ /**
+ * 璁$畻鐭窛绂荤Щ鍔ㄦ椂闂达紙鏃犳硶瀹屾暣鍔犻�熷噺閫熺殑鎯呭喌锛�
+ */
+ private double calculateTimeForShortDistance(double distance, double startSpeed, double endSpeed) {
+ // 浣跨敤杩愬姩瀛﹀叕寮�: s = v0*t + 0.5*a*t^2
+ // 鍏朵腑 v_f = v0 + a*t锛屾眰瑙� t
+ double avgAcceleration = (endSpeed > startSpeed) ? maxAcceleration : -maxDeceleration;
+
+ // 濡傛灉鍔犻�熷害寰堝皬鎴栦负0锛屼娇鐢ㄥ钩鍧囬�熷害
+ if (Math.abs(avgAcceleration) < 0.01) {
+ return distance / Math.max(0.1, (startSpeed + endSpeed) / 2.0);
+ }
+
+ // 姹傝В浜屾鏂圭▼: 0.5*a*t^2 + v0*t - s = 0
+ double a = 0.5 * avgAcceleration;
+ double b = startSpeed;
+ double c = -distance;
+
+ double discriminant = b * b - 4 * a * c;
+ if (discriminant < 0) {
+ // 鏃犺В锛屼娇鐢ㄥ钩鍧囬�熷害
+ return distance / Math.max(0.1, (startSpeed + endSpeed) / 2.0);
+ }
+
+ double t1 = (-b + Math.sqrt(discriminant)) / (2 * a);
+ double t2 = (-b - Math.sqrt(discriminant)) / (2 * a);
+
+ // 閫夋嫨姝g殑鏃堕棿鍊�
+ double time = (t1 > 0) ? t1 : t2;
+ return Math.max(0.1, time); // 纭繚鏃堕棿涓烘
+ }
+
+ /**
+ * 鍩轰簬瀹為檯鍧愭爣璁$畻涓ょ偣闂寸殑绮剧‘璺濈锛堢背锛�
+ *
+ * @param coord1 璧风偣鍧愭爣 [x_mm, y_mm]
+ * @param coord2 缁堢偣鍧愭爣 [x_mm, y_mm]
+ * @return 璺濈锛堢背锛�
+ */
+ public static double calculateRealDistance(double[] coord1, double[] coord2) {
+ if (coord1 == null || coord2 == null || coord1.length < 2 || coord2.length < 2) {
+ return 0.0;
+ }
+
+ // 鍧愭爣鍗曚綅涓烘绫筹紝杞崲涓虹背
+ double dx = (coord2[0] - coord1[0]) / 1000.0;
+ double dy = (coord2[1] - coord1[1]) / 1000.0;
+
+ return Math.sqrt(dx * dx + dy * dy);
+ }
+
+ /**
+ * 璁$畻鏂瑰悜鏀瑰彉瑙掑害
+ *
+ * @param coord1 璧风偣鍧愭爣
+ * @param coord2 涓棿鐐瑰潗鏍�
+ * @param coord3 缁堢偣鍧愭爣
+ * @return 杞悜瑙掑害锛堝害锛�
+ */
+ public static double calculateTurnAngle(double[] coord1, double[] coord2, double[] coord3) {
+ if (coord1 == null || coord2 == null || coord3 == null) {
+ return 0.0;
+ }
+
+ // 璁$畻涓や釜鍚戦噺
+ double[] vec1 = {coord2[0] - coord1[0], coord2[1] - coord1[1]};
+ double[] vec2 = {coord3[0] - coord2[0], coord3[1] - coord2[1]};
+
+ // 璁$畻鍚戦噺闀垮害
+ double len1 = Math.sqrt(vec1[0] * vec1[0] + vec1[1] * vec1[1]);
+ double len2 = Math.sqrt(vec2[0] * vec2[0] + vec2[1] * vec2[1]);
+
+ if (len1 < 1e-6 || len2 < 1e-6) {
+ return 0.0;
+ }
+
+ // 璁$畻澶硅
+ double dot = vec1[0] * vec2[0] + vec1[1] * vec2[1];
+ double cosAngle = dot / (len1 * len2);
+
+ // 闄愬埗cosAngle鍦╗-1, 1]鑼冨洿鍐�
+ cosAngle = Math.max(-1.0, Math.min(1.0, cosAngle));
+
+ double angle = Math.acos(cosAngle);
+ return Math.toDegrees(angle);
+ }
+
@Override
public String toString() {
return "CTUPhysicalConfig{" +
diff --git a/algo-zkd/src/main/java/com/algo/model/PathCode.java b/algo-zkd/src/main/java/com/algo/model/PathCode.java
index 27716dd..72a7c10 100644
--- a/algo-zkd/src/main/java/com/algo/model/PathCode.java
+++ b/algo-zkd/src/main/java/com/algo/model/PathCode.java
@@ -1,6 +1,5 @@
package com.algo.model;
-import com.fasterxml.jackson.annotation.JsonProperty;
/**
* 璺緞浠g爜妯″瀷
@@ -41,8 +40,22 @@
/**
* 鏄惁涓虹洰鏍囩偣
*/
- @JsonProperty("isTargetPoint")
private boolean isTargetPoint;
+
+ /**
+ * 鍒拌揪鏃堕棿锛堟绉掓椂闂存埑锛�
+ */
+ private Long arrivalTime;
+
+ /**
+ * 绂诲紑鏃堕棿锛堟绉掓椂闂存埑锛�
+ */
+ private Long departureTime;
+
+ /**
+ * 绱鏃堕棿锛堜粠璺緞璧风偣寮�濮嬬殑绱鏃堕棿锛屾绉掞級
+ */
+ private Long cumulativeTime;
// 鏋勯�犲嚱鏁�
public PathCode() {
@@ -121,6 +134,30 @@
isTargetPoint = targetPoint;
}
+ public Long getArrivalTime() {
+ return arrivalTime;
+ }
+
+ public void setArrivalTime(Long arrivalTime) {
+ this.arrivalTime = arrivalTime;
+ }
+
+ public Long getDepartureTime() {
+ return departureTime;
+ }
+
+ public void setDepartureTime(Long departureTime) {
+ this.departureTime = departureTime;
+ }
+
+ public Long getCumulativeTime() {
+ return cumulativeTime;
+ }
+
+ public void setCumulativeTime(Long cumulativeTime) {
+ this.cumulativeTime = cumulativeTime;
+ }
+
@Override
public String toString() {
return "PathCode{" +
@@ -131,6 +168,9 @@
", posType='" + posType + '\'' +
", lev=" + lev +
", isTargetPoint=" + isTargetPoint +
+ ", arrivalTime=" + arrivalTime +
+ ", departureTime=" + departureTime +
+ ", cumulativeTime=" + cumulativeTime +
'}';
}
}
\ No newline at end of file
diff --git a/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java b/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java
index 4ae0129..5fe5554 100644
--- a/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java
+++ b/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java
@@ -4,12 +4,12 @@
import com.algo.model.PathCode;
import com.algo.model.PlannedPath;
import com.algo.util.JsonUtils;
+import com.algo.util.PathTimeCalculator;
import java.util.*;
/**
* A*璺緞瑙勫垝鍣ㄥ疄鐜�
- * 浣跨敤3D A*绠楁硶杩涜CTU鏃剁┖璺緞瑙勫垝锛屾敮鎸佺墿鐞嗙害鏉�
*/
public class AStarPathPlanner implements PathPlanner {
@@ -22,6 +22,11 @@
* 閭绘帴琛�
*/
private final Map<String, List<Map<String, String>>> adjacencyList;
+
+ /**
+ * 鐜杩為�氭�ф暟鎹�
+ */
+ private final JsonUtils.EnvironmentConnectivity environmentConnectivity;
/**
* 鏃堕棿绮惧害锛堟绉掞級
@@ -39,7 +44,7 @@
private final int maxSearchDepth = 15000;
/**
- * 璺濈缂撳瓨 - 浼樺寲锛氱紦瀛樿窛绂昏绠楃粨鏋�
+ * 璺濈缂撳瓨
*/
private final Map<String, Double> distanceCache = new HashMap<>();
@@ -47,6 +52,16 @@
* 蹇�熻矾寰勭紦瀛�
*/
private final Map<String, List<String>> fastPathCache = new HashMap<>();
+
+ /**
+ * 瀹為檯鍧愭爣鏄犲皠
+ */
+ private Map<String, double[]> realCoordinateMapping;
+
+ /**
+ * 璺緞鏃堕棿璁$畻鍣�
+ */
+ private PathTimeCalculator timeCalculator;
/**
* 鏋勯�犲嚱鏁�
@@ -57,13 +72,38 @@
this.pathMapping = pathMapping;
this.adjacencyList = new HashMap<>();
- // 鐩存帴鏋勫缓閭绘帴琛�
- buildAdjacencyList();
+ // 鍔犺浇鐜杩為�氭�ф暟鎹�
+ this.environmentConnectivity = JsonUtils.loadEnvironmentConnectivity("environment.json");
+
+ // 鏋勫缓鐜鎰熺煡鐨勯偦鎺ヨ〃
+ buildEnvironmentAwareAdjacencyList();
+
+ // 鍔犺浇瀹為檯鍧愭爣鏄犲皠
+ loadRealCoordinateMapping();
+
+ // 鍒濆鍖栨椂闂磋绠楀櫒
+ this.timeCalculator = new PathTimeCalculator(pathMapping, realCoordinateMapping);
// 棰勮绠楀父鐢ㄨ窛绂�
precomputeCommonDistances();
System.out.println("A*璺緞瑙勫垝鍣ㄥ垵濮嬪寲瀹屾垚锛岄偦鎺ヨ〃鍖呭惈 " + adjacencyList.size() + " 涓妭鐐�");
+ }
+
+ /**
+ * 鍔犺浇瀹為檯鍧愭爣鏄犲皠
+ */
+ private void loadRealCoordinateMapping() {
+ try {
+ this.realCoordinateMapping = JsonUtils.loadRealCoordinateMapping("man_code.json");
+ if (realCoordinateMapping == null || realCoordinateMapping.isEmpty()) {
+ System.out.println("鏈兘鍔犺浇瀹為檯鍧愭爣鏄犲皠锛屼娇鐢ㄧ綉鏍煎潗鏍�");
+ this.realCoordinateMapping = new HashMap<>();
+ }
+ } catch (Exception e) {
+ System.err.println("鍔犺浇瀹為檯鍧愭爣鏄犲皠澶辫触: " + e.getMessage());
+ this.realCoordinateMapping = new HashMap<>();
+ }
}
@Override
@@ -278,7 +318,7 @@
}
}
- // 鍑忓皯绛夊緟閫夐」 - 鍙湪蹇呰鏃剁瓑寰咃紙20%姒傜巼锛�
+ // 鍑忓皯绛夊緟閫夐」
if (Math.random() < 0.2) {
long waitTime = timeResolution;
long waitUntilTime = current.timePoint + waitTime;
@@ -308,27 +348,61 @@
/**
* 鏃剁┖鍚彂寮忓嚱鏁�
*
- * @param coord1 褰撳墠鍧愭爣
- * @param coord2 鐩爣鍧愭爣
+ * @param coord1 褰撳墠鍧愭爣锛堢綉鏍硷級
+ * @param coord2 鐩爣鍧愭爣锛堢綉鏍硷級
* @param currentTime 褰撳墠鏃堕棿
* @param physicalConfig 鐗╃悊閰嶇疆
* @return 鍚彂寮忓��
*/
private double spaceTimeHeuristic(int[] coord1, int[] coord2, long currentTime, CTUPhysicalConfig physicalConfig) {
- // 绌洪棿璺濈
+ String pathId1 = findPathIdByCoordinate(coord1);
+ String pathId2 = findPathIdByCoordinate(coord2);
+
+ if (pathId1 != null && pathId2 != null) {
+ double[] realCoord1 = JsonUtils.getRealCoordinate(pathId1, realCoordinateMapping);
+ double[] realCoord2 = JsonUtils.getRealCoordinate(pathId2, realCoordinateMapping);
+
+ if (realCoord1 != null && realCoord2 != null) {
+ // 浣跨敤瀹為檯璺濈璁$畻
+ double realDistance = CTUPhysicalConfig.calculateRealDistance(realCoord1, realCoord2);
+
+ // 鏃堕棿鎴愭湰浼拌锛堝亣璁惧钩鍧囬�熷害锛�
+ double timeEstimate = realDistance / physicalConfig.getNormalSpeed();
+
+ // 鑰冭檻杞悜鎴愭湰
+ double turnPenalty = realDistance > 0.5 ? physicalConfig.getTurnTime90() / 2.0 : 0;
+
+ return timeEstimate + turnPenalty;
+ }
+ }
+
+ // 鍓嶆柟妗堬細浣跨敤缃戞牸鍧愭爣
double spatialDistance = Math.abs(coord1[0] - coord2[0]) + Math.abs(coord1[1] - coord2[1]);
-
- // 鏃堕棿鎴愭湰浼拌
double timeEstimate = spatialDistance * physicalConfig.getStandardPointDistance() / physicalConfig.getNormalSpeed();
-
- // 鑰冭檻杞悜鎴愭湰
double turnPenalty = spatialDistance > 1 ? physicalConfig.getTurnTime90() : 0;
return timeEstimate + turnPenalty;
}
+
+ /**
+ * 鏍规嵁缃戞牸鍧愭爣鏌ユ壘璺緞ID
+ */
+ private String findPathIdByCoordinate(int[] coord) {
+ if (coord == null) return null;
+
+ for (Map.Entry<String, Map<String, Integer>> entry : pathMapping.entrySet()) {
+ Map<String, Integer> coordMap = entry.getValue();
+ if (coordMap != null &&
+ coord[0] == coordMap.getOrDefault("x", -1) &&
+ coord[1] == coordMap.getOrDefault("y", -1)) {
+ return entry.getKey();
+ }
+ }
+ return null;
+ }
/**
- * 璁$畻绉诲姩鏃堕棿
+ * 璁$畻绮剧‘鐨勭Щ鍔ㄦ椂闂达紝鍩轰簬瀹為檯鍧愭爣鍜岀墿鐞嗗弬鏁�
*
* @param fromCode 璧峰浠g爜
* @param toCode 鐩爣浠g爜
@@ -337,14 +411,70 @@
* @return 绉诲姩鏃堕棿锛堟绉掞級
*/
private long calculateTravelTime(String fromCode, String toCode, String direction, CTUPhysicalConfig physicalConfig) {
- // 鍩烘湰绉诲姩鏃堕棿
+ // 鑾峰彇瀹為檯鍧愭爣
+ double[] fromCoord = JsonUtils.getRealCoordinate(fromCode, realCoordinateMapping);
+ double[] toCoord = JsonUtils.getRealCoordinate(toCode, realCoordinateMapping);
+
+ if (fromCoord == null || toCoord == null) {
+ // fallback鍒扮綉鏍煎潗鏍囪绠�
+ return calculateFallbackTravelTime(fromCode, toCode, physicalConfig);
+ }
+
+ // 璁$畻瀹為檯璺濈锛堢背锛�
+ double realDistance = CTUPhysicalConfig.calculateRealDistance(fromCoord, toCoord);
+
+ if (realDistance == 0.0) {
+ return 100; // 鏈�灏忔椂闂�100ms
+ }
+
+ // 鍋囪璧峰鍜岀粨鏉熼�熷害锛堝彲浠ユ牴鎹笂涓嬫枃杩涗竴姝ヤ紭鍖栵級
+ double startSpeed = 0.0; // 鍋囪浠庨潤姝㈠紑濮�
+ double endSpeed = 0.0; // 鍋囪缁撴潫鏃跺仠姝�
+ double targetSpeed = physicalConfig.getNormalSpeed();
+
+ // 璁$畻绮剧‘鐨勭Щ鍔ㄦ椂闂�
+ double movementTime = physicalConfig.calculatePreciseMovementTime(
+ realDistance, startSpeed, endSpeed, targetSpeed
+ );
+
+ // 璁$畻杞悜鏃堕棿
+ double turnTime = calculateTurnTime(fromCode, toCode, physicalConfig);
+
+ return Math.max(100, (long) ((movementTime + turnTime) * 1000));
+ }
+
+ /**
+ * 璁$畻杞悜鏃堕棿
+ */
+ private double calculateTurnTime(String fromCode, String toCode, CTUPhysicalConfig physicalConfig) {
+
+ double[] fromCoord = JsonUtils.getRealCoordinate(fromCode, realCoordinateMapping);
+ double[] toCoord = JsonUtils.getRealCoordinate(toCode, realCoordinateMapping);
+
+ if (fromCoord == null || toCoord == null) {
+ return physicalConfig.getTurnTime90() / 4.0; // 骞冲潎杞悜鏃堕棿
+ }
+
+ // 璁$畻鏂瑰悜鍙樺寲
+ double dx = toCoord[0] - fromCoord[0];
+ double dy = toCoord[1] - fromCoord[1];
+
+ // 鐩寸嚎杩愬姩鏃犻渶杞悜
+ if (Math.abs(dx) < 1.0 && Math.abs(dy) < 1.0) {
+ return 0.0;
+ }
+
+ return physicalConfig.getTurnTime90() / 2.0;
+ }
+
+ /**
+ * 澶囩敤鏃堕棿璁$畻鏂规硶锛堝綋鏃犳硶鑾峰彇瀹為檯鍧愭爣鏃朵娇鐢級
+ */
+ private long calculateFallbackTravelTime(String fromCode, String toCode, CTUPhysicalConfig physicalConfig) {
double distance = physicalConfig.getStandardPointDistance();
double speed = physicalConfig.getNormalSpeed();
long moveTime = (long) ((distance / speed) * 1000);
-
- // 杞悜鏃堕棿
- long turnTime = (long) (physicalConfig.getTurnTime90() * 1000 / 4); // 鍋囪骞冲潎杞悜鏃堕棿
-
+ long turnTime = (long) (physicalConfig.getTurnTime90() * 1000 / 4);
return moveTime + turnTime;
}
@@ -384,14 +514,17 @@
}
PathCode pathCode = new PathCode(node.code, direction);
-
- // 娣诲姞鏃堕棿淇℃伅
- // pathCode.setArrivalTime(node.timePoint);
-
codeList.add(pathCode);
}
- return new PlannedPath("", "", codeList);
+ PlannedPath plannedPath = new PlannedPath("", "", codeList);
+
+ // 浣跨敤缁熶竴鐨勬椂闂磋绠楀櫒璁$畻绮剧‘鏃堕棿
+ long startTime = pathNodes.get(0).timePoint;
+ CTUPhysicalConfig defaultConfig = createDefaultPhysicalConfig();
+ timeCalculator.calculatePathTiming(plannedPath, startTime, defaultConfig, 0.0);
+
+ return plannedPath;
}
/**
@@ -472,6 +605,15 @@
@Override
public double calculateDistance(String startCode, String endCode) {
+ // 浼樺厛浣跨敤瀹為檯鍧愭爣
+ double[] startRealCoord = JsonUtils.getRealCoordinate(startCode, realCoordinateMapping);
+ double[] endRealCoord = JsonUtils.getRealCoordinate(endCode, realCoordinateMapping);
+
+ if (startRealCoord != null && endRealCoord != null) {
+ return CTUPhysicalConfig.calculateRealDistance(startRealCoord, endRealCoord);
+ }
+
+ // 鍓嶆柟妗堬細浣跨敤缃戞牸鍧愭爣
int[] startCoord = JsonUtils.getCoordinate(startCode, pathMapping);
int[] endCoord = JsonUtils.getCoordinate(endCode, pathMapping);
@@ -493,9 +635,9 @@
}
/**
- * 鏋勫缓閭绘帴琛�
+ * 鏋勫缓鐜鎰熺煡鐨勯偦鎺ヨ〃
*/
- private void buildAdjacencyList() {
+ private void buildEnvironmentAwareAdjacencyList() {
// 鍒涘缓鍧愭爣鍒扮紪鍙风殑涓存椂鏄犲皠
Map<String, String> tempCoordToCode = new HashMap<>();
for (Map.Entry<String, Map<String, Integer>> entry : pathMapping.entrySet()) {
@@ -523,6 +665,12 @@
int x = coordMap.get("x");
int y = coordMap.get("y");
+ // 鐜鎰熺煡锛氭鏌ュ綋鍓嶈妭鐐规槸鍚﹀彲閫氳
+ if (!environmentConnectivity.isTraversable(x, y)) {
+ adjacencyList.put(code, new ArrayList<>()); // 涓嶅彲閫氳鐨勮妭鐐规病鏈夐偦灞�
+ continue;
+ }
+
List<Map<String, String>> neighbors = new ArrayList<>();
// 妫�鏌ュ洓涓柟鍚戠殑閭诲眳
@@ -532,7 +680,9 @@
String coordKey = newX + "," + newY;
String neighborCode = tempCoordToCode.get(coordKey);
- if (neighborCode != null) {
+
+ // 鐜鎰熺煡锛氬彧鏈夊綋閭诲眳鑺傜偣涔熷彲閫氳鏃舵墠娣诲姞杩炴帴
+ if (neighborCode != null && environmentConnectivity.isTraversable(newX, newY)) {
Map<String, String> neighbor = new HashMap<>();
neighbor.put("code", neighborCode);
neighbor.put("direction", directionAngles[i]);
@@ -542,6 +692,8 @@
adjacencyList.put(code, neighbors);
}
+
+ System.out.println("鐜鎰熺煡閭绘帴琛ㄦ瀯寤哄畬鎴愶紝杩囨护浜嗕笉鍙�氳鐨勮繛鎺�");
}
/**
@@ -673,7 +825,7 @@
}
/**
- * 蹇�熻矾寰勮鍒� - 鍏堝皾璇曠畝鍖栫┖闂磋矾寰勮鍒�
+ * 蹇�熻矾寰勮鍒�
* 瀵逛簬杩戣窛绂昏矾寰勶紝鐩存帴杩斿洖缁撴灉閬垮厤澶嶆潅鐨勬椂绌鸿绠�
*/
private PlannedPath tryFastPathPlanning(String startCode, String endCode, List<double[]> constraints) {
@@ -722,7 +874,7 @@
openSet.offer(startNode);
gScores.put(startCode, 0.0);
- // 绠�鍖栫殑绾︽潫妫�鏌ュ櫒
+ // 绾︽潫妫�鏌ュ櫒
FastConstraintChecker constraintChecker = new FastConstraintChecker(constraints);
int searchDepth = 0;
diff --git a/algo-zkd/src/main/java/com/algo/service/CollisionResolver.java b/algo-zkd/src/main/java/com/algo/service/CollisionResolver.java
index cdf70d7..1c70c81 100644
--- a/algo-zkd/src/main/java/com/algo/service/CollisionResolver.java
+++ b/algo-zkd/src/main/java/com/algo/service/CollisionResolver.java
@@ -4,6 +4,8 @@
import com.algo.model.ExecutingTask;
import com.algo.model.PathCode;
import com.algo.model.PlannedPath;
+import com.algo.model.CTUPhysicalConfig;
+import com.algo.util.PathTimeCalculator;
import java.util.*;
@@ -17,6 +19,11 @@
* 纰版挒妫�娴嬪櫒
*/
private final CollisionDetector collisionDetector;
+
+ /**
+ * 璺緞鏃堕棿璁$畻鍣�
+ */
+ private PathTimeCalculator timeCalculator;
/**
* 鏋勯�犲嚱鏁�
@@ -25,6 +32,13 @@
*/
public CollisionResolver(CollisionDetector collisionDetector) {
this.collisionDetector = collisionDetector;
+ }
+
+ /**
+ * 璁剧疆鏃堕棿璁$畻鍣�
+ */
+ public void setTimeCalculator(PathTimeCalculator timeCalculator) {
+ this.timeCalculator = timeCalculator;
}
/**
@@ -243,7 +257,7 @@
}
/**
- * 涓鸿矾寰勬坊鍔犲欢杩�
+ * 涓鸿矾寰勬坊鍔犲欢杩燂紙澧炲己鐗堬紝姝g‘閲嶈绠楁椂闂寸獥锛�
*
* @param path 璺緞
* @param timeStep 寤惰繜寮�濮嬬殑鏃堕棿姝�
@@ -263,6 +277,9 @@
// 鑾峰彇寤惰繜浣嶇疆鐨勮矾寰勪唬鐮�
PathCode delayCode = codeList.get(timeStep);
+
+ // 璁$畻寤惰繜鏃堕棿锛堟瘡涓欢杩熸楠�1绉掞級
+ long delayDuration = delaySteps * 1000L;
// 鍒涘缓寤惰繜姝ラ
List<PathCode> delaySteps_list = new ArrayList<>();
@@ -273,14 +290,69 @@
waitCode.setPosType(delayCode.getPosType());
waitCode.setLev(delayCode.getLev());
waitCode.setTargetPoint(false); // 绛夊緟姝ラ涓嶆槸鐩爣鐐�
+
+ // 璁剧疆绛夊緟姝ラ鐨勬椂闂翠俊鎭�
+ if (delayCode.getArrivalTime() != null) {
+ long waitStartTime = delayCode.getArrivalTime() + (i * 1000L);
+ waitCode.setArrivalTime(waitStartTime);
+ waitCode.setDepartureTime(waitStartTime + 1000L);
+ }
+
delaySteps_list.add(waitCode);
}
// 鎻掑叆寤惰繜姝ラ
codeList.addAll(timeStep, delaySteps_list);
+ // 鏇存柊鍘熻矾寰勭偣鐨勬椂闂达紙鍚戝悗鎺ㄨ繜锛�
+ if (delayCode.getArrivalTime() != null) {
+ delayCode.setArrivalTime(delayCode.getArrivalTime() + delayDuration);
+ if (delayCode.getDepartureTime() != null) {
+ delayCode.setDepartureTime(delayCode.getDepartureTime() + delayDuration);
+ }
+ }
+
// 鏇存柊璺緞
path.setCodeList(codeList);
+
+ // 馃敡 鍏抽敭淇锛氶噸鏂拌绠楀悗缁矾寰勭偣鐨勬椂闂寸獥
+ if (timeCalculator != null) {
+ CTUPhysicalConfig defaultConfig = createDefaultPhysicalConfig();
+ timeCalculator.recalculatePathTimingFromIndex(path, timeStep + delaySteps, defaultConfig);
+ } else {
+ // 澶囩敤鏂规锛氭墜鍔ㄦ洿鏂板悗缁椂闂�
+ updateSubsequentPathTiming(path, timeStep + delaySteps, delayDuration);
+ }
+ }
+
+ /**
+ * 澶囩敤鏂规锛氭墜鍔ㄦ洿鏂板悗缁矾寰勭偣鐨勬椂闂�
+ */
+ private void updateSubsequentPathTiming(PlannedPath path, int fromIndex, long timeOffset) {
+ List<PathCode> codeList = path.getCodeList();
+
+ for (int i = fromIndex; i < codeList.size(); i++) {
+ PathCode pathCode = codeList.get(i);
+
+ if (pathCode.getArrivalTime() != null) {
+ pathCode.setArrivalTime(pathCode.getArrivalTime() + timeOffset);
+ }
+
+ if (pathCode.getDepartureTime() != null) {
+ pathCode.setDepartureTime(pathCode.getDepartureTime() + timeOffset);
+ }
+
+ if (pathCode.getCumulativeTime() != null) {
+ pathCode.setCumulativeTime(pathCode.getCumulativeTime() + timeOffset);
+ }
+ }
+ }
+
+ /**
+ * 鍒涘缓榛樿鐗╃悊閰嶇疆
+ */
+ private CTUPhysicalConfig createDefaultPhysicalConfig() {
+ return new CTUPhysicalConfig(); // 浣跨敤榛樿鏋勯�犲嚱鏁�
}
/**
diff --git a/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java b/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java
index 833510e..eaafc68 100644
--- a/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java
+++ b/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java
@@ -3,6 +3,7 @@
import com.algo.config.EnvDataConfig;
import com.algo.model.*;
import com.algo.util.JsonUtils;
+import com.algo.util.PathTimeCalculator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -43,6 +44,11 @@
* 鍓╀綑璺緞澶勭悊
*/
private RemainingPathProcessor remainingPathProcessor;
+
+ /**
+ * 璺緞鏃堕棿璁$畻鍣�
+ */
+ private PathTimeCalculator timeCalculator;
/**
@@ -73,6 +79,13 @@
// 鍒濆鍖栧墿浣欒矾寰勫鐞嗗櫒
this.remainingPathProcessor = new RemainingPathProcessor(envDataConfig.getPathMapping());
+
+ // 鍒濆鍖栨椂闂磋绠楀櫒
+ Map<String, double[]> realCoordinateMapping = JsonUtils.loadRealCoordinateMapping("man_code.json");
+ this.timeCalculator = new PathTimeCalculator(envDataConfig.getPathMapping(), realCoordinateMapping);
+
+ // 涓虹鎾炶В鍐冲櫒璁剧疆鏃堕棿璁$畻鍣�
+ this.collisionResolver.setTimeCalculator(timeCalculator);
}
/**
@@ -320,7 +333,7 @@
List<double[]> constraints,
Map<String, String> occupancyMap,
AGVStatus agvStatus) {
- // 棣栧厛灏濊瘯鍩烘湰璺緞瑙勫垝
+ // 灏濊瘯鍩烘湰璺緞瑙勫垝
PlannedPath basicPath = pathPlanner.planPath(startPos, endPos, constraints);
if (basicPath == null) {
return null;
@@ -331,8 +344,8 @@
basicPath, occupancyMap, agvStatus.getPhysicalConfig()
);
- // 璁剧疆璺緞鐨勬椂闂翠俊鎭�
- enhancePathWithTimeInfo(basicPath, safeStartTime, agvStatus.getPhysicalConfig());
+ // 浣跨敤缁熶竴鐨勬椂闂磋绠楀櫒璁剧疆绮剧‘鐨勬椂闂翠俊鎭�
+ timeCalculator.calculatePathTiming(basicPath, safeStartTime, agvStatus.getPhysicalConfig(), 0.0);
return basicPath;
}
diff --git a/algo-zkd/src/main/java/com/algo/util/JsonUtils.java b/algo-zkd/src/main/java/com/algo/util/JsonUtils.java
index 8ec1aff..7a858e5 100644
--- a/algo-zkd/src/main/java/com/algo/util/JsonUtils.java
+++ b/algo-zkd/src/main/java/com/algo/util/JsonUtils.java
@@ -5,18 +5,17 @@
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
- * JSON鏂囦欢璇诲彇宸ュ叿绫�
- * 鐢ㄤ簬璇诲彇鐜閰嶇疆鍜岃矾寰勬槧灏勬枃浠�
+ * JSON鏂囦欢璇诲彇
*/
public class JsonUtils {
/**
- * 璇诲彇JSON鏂囦欢鍐呭
- *
* @param filePath 鏂囦欢璺緞
* @return JSON瀛楃涓插唴瀹�
* @throws IOException 鏂囦欢璇诲彇寮傚父
@@ -33,8 +32,7 @@
}
/**
- * 瑙f瀽璺緞鏄犲皠JSON鍐呭
- * 姝g‘瑙f瀽path_mapping.json鐨勫疄闄呮牸寮忥細{"path_id_to_coordinates": {...}}
+ * 瑙f瀽璺緞鏄犲皠JSON
*
* @param jsonContent JSON鍐呭
* @return 璺緞鏄犲皠Map锛宬ey涓鸿矾寰勭紪鍙凤紝value涓哄潗鏍囦俊鎭�
@@ -43,7 +41,6 @@
Map<String, Map<String, Integer>> pathMapping = new HashMap<>();
try {
- // 鎵惧埌path_id_to_coordinates閮ㄥ垎
String pathIdSection = extractJsonSection(jsonContent, "path_id_to_coordinates");
if (pathIdSection == null) {
System.err.println("鏈壘鍒皃ath_id_to_coordinates閮ㄥ垎");
@@ -101,8 +98,7 @@
}
/**
- * 鍔犺浇鍜岃В鏋愯矾寰勬槧灏勬枃浠�
- * 姝g‘瑙f瀽path_mapping.json鐨勫疄闄呮牸寮忥細{"path_id_to_coordinates": {...}}
+ * 璺緞鏄犲皠
*
* @param filePath 鏂囦欢鍦板潃
* @return 璺緞鏄犲皠Map锛宬ey涓鸿矾寰勭紪鍙凤紝value涓哄潗鏍囦俊鎭�
@@ -112,7 +108,6 @@
Map<String, Map<String, Integer>> pathMapping = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
try {
- // 鍏堣В鏋愪负椤跺眰Map<String, Object>
Map<String, Object> topLevelMap = objectMapper.readValue(
new File(filePath),
Map.class
@@ -123,10 +118,9 @@
return pathMapping;
}
- // 澶勭悊 path_id_to_coordinates锛堝皢鍧愭爣鍒楄〃杞崲涓虹涓�涓潗鏍囩殑path_id鏄犲皠锛�
+ // 澶勭悊 path_id_to_coordinates
Map<String, Object> pathIdCoords = (Map<String, Object>) topLevelMap.get("path_id_to_coordinates");
for (Map.Entry<String, Object> entry : pathIdCoords.entrySet()) {
- // 淇濆瓨鏂瑰紡: 璺緞ID:{"x": , "y":}
String pathId = entry.getKey();
Object coordsObj = entry.getValue();
if (coordsObj instanceof List) {
@@ -155,8 +149,7 @@
}
/**
- * 瑙f瀽鐜閰嶇疆JSON鍐呭
- * 瑙f瀽environment.json涓殑stations淇℃伅
+ * 鐜閰嶇疆JSON
*
* @param jsonContent JSON鍐呭
* @return 鐜閰嶇疆Map
@@ -165,7 +158,6 @@
Map<String, Object> config = new HashMap<>();
try {
- // 瑙f瀽width
if (jsonContent.contains("\"width\":")) {
String widthStr = jsonContent.substring(jsonContent.indexOf("\"width\":") + 8);
widthStr = widthStr.substring(0, widthStr.indexOf(",")).trim();
@@ -176,7 +168,6 @@
}
}
- // 瑙f瀽height
if (jsonContent.contains("\"height\":")) {
String heightStr = jsonContent.substring(jsonContent.indexOf("\"height\":") + 9);
heightStr = heightStr.substring(0, heightStr.indexOf(",")).trim();
@@ -187,7 +178,6 @@
}
}
- // 瑙f瀽stations淇℃伅
Map<String, Map<String, Object>> stations = parseStations(jsonContent);
config.put("stations", stations);
config.put("stationCount", stations.size());
@@ -202,7 +192,6 @@
}
/**
- * 鍔犺浇鍜岃В鏋愮幆澧冮厤缃枃浠�
* 瑙f瀽environment.json涓殑stations淇℃伅
*
* @param filePath 鏂囦欢鍦板潃
@@ -219,21 +208,18 @@
Map.class
);
- // 瑙f瀽width
if (topLevelMap.containsKey("width")) {
environmentMap.put("width", Integer.parseInt(topLevelMap.get("width").toString()));
} else {
environmentMap.put("width", 78);
}
- // 瑙f瀽height
if (topLevelMap.containsKey("width")) {
environmentMap.put("height", Integer.parseInt(topLevelMap.get("height").toString()));
} else {
environmentMap.put("height", 50);
}
- // 瑙f瀽stations淇℃伅
if (topLevelMap.containsKey("stations")) {
Map<String, Map<String, Object>> stations = new HashMap<>();
Map<String, Object> stationMap = (Map<String, Object>) topLevelMap.get("stations");
@@ -292,14 +278,12 @@
for (String line : lines) {
line = line.trim();
- // 鏌ユ壘宸ヤ綔绔橧D
if (line.startsWith("\"") && line.contains("\":{")) {
int endIndex = line.indexOf("\":{");
currentStation = line.substring(1, endIndex);
stations.put(currentStation, new HashMap<>());
}
- // 瑙f瀽capacity
if (currentStation != null && line.contains("\"capacity\":")) {
String capacityStr = line.substring(line.indexOf("\"capacity\":") + 11);
capacityStr = capacityStr.substring(0, capacityStr.indexOf(",")).trim();
@@ -311,7 +295,6 @@
}
}
- // 瑙f瀽load_position鍜寀nload_position
if (currentStation != null && line.contains("\"load_position\":")) {
List<Integer> loadPos = parsePosition(stationsSection, currentStation, "load_position");
if (loadPos != null) {
@@ -372,7 +355,7 @@
}
/**
- * 鎻愬彇JSON涓殑鐗瑰畾閮ㄥ垎
+ * 鎻愬彇JSON涓壒瀹氶儴鍒�
*
* @param jsonContent JSON鍐呭
* @param sectionName 閮ㄥ垎鍚嶇О
@@ -421,6 +404,64 @@
return new int[]{coordMap.get("x"), coordMap.get("y")};
}
return null;
+ }
+
+ /**
+ * 鍔犺浇瀹為檯鐗╃悊鍧愭爣鏄犲皠
+ *
+ * @param filePath 鏂囦欢璺緞
+ * @return 瀹為檯鍧愭爣鏄犲皠 Map<pathId, double[]{x_mm, y_mm}>
+ */
+ public static Map<String, double[]> loadRealCoordinateMapping(String filePath) {
+ Map<String, double[]> coordinateMapping = new HashMap<>();
+ ObjectMapper objectMapper = new ObjectMapper();
+
+ try {
+ Map<String, Object> topLevelMap = objectMapper.readValue(new File(filePath), Map.class);
+
+ if (!topLevelMap.containsKey("path_id_to_coordinates")) {
+ System.err.println("鏈壘鍒皃ath_id_to_coordinates閮ㄥ垎");
+ return coordinateMapping;
+ }
+
+ Map<String, Object> pathIdCoords = (Map<String, Object>) topLevelMap.get("path_id_to_coordinates");
+ for (Map.Entry<String, Object> entry : pathIdCoords.entrySet()) {
+ String pathId = entry.getKey();
+ Object coordsObj = entry.getValue();
+
+ if (coordsObj instanceof List) {
+ List<?> coordsList = (List<?>) coordsObj;
+ if (!coordsList.isEmpty()) {
+ Map<?, ?> coordMap = (Map<?, ?>) coordsList.get(0);
+ double x = ((Number) coordMap.get("x")).doubleValue();
+ double y = ((Number) coordMap.get("y")).doubleValue();
+ coordinateMapping.put(pathId, new double[]{x, y});
+ }
+ }
+ }
+
+ System.out.println("鎴愬姛鍔犺浇瀹為檯鍧愭爣鏄犲皠锛屽寘鍚� " + coordinateMapping.size() + " 涓矾寰勭偣");
+
+ } catch (FileNotFoundException e) {
+ System.err.println("瀹為檯鍧愭爣鏂囦欢涓嶅瓨鍦�: " + e.getMessage());
+ } catch (IOException e) {
+ System.err.println("瀹為檯鍧愭爣鏂囦欢璇诲彇閿欒: " + e.getMessage());
+ } catch (Exception e) {
+ System.err.println("鍔犺浇瀹為檯鍧愭爣鏂囦欢澶辫触: " + e.getMessage());
+ }
+
+ return coordinateMapping;
+ }
+
+ /**
+ * 鑾峰彇璺緞鐐圭殑瀹為檯鍧愭爣
+ *
+ * @param pathId 璺緞鐐笽D
+ * @param realCoordinateMap 瀹為檯鍧愭爣鏄犲皠
+ * @return 鍧愭爣鏁扮粍 [x_mm, y_mm]锛屽鏋滄湭鎵惧埌杩斿洖null
+ */
+ public static double[] getRealCoordinate(String pathId, Map<String, double[]> realCoordinateMap) {
+ return realCoordinateMap.get(pathId);
}
/**
@@ -483,4 +524,111 @@
int dy = coord1[1] - coord2[1];
return Math.sqrt(dx * dx + dy * dy);
}
+
+ /**
+ * 鍔犺浇鐜璺緞杩為�氭�ф暟鎹紙environment.json涓殑paths鍜宱bstacles锛�
+ *
+ * @param filePath 鐜鏂囦欢璺緞
+ * @return 鐜杩為�氭�ф暟鎹�
+ */
+ public static EnvironmentConnectivity loadEnvironmentConnectivity(String filePath) {
+ EnvironmentConnectivity connectivity = new EnvironmentConnectivity();
+ ObjectMapper objectMapper = new ObjectMapper();
+
+ try {
+ Map<String, Object> topLevelMap = objectMapper.readValue(new File(filePath), Map.class);
+
+ // 鍔犺浇鍙�氳璺緞
+ if (topLevelMap.containsKey("paths")) {
+ List<Map<String, Object>> pathsList = (List<Map<String, Object>>) topLevelMap.get("paths");
+ for (Map<String, Object> pathPoint : pathsList) {
+ Integer x = (Integer) pathPoint.get("x");
+ Integer y = (Integer) pathPoint.get("y");
+ if (x != null && y != null) {
+ connectivity.addValidPath(x, y);
+ }
+ }
+ }
+
+ // 鍔犺浇闅滅鐗�
+ if (topLevelMap.containsKey("obstacles")) {
+ List<Map<String, Object>> obstaclesList = (List<Map<String, Object>>) topLevelMap.get("obstacles");
+ for (Map<String, Object> obstacle : obstaclesList) {
+ Integer x = (Integer) obstacle.get("x");
+ Integer y = (Integer) obstacle.get("y");
+ if (x != null && y != null) {
+ connectivity.addObstacle(x, y);
+ }
+ }
+ }
+
+ System.out.println("鎴愬姛鍔犺浇鐜杩為�氭�ф暟鎹細" +
+ connectivity.getValidPathsCount() + " 涓彲閫氳鐐癸紝" +
+ connectivity.getObstaclesCount() + " 涓殰纰嶇墿鐐�");
+
+ } catch (FileNotFoundException e) {
+ System.err.println("鐜鏂囦欢涓嶅瓨鍦�: " + e.getMessage());
+ } catch (IOException e) {
+ System.err.println("鐜鏂囦欢璇诲彇閿欒: " + e.getMessage());
+ } catch (Exception e) {
+ System.err.println("鍔犺浇鐜杩為�氭�ф暟鎹け璐�: " + e.getMessage());
+ }
+
+ return connectivity;
+ }
+
+ /**
+ * 鐜杩為�氭�ф暟鎹被
+ */
+ public static class EnvironmentConnectivity {
+ private final Set<String> validPaths = new HashSet<>();
+ private final Set<String> obstacles = new HashSet<>();
+
+ public void addValidPath(int x, int y) {
+ validPaths.add(x + "," + y);
+ }
+
+ public void addObstacle(int x, int y) {
+ obstacles.add(x + "," + y);
+ }
+
+ public boolean isValidPath(int x, int y) {
+ return validPaths.contains(x + "," + y);
+ }
+
+ public boolean isObstacle(int x, int y) {
+ return obstacles.contains(x + "," + y);
+ }
+
+ public boolean isTraversable(int x, int y) {
+ return isValidPath(x, y) && !isObstacle(x, y);
+ }
+
+ public int getValidPathsCount() {
+ return validPaths.size();
+ }
+
+ public int getObstaclesCount() {
+ return obstacles.size();
+ }
+
+ /**
+ * 鑾峰彇鏈夋晥鐨勭浉閭昏妭鐐�
+ */
+ public List<int[]> getValidNeighbors(int x, int y) {
+ List<int[]> neighbors = new ArrayList<>();
+ int[][] directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // 涓婁笅宸﹀彸
+
+ for (int[] dir : directions) {
+ int newX = x + dir[0];
+ int newY = y + dir[1];
+
+ if (isTraversable(newX, newY)) {
+ neighbors.add(new int[]{newX, newY});
+ }
+ }
+
+ return neighbors;
+ }
+ }
}
\ No newline at end of file
diff --git a/algo-zkd/src/main/java/com/algo/util/PathTimeCalculator.java b/algo-zkd/src/main/java/com/algo/util/PathTimeCalculator.java
new file mode 100644
index 0000000..3f9ddcf
--- /dev/null
+++ b/algo-zkd/src/main/java/com/algo/util/PathTimeCalculator.java
@@ -0,0 +1,318 @@
+package com.algo.util;
+
+import com.algo.model.CTUPhysicalConfig;
+import com.algo.model.PathCode;
+import com.algo.model.PlannedPath;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 璺緞鏃堕棿璁$畻鍣�
+ * 缁熶竴澶勭悊璺緞涓瘡涓偣鐨勬椂闂磋绠楋紝纭繚鍦ㄥ悇涓ā鍧椾腑璁$畻鐨勪竴鑷存��
+ * 鑰冭檻鍔犲噺閫熴�佽浆鍚戙�佸仠鐣欑瓑鎵�鏈夋椂闂村洜绱�
+ */
+public class PathTimeCalculator {
+
+ /**
+ * 璺緞鏄犲皠琛紙缃戞牸鍧愭爣锛�
+ */
+ private final Map<String, Map<String, Integer>> pathMapping;
+
+ /**
+ * 瀹為檯鍧愭爣鏄犲皠琛紙鐗╃悊鍧愭爣锛屾绫筹級
+ */
+ private final Map<String, double[]> realCoordinateMapping;
+
+ public PathTimeCalculator(Map<String, Map<String, Integer>> pathMapping,
+ Map<String, double[]> realCoordinateMapping) {
+ this.pathMapping = pathMapping;
+ this.realCoordinateMapping = realCoordinateMapping;
+ }
+
+ /**
+ * 涓鸿矾寰勮绠楁椂闂翠俊鎭�
+ *
+ * @param path 瑙勫垝璺緞
+ * @param startTime 璧峰鏃堕棿锛堟绉掓椂闂存埑锛�
+ * @param config CTU鐗╃悊閰嶇疆
+ * @param initialSpeed 鍒濆閫熷害锛堢背/绉掞級
+ */
+ public void calculatePathTiming(PlannedPath path, long startTime,
+ CTUPhysicalConfig config, double initialSpeed) {
+ List<PathCode> codeList = path.getCodeList();
+ if (codeList == null || codeList.isEmpty()) {
+ return;
+ }
+
+ long currentTime = startTime;
+ double currentSpeed = initialSpeed;
+
+ for (int i = 0; i < codeList.size(); i++) {
+ PathCode currentCode = codeList.get(i);
+
+ // 璁剧疆鍒拌揪鏃堕棿
+ currentCode.setArrivalTime(currentTime);
+
+ // 璁$畻鍦ㄥ綋鍓嶄綅缃殑鍋滅暀鏃堕棿
+ double stayDuration = calculateStayDuration(currentCode, config);
+
+ // 濡傛灉涓嶆槸鏈�鍚庝竴涓偣锛岃绠楄浆鍚戞椂闂�
+ if (i < codeList.size() - 1) {
+ PathCode nextCode = codeList.get(i + 1);
+ double turnTime = calculateTurnTime(currentCode, nextCode, config);
+ stayDuration += turnTime;
+ }
+
+ // 璁剧疆绂诲紑鏃堕棿
+ long departureTime = currentTime + (long)(stayDuration * 1000);
+ currentCode.setDepartureTime(departureTime);
+
+ // 璁$畻绱鏃堕棿
+ currentCode.setCumulativeTime(departureTime - startTime);
+
+ // 濡傛灉鏈変笅涓�涓偣锛岃绠楃Щ鍔ㄦ椂闂村拰閫熷害鍙樺寲
+ if (i < codeList.size() - 1) {
+ PathCode nextCode = codeList.get(i + 1);
+
+ // 璁$畻绮剧‘鐨勭Щ鍔ㄦ椂闂达紙鑰冭檻鍔犲噺閫燂級
+ MovementTimeResult movement = calculatePreciseMovementTime(
+ currentCode, nextCode, currentSpeed, config
+ );
+
+ currentTime = departureTime + movement.travelTime;
+ currentSpeed = movement.endSpeed;
+ }
+ }
+ }
+
+ /**
+ * 璁$畻涓ょ偣闂寸Щ鍔ㄦ椂闂�
+ */
+ private MovementTimeResult calculatePreciseMovementTime(PathCode fromCode, PathCode toCode,
+ double startSpeed, CTUPhysicalConfig config) {
+ // 鑾峰彇瀹為檯璺濈
+ double realDistance = getRealDistance(fromCode.getCode(), toCode.getCode());
+
+ if (realDistance <= 0) {
+ // 澶囩敤锛氫娇鐢ㄧ綉鏍艰窛绂�
+ realDistance = getGridDistance(fromCode.getCode(), toCode.getCode())
+ * config.getStandardPointDistance();
+ }
+
+ // 纭畾鐩爣閫熷害锛堣�冭檻鏄惁涓虹洰鏍囩偣锛�
+ double targetSpeed = toCode.isTargetPoint() ? 0.0 : config.getNormalSpeed();
+
+ // 浣跨敤鐗╃悊閰嶇疆鐨勭簿纭绠楁柟娉�
+ double movementTime = config.calculatePreciseMovementTime(
+ realDistance, startSpeed, targetSpeed, config.getNormalSpeed()
+ );
+
+ return new MovementTimeResult((long)(movementTime * 1000), targetSpeed);
+ }
+
+ /**
+ * 璁$畻鍦ㄨ矾寰勭偣鐨勫仠鐣欐椂闂�
+ */
+ private double calculateStayDuration(PathCode pathCode, CTUPhysicalConfig config) {
+ double stayTime = 0.1; // 鍩虹鍋滅暀鏃堕棿100ms
+
+ // 鏍规嵁鍔ㄤ綔绫诲瀷澧炲姞鍋滅暀鏃堕棿
+ if (pathCode.getActionType() != null) {
+ switch (pathCode.getActionType()) {
+ case "1": // 鍙栬揣
+ stayTime += 10.0;
+ break;
+ case "2": // 鏀捐揣
+ stayTime += 10.0;
+ break;
+ case "3": // 鍏呯數
+ stayTime += 600.0;
+ break;
+ default:
+ stayTime += 0.5;
+ break;
+ }
+ } else if (pathCode.isTargetPoint()) {
+ // 鐩爣鐐瑰仠鐣欐椂闂�
+ if ("1".equals(pathCode.getPosType())) {
+ stayTime += 10.0; // 鍙栬揣
+ } else if ("2".equals(pathCode.getPosType())) {
+ stayTime += 10.0; // 鏀捐揣
+ } else {
+ stayTime += 10.0; // 鍏朵粬鐩爣鐐�
+ }
+ }
+
+ return stayTime;
+ }
+
+ /**
+ * 璁$畻杞悜鏃堕棿
+ */
+ private double calculateTurnTime(PathCode fromCode, PathCode toCode, CTUPhysicalConfig config) {
+ if (fromCode.getDirection().equals(toCode.getDirection())) {
+ return 0.0;
+ }
+
+ // 浣跨敤閰嶇疆鐨勮浆鍚戞椂闂磋绠楁柟娉�
+ return config.getTurnTime(fromCode.getDirection(), toCode.getDirection());
+ }
+
+ /**
+ * 鑾峰彇瀹為檯鐗╃悊璺濈
+ */
+ private double getRealDistance(String fromCode, String toCode) {
+ if (realCoordinateMapping == null) {
+ return 0.0;
+ }
+
+ double[] fromCoord = realCoordinateMapping.get(fromCode);
+ double[] toCoord = realCoordinateMapping.get(toCode);
+
+ if (fromCoord != null && toCoord != null) {
+ return CTUPhysicalConfig.calculateRealDistance(fromCoord, toCoord);
+ }
+
+ return 0.0;
+ }
+
+ /**
+ * 鑾峰彇缃戞牸璺濈
+ */
+ private double getGridDistance(String fromCode, String toCode) {
+ int[] fromCoord = JsonUtils.getCoordinate(fromCode, pathMapping);
+ int[] toCoord = JsonUtils.getCoordinate(toCode, pathMapping);
+
+ if (fromCoord != null && toCoord != null) {
+ return JsonUtils.calculateEuclideanDistance(fromCoord, toCoord);
+ }
+
+ return 1.0; // 榛樿璺濈
+ }
+
+ /**
+ * 璁$畻璺緞涓寚瀹氫綅缃箣鍚庣殑鏃堕棿锛堢敤浜庡啿绐佽В鍐筹級
+ *
+ * @param path 璺緞
+ * @param fromIndex 寮�濮嬮噸鏂拌绠楃殑绱㈠紩
+ * @param config 鐗╃悊閰嶇疆
+ */
+ public void recalculatePathTimingFromIndex(PlannedPath path, int fromIndex, CTUPhysicalConfig config) {
+ List<PathCode> codeList = path.getCodeList();
+ if (codeList == null || fromIndex >= codeList.size()) {
+ return;
+ }
+
+ // 鑾峰彇閲嶆柊璁$畻璧风偣鐨勬椂闂村拰閫熷害
+ PathCode startCode = codeList.get(fromIndex);
+ long startTime = startCode.getDepartureTime() != null ?
+ startCode.getDepartureTime() : startCode.getArrivalTime();
+
+ // 浼扮畻褰撳墠閫熷害
+ double currentSpeed = config.getNormalSpeed();
+
+ // 浠庢寚瀹氫綅缃紑濮嬮噸鏂拌绠�
+ long currentTime = startTime;
+
+ for (int i = fromIndex + 1; i < codeList.size(); i++) {
+ PathCode currentCode = codeList.get(i);
+ PathCode previousCode = codeList.get(i - 1);
+
+ // 璁$畻绉诲姩鏃堕棿
+ MovementTimeResult movement = calculatePreciseMovementTime(
+ previousCode, currentCode, currentSpeed, config
+ );
+
+ currentTime += movement.travelTime;
+ currentSpeed = movement.endSpeed;
+
+ // 璁剧疆鍒拌揪鏃堕棿
+ currentCode.setArrivalTime(currentTime);
+
+ // 璁$畻鍋滅暀鏃堕棿
+ double stayDuration = calculateStayDuration(currentCode, config);
+
+ // 濡傛灉涓嶆槸鏈�鍚庝竴涓偣锛屽鍔犺浆鍚戞椂闂�
+ if (i < codeList.size() - 1) {
+ PathCode nextCode = codeList.get(i + 1);
+ double turnTime = calculateTurnTime(currentCode, nextCode, config);
+ stayDuration += turnTime;
+ }
+
+ // 璁剧疆绂诲紑鏃堕棿
+ long departureTime = currentTime + (long)(stayDuration * 1000);
+ currentCode.setDepartureTime(departureTime);
+
+ // 鏇存柊绱鏃堕棿
+ long pathStartTime = codeList.get(0).getArrivalTime();
+ currentCode.setCumulativeTime(departureTime - pathStartTime);
+
+ currentTime = departureTime;
+ }
+ }
+
+ /**
+ * 璁$畻璺緞鐨勬�绘墽琛屾椂闂�
+ */
+ public long calculateTotalPathTime(PlannedPath path) {
+ List<PathCode> codeList = path.getCodeList();
+ if (codeList == null || codeList.isEmpty()) {
+ return 0;
+ }
+
+ PathCode firstCode = codeList.get(0);
+ PathCode lastCode = codeList.get(codeList.size() - 1);
+
+ if (firstCode.getArrivalTime() != null && lastCode.getDepartureTime() != null) {
+ return lastCode.getDepartureTime() - firstCode.getArrivalTime();
+ }
+
+ return 0;
+ }
+
+ /**
+ * 妫�鏌ヨ矾寰勫湪鎸囧畾鏃堕棿绐楀彛鏄惁涓庡崰鐢ㄨ〃鍐茬獊
+ */
+ public boolean isPathTimeConflictFree(PlannedPath path, Map<String, String> occupancyMap) {
+ List<PathCode> codeList = path.getCodeList();
+ if (codeList == null || codeList.isEmpty()) {
+ return true;
+ }
+
+ for (PathCode pathCode : codeList) {
+ if (pathCode.getArrivalTime() == null || pathCode.getDepartureTime() == null) {
+ continue;
+ }
+
+ int[] coord = JsonUtils.getCoordinate(pathCode.getCode(), pathMapping);
+ if (coord == null) continue;
+
+ // 妫�鏌ユ暣涓仠鐣欐椂闂存
+ long startTimeSlot = pathCode.getArrivalTime() / 1000;
+ long endTimeSlot = pathCode.getDepartureTime() / 1000;
+
+ for (long timeSlot = startTimeSlot; timeSlot <= endTimeSlot; timeSlot++) {
+ String spaceTimeKey = coord[0] + "," + coord[1] + "," + timeSlot;
+ if (occupancyMap.containsKey(spaceTimeKey)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * 绉诲姩鏃堕棿璁$畻缁撴灉
+ */
+ private static class MovementTimeResult {
+ final long travelTime; // 绉诲姩鏃堕棿锛堟绉掞級
+ final double endSpeed; // 缁撴潫閫熷害锛堢背/绉掞級
+
+ public MovementTimeResult(long travelTime, double endSpeed) {
+ this.travelTime = travelTime;
+ this.endSpeed = endSpeed;
+ }
+ }
+}
--
Gitblit v1.9.1