From 974528d5cf6b72a5b733b061ce52efe6693dbb91 Mon Sep 17 00:00:00 2001 From: Davide Cappellini Date: Sun, 20 Sep 2026 23:44:42 +0200 Subject: [PATCH] feat(gun_harness): offline gun range, proven equivalent to live play Gun evaluation previously required a full end-to-end battle (Java server + battle runner + websocket IPC to 2 bot processes, 50 rounds, ~3.4 min) and yielded only ~300-900 REAL shots across 13 guns -- far too few to rank guns, which is why tuning needed many repetitions. VirtualTracker is already a pure function of (WorldState stream, gun list); the only reason it needed Java was where WorldState came from. So the range replays a seq[WorldState] through the SAME tracker: offline and online scores are the same metric by construction, not an approximation. ACCEPTANCE TEST (the point of the whole thing): record one live round, replay it offline, compare per-gun virtual hit rates. 12/12 deterministic guns match EXACTLY, reproduced twice. Tsetlin is compared separately because tmLearnOne calls rand(). Getting to 12/12 exposed two real ordering quirks in the live loop: run() calls go() before the aim/fire block, so tickBullets resolves against the NEXT tick's scan while the prediction used the previous one; and if the target dies during that go() the final tick's spawn+resolution is skipped entirely. The recorder emits an end marker for the second case. The 5th (selected-gun) predict call was verified to be a no-op. Measured cost: 8 fixtures (1770 ticks, ~92k virtual bullets, 13 guns) replay in 2.9 s, ~32k virtual bullets/s -- roughly 70x faster and 100x more samples than a live gauntlet. Also adds a per-tick WorldState recorder behind const RecordWorldState (default off, mirrors the ShotLog idiom) which records the state the bot ACTUALLY builds, staleness included, rather than true positions -- recording the latter would hand the guns perfect information and produce flattering scores. 9 new guard checks (33 total, all passing), including fixture round-trip, replay determinism, stationary->HeadOn 100%, constant-velocity->Linear>HeadOn, and the energy-threshold turner crossing at t=41. --- .gitignore | 4 + ModularBot_garage/src/ModularBot.nim | 69 ++- common_libs/gun_harness/offline_range.nim | 509 ++++++++++++++++++ .../tests/acceptance_offline_vs_online.nim | 115 ++++ common_libs/tests/gen_synthetic_fixtures.nim | 21 + common_libs/tests/range_guns.nim | 42 ++ common_libs/tests/run_range.nim | 66 +++ common_libs/tests/test_gun_harness.nim | 88 ++- tools/fixtures/circular.jsonl | 222 ++++++++ tools/fixtures/constant-velocity.jsonl | 152 ++++++ tools/fixtures/decel-before-turn.jsonl | 262 +++++++++ tools/fixtures/energy-threshold-turner.jsonl | 202 +++++++ tools/fixtures/oscillator.jsonl | 242 +++++++++ tools/fixtures/random-walk.jsonl | 262 +++++++++ tools/fixtures/stationary.jsonl | 202 +++++++ tools/fixtures/wall-bounce.jsonl | 242 +++++++++ 16 files changed, 2698 insertions(+), 2 deletions(-) create mode 100644 common_libs/gun_harness/offline_range.nim create mode 100644 common_libs/tests/acceptance_offline_vs_online.nim create mode 100644 common_libs/tests/gen_synthetic_fixtures.nim create mode 100644 common_libs/tests/range_guns.nim create mode 100644 common_libs/tests/run_range.nim create mode 100644 tools/fixtures/circular.jsonl create mode 100644 tools/fixtures/constant-velocity.jsonl create mode 100644 tools/fixtures/decel-before-turn.jsonl create mode 100644 tools/fixtures/energy-threshold-turner.jsonl create mode 100644 tools/fixtures/oscillator.jsonl create mode 100644 tools/fixtures/random-walk.jsonl create mode 100644 tools/fixtures/stationary.jsonl create mode 100644 tools/fixtures/wall-bounce.jsonl diff --git a/.gitignore b/.gitignore index 84708fe..b71a81a 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,7 @@ worktrees/ # Nimble puts the bot binary at the garage root (out/ is ignored, this was not) *_garage/ModularBot + +# Test fixtures are data, not logs - the *.jsonl rule above was written for +# training logs and silently excluded the entire gun-range fixture set. +!tools/fixtures/**/*.jsonl diff --git a/ModularBot_garage/src/ModularBot.nim b/ModularBot_garage/src/ModularBot.nim index 048df7c..1652fe3 100644 --- a/ModularBot_garage/src/ModularBot.nim +++ b/ModularBot_garage/src/ModularBot.nim @@ -38,6 +38,11 @@ const DebugCircular = false ## Task A instrumentation: log every real shot + its eventual outcome to ## /tmp/shot_log.jsonl. Set to false to compile all shot-log machinery out. const ShotLog = true +## Offline range recorder: when true, append the exact WorldState the bot builds +## each tick to /tmp/worldstate_record.jsonl so it can be replayed offline. +## Mirrors the ShotLog idiom: false compiles the machinery out entirely. +const RecordWorldState = false +const WorldStateRecordPath = "/tmp/worldstate_record.jsonl" const GunNames = ["HeadOn", "Linear", "Tsetlin", "Circular", "GuessFactor", "Pattern", "WallBounce", "Accel", "StopShot", "Displace", "AvgLead", "DecayGF", "KNN"] const @@ -185,12 +190,68 @@ proc printConfig(bot: ModularBot, changed: string = "") = bot.prevRadar = bot.radarMode bot.prevTarget = bot.currentTargetId +proc startWorldStateRecord(bot: ModularBot) = + ## Truncate the fixture and write the meta line at round start. + when RecordWorldState: + try: + let f = open(WorldStateRecordPath, fmWrite) + f.writeLine($(%*{"meta": { + "adversary": "live-recorded", + "source": "live", + "perfect_info": false, + "arena": {"w": getArenaWidth().float, "h": getArenaHeight().float}, + "note": "exact WorldState the bot built, with tracker lastSeenTick", + }})) + f.close() + except CatchableError: + discard + +proc finishWorldStateRecord(bot: ModularBot) = + ## Append the end marker so the offline replay can reproduce the live + ## resolver's final-tick behaviour: if the target died during the last go() + ## the live aim block was skipped, so no bullet resolved on that tick. + when RecordWorldState: + var died = false + if bot.lastKnownTargetId >= 0 and bot.enemyTracker.enemies.contains(bot.lastKnownTargetId): + died = not bot.enemyTracker.enemies[bot.lastKnownTargetId].alive + try: + let f = open(WorldStateRecordPath, fmAppend) + f.writeLine($(%*{"end": {"enemy_died": died}})) + f.close() + except CatchableError: + discard + +proc recordWorldState(bot: ModularBot, ws: WorldState) = + ## Append one tick of the state the bot ACTUALLY built (including the stale + ## tracker positions between radar scans) so the offline replay sees the same + ## information the guns saw online. + when RecordWorldState: + let tid = bot.currentTargetId + var lst = -1 + if tid >= 0 and bot.enemyTracker.enemies.contains(tid): + lst = bot.enemyTracker.enemies[tid].lastSeenTick + var row = %*{ + "tick": ws.tick, + "ex": ws.enemyX, "ey": ws.enemyY, + "eh": ws.enemyHeading, "es": ws.enemySpeed, "ee": ws.enemyEnergy, + "sx": ws.selfX, "sy": ws.selfY, + "sh": ws.selfHeading, "ss": ws.selfSpeed, "se": ws.selfEnergy, + "eid": tid, + } + if lst >= 0: row["lst"] = %lst + try: + let f = open(WorldStateRecordPath, fmAppend) + f.writeLine($row) + f.close() + except CatchableError: + discard + proc buildState(bot: ModularBot, ex, ey, espeed, eheading, eenergy: float): WorldState = var ei: seq[EnemyInfo] for es in bot.enemyTracker.allAlive(): ei.add EnemyInfo(id: es.id, x: es.x, y: es.y, heading: es.heading, speed: es.speed, energy: es.energy) - WorldState( + result = WorldState( enemyX: ex, enemyY: ey, enemySpeed: espeed, @@ -207,6 +268,8 @@ proc buildState(bot: ModularBot, ex, ey, espeed, eheading, eenergy: float): Worl tick: bot.tick, enemies: ei, ) + when RecordWorldState: + bot.recordWorldState(result) method onScannedBot*(bot: ModularBot, e: ScannedBotEvent) = bot.enemyTracker.update(e.scannedBotId, e.x, e.y, e.direction, e.speed, e.energy, bot.tick) @@ -247,6 +310,8 @@ method onHitByBullet*(bot: ModularBot, e: HitByBulletEvent) = method onRoundEnded*(bot: ModularBot, e: RoundEndedEventForBot) = ## Dump per-gun virtual bullet stats to /tmp/gun_stats.jsonl (one line per round). + when RecordWorldState: + bot.finishWorldStateRecord() # Use lastKnownTargetId: currentTargetId is -1 if enemy died before round end let targetId = if bot.currentTargetId >= 0: bot.currentTargetId else: bot.lastKnownTargetId # Per-target fitness when known, else a deterministic recency-weighted aggregate @@ -306,6 +371,8 @@ method onRoundEnded*(bot: ModularBot, e: RoundEndedEventForBot) = method onRoundStarted*(bot: ModularBot, e: RoundStartedEvent) = bot.roundNumber = e.roundNumber + when RecordWorldState: + bot.startWorldStateRecord() bot.realShotsFired = 0 bot.realHits = 0 bot.lastKnownTargetId = -1 diff --git a/common_libs/gun_harness/offline_range.nim b/common_libs/gun_harness/offline_range.nim new file mode 100644 index 0000000..9588f46 --- /dev/null +++ b/common_libs/gun_harness/offline_range.nim @@ -0,0 +1,509 @@ +## Offline gun range: replay recorded or synthetic `WorldState` streams through +## the EXISTING `VirtualTracker`, exactly as ModularBot's live loop drives it — +## no Java server, no radar, no movement module and no real firing. +## +## Why this is definitionally the same metric as the online one: virtual-bullet +## fitness is already a pure function of (a stream of `WorldState`, a list of +## guns). The only thing the Java battle supplies is where the states come from. +## Guns keep their own internal history, so a `seq[WorldState]` replayed IN ORDER +## is a complete movement history. +## +## Fixture format (JSONL): +## optional first line: +## {"meta":{"adversary":"","source":"synthetic|classic-robocode|live", +## "perfect_info":false,"arena":{"w":800,"h":600},"note":"..."}} +## then one line per tick, Tank Royale convention (0° = East, CCW +, degrees): +## {"tick":,"ex":,"ey":,"eh":,"es":,"ee":, +## "sx":,"sy":,"sh":,"ss":,"se":} +## `e*` is the enemy to predict, `s*` is the shooter. +## Two optional per-tick extensions are written by the ModularBot recorder and +## tolerated (defaulted) by every other producer: +## "lst": enemyTracker.lastSeenTick at this tick (staleness fidelity) +## "eid": enemy bot id (fitness bucket; defaults to 1) +## A trailing live end marker is also optional: +## {"end":{"enemy_died":,"ticks":}} +## It lets the replay reproduce the live resolver's final-tick behaviour. +## +## The replay never calls the gun selector, so it is RNG-free for every +## deterministic gun. Tsetlin is stochastic and is expected to differ. + +import std/[json, os, strformat, math, tables, strutils, random] +import gun_interface +import virtual_bullets + +export gun_interface, virtual_bullets + +const + DefaultArenaW* = 800.0 + DefaultArenaH* = 600.0 + DefaultEnemyId* = 1 + +type + FixtureMeta* = object + adversary*: string + source*: string ## "synthetic" | "classic-robocode" | "live" + perfectInfo*: bool + arenaW*, arenaH*: float + note*: string + + Fixture* = object + meta*: FixtureMeta + states*: seq[WorldState] + lastSeen*: seq[int] ## parallel to states; -1 = unknown (use state.tick) + enemyId*: int + enemyDied*: bool ## target was dead at round end (recorder end marker) + + BinStat* = object + shots*, hits*: int + + GunReport* = object + ## Per-gun fitness over the whole fixture, computed with the SAME window + ## semantics as ModularBot.onRoundEnded (min(count, WindowSize), iterate the + ## ring slots 0.. always ready (Tsetlin gate) + + GunBox[G] = ref object + g: G + +proc makeDriver*[G](name: string, gun: G): GunDriver = + ## Wrap a concrete gun value in a type-erased driver. + let box = GunBox[G](g: gun) + result.name = name + result.predictCb = proc(state: WorldState, bulletSpeed: float): GunPrediction = + box.g.predict(state, bulletSpeed) + result.resultCb = proc(e: FeedbackEvent) = + box.g.onResult(e) + when compiles(box.g.isWarmedUp()): + result.readyCb = proc(): bool = box.g.isWarmedUp() + else: + result.readyCb = nil + +# ── fixture I/O ─────────────────────────────────────────────────────────────── + +proc initMeta*(source = "synthetic", arenaW = DefaultArenaW, + arenaH = DefaultArenaH): FixtureMeta = + FixtureMeta(source: source, arenaW: arenaW, arenaH: arenaH) + +proc initFixture*(states: seq[WorldState], meta: FixtureMeta, + lastSeen: seq[int] = @[], enemyId = DefaultEnemyId, + enemyDied = false): Fixture = + Fixture(meta: meta, states: states, lastSeen: lastSeen, enemyId: enemyId, + enemyDied: enemyDied) + +proc stateToJson(ws: WorldState, lst: int, eid: int): JsonNode = + result = %*{ + "tick": ws.tick, + "ex": ws.enemyX, "ey": ws.enemyY, + "eh": ws.enemyHeading, "es": ws.enemySpeed, "ee": ws.enemyEnergy, + "sx": ws.selfX, "sy": ws.selfY, + "sh": ws.selfHeading, "ss": ws.selfSpeed, "se": ws.selfEnergy, + } + if lst >= 0: result["lst"] = %lst + if eid >= 0: result["eid"] = %eid + +proc metaToJson(m: FixtureMeta): JsonNode = + %*{"meta": { + "adversary": m.adversary, + "source": m.source, + "perfect_info": m.perfectInfo, + "arena": {"w": m.arenaW, "h": m.arenaH}, + "note": m.note, + }} + +proc stateFromJson(node: JsonNode, arenaW, arenaH: float, + enemyId: int): WorldState = + let ex = node["ex"].getFloat() + let ey = node["ey"].getFloat() + result = WorldState( + enemyX: ex, enemyY: ey, + enemyHeading: node["eh"].getFloat(), + enemySpeed: node["es"].getFloat(), + enemyEnergy: node["ee"].getFloat(), + selfX: node["sx"].getFloat(), + selfY: node["sy"].getFloat(), + selfHeading: node["sh"].getFloat(), + selfRadarHeading: node["sh"].getFloat(), + selfSpeed: node["ss"].getFloat(), + selfEnergy: node["se"].getFloat(), + arenaWidth: arenaW, + arenaHeight: arenaH, + tick: node["tick"].getInt(), + enemies: @[EnemyInfo(id: enemyId, x: ex, y: ey, + heading: node["eh"].getFloat(), + speed: node["es"].getFloat(), + energy: node["ee"].getFloat())], + ) + +proc parseMeta(node: JsonNode): FixtureMeta = + result = initMeta() + if node.hasKey("adversary"): result.adversary = node["adversary"].getStr() + if node.hasKey("source"): result.source = node["source"].getStr() + if node.hasKey("perfect_info"): result.perfectInfo = node["perfect_info"].getBool() + if node.hasKey("note"): result.note = node["note"].getStr() + if node.hasKey("arena"): + let a = node["arena"] + if a.hasKey("w"): result.arenaW = a["w"].getFloat() + if a.hasKey("h"): result.arenaH = a["h"].getFloat() + +proc saveFixture*(path: string, fx: Fixture) = + ## Write a fixture as JSONL. Truncates the file. A trailing `end` marker + ## records whether the target died at round end (live-resolver semantics). + let f = open(path, fmWrite) + defer: f.close() + f.writeLine($metaToJson(fx.meta)) + for i, ws in fx.states: + let lst = if i < fx.lastSeen.len: fx.lastSeen[i] else: -1 + f.writeLine($stateToJson(ws, lst, fx.enemyId)) + f.writeLine($(%*{"end": {"enemy_died": fx.enemyDied, "ticks": fx.states.len}})) + +proc saveFixture*(path: string, states: seq[WorldState], meta: FixtureMeta, + lastSeen: seq[int] = @[], enemyId = DefaultEnemyId, + enemyDied = false) = + saveFixture(path, initFixture(states, meta, lastSeen, enemyId, enemyDied)) + +proc loadFixture*(path: string): Fixture = + ## Parse a JSONL fixture. The meta line and the optional lst/eid fields are + ## optional; arena defaults to 800x600, enemy id to 1. + if not fileExists(path): + raise newException(IOError, "fixture not found: " & path) + result = initFixture(@[], initMeta()) + var arenaW = DefaultArenaW + var arenaH = DefaultArenaH + var enemyId = DefaultEnemyId + for rawLine in lines(path): + let line = rawLine.strip() + if line.len == 0: continue + let node = parseJson(line) + if node.hasKey("meta"): + result.meta = parseMeta(node["meta"]) + arenaW = result.meta.arenaW + arenaH = result.meta.arenaH + continue + if node.hasKey("eid"): enemyId = node["eid"].getInt() + if node.hasKey("end"): + if node["end"].hasKey("enemy_died"): + result.enemyDied = node["end"]["enemy_died"].getBool() + continue + result.states.add stateFromJson(node, arenaW, arenaH, enemyId) + result.lastSeen.add (if node.hasKey("lst"): node["lst"].getInt() else: -1) + result.enemyId = enemyId + +# ── replay engine ───────────────────────────────────────────────────────────── + +proc reportFor(tracker: VirtualTracker, drivers: seq[GunDriver], + targetId: int): seq[GunReport] = + ## Exactly the accounting ModularBot.onRoundEnded does. + let fit = tracker.fitnessFor(targetId) + for gi in 0.. onResult on the owning gun + ## The gun selector (and therefore the 5th predict on the selected gun) is not + ## replayed: every gun's per-tick caches are tick-guarded, so it is a no-op. + ## + ## `liveActual` reproduces two ModularBot ordering quirks discovered by the + ## Task 3 acceptance test: + ## 1. The live loop calls go() (which dispatches the NEXT tick's scan into + ## enemyTracker) BEFORE it builds the enemy table handed to tickBullets. + ## A fixture recorded at the WorldState construction site therefore + ## snapshots the position one tick before the one the live resolver used, + ## so the resolver reads the NEXT state's enemy pose/lastSeenTick. + ## 2. If the target died during that final go(), the live aim block (spawn AND + ## resolution) is skipped entirely; the end marker tells us so and we drop + ## the final tick's resolutions. Synthetic fixtures leave liveActual false + ## (the state at the resolution tick is the ground truth). + let tid = if targetId >= 0: targetId else: fx.enemyId + let skipFinal = liveActual and fx.enemyDied + var tracker = initTracker(drivers.len) + for si in 0..= 0: lst = fx.lastSeen[actIdx] + if act.enemies.len > 0: + for e in act.enemies: + enemyPositions[e.id] = (x: e.x, y: e.y, lastSeenTick: lst, alive: true) + else: + enemyPositions[tid] = (x: act.enemyX, y: act.enemyY, lastSeenTick: lst, alive: true) + + let dref = drivers + if not (skipFinal and si == fx.states.len - 1): + tracker.tickBullets(state, enemyPositions, + proc(gunId: GunId, binIdx: int, e: FeedbackEvent) = + dref[gunId].resultCb(e)) + + result = reportFor(tracker, drivers, tid) + +# ── formatting ──────────────────────────────────────────────────────────────── + +proc hitRate*(r: GunReport): float = + if r.shots == 0: 0.0 else: r.hits.float / r.shots.float + +proc formatReportRow*(r: GunReport): string = + ## One deterministic line: name, hits/shots, %, per-bin hits/shots. + var bins = "" + for i in 0..5}/{r.shots:<5} {hitRate(r)*100.0:>6.1f}%{bins}" + +proc formatReports*(fx: Fixture, reports: seq[GunReport]): string = + result = fmt"# {fx.meta.adversary} (source={fx.meta.source}, ticks={fx.states.len}, enemyId={fx.enemyId})" + result.add "\n" + for r in reports: + result.add formatReportRow(r) & "\n" + +# ── synthetic trajectory generators (ground truth by construction) ──────────── +# +# Coordinates: 0° = East, CCW positive. Self is stationary at (SelfX, SelfY) so +# that the trajectory is attributable solely to the enemy. Arena 800x600. + +const + SelfX = 200.0 + SelfY = 300.0 + SelfEnergy = 100.0 + +proc mkState(tick: int, ex, ey, eh, es, ee: float, + arenaW = DefaultArenaW, arenaH = DefaultArenaH, + selfX = SelfX, selfY = SelfY, selfEnergy = SelfEnergy, + enemyId = DefaultEnemyId): WorldState = + WorldState( + enemyX: ex, enemyY: ey, enemyHeading: eh, enemySpeed: es, enemyEnergy: ee, + selfX: selfX, selfY: selfY, selfSpeed: 0.0, selfHeading: 0.0, + selfRadarHeading: 0.0, selfEnergy: selfEnergy, + arenaWidth: arenaW, arenaHeight: arenaH, tick: tick, + enemies: @[EnemyInfo(id: enemyId, x: ex, y: ey, heading: eh, speed: es, energy: ee)], + ) + +proc finish(states: seq[WorldState], adversary, note: string): Fixture = + var meta = initMeta(source = "synthetic") + meta.adversary = adversary + meta.note = note + initFixture(states, meta) + +proc synthesizeStationary*(ticks = 200, ex = 600.0, ey = 300.0): Fixture = + var states: seq[WorldState] + for t in 0.. DefaultArenaW - m: nx = DefaultArenaW - m; h = 180.0 - h + if ny < m: ny = m; h = -h + elif ny > DefaultArenaH - m: ny = DefaultArenaH - m; h = -h + x = nx + y = ny + finish(states, "wall-bounce", "specular reflection off all four walls") + +proc synthesizeOscillator*(ticks = 240, ex = 200.0, ey = 300.0, + speed = 4.0, period = 30): Fixture = + var states: seq[WorldState] + var x = ex + var y = ey + for t in 0.. DefaultArenaW - m: h = 180.0 - h + if ny < m or ny > DefaultArenaH - m: h = -h + nx = clamp(nx, m, DefaultArenaW - m) + ny = clamp(ny, m, DefaultArenaH - m) + x = nx + y = ny + finish(states, "random-walk", + fmt"seeded (seed={seed}), +-{maxTurn} deg/tick heading jitter") + +proc synthesizeDecelBeforeTurn*(ticks = 260, ex = 100.0, ey = 300.0, + cruise = 6.0, cruiseTicks = 45, + turnDeg = 45.0): Fixture = + ## Known rule: accelerate to cruise, hold, brake to a full stop, pivot + ## `turnDeg` degrees while stopped, then accelerate again. The stop is the + ## tell-tale StopShot is meant to catch. + var states: seq[WorldState] + var x = ex + var y = ey + var h = 0.0 + var v = 0.0 + var phase = "accel" + var phaseT = 0 + for t in 0..= cruise: + phase = "cruise"; phaseT = 0 + of "cruise": + inc phaseT + if phaseT >= cruiseTicks: phase = "brake" + of "brake": + v = max(0.0, v - 3.0) + if v <= 0.0: + v = 0.0 + phase = "pivot"; phaseT = 0 + of "pivot": + if phaseT < 3: + h += turnDeg + inc phaseT + if phaseT >= 4: + phase = "accel" + else: discard + let hr = degToRad(h) + x += cos(hr) * v + y += sin(hr) * v + x = clamp(x, BotRadius, DefaultArenaW - BotRadius) + y = clamp(y, BotRadius, DefaultArenaH - BotRadius) + finish(states, "decel-before-turn", + "cruise -> full stop -> pivot 3x45deg -> accelerate; tests StopShot") + +proc synthesizeEnergyThresholdTurner*(ticks = 200, ex = 100.0, ey = 300.0, + e0 = 50.0, decay = 0.5, threshold = 30.0, + speed = 5.0, hardTurnDeg = 20.0): Fixture = + ## The falsifiable one. RULE (known by construction, stated in `note`): + ## energy(t) = max(5, e0 - decay*t) + ## while energy >= threshold: heading constant (straight, predictable) + ## while energy < threshold: heading += hardTurnDeg each tick (hard turn) + ## A learner that finds the rule should switch from straight-line prediction + ## to turn prediction exactly at the tick energy crosses the threshold. + var states: seq[WorldState] + var x = ex + var y = ey + var h = 0.0 + let m = BotRadius + for t in 0.. DefaultArenaW - m: h = 180.0 - h + if ny < m or ny > DefaultArenaH - m: h = -h + nx = clamp(nx, m, DefaultArenaW - m) + ny = clamp(ny, m, DefaultArenaH - m) + x = nx + y = ny + var meta = initMeta(source = "synthetic") + meta.adversary = "energy-threshold-turner" + meta.note = fmt"RULE: straight while energy>={threshold}; hard {hardTurnDeg} deg/tick turn below {threshold}; energy={e0}-{decay}*t (floor 5)" + initFixture(states, meta) + +# Named fixtures for the demo runner. +const SyntheticFixtureNames* = [ + "stationary", + "constant-velocity", + "circular", + "wall-bounce", + "oscillator", + "random-walk", + "decel-before-turn", + "energy-threshold-turner", +] + +proc synthesizeByName*(name: string): Fixture = + case name + of "stationary": synthesizeStationary() + of "constant-velocity": synthesizeConstantVelocity() + of "circular": synthesizeCircular() + of "wall-bounce": synthesizeWallBounce() + of "oscillator": synthesizeOscillator() + of "random-walk": synthesizeRandomWalk() + of "decel-before-turn": synthesizeDecelBeforeTurn() + of "energy-threshold-turner": synthesizeEnergyThresholdTurner() + else: + raise newException(ValueError, "unknown synthetic fixture: " & name) diff --git a/common_libs/tests/acceptance_offline_vs_online.nim b/common_libs/tests/acceptance_offline_vs_online.nim new file mode 100644 index 0000000..c6448e5 --- /dev/null +++ b/common_libs/tests/acceptance_offline_vs_online.nim @@ -0,0 +1,115 @@ +## Task 3: acceptance test — prove the offline range reproduces the live +## virtual-bullet metric, or the range is worthless. +## +## Steps: +## 1. run ONE live ModularBot vs OscillatorBot round with the ModularBot +## recorder ON (compiled in via `const RecordWorldState = true`), +## 2. read the online per-gun virtual fitness from /tmp/gun_stats.jsonl, +## 3. replay the recorded WorldState fixture offline through the same guns, +## 4. compare. +## +## Tsetlin is stochastic (tmLearnOne calls rand(); its constructor calls +## randomize()), so byte-identical replay is impossible for it. The 12 +## deterministic guns must match EXACTLY; Tsetlin is reported separately. +## +## Run with: +## nim c -r common_libs/tests/acceptance_offline_vs_online.nim +## +## Requires TR_SERVER_JAR / TR_BATTLE_RUNNER (or the default dev paths below). + +import std/[json, os, strformat, strutils, math] +import test_framework/test_framework +import gun_harness/offline_range +import range_guns + +const + repoRoot = currentSourcePath().parentDir.parentDir.parentDir + modularBotDir = repoRoot / "ModularBot_garage" + adversaryDir = repoRoot / "common_libs" / "test_framework" / "adversaries" / "OscillatorBot" + statsPath = "/tmp/gun_stats.jsonl" + recordPath = "/tmp/worldstate_record.jsonl" + serverJar = "/home/davide/Projects/tank-royale/server/build/libs/robocode-tankroyale-server-0.35.5-all.jar" + runnerJar = "/home/davide/Projects/tank-royale/runner/examples/lib/robocode-tankroyale-runner.jar" + +const TsetlinId = 2 + +proc lastOnlineRound(path: string): JsonNode = + result = nil + for line in lines(path): + let s = line.strip() + if s.len == 0: continue + let node = parseJson(s) + if node.hasKey("guns"): result = node + +proc main() = + if not fileExists(serverJar) or not fileExists(runnerJar): + echo "Skipping: TR JARs not found (server=", serverJar, ", runner=", runnerJar, ")" + quit(0) + if not fileExists(modularBotDir / "src" / "ModularBot.nim"): + echo "Skipping: ModularBot source not found" + quit(0) + + for p in [statsPath, recordPath]: + if fileExists(p): removeFile(p) + + echo "=== live battle: ModularBot vs OscillatorBot, 1 round, max speed ===" + let battle = runBattle(@[modularBotDir, adversaryDir], rounds = 1, + timeout = 240000, maxSpeed = true) + for res in battle.results: + echo fmt" {res.name:<14} rank={res.rank} score={res.totalScore}" + + if not fileExists(recordPath): + echo "FAIL: recorder produced no fixture (is RecordWorldState true?)" + quit(1) + if not fileExists(statsPath): + echo "FAIL: no /tmp/gun_stats.jsonl" + quit(1) + + let online = lastOnlineRound(statsPath) + let fx = loadFixture(recordPath) + let reports = replayFixture(fx, buildAllGunDrivers(), liveActual = true) + + # Map online stats by gun id. + var onShots: array[13, int] + var onHits: array[13, int] + var onNames: array[13, string] + for g in online["guns"]: + let id = g["id"].getInt() + if id >= 0 and id < 13: + onShots[id] = g["vShots"].getInt() + onHits[id] = g["vHits"].getInt() + onNames[id] = g["name"].getStr() + + echo "" + echo fmt"fixture: {recordPath} ticks={fx.states.len} enemyId={fx.enemyId} enemyDied={fx.enemyDied}" + echo "online stats: /tmp/gun_stats.jsonl round ", online["round"].getInt() + echo "" + echo "gun online(vHits/vShots) offline(hits/shots) verdict" + echo "-----------------------------------------------------------------------" + var matches = 0 + var deterministic = 0 + for id in 0..<13: + let r = reports[id] + let match = r.hits == onHits[id] and r.shots == onShots[id] + var verdict: string + if id == TsetlinId: + verdict = if match: "MATCH (stochastic)" else: "differs (stochastic, expected)" + else: + inc deterministic + if match: + inc matches + verdict = "OK" + else: + verdict = "MISMATCH" + echo fmt"{r.name:<12} {onHits[id]:>5}/{onShots[id]:<5} {r.hits:>5}/{r.shots:<5} {verdict}" + + echo "" + echo fmt"deterministic guns matching exactly: {matches}/{deterministic}" + if matches != deterministic: + echo "VERDICT: FAIL — offline range does NOT reproduce the live metric." + quit(1) + echo "VERDICT: PASS — offline == online for all 12 deterministic guns." + echo "(Tsetlin is stochastic and is allowed to differ.)" + +when isMainModule: + main() diff --git a/common_libs/tests/gen_synthetic_fixtures.nim b/common_libs/tests/gen_synthetic_fixtures.nim new file mode 100644 index 0000000..495d672 --- /dev/null +++ b/common_libs/tests/gen_synthetic_fixtures.nim @@ -0,0 +1,21 @@ +## Task 2: emit the synthetic trajectory fixtures to tools/fixtures/ as JSONL. +## Run with: +## nim c -r common_libs/tests/gen_synthetic_fixtures.nim +## Deterministic: the random-walk fixture is seeded. + +import std/[os, strformat] +import gun_harness/offline_range + +const outDir = currentSourcePath().parentDir.parentDir.parentDir / "tools" / "fixtures" + +proc main() = + createDir(outDir) + for name in SyntheticFixtureNames: + let fx = synthesizeByName(name) + let path = outDir / (name & ".jsonl") + saveFixture(path, fx) + echo fmt"wrote {path} ({fx.states.len} ticks, source={fx.meta.source})" + echo "done." + +when isMainModule: + main() diff --git a/common_libs/tests/range_guns.nim b/common_libs/tests/range_guns.nim new file mode 100644 index 0000000..d45a92e --- /dev/null +++ b/common_libs/tests/range_guns.nim @@ -0,0 +1,42 @@ +## Shared helper: build the 13 ModularBot guns as type-erased offline range +## drivers, in ModularBot's gun-id order, with the same readiness gate the live +## loop uses (Tsetlin only spawns once its 10-frame window is full). + +import std/random +import gun_harness/offline_range +import guns/head_on +import guns/linear +import guns/circular +import guns/tsetlin +import guns/guess_factor +import guns/pattern_matcher +import guns/wall_bounce +import guns/accel_predictor +import guns/stop_shot +import guns/displacement +import guns/averaged_lead +import guns/decay_gf +import guns/knn_gun + +proc buildAllGunDrivers*(seed = -1): seq[GunDriver] = + ## seed >= 0 re-seeds the global RNG after constructing Tsetlin so the + ## stochastic gun's learning is reproducible for offline runs. (Its + ## constructor calls randomize(); we override that seed afterwards.) + var tsetlin = initTsetlinGun() + if seed >= 0: + randomize(seed) + result = @[ + makeDriver("HeadOn", HeadOnGun()), + makeDriver("Linear", LinearGun()), + makeDriver("Tsetlin", tsetlin), + makeDriver("Circular", CircularGun()), + makeDriver("GuessFactor", initGFGun()), + makeDriver("Pattern", PatternMatcherGun()), + makeDriver("WallBounce", initWallBounceGun()), + makeDriver("Accel", initAccelGun()), + makeDriver("StopShot", initStopShotGun()), + makeDriver("Displace", initDisplacementGun()), + makeDriver("AvgLead", initAveragedLeadGun()), + makeDriver("DecayGF", initDecayGFGun()), + makeDriver("KNN", initKNNGun()), + ] diff --git a/common_libs/tests/run_range.nim b/common_libs/tests/run_range.nim new file mode 100644 index 0000000..11de62b --- /dev/null +++ b/common_libs/tests/run_range.nim @@ -0,0 +1,66 @@ +## Task 4: offline gun-range runner. Replays one or more fixtures through the +## 13 ModularBot guns and prints a deterministic per-gun table (overall hit rate +## plus per-power-bin hits/shots) for each fixture. +## +## Usage: +## nim c -r common_libs/tests/run_range.nim # all tools/fixtures/*.jsonl +## nim c -r common_libs/tests/run_range.nim path/a.jsonl path/b.jsonl +## nim c -r common_libs/tests/run_range.nim --timing # add per-fixture wall time +## +## Tsetlin is stochastic; it is seeded (seed=1) here so this tool's output is +## reproducible run-to-run. Its numbers are NOT expected to match a live battle. + +import std/[os, algorithm, strformat, times] +import gun_harness/offline_range +import range_guns + +const fixturesDir = currentSourcePath().parentDir.parentDir.parentDir / "tools" / "fixtures" + +proc fixtureFiles(args: seq[string]): seq[string] = + for a in args: + if a == "--timing": continue + if dirExists(a): + for f in walkFiles(a / "*.jsonl"): result.add f + elif fileExists(a): + result.add a + else: + echo "warning: not found: ", a + if result.len == 0: + for f in walkFiles(fixturesDir / "*.jsonl"): result.add f + result.sort() + +proc main() = + var args: seq[string] + for i in 1..paramCount(): + args.add paramStr(i) + let showTiming = "--timing" in args + let files = fixtureFiles(args) + if files.len == 0: + echo "no fixtures found under ", fixturesDir + echo "run: nim c -r common_libs/tests/gen_synthetic_fixtures.nim" + quit(1) + + var grandShots, grandHits = 0 + for path in files: + let fx = loadFixture(path) + var t0 = 0.0 + if showTiming: t0 = epochTime() + let reports = replayFixture(fx, buildAllGunDrivers(seed = 1), + liveActual = (fx.meta.source == "live")) + let elapsed = if showTiming: epochTime() - t0 else: 0.0 + stdout.write formatReports(fx, reports) + if showTiming: + echo fmt" replay: {elapsed*1000.0:.1f} ms" + var totShots, totHits = 0 + for r in reports: + totShots += r.shots + totHits += r.hits + grandShots += totShots + grandHits += totHits + echo "" + if files.len > 1: + echo fmt"TOTAL across {files.len} fixtures: {grandHits}/{grandShots} ({grandHits.float/grandShots.float*100.0:.1f}%)" + echo fmt"(replayed {files.len} fixture(s))" + +when isMainModule: + main() diff --git a/common_libs/tests/test_gun_harness.nim b/common_libs/tests/test_gun_harness.nim index b50acca..94a46f2 100644 --- a/common_libs/tests/test_gun_harness.nim +++ b/common_libs/tests/test_gun_harness.nim @@ -10,14 +10,17 @@ ## and fast. The spawn/tick pipeline itself is exercised by the droppedBullets ## test below and by the full gauntlet. -import std/[math, random, tables] +import std/[math, random, tables, os] import gun_harness/gun_interface import gun_harness/virtual_bullets import gun_harness/selector +import gun_harness/offline_range import guns/stop_shot import guns/displacement import guns/averaged_lead import guns/pattern_matcher +import guns/head_on +import guns/linear var failures = 0 @@ -265,6 +268,83 @@ proc testDegenerateDistance() = check "range gate: NaN distance also falls back to the ceiling", aimToleranceDeg(NaN) == MaxAimThresholdDeg +# ── offline range (Task 5) ──────────────────────────────────────────────────── + +proc testFixtureRoundTrip() = + let fx = synthesizeConstantVelocity(ticks = 40) + let path = getTempDir() / "gun_range_roundtrip.jsonl" + saveFixture(path, fx) + let back = loadFixture(path) + check "range: fixture round-trip preserves tick count", + back.states.len == fx.states.len + var same = back.states.len == fx.states.len + for i in 0.. 1e-9 or + abs(a.enemyY - b.enemyY) > 1e-9 or + abs(a.enemyHeading - b.enemyHeading) > 1e-9 or + abs(a.enemySpeed - b.enemySpeed) > 1e-9 or + abs(a.selfX - b.selfX) > 1e-9: + same = false + check "range: fixture round-trip preserves per-tick fields", same + check "range: fixture round-trip defaults arena to 800x600", + back.meta.arenaW == 800.0 and back.meta.arenaH == 600.0 + check "range: fixture round-trip preserves enemy id", back.enemyId == fx.enemyId + removeFile(path) + +proc testFixtureEndMarkerRoundTrip() = + let fx = synthesizeStationary(ticks = 10) + var withEnd = fx + withEnd.enemyDied = true + let path = getTempDir() / "gun_range_end.jsonl" + saveFixture(path, withEnd) + let back = loadFixture(path) + check "range: fixture round-trip preserves the enemyDied end marker", back.enemyDied + removeFile(path) + +proc testReplayDeterminism() = + let fx = synthesizeCircular(ticks = 80) + let r1 = replayFixture(fx, @[makeDriver("HeadOn", HeadOnGun()), + makeDriver("Linear", LinearGun())]) + let r2 = replayFixture(fx, @[makeDriver("HeadOn", HeadOnGun()), + makeDriver("Linear", LinearGun())]) + var same = r1.len == r2.len + for i in 0.. HeadOn scores 100%", + r[0].shots > 300 and r[0].hits == r[0].shots + +proc testRangeConstantVelocityLinearWins() = + let fx = synthesizeConstantVelocity(ticks = 120) + let r = replayFixture(fx, @[makeDriver("HeadOn", HeadOnGun()), + makeDriver("Linear", LinearGun())]) + check "range: constant velocity -> Linear beats HeadOn", + r[1].hitRate() > r[0].hitRate() + +proc testEnergyThresholdFixtureRule() = + # RULE e(t) = max(5, 50 - 0.5*t); e drops below 30 at t = 41. + let fx = synthesizeEnergyThresholdTurner(ticks = 100, e0 = 50.0, + decay = 0.5, threshold = 30.0) + let idx = 41 + check "range: energy-threshold fixture crosses the rule threshold at t=41", + fx.states[idx].enemyEnergy < 30.0 and + fx.states[idx-1].enemyEnergy >= 30.0 + # ── driver ─────────────────────────────────────────────────────────────────── randomize() @@ -286,6 +366,12 @@ testToleranceFormula() testPerfectAlignmentAlwaysFires() testGrossMisalignmentFailsLongRange() testDegenerateDistance() +testFixtureRoundTrip() +testFixtureEndMarkerRoundTrip() +testReplayDeterminism() +testRangeGroundTruthStationary() +testRangeConstantVelocityLinearWins() +testEnergyThresholdFixtureRule() if failures > 0: echo "\n", failures, " check(s) FAILED" diff --git a/tools/fixtures/circular.jsonl b/tools/fixtures/circular.jsonl new file mode 100644 index 0000000..4408eba --- /dev/null +++ b/tools/fixtures/circular.jsonl @@ -0,0 +1,222 @@ +{"meta":{"adversary":"circular","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"constant turn 3.0 deg/tick; Circular/Accel should fit"}} +{"tick":0,"ex":400.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":406.0,"ey":300.0,"eh":3.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":411.9917772085274,"ey":300.3140157374577,"eh":6.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":417.95890858073705,"ey":300.9411865170636,"eh":9.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":423.88503862430787,"ey":301.879793307305,"eh":12.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":429.75392422871073,"ey":303.1272634522116,"eh":15.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":435.5494791864451,"ey":304.6801777228267,"eh":18.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":441.25581828421605,"ey":306.5342796890764,"eh":21.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":446.85730084319925,"ey":308.6844873863482,"eh":24.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":452.3385735890549,"ey":311.124907244803,"eh":27.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":457.68461273418507,"ey":313.8488502432403,"eh":30.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":462.8807651568917,"ey":316.8488502432403,"eh":33.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":467.91278856456427,"ey":320.11668445333044,"eh":36.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":472.76689053081395,"ey":323.64339596708527,"eh":39.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":477.42976629955575,"ey":327.4193183133843,"eh":42.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":481.8886352524201,"ey":331.43410195153746,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":486.13127593953936,"ey":335.6767426386567,"eh":48.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":490.14605957769254,"ey":340.13561159152107,"eh":51.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":493.92198192399155,"ey":344.79848736026287,"eh":54.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":497.4486934377464,"ey":349.65258932651255,"eh":57.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":500.71652764783653,"ey":354.6846127341851,"eh":60.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":503.71652764783653,"ey":359.88076515689175,"eh":63.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":506.4404706462738,"ey":365.22680430202195,"eh":66.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":508.8808905047286,"ey":370.70807704787757,"eh":69.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":511.0310982020004,"ey":376.3095596068608,"eh":72.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":512.8852001682501,"ey":382.0158987046317,"eh":75.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":514.4381144388652,"ey":387.8114536623661,"eh":78.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":515.6855845837717,"ey":393.6803392667689,"eh":81.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":516.6241913740131,"ey":399.6064693103397,"eh":84.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":517.251362153619,"ey":405.57360068254934,"eh":87.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":517.5653778910767,"ey":411.56537789107676,"eh":90.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":517.5653778910767,"ey":417.56537789107676,"eh":93.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":517.251362153619,"ey":423.5571550996042,"eh":96.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":516.6241913740131,"ey":429.5242864718138,"eh":99.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":515.6855845837717,"ey":435.45041651538463,"eh":102.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":514.4381144388652,"ey":441.3193021197875,"eh":105.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":512.8852001682501,"ey":447.1148570775219,"eh":108.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":511.0310982020004,"ey":452.8211961752928,"eh":111.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":508.8808905047286,"ey":458.422678734276,"eh":114.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":506.4404706462738,"ey":463.90395148013164,"eh":117.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":503.71652764783653,"ey":469.24999062526183,"eh":120.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":500.71652764783653,"ey":474.44614304796846,"eh":123.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":497.4486934377464,"ey":479.47816645564103,"eh":126.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":493.92198192399155,"ey":484.3322684218907,"eh":129.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":490.14605957769254,"ey":488.9951441906325,"eh":132.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":486.13127593953936,"ey":493.45401314349687,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":481.8886352524201,"ey":497.6966538306161,"eh":138.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":477.42976629955575,"ey":501.7114374687693,"eh":141.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":472.76689053081395,"ey":505.4873598150683,"eh":144.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":467.91278856456427,"ey":509.01407132882315,"eh":147.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":462.8807651568917,"ey":512.2819055389133,"eh":150.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":457.68461273418507,"ey":515.2819055389133,"eh":153.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":452.3385735890549,"ey":518.0058485373506,"eh":156.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":446.85730084319925,"ey":520.4462683958054,"eh":159.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":441.25581828421605,"ey":522.5964760930772,"eh":162.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":435.5494791864451,"ey":524.4505780593269,"eh":165.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":429.75392422871073,"ey":526.003492329942,"eh":168.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":423.88503862430787,"ey":527.2509624748485,"eh":171.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":417.95890858073705,"ey":528.1895692650899,"eh":174.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":411.9917772085274,"ey":528.8167400446957,"eh":177.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":406.0,"ey":529.1307557821534,"eh":180.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":400.0,"ey":529.1307557821534,"eh":183.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":394.0082227914726,"ey":528.8167400446957,"eh":186.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":388.04109141926295,"ey":528.1895692650899,"eh":189.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":382.11496137569213,"ey":527.2509624748485,"eh":192.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":376.2460757712893,"ey":526.003492329942,"eh":195.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":370.45052081355493,"ey":524.4505780593269,"eh":198.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":364.744181715784,"ey":522.5964760930772,"eh":201.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":359.1426991568008,"ey":520.4462683958054,"eh":204.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":353.6614264109452,"ey":518.0058485373506,"eh":207.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":348.315387265815,"ey":515.2819055389134,"eh":210.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":343.11923484310836,"ey":512.2819055389134,"eh":213.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":338.0872114354358,"ey":509.01407132882326,"eh":216.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":333.2331094691861,"ey":505.48735981506843,"eh":219.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":328.5702337004443,"ey":501.7114374687694,"eh":222.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":324.11136474757996,"ey":497.69665383061624,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":319.8687240604607,"ey":493.454013143497,"eh":228.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":315.8539404223075,"ey":488.99514419063263,"eh":231.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":312.0780180760085,"ey":484.33226842189083,"eh":234.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":308.55130656225367,"ey":479.47816645564114,"eh":237.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":305.2834723521635,"ey":474.4461430479686,"eh":240.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":302.2834723521635,"ey":469.24999062526194,"eh":243.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":299.55952935372625,"ey":463.90395148013175,"eh":246.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":297.11910949527146,"ey":458.42267873427613,"eh":249.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":294.96890179799965,"ey":452.8211961752929,"eh":252.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":293.11479983174996,"ey":447.114857077522,"eh":255.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":291.56188556113483,"ey":441.3193021197876,"eh":258.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":290.31441541622826,"ey":435.4504165153848,"eh":261.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":289.37580862598685,"ey":429.524286471814,"eh":264.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":288.7486378463809,"ey":423.55715509960436,"eh":267.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":288.43462210892324,"ey":417.56537789107693,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":288.43462210892324,"ey":411.56537789107693,"eh":273.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":288.7486378463809,"ey":405.5736006825495,"eh":276.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":289.37580862598685,"ey":399.6064693103399,"eh":279.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":290.31441541622826,"ey":393.68033926676907,"eh":282.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":291.56188556113483,"ey":387.81145366236626,"eh":285.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":293.11479983174996,"ey":382.01589870463187,"eh":288.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":294.96890179799965,"ey":376.30955960686094,"eh":291.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":297.11910949527146,"ey":370.70807704787774,"eh":294.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":299.55952935372625,"ey":365.2268043020221,"eh":297.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":302.2834723521635,"ey":359.8807651568919,"eh":300.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":305.2834723521635,"ey":354.6846127341853,"eh":303.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":308.55130656225367,"ey":349.6525893265127,"eh":306.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":312.0780180760085,"ey":344.79848736026304,"eh":309.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":315.8539404223075,"ey":340.13561159152124,"eh":312.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":319.86872406046064,"ey":335.6767426386569,"eh":315.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":324.1113647475799,"ey":331.4341019515376,"eh":318.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":328.57023370044425,"ey":327.41931831338445,"eh":321.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":333.23310946918605,"ey":323.64339596708544,"eh":324.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":338.08721143543573,"ey":320.1166844533306,"eh":327.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":343.1192348431083,"ey":316.84885024324046,"eh":330.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":348.31538726581493,"ey":313.84885024324046,"eh":333.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":353.6614264109451,"ey":311.1249072448032,"eh":336.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":359.14269915680075,"ey":308.6844873863484,"eh":339.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":364.74418171578395,"ey":306.5342796890766,"eh":342.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":370.4505208135549,"ey":304.6801777228269,"eh":345.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":376.24607577128927,"ey":303.12726345221176,"eh":348.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":382.1149613756921,"ey":301.8797933073052,"eh":351.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":388.0410914192629,"ey":300.9411865170638,"eh":354.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":394.0082227914725,"ey":300.31401573745785,"eh":357.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":399.99999999999994,"ey":300.00000000000017,"eh":360.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":405.99999999999994,"ey":300.00000000000017,"eh":363.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":411.99177720852737,"ey":300.31401573745785,"eh":366.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":417.958908580737,"ey":300.9411865170638,"eh":369.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":423.8850386243078,"ey":301.8797933073052,"eh":372.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":429.7539242287106,"ey":303.12726345221176,"eh":375.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":435.549479186445,"ey":304.6801777228269,"eh":378.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":441.25581828421593,"ey":306.5342796890766,"eh":381.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":446.85730084319914,"ey":308.6844873863484,"eh":384.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":452.33857358905476,"ey":311.1249072448032,"eh":387.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":457.68461273418495,"ey":313.84885024324046,"eh":390.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":462.8807651568916,"ey":316.84885024324046,"eh":393.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":467.91278856456415,"ey":320.1166844533306,"eh":396.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":472.76689053081384,"ey":323.64339596708544,"eh":399.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":477.42976629955564,"ey":327.41931831338445,"eh":402.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":481.88863525242,"ey":331.4341019515376,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":486.13127593953925,"ey":335.6767426386569,"eh":408.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":490.1460595776924,"ey":340.13561159152124,"eh":411.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":493.92198192399144,"ey":344.79848736026304,"eh":414.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":497.4486934377463,"ey":349.6525893265127,"eh":417.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":500.7165276478364,"ey":354.6846127341853,"eh":420.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":503.7165276478364,"ey":359.8807651568919,"eh":423.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":506.4404706462737,"ey":365.2268043020221,"eh":426.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":508.8808905047285,"ey":370.70807704787774,"eh":429.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":511.0310982020003,"ey":376.30955960686094,"eh":432.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":512.88520016825,"ey":382.01589870463187,"eh":435.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":514.4381144388651,"ey":387.81145366236626,"eh":438.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":515.6855845837716,"ey":393.6803392667691,"eh":441.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":516.624191374013,"ey":399.60646931033995,"eh":444.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":517.2513621536189,"ey":405.57360068254957,"eh":447.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":517.5653778910765,"ey":411.565377891077,"eh":450.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":517.5653778910765,"ey":417.565377891077,"eh":453.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":517.2513621536189,"ey":423.5571550996044,"eh":456.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":516.624191374013,"ey":429.52428647181404,"eh":459.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":515.6855845837716,"ey":435.45041651538486,"eh":462.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":514.4381144388651,"ey":441.3193021197877,"eh":465.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":512.88520016825,"ey":447.1148570775221,"eh":468.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":511.0310982020003,"ey":452.82119617529304,"eh":471.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":508.8808905047285,"ey":458.42267873427625,"eh":474.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":506.4404706462737,"ey":463.90395148013187,"eh":477.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":503.7165276478364,"ey":469.24999062526206,"eh":480.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":500.7165276478364,"ey":474.4461430479687,"eh":483.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":497.4486934377463,"ey":479.47816645564126,"eh":486.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":493.92198192399144,"ey":484.33226842189094,"eh":489.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":490.1460595776924,"ey":488.99514419063274,"eh":492.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":486.13127593953925,"ey":493.4540131434971,"eh":495.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":481.88863525242,"ey":497.69665383061636,"eh":498.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":477.42976629955564,"ey":501.71143746876953,"eh":501.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":472.76689053081384,"ey":505.48735981506854,"eh":504.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":467.91278856456415,"ey":509.0140713288234,"eh":507.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":462.8807651568916,"ey":512.2819055389135,"eh":510.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":457.68461273418495,"ey":515.2819055389135,"eh":513.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":452.33857358905476,"ey":518.0058485373507,"eh":516.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":446.85730084319914,"ey":520.4462683958055,"eh":519.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":441.25581828421593,"ey":522.5964760930773,"eh":522.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":435.549479186445,"ey":524.450578059327,"eh":525.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":429.7539242287106,"ey":526.0034923299421,"eh":528.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":423.88503862430775,"ey":527.2509624748486,"eh":531.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":417.95890858073693,"ey":528.18956926509,"eh":534.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":411.9917772085273,"ey":528.8167400446958,"eh":537.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":405.9999999999999,"ey":529.1307557821535,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":399.9999999999999,"ey":529.1307557821535,"eh":543.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":394.00822279147246,"ey":528.8167400446958,"eh":546.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":388.04109141926284,"ey":528.18956926509,"eh":549.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":382.114961375692,"ey":527.2509624748486,"eh":552.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":376.24607577128916,"ey":526.0034923299421,"eh":555.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":370.45052081355476,"ey":524.450578059327,"eh":558.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":364.74418171578384,"ey":522.5964760930773,"eh":561.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":359.14269915680063,"ey":520.4462683958055,"eh":564.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":353.661426410945,"ey":518.0058485373507,"eh":567.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":348.3153872658148,"ey":515.2819055389134,"eh":570.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":343.1192348431082,"ey":512.2819055389134,"eh":573.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":338.0872114354356,"ey":509.01407132882326,"eh":576.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":333.23310946918593,"ey":505.48735981506843,"eh":579.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":328.57023370044413,"ey":501.7114374687694,"eh":582.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":324.1113647475798,"ey":497.69665383061624,"eh":585.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":319.8687240604605,"ey":493.454013143497,"eh":588.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":315.85394042230735,"ey":488.99514419063263,"eh":591.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":312.07801807600833,"ey":484.33226842189083,"eh":594.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":308.5513065622535,"ey":479.47816645564114,"eh":597.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":200,"ex":305.28347235216336,"ey":474.4461430479686,"eh":600.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":201,"ex":302.28347235216336,"ey":469.24999062526194,"eh":603.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":202,"ex":299.5595293537261,"ey":463.90395148013175,"eh":606.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":203,"ex":297.1191094952713,"ey":458.42267873427613,"eh":609.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":204,"ex":294.9689017979995,"ey":452.8211961752929,"eh":612.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":205,"ex":293.1147998317498,"ey":447.114857077522,"eh":615.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":206,"ex":291.56188556113466,"ey":441.3193021197876,"eh":618.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":207,"ex":290.3144154162281,"ey":435.45041651538475,"eh":621.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":208,"ex":289.3758086259867,"ey":429.5242864718139,"eh":624.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":209,"ex":288.74863784638075,"ey":423.5571550996043,"eh":627.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":210,"ex":288.43462210892307,"ey":417.5653778910769,"eh":630.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":211,"ex":288.43462210892307,"ey":411.5653778910769,"eh":633.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":212,"ex":288.74863784638075,"ey":405.57360068254945,"eh":636.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":213,"ex":289.3758086259867,"ey":399.60646931033983,"eh":639.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":214,"ex":290.3144154162281,"ey":393.680339266769,"eh":642.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":215,"ex":291.56188556113466,"ey":387.81145366236615,"eh":645.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":216,"ex":293.1147998317498,"ey":382.01589870463175,"eh":648.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":217,"ex":294.9689017979995,"ey":376.30955960686083,"eh":651.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":218,"ex":297.1191094952713,"ey":370.7080770478776,"eh":654.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":219,"ex":299.5595293537261,"ey":365.226804302022,"eh":657.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":220}} diff --git a/tools/fixtures/constant-velocity.jsonl b/tools/fixtures/constant-velocity.jsonl new file mode 100644 index 0000000..d6a8d2c --- /dev/null +++ b/tools/fixtures/constant-velocity.jsonl @@ -0,0 +1,152 @@ +{"meta":{"adversary":"constant-velocity","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"straight line, no walls reached; Linear/HeadOn should lead the target"}} +{"tick":0,"ex":100.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":104.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":108.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":112.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":116.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":120.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":124.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":128.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":132.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":136.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":140.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":144.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":148.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":152.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":156.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":160.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":164.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":168.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":172.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":176.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":180.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":184.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":188.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":192.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":196.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":200.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":204.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":208.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":212.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":216.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":220.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":224.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":228.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":232.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":236.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":240.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":244.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":248.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":252.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":256.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":260.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":264.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":268.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":272.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":276.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":280.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":284.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":288.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":292.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":296.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":300.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":304.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":308.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":312.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":316.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":320.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":324.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":328.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":332.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":336.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":340.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":344.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":348.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":352.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":356.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":360.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":364.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":368.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":372.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":376.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":380.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":384.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":388.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":392.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":396.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":400.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":404.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":408.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":412.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":416.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":420.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":424.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":428.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":432.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":436.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":440.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":444.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":448.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":452.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":456.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":460.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":464.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":468.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":472.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":476.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":480.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":484.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":488.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":492.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":496.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":500.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":504.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":508.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":512.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":516.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":520.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":524.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":528.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":532.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":536.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":540.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":544.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":548.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":552.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":556.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":560.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":564.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":568.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":572.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":576.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":580.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":584.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":588.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":592.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":596.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":600.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":604.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":608.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":612.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":616.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":620.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":624.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":628.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":632.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":636.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":640.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":644.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":648.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":652.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":656.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":660.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":664.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":668.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":672.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":676.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":680.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":684.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":688.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":692.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":696.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":150}} diff --git a/tools/fixtures/decel-before-turn.jsonl b/tools/fixtures/decel-before-turn.jsonl new file mode 100644 index 0000000..14e1d1c --- /dev/null +++ b/tools/fixtures/decel-before-turn.jsonl @@ -0,0 +1,262 @@ +{"meta":{"adversary":"decel-before-turn","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"cruise -> full stop -> pivot 3x45deg -> accelerate; tests StopShot"}} +{"tick":0,"ex":100.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":101.0,"ey":300.0,"eh":0.0,"es":1.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":103.0,"ey":300.0,"eh":0.0,"es":2.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":106.0,"ey":300.0,"eh":0.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":110.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":115.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":121.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":127.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":133.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":139.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":145.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":151.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":157.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":163.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":169.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":175.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":181.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":187.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":193.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":199.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":205.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":211.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":217.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":223.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":229.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":235.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":241.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":247.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":253.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":259.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":265.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":271.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":277.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":283.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":289.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":295.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":301.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":307.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":313.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":319.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":325.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":331.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":337.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":343.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":349.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":355.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":361.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":367.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":373.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":379.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":385.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":391.0,"ey":300.0,"eh":0.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":394.0,"ey":300.0,"eh":0.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":394.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":394.0,"ey":300.0,"eh":45.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":394.0,"ey":300.0,"eh":90.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":394.0,"ey":300.0,"eh":135.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":394.0,"ey":300.0,"eh":135.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":393.29289321881345,"ey":300.70710678118655,"eh":135.0,"es":1.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":391.87867965644034,"ey":302.12132034355966,"eh":135.0,"es":2.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":389.7573593128807,"ey":304.2426406871193,"eh":135.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":386.92893218813447,"ey":307.07106781186553,"eh":135.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":383.39339828220176,"ey":310.6066017177983,"eh":135.0,"es":5.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":379.1507575950825,"ey":314.84924240491756,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":374.90811690796323,"ey":319.0918830920368,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":370.66547622084397,"ey":323.3345237791561,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":366.4228355337247,"ey":327.57716446627535,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":362.18019484660545,"ey":331.8198051533946,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":357.9375541594862,"ey":336.0624458405139,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":353.6949134723669,"ey":340.30508652763314,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":349.45227278524766,"ey":344.5477272147524,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":345.2096320981284,"ey":348.79036790187166,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":340.96699141100913,"ey":353.0330085889909,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":336.72435072388987,"ey":357.2756492761102,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":332.4817100367706,"ey":361.51828996322945,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":328.23906934965134,"ey":365.7609306503487,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":323.9964286625321,"ey":370.003571337468,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":319.7537879754128,"ey":374.24621202458724,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":315.51114728829356,"ey":378.4888527117065,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":311.2685066011743,"ey":382.73149339882576,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":307.02586591405503,"ey":386.974134085945,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":302.78322522693577,"ey":391.2167747730643,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":298.5405845398165,"ey":395.45941546018355,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":294.29794385269724,"ey":399.7020561473028,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":290.055303165578,"ey":403.9446968344221,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":285.8126624784587,"ey":408.18733752154134,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":281.57002179133946,"ey":412.4299782086606,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":277.3273811042202,"ey":416.67261889577986,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":273.08474041710093,"ey":420.9152595828991,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":268.84209972998167,"ey":425.1579002700184,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":264.5994590428624,"ey":429.40054095713765,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":260.35681835574314,"ey":433.6431816442569,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":256.1141776686239,"ey":437.8858223313762,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":251.8715369815046,"ey":442.12846301849544,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":247.6288962943853,"ey":446.3711037056147,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":243.386255607266,"ey":450.61374439273396,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":239.14361492014672,"ey":454.8563850798532,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":234.90097423302743,"ey":459.0990257669725,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":230.65833354590814,"ey":463.34166645409175,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":226.41569285878884,"ey":467.584307141211,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":222.17305217166955,"ey":471.8269478283303,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":217.93041148455026,"ey":476.06958851544954,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":213.68777079743097,"ey":480.3122292025688,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":209.44513011031168,"ey":484.55486988968806,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":205.2024894231924,"ey":488.7975105768073,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":200.9598487360731,"ey":493.0401512639266,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":196.7172080489538,"ey":497.28279195104585,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":192.47456736183452,"ey":501.5254326381651,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":188.23192667471523,"ey":505.7680733252844,"eh":135.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":186.1106063311556,"ey":507.88939366884404,"eh":135.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":186.1106063311556,"ey":507.88939366884404,"eh":135.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":186.1106063311556,"ey":507.88939366884404,"eh":180.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":186.1106063311556,"ey":507.88939366884404,"eh":225.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":186.1106063311556,"ey":507.88939366884404,"eh":270.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":186.1106063311556,"ey":507.88939366884404,"eh":270.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":186.1106063311556,"ey":506.88939366884404,"eh":270.0,"es":1.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":186.1106063311556,"ey":504.88939366884404,"eh":270.0,"es":2.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":186.1106063311556,"ey":501.88939366884404,"eh":270.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":186.1106063311556,"ey":497.88939366884404,"eh":270.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":186.1106063311556,"ey":492.88939366884404,"eh":270.0,"es":5.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":186.1106063311556,"ey":486.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":186.1106063311556,"ey":480.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":186.1106063311556,"ey":474.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":186.1106063311556,"ey":468.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":186.1106063311556,"ey":462.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":186.1106063311556,"ey":456.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":186.1106063311556,"ey":450.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":186.1106063311556,"ey":444.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":186.1106063311556,"ey":438.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":186.1106063311556,"ey":432.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":186.1106063311556,"ey":426.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":186.1106063311556,"ey":420.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":186.1106063311556,"ey":414.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":186.1106063311556,"ey":408.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":186.1106063311556,"ey":402.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":186.1106063311556,"ey":396.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":186.1106063311556,"ey":390.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":186.1106063311556,"ey":384.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":186.1106063311556,"ey":378.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":186.1106063311556,"ey":372.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":186.1106063311556,"ey":366.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":186.1106063311556,"ey":360.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":186.1106063311556,"ey":354.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":186.1106063311556,"ey":348.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":186.1106063311556,"ey":342.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":186.1106063311556,"ey":336.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":186.1106063311556,"ey":330.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":186.1106063311556,"ey":324.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":186.1106063311556,"ey":318.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":186.1106063311556,"ey":312.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":186.1106063311556,"ey":306.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":186.1106063311556,"ey":300.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":186.1106063311556,"ey":294.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":186.1106063311556,"ey":288.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":186.1106063311556,"ey":282.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":186.1106063311556,"ey":276.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":186.1106063311556,"ey":270.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":186.1106063311556,"ey":264.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":186.1106063311556,"ey":258.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":186.1106063311556,"ey":252.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":186.1106063311556,"ey":246.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":186.1106063311556,"ey":240.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":186.1106063311556,"ey":234.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":186.1106063311556,"ey":228.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":186.1106063311556,"ey":222.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":186.1106063311556,"ey":216.88939366884404,"eh":270.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":186.1106063311556,"ey":213.88939366884404,"eh":270.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":186.1106063311556,"ey":213.88939366884404,"eh":270.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":186.1106063311556,"ey":213.88939366884404,"eh":315.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":186.1106063311556,"ey":213.88939366884404,"eh":360.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":186.1106063311556,"ey":213.88939366884404,"eh":405.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":186.1106063311556,"ey":213.88939366884404,"eh":405.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":186.81771311234215,"ey":214.5965004500306,"eh":405.0,"es":1.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":188.23192667471525,"ey":216.0107140124037,"eh":405.0,"es":2.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":190.35324701827489,"ey":218.13203435596333,"eh":405.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":193.18167414302107,"ey":220.9604614807095,"eh":405.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":196.7172080489538,"ey":224.49599538664225,"eh":405.0,"es":5.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":200.9598487360731,"ey":228.73863607376154,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":205.2024894231924,"ey":232.98127676088083,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":209.44513011031168,"ey":237.22391744800012,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":213.68777079743097,"ey":241.4665581351194,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":217.93041148455026,"ey":245.7091988222387,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":222.17305217166955,"ey":249.951839509358,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":226.41569285878884,"ey":254.1944801964773,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":230.65833354590814,"ey":258.43712088359655,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":234.90097423302743,"ey":262.6797615707158,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":239.14361492014672,"ey":266.9224022578351,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":243.386255607266,"ey":271.16504294495434,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":247.6288962943853,"ey":275.4076836320736,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":251.8715369815046,"ey":279.65032431919286,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":256.1141776686239,"ey":283.8929650063121,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":260.35681835574314,"ey":288.1356056934314,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":264.5994590428624,"ey":292.37824638055065,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":268.84209972998167,"ey":296.6208870676699,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":273.08474041710093,"ey":300.8635277547892,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":277.3273811042202,"ey":305.10616844190844,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":281.57002179133946,"ey":309.3488091290277,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":285.8126624784587,"ey":313.59144981614696,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":290.055303165578,"ey":317.8340905032662,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":294.29794385269724,"ey":322.0767311903855,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":200,"ex":298.5405845398165,"ey":326.31937187750475,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":201,"ex":302.78322522693577,"ey":330.562012564624,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":202,"ex":307.02586591405503,"ey":334.8046532517433,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":203,"ex":311.2685066011743,"ey":339.04729393886254,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":204,"ex":315.51114728829356,"ey":343.2899346259818,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":205,"ex":319.7537879754128,"ey":347.53257531310106,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":206,"ex":323.9964286625321,"ey":351.7752160002203,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":207,"ex":328.23906934965134,"ey":356.0178566873396,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":208,"ex":332.4817100367706,"ey":360.26049737445885,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":209,"ex":336.72435072388987,"ey":364.5031380615781,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":210,"ex":340.96699141100913,"ey":368.7457787486974,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":211,"ex":345.2096320981284,"ey":372.98841943581664,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":212,"ex":349.45227278524766,"ey":377.2310601229359,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":213,"ex":353.6949134723669,"ey":381.47370081005516,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":214,"ex":357.9375541594862,"ey":385.7163414971744,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":215,"ex":362.18019484660545,"ey":389.9589821842937,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":216,"ex":366.4228355337247,"ey":394.20162287141295,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":217,"ex":370.66547622084397,"ey":398.4442635585322,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":218,"ex":374.90811690796323,"ey":402.6869042456515,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":219,"ex":379.1507575950825,"ey":406.92954493277074,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":220,"ex":383.39339828220176,"ey":411.17218561989,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":221,"ex":387.636038969321,"ey":415.41482630700926,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":222,"ex":391.8786796564403,"ey":419.6574669941285,"eh":405.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":223,"ex":393.99999999999994,"ey":421.7787873376882,"eh":405.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":224,"ex":393.99999999999994,"ey":421.7787873376882,"eh":405.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":225,"ex":393.99999999999994,"ey":421.7787873376882,"eh":450.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":226,"ex":393.99999999999994,"ey":421.7787873376882,"eh":495.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":227,"ex":393.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":228,"ex":393.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":229,"ex":392.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":1.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":230,"ex":390.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":2.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":231,"ex":387.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":3.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":232,"ex":383.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":233,"ex":378.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":5.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":234,"ex":372.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":235,"ex":366.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":236,"ex":360.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":237,"ex":354.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":238,"ex":348.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":239,"ex":342.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":240,"ex":336.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":241,"ex":330.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":242,"ex":324.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":243,"ex":318.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":244,"ex":312.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":245,"ex":306.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":246,"ex":300.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":247,"ex":294.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":248,"ex":288.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":249,"ex":282.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":250,"ex":276.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":251,"ex":270.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":252,"ex":264.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":253,"ex":258.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":254,"ex":252.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":255,"ex":246.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":256,"ex":240.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":257,"ex":234.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":258,"ex":228.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":259,"ex":222.99999999999994,"ey":421.7787873376882,"eh":540.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":260}} diff --git a/tools/fixtures/energy-threshold-turner.jsonl b/tools/fixtures/energy-threshold-turner.jsonl new file mode 100644 index 0000000..d836f7f --- /dev/null +++ b/tools/fixtures/energy-threshold-turner.jsonl @@ -0,0 +1,202 @@ +{"meta":{"adversary":"energy-threshold-turner","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"RULE: straight while energy>=30.0; hard 20.0 deg/tick turn below 30.0; energy=50.0-0.5*t (floor 5)"}} +{"tick":0,"ex":100.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":50.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":105.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":49.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":110.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":49.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":115.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":48.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":120.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":48.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":125.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":47.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":130.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":47.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":135.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":46.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":140.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":46.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":145.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":45.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":150.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":45.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":155.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":44.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":160.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":44.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":165.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":43.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":170.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":43.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":175.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":42.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":180.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":42.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":185.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":41.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":190.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":41.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":195.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":40.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":200.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":40.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":205.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":39.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":210.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":39.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":215.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":38.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":220.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":38.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":225.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":37.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":230.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":37.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":235.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":36.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":240.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":36.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":245.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":35.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":250.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":35.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":255.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":34.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":260.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":34.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":265.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":33.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":270.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":33.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":275.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":32.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":280.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":32.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":285.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":31.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":290.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":31.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":295.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":30.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":300.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":30.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":305.0,"ey":300.0,"eh":0.0,"es":5.0,"ee":29.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":309.69846310392956,"ey":301.71010071662835,"eh":20.0,"es":5.0,"ee":29.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":313.52868531952447,"ey":304.924038765061,"eh":40.0,"es":5.0,"ee":28.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":316.02868531952447,"ey":309.25416578398324,"eh":60.0,"es":5.0,"ee":28.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":316.8969262078591,"ey":314.17820454904427,"eh":80.0,"es":5.0,"ee":27.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":316.02868531952447,"ey":319.1022433141053,"eh":100.0,"es":5.0,"ee":27.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":313.52868531952447,"ey":323.4323703330275,"eh":120.0,"es":5.0,"ee":26.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":309.69846310392956,"ey":326.6463083814602,"eh":140.0,"es":5.0,"ee":26.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":305.0,"ey":328.35640909808853,"eh":160.0,"es":5.0,"ee":25.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":300.0,"ey":328.35640909808853,"eh":180.0,"es":5.0,"ee":25.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":295.30153689607044,"ey":326.6463083814602,"eh":200.0,"es":5.0,"ee":24.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":291.47131468047553,"ey":323.4323703330275,"eh":220.0,"es":5.0,"ee":24.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":288.97131468047553,"ey":319.1022433141053,"eh":240.0,"es":5.0,"ee":23.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":288.1030737921409,"ey":314.17820454904427,"eh":260.0,"es":5.0,"ee":23.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":288.97131468047553,"ey":309.25416578398324,"eh":280.0,"es":5.0,"ee":22.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":291.47131468047553,"ey":304.924038765061,"eh":300.0,"es":5.0,"ee":22.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":295.30153689607044,"ey":301.71010071662835,"eh":320.0,"es":5.0,"ee":21.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":300.0,"ey":300.0,"eh":340.0,"es":5.0,"ee":21.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":305.0,"ey":300.0,"eh":360.0,"es":5.0,"ee":20.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":309.69846310392956,"ey":301.71010071662835,"eh":380.0,"es":5.0,"ee":20.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":313.52868531952447,"ey":304.924038765061,"eh":400.0,"es":5.0,"ee":19.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":316.02868531952447,"ey":309.25416578398324,"eh":420.0,"es":5.0,"ee":19.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":316.8969262078591,"ey":314.17820454904427,"eh":440.0,"es":5.0,"ee":18.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":316.02868531952447,"ey":319.1022433141053,"eh":460.0,"es":5.0,"ee":18.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":313.52868531952447,"ey":323.4323703330275,"eh":480.0,"es":5.0,"ee":17.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":309.69846310392956,"ey":326.6463083814602,"eh":500.0,"es":5.0,"ee":17.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":305.0,"ey":328.35640909808853,"eh":520.0,"es":5.0,"ee":16.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":300.0,"ey":328.35640909808853,"eh":540.0,"es":5.0,"ee":16.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":295.30153689607044,"ey":326.6463083814602,"eh":560.0,"es":5.0,"ee":15.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":291.47131468047553,"ey":323.4323703330275,"eh":580.0,"es":5.0,"ee":15.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":288.97131468047553,"ey":319.1022433141053,"eh":600.0,"es":5.0,"ee":14.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":288.1030737921409,"ey":314.17820454904427,"eh":620.0,"es":5.0,"ee":14.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":288.97131468047553,"ey":309.25416578398324,"eh":640.0,"es":5.0,"ee":13.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":291.47131468047553,"ey":304.924038765061,"eh":660.0,"es":5.0,"ee":13.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":295.30153689607044,"ey":301.71010071662835,"eh":680.0,"es":5.0,"ee":12.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":300.0,"ey":300.0,"eh":700.0,"es":5.0,"ee":12.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":305.0,"ey":300.0,"eh":720.0,"es":5.0,"ee":11.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":309.69846310392956,"ey":301.71010071662835,"eh":740.0,"es":5.0,"ee":11.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":313.52868531952447,"ey":304.924038765061,"eh":760.0,"es":5.0,"ee":10.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":316.02868531952447,"ey":309.25416578398324,"eh":780.0,"es":5.0,"ee":10.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":316.8969262078591,"ey":314.17820454904427,"eh":800.0,"es":5.0,"ee":9.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":316.02868531952447,"ey":319.1022433141053,"eh":820.0,"es":5.0,"ee":9.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":313.52868531952447,"ey":323.4323703330275,"eh":840.0,"es":5.0,"ee":8.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":309.69846310392956,"ey":326.6463083814602,"eh":860.0,"es":5.0,"ee":8.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":305.0,"ey":328.35640909808853,"eh":880.0,"es":5.0,"ee":7.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":300.0,"ey":328.35640909808853,"eh":900.0,"es":5.0,"ee":7.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":295.30153689607044,"ey":326.6463083814602,"eh":920.0,"es":5.0,"ee":6.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":291.47131468047553,"ey":323.4323703330275,"eh":940.0,"es":5.0,"ee":6.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":288.97131468047553,"ey":319.1022433141053,"eh":960.0,"es":5.0,"ee":5.5,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":288.1030737921409,"ey":314.17820454904427,"eh":980.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":288.97131468047553,"ey":309.25416578398324,"eh":1000.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":291.47131468047553,"ey":304.924038765061,"eh":1020.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":295.30153689607044,"ey":301.71010071662835,"eh":1040.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":300.0,"ey":300.0,"eh":1060.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":305.0,"ey":300.0,"eh":1080.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":309.69846310392956,"ey":301.71010071662835,"eh":1100.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":313.52868531952447,"ey":304.924038765061,"eh":1120.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":316.02868531952447,"ey":309.25416578398324,"eh":1140.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":316.8969262078591,"ey":314.17820454904427,"eh":1160.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":316.02868531952447,"ey":319.1022433141053,"eh":1180.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":313.52868531952447,"ey":323.4323703330275,"eh":1200.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":309.69846310392956,"ey":326.6463083814602,"eh":1220.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":305.0,"ey":328.35640909808853,"eh":1240.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":300.0,"ey":328.35640909808853,"eh":1260.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":295.30153689607044,"ey":326.6463083814602,"eh":1280.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":291.47131468047553,"ey":323.4323703330275,"eh":1300.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":288.97131468047553,"ey":319.1022433141053,"eh":1320.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":288.1030737921409,"ey":314.17820454904427,"eh":1340.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":288.97131468047553,"ey":309.25416578398324,"eh":1360.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":291.47131468047553,"ey":304.924038765061,"eh":1380.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":295.30153689607044,"ey":301.71010071662835,"eh":1400.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":300.0,"ey":300.0,"eh":1420.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":305.0,"ey":300.0,"eh":1440.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":309.69846310392956,"ey":301.71010071662835,"eh":1460.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":313.52868531952447,"ey":304.924038765061,"eh":1480.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":316.02868531952447,"ey":309.25416578398324,"eh":1500.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":316.8969262078591,"ey":314.17820454904427,"eh":1520.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":316.02868531952447,"ey":319.1022433141053,"eh":1540.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":313.52868531952447,"ey":323.4323703330275,"eh":1560.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":309.69846310392956,"ey":326.6463083814602,"eh":1580.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":305.0,"ey":328.35640909808853,"eh":1600.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":300.0,"ey":328.35640909808853,"eh":1620.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":295.30153689607044,"ey":326.6463083814602,"eh":1640.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":291.47131468047553,"ey":323.4323703330275,"eh":1660.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":288.97131468047553,"ey":319.1022433141053,"eh":1680.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":288.1030737921409,"ey":314.17820454904427,"eh":1700.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":288.97131468047553,"ey":309.25416578398324,"eh":1720.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":291.47131468047553,"ey":304.924038765061,"eh":1740.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":295.30153689607044,"ey":301.71010071662835,"eh":1760.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":300.0,"ey":300.0,"eh":1780.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":305.0,"ey":300.0,"eh":1800.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":309.69846310392956,"ey":301.71010071662835,"eh":1820.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":313.52868531952447,"ey":304.924038765061,"eh":1840.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":316.02868531952447,"ey":309.25416578398324,"eh":1860.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":316.8969262078591,"ey":314.17820454904427,"eh":1880.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":316.02868531952447,"ey":319.1022433141053,"eh":1900.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":313.52868531952447,"ey":323.4323703330275,"eh":1920.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":309.6984631039296,"ey":326.64630838146024,"eh":1940.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":305.00000000000006,"ey":328.3564090980886,"eh":1960.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":300.00000000000006,"ey":328.3564090980886,"eh":1980.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":295.3015368960705,"ey":326.64630838146024,"eh":2000.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":291.47131468047564,"ey":323.43237033302756,"eh":2020.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":288.97131468047564,"ey":319.10224331410535,"eh":2040.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":288.103073792141,"ey":314.1782045490443,"eh":2060.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":288.97131468047564,"ey":309.2541657839833,"eh":2080.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":291.47131468047564,"ey":304.9240387650611,"eh":2100.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":295.30153689607056,"ey":301.7101007166284,"eh":2120.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":300.0000000000001,"ey":300.00000000000006,"eh":2140.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":305.0000000000001,"ey":300.00000000000006,"eh":2160.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":309.69846310392967,"ey":301.7101007166284,"eh":2180.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":313.5286853195246,"ey":304.9240387650611,"eh":2200.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":316.0286853195246,"ey":309.2541657839833,"eh":2220.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":316.8969262078592,"ey":314.1782045490443,"eh":2240.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":316.0286853195246,"ey":319.10224331410535,"eh":2260.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":313.5286853195246,"ey":323.43237033302756,"eh":2280.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":309.69846310392967,"ey":326.64630838146024,"eh":2300.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":305.0000000000001,"ey":328.3564090980886,"eh":2320.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":300.0000000000001,"ey":328.3564090980886,"eh":2340.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":295.30153689607056,"ey":326.64630838146024,"eh":2360.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":291.47131468047564,"ey":323.43237033302756,"eh":2380.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":288.97131468047564,"ey":319.10224331410535,"eh":2400.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":288.103073792141,"ey":314.1782045490443,"eh":2420.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":288.97131468047564,"ey":309.2541657839833,"eh":2440.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":291.47131468047564,"ey":304.9240387650611,"eh":2460.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":295.30153689607056,"ey":301.7101007166284,"eh":2480.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":300.0000000000001,"ey":300.00000000000006,"eh":2500.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":305.0000000000001,"ey":300.00000000000006,"eh":2520.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":309.69846310392967,"ey":301.7101007166284,"eh":2540.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":313.5286853195246,"ey":304.9240387650611,"eh":2560.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":316.0286853195246,"ey":309.2541657839833,"eh":2580.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":316.8969262078592,"ey":314.1782045490443,"eh":2600.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":316.0286853195246,"ey":319.10224331410535,"eh":2620.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":313.5286853195246,"ey":323.43237033302756,"eh":2640.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":309.69846310392967,"ey":326.64630838146024,"eh":2660.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":305.0000000000001,"ey":328.3564090980886,"eh":2680.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":300.0000000000001,"ey":328.3564090980886,"eh":2700.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":295.30153689607056,"ey":326.64630838146024,"eh":2720.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":291.47131468047564,"ey":323.43237033302756,"eh":2740.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":288.97131468047564,"ey":319.10224331410535,"eh":2760.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":288.103073792141,"ey":314.1782045490443,"eh":2780.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":288.97131468047564,"ey":309.2541657839833,"eh":2800.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":291.47131468047564,"ey":304.9240387650611,"eh":2820.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":295.3015368960705,"ey":301.7101007166284,"eh":2840.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":300.00000000000006,"ey":300.00000000000006,"eh":2860.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":305.00000000000006,"ey":300.00000000000006,"eh":2880.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":309.6984631039296,"ey":301.7101007166284,"eh":2900.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":313.5286853195245,"ey":304.9240387650611,"eh":2920.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":316.0286853195245,"ey":309.2541657839833,"eh":2940.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":316.8969262078592,"ey":314.1782045490443,"eh":2960.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":316.0286853195246,"ey":319.10224331410535,"eh":2980.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":313.5286853195246,"ey":323.43237033302756,"eh":3000.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":309.69846310392967,"ey":326.64630838146024,"eh":3020.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":305.0000000000001,"ey":328.3564090980886,"eh":3040.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":300.0000000000001,"ey":328.3564090980886,"eh":3060.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":295.30153689607056,"ey":326.64630838146024,"eh":3080.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":291.47131468047564,"ey":323.43237033302756,"eh":3100.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":288.97131468047564,"ey":319.10224331410535,"eh":3120.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":288.103073792141,"ey":314.1782045490443,"eh":3140.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":288.97131468047564,"ey":309.2541657839833,"eh":3160.0,"es":5.0,"ee":5.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":200}} diff --git a/tools/fixtures/oscillator.jsonl b/tools/fixtures/oscillator.jsonl new file mode 100644 index 0000000..1bd1907 --- /dev/null +++ b/tools/fixtures/oscillator.jsonl @@ -0,0 +1,242 @@ +{"meta":{"adversary":"oscillator","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"east for 30, then west for 30, repeat"}} +{"tick":0,"ex":200.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":204.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":208.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":212.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":216.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":220.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":224.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":228.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":232.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":236.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":240.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":244.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":248.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":252.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":256.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":260.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":264.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":268.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":272.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":276.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":280.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":284.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":288.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":292.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":296.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":300.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":304.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":308.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":312.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":316.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":320.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":316.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":312.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":308.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":304.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":300.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":296.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":292.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":288.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":284.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":280.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":276.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":272.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":268.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":264.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":260.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":256.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":252.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":248.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":244.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":240.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":236.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":232.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":228.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":224.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":220.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":216.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":212.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":208.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":204.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":200.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":204.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":208.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":212.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":216.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":220.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":224.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":228.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":232.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":236.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":240.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":244.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":248.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":252.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":256.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":260.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":264.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":268.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":272.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":276.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":280.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":284.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":288.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":292.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":296.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":300.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":304.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":308.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":312.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":316.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":320.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":316.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":312.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":308.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":304.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":300.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":296.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":292.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":288.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":284.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":280.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":276.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":272.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":268.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":264.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":260.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":256.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":252.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":248.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":244.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":240.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":236.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":232.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":228.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":224.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":220.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":216.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":212.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":208.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":204.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":200.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":204.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":208.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":212.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":216.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":220.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":224.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":228.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":232.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":236.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":240.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":244.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":248.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":252.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":256.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":260.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":264.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":268.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":272.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":276.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":280.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":284.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":288.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":292.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":296.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":300.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":304.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":308.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":312.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":316.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":320.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":316.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":312.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":308.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":304.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":300.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":296.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":292.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":288.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":284.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":280.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":276.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":272.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":268.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":264.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":260.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":256.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":252.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":248.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":244.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":240.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":236.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":232.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":228.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":224.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":220.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":216.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":212.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":208.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":204.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":200.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":204.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":208.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":212.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":216.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":220.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":224.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":228.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":232.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":236.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":240.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":244.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":248.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":252.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":256.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":260.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":264.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":268.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":272.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":276.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":200,"ex":280.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":201,"ex":284.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":202,"ex":288.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":203,"ex":292.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":204,"ex":296.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":205,"ex":300.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":206,"ex":304.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":207,"ex":308.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":208,"ex":312.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":209,"ex":316.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":210,"ex":320.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":211,"ex":316.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":212,"ex":312.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":213,"ex":308.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":214,"ex":304.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":215,"ex":300.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":216,"ex":296.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":217,"ex":292.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":218,"ex":288.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":219,"ex":284.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":220,"ex":280.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":221,"ex":276.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":222,"ex":272.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":223,"ex":268.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":224,"ex":264.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":225,"ex":260.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":226,"ex":256.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":227,"ex":252.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":228,"ex":248.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":229,"ex":244.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":230,"ex":240.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":231,"ex":236.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":232,"ex":232.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":233,"ex":228.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":234,"ex":224.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":235,"ex":220.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":236,"ex":216.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":237,"ex":212.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":238,"ex":208.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":239,"ex":204.0,"ey":300.0,"eh":180.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":240}} diff --git a/tools/fixtures/random-walk.jsonl b/tools/fixtures/random-walk.jsonl new file mode 100644 index 0000000..70c73ec --- /dev/null +++ b/tools/fixtures/random-walk.jsonl @@ -0,0 +1,262 @@ +{"meta":{"adversary":"random-walk","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"seeded (seed=20250920), +-15.0 deg/tick heading jitter"}} +{"tick":0,"ex":400.0,"ey":300.0,"eh":0.0,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":403.95075831173403,"ey":299.37429338962687,"eh":-8.999546800403424,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":407.67719724534265,"ey":297.920452657605,"eh":-21.31285041808151,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":411.3266789209935,"ey":296.28299013922833,"eh":-24.16499087361479,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":415.1802114928103,"ey":295.2104759351514,"eh":-15.552935032342376,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":418.7490914364998,"ey":293.4040717867031,"eh":-26.84645131603469,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":422.180309123145,"ey":291.3481668310077,"eh":-30.929049893970415,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":426.02075142873,"ey":290.2296844227988,"eh":-16.23756236557578,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":430.01135408507184,"ey":289.9556580751651,"eh":-3.9282150129785585,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":433.9806062589168,"ey":290.4506703784741,"eh":7.1087531905341095,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":437.7199914735831,"ey":291.8708810024081,"eh":20.796671577726375,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":441.2725714273109,"ey":293.70913443226254,"eh":27.358935347433928,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":444.8481319812044,"ey":295.5022788005276,"eh":26.633774460593344,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":448.28322396402604,"ey":297.5517038588195,"eh":30.82090718542546,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":451.98459753104487,"ey":299.06822412488077,"eh":22.279807385027084,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":455.41932670405805,"ey":301.1182571753588,"eh":30.831048755448926,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":458.92543483403426,"ey":303.04366772402494,"eh":28.773782198220474,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":462.3252636125515,"ey":305.15107472713703,"eh":31.79298605918577,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":465.6699652076646,"ey":307.3449232268398,"eh":33.26157215706478,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":468.39385820739784,"ey":310.2741563903152,"eh":47.08025688258154,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":471.61835154595644,"ey":312.64114661200847,"eh":36.281118348714486,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":475.04602987011225,"ey":314.7029471130542,"eh":31.02754673158989,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":477.8775341794054,"ey":317.5282937017853,"eh":44.937631154393074,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":481.12165425471903,"ey":319.8683118506353,"eh":35.803310545498626,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":484.5021678170764,"ey":322.00656535635386,"eh":32.31430552367377,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":488.12626319799534,"ey":323.6994719308588,"eh":25.03846725670217,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":491.6204262362761,"ey":325.64647595291746,"eh":29.12725735271416,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":495.1071721370494,"ey":327.60673180954444,"eh":29.344785839671793,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":498.9318113949066,"ey":328.7781132791167,"eh":17.02838104484448,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":502.61866779967323,"ey":330.32959316961853,"eh":22.82202764410355,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":506.4639057053089,"ey":331.4314758535112,"eh":15.99006503564226,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":510.41986126125175,"ey":332.0234350070049,"eh":8.510449777483585,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":514.4122198985706,"ey":331.77630647561654,"eh":-3.5421112952645224,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":518.3514852880498,"ey":331.0819087572654,"eh":-9.99716386574109,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":522.2892607738846,"ey":330.3791113304356,"eh":-10.119358905774254,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":526.2450841905486,"ey":329.786269786536,"eh":-8.52323002478443,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":530.078322343347,"ey":328.6433414143578,"eh":-16.602614267587402,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":533.9533663253582,"ey":327.6513564661455,"eh":-14.358971438265375,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":537.5914989423808,"ey":325.9888309592866,"eh":-24.55908357471555,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":541.5074880655061,"ey":325.17333774192394,"eh":-11.763551308863349,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":545.4366334500252,"ey":324.4237935155351,"eh":-10.800276596656898,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":549.3111721327656,"ey":323.4298367780719,"eh":-14.38812789858538,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":552.8962348282556,"ey":321.65576646678045,"eh":-26.328532768657617,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":556.6801213751221,"ey":320.35876893384426,"eh":-18.920105309039013,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":560.4090173880481,"ey":318.9112418961746,"eh":-21.215806366906552,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":563.6970817623402,"ey":316.6333848614791,"eh":-34.712875327026595,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":567.3726122153284,"ey":315.0552606936278,"eh":-23.23672956216822,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":570.905201654487,"ey":313.1788780422623,"eh":-27.975610054281226,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":574.7215308362402,"ey":311.980699601253,"eh":-17.430253421296783,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":578.695195416684,"ey":311.52245315868475,"eh":-6.578340076172093,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":582.522943775278,"ey":310.36127164691277,"eh":-16.875640693372326,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":586.304788851336,"ey":309.05833349769136,"eh":-19.010082640475964,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":590.0784936740422,"ey":307.7320032556008,"eh":-19.364858647800677,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":593.9534269106126,"ey":306.7395857970071,"eh":-14.365366558850432,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":597.580874173855,"ey":305.0538733801355,"eh":-24.924782554140677,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":601.2023952366771,"ey":303.3554667175437,"eh":-25.12545275372473,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":604.4020125394071,"ey":300.95495653925434,"eh":-36.8790328991997,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":607.6866423395127,"ey":298.67214969760994,"eh":-34.79917266155513,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":610.7169560772136,"ey":296.06117312722466,"eh":-40.748819412799534,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":613.5975056518512,"ey":293.2858471737455,"eh":-43.934174922878455,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":615.9314661199762,"ey":290.0373662159393,"eh":-54.30360482992424,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":618.660989977084,"ey":287.11337929505896,"eh":-46.97001866893892,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":621.1441036550718,"ey":283.9774350254346,"eh":-51.62699890272766,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":623.8720042084517,"ey":281.0519336033071,"eh":-47.00181921101763,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":626.2336039304622,"ey":277.8234902085734,"eh":-53.81460638010507,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":629.3078538531113,"ey":275.2643912630279,"eh":-39.77502420999281,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":632.5497994263703,"ey":272.92136140832565,"eh":-35.856519387782015,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":635.4811879365975,"ey":270.1997880762055,"eh":-42.87438712463795,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":638.8070389491336,"ey":267.9774660827913,"eh":-33.75070737730901,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":642.4503765820417,"ey":266.32637829208005,"eh":-24.379083574427696,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":646.1094408466076,"ey":264.7104424307982,"eh":-23.827472838715785,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":649.5156195731311,"ey":262.6133142794973,"eh":-31.61992295902992,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":653.3280375148311,"ey":261.40274852836933,"eh":-17.616323284161822,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":656.7357416266509,"ey":259.30809994536406,"eh":-31.57822315424722,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":659.7156215443102,"ey":256.63970798084114,"eh":-41.84347954722716,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":662.5950173471454,"ey":253.86318500945853,"eh":-43.95798906290406,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":665.6031756692388,"ey":251.22671321760868,"eh":-41.23263713795299,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":668.2553580689076,"ey":248.23239718237008,"eh":-48.467436727415404,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":671.3113299192571,"ey":245.65149887947788,"eh":-40.18251547330346,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":673.6477934978333,"ey":242.40481781322163,"eh":-54.25944345046277,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":676.1400876486838,"ey":239.27616476987595,"eh":-51.459070480147986,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":678.6294645239651,"ey":236.1451900378133,"eh":-51.512475433826026,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":680.245803622244,"ey":232.4863038795166,"eh":-66.166212885643,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":682.3278255817625,"ey":229.0708705892761,"eh":-58.63383513121043,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":685.1845862095173,"ey":226.2710636824146,"eh":-44.423131156767994,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":687.7015550096991,"ey":223.16222659132868,"eh":-51.00576446676442,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":690.3307291322072,"ey":220.1476879145933,"eh":-48.90621276567386,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":692.7794136698542,"ey":216.98478670919837,"eh":-52.25334377710105,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":695.6598533308871,"ey":214.20934667937453,"eh":-43.93644400994742,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":698.9916165309095,"ey":211.99589824334163,"eh":-33.597974860848296,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":702.6081700362947,"ey":210.28693927874195,"eh":-25.29251429340817,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":706.5263596488692,"ey":209.482085155367,"eh":-11.607931982533199,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":710.4747141188163,"ey":208.8413847732473,"eh":-9.217059534314235,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":714.3735002190496,"ey":207.94725561891443,"eh":-12.916586456031233,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":718.0576663825464,"ey":206.38939821859017,"eh":-22.921173807899372,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":721.8467557424354,"ey":205.10767990992204,"eh":-18.688905873653187,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":725.6214855711381,"ey":203.7842696483998,"eh":-19.32053089980867,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":729.2000852705606,"ey":201.99719824767362,"eh":-26.5365008985819,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":733.072834784432,"ey":200.99629305595494,"eh":-14.490903730883002,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":736.7423537025979,"ey":199.40424063557987,"eh":-23.454026707155684,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":740.3510113150077,"ey":197.6786710958634,"eh":-25.55595688554032,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":743.8512903547526,"ey":195.74268384282627,"eh":-28.946767232193686,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":747.6439868987937,"ey":194.47167915171852,"eh":-18.52697973415645,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":751.6146784917084,"ey":193.98834875338167,"eh":-6.94015668953044,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":755.6146783850453,"ey":193.98927249848595,"eh":0.013231674072684996,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":759.592580267079,"ey":194.40914940534358,"eh":6.025393583000728,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":763.5760932472721,"ey":194.77195008978825,"eh":5.203888690332844,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":767.5750708044504,"ey":194.8623851337892,"eh":1.295496968179208,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":771.4205669041366,"ey":195.96336639943277,"eh":15.976633948056403,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":775.4006211041717,"ey":196.36232575172747,"eh":5.724189398985738,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":779.3939666986857,"ey":196.59295741211983,"eh":3.305388343538276,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":782.0,"ey":195.87202223256077,"eh":190.3833779884619,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":778.3313494943569,"ey":194.2779697028602,"eh":203.48526006072396,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":774.4267028590258,"ey":193.40979077360785,"eh":192.53551495992647,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":770.4585877645956,"ey":192.905744548193,"eh":187.23917562611513,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":766.4626563601161,"ey":193.0861114262342,"eh":177.4155584677025,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":762.4899977023501,"ey":192.61922472811855,"eh":186.70293857710033,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":758.4900701757975,"ey":192.59514605858294,"eh":180.34490361820224,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":754.5174738701793,"ey":192.12772912201794,"eh":186.7105860158237,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":750.5263694216335,"ey":191.86111089158763,"eh":183.82185838464494,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":746.5289891231173,"ey":192.00585462732403,"eh":177.92624597002487,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":742.6666717780046,"ey":193.04628950065427,"eh":164.9234867982925,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":738.6835627148913,"ey":193.41349814889776,"eh":174.73270734879821,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":734.9145518754777,"ey":194.75310902239178,"eh":160.43337759059168,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":730.9602497964029,"ey":195.35601454353468,"eh":171.33097630598994,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":726.960410149123,"ey":195.3201984012497,"eh":180.5130353034109,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":722.9671656055857,"ey":195.55257313203862,"eh":176.6696020907261,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":718.9867877395104,"ey":195.94829025734114,"eh":174.32248292006904,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":714.989363207581,"ey":196.09180719546845,"eh":177.94382997019906,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":711.0330849833523,"ey":196.6816059853057,"eh":171.52083840739303,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":707.055517491185,"ey":197.10463889803668,"eh":173.92914692273956,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":703.2942900144359,"ey":198.46594998230339,"eh":160.10315509353094,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":699.7654316798127,"ey":200.34934023770992,"eh":151.91067218779966,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":696.3132724708381,"ey":202.3698839259019,"eh":149.65962441346585,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":692.9616752930119,"ey":204.55318334595108,"eh":146.9189506249636,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":689.2719894319847,"ey":206.09792223875343,"eh":157.2826909615674,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":685.9576210604862,"ey":208.33733338858957,"eh":145.95438237347173,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":682.1815044618539,"ey":209.65678154351423,"eh":160.73959797908532,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":678.4017138033504,"ey":210.96566754996758,"eh":160.89978155869562,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":674.6351013377171,"ey":212.31200722989064,"eh":160.33105503770622,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":671.0973764754607,"ey":214.1786895271692,"eh":152.18160756760707,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":667.5858539383686,"ey":216.09420759586354,"eh":151.3877529417027,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":664.0170107269104,"ey":217.90068431368442,"eh":153.15238362931692,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":660.2867721060651,"ey":219.34474796586684,"eh":158.83740016889865,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":656.5769940896154,"ey":220.8405912292692,"eh":158.03990053029082,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":652.9244930090687,"ey":222.4713075922843,"eh":155.9408779384841,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":649.0467313411697,"ey":223.45261511134902,"eh":165.79884787696898,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":645.1051481580497,"ey":224.13373331734957,"eh":170.1959268362453,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":641.1849903264151,"ey":224.92894560037476,"eh":168.53302540270118,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":637.1850387802189,"ey":224.90925732767795,"eh":180.282014871583,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":633.213437274978,"ey":225.3850529598231,"eh":173.16855503076297,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":629.3963236139017,"ey":226.5807298804101,"eh":162.60729884977764,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":625.4128722941199,"ey":226.94420695386643,"eh":174.7863825763315,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":621.6035552800614,"ey":228.16449539780285,"eh":162.23749767274856,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":617.6085797616105,"ey":228.36492146142277,"eh":177.12790544629718,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":613.6775530586422,"ey":229.10453559091857,"eh":169.34449182141446,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":609.8010940869789,"ey":230.09097658814588,"eh":165.7229855553662,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":605.8525258199934,"ey":230.73035803998445,"eh":170.80207934810738,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":602.0602810257266,"ey":232.00270996471124,"eh":161.4526665686601,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":598.3455504954417,"ey":233.486211595101,"eh":158.23038393486019,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":594.3888841397658,"ey":234.07340095966975,"eh":171.5586268811807,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":590.6354588910642,"ey":235.45607912265996,"eh":159.7773276263556,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":587.2915531436072,"ey":237.6511404776394,"eh":146.71764878260402,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":584.475951073897,"ey":240.49233476614626,"eh":134.740786829071,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":581.7050187791509,"ey":243.3771110517415,"eh":133.8468466228332,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":578.4127022254097,"ey":245.64881783518902,"eh":145.39422586991097,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":575.5533387690151,"ey":248.44596649484862,"eh":135.63015891613819,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":572.5071384600215,"ey":251.03839078062572,"eh":139.60104048957461,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":569.2147328061395,"ey":253.3099684284921,"eh":145.39647317011517,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":566.4545647246808,"ey":256.2050456575305,"eh":133.63343523565928,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":563.1225400232332,"ey":258.4181004216389,"eh":146.40879478431307,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":559.6007904046933,"ey":260.31475000032054,"eh":151.69517236925444,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":556.4381550749467,"ey":262.7637779240158,"eh":142.24712309647367,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":553.5811590804957,"ey":265.56334465615333,"eh":135.58168563853275,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":550.4557522556794,"ey":268.05970844762913,"eh":141.38450349359297,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":547.2238059792154,"ey":270.4165120597382,"eh":143.89967765875505,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":544.4667946404669,"ey":273.3145956468717,"eh":133.57099332453555,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":542.3804582582716,"ey":276.7273951575854,"eh":121.43856959918861,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":539.5585034609088,"ey":279.56227983277796,"eh":134.8690388612361,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":536.2922202783712,"ey":281.87126103050826,"eh":144.74297599502924,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":532.8590301617951,"ey":283.92387049736845,"eh":149.12596361705607,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":529.853702217916,"ey":286.5635681978143,"eh":138.70589072367645,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":527.5208201814261,"ey":289.812823713132,"eh":125.67737636841258,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":525.1951457748355,"ey":293.06724202590766,"eh":125.55038149893647,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":522.5657370100901,"ey":296.0815760398948,"eh":131.09824710952236,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":519.621900953624,"ey":298.7896804087571,"eh":137.38831377756816,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":516.2016035573065,"ey":300.8637020385245,"eh":148.76794951961188,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":512.430098839312,"ey":302.1962755494967,"eh":160.54032281237878,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":508.62030820547733,"ey":303.4150845281089,"eh":162.2597488658977,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":505.1220710943593,"ey":305.3547590148196,"eh":150.99285913903364,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":501.7897727815719,"ey":307.56740176831465,"eh":146.41587921559778,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":498.7996910569355,"ey":310.224357033274,"eh":138.37604407929206,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":495.6742493976433,"ey":312.7206772119291,"eh":141.3853030108311,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":493.1915267825204,"ey":315.8569310945664,"eh":128.36585647233852,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":490.4593530094338,"ey":318.77844208610105,"eh":133.0819286565141,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":488.29254474668454,"ey":322.14072433964276,"eh":122.79958116518789,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":486.4721071888925,"ey":325.70246648333875,"eh":117.07197275852056,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":484.68080876669325,"ey":329.27895218338375,"eh":116.60419833295796,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":482.9218011476671,"ey":332.87142935049394,"eh":116.08805275893711,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":480.45887796475586,"ey":336.02325570914354,"eh":128.00504041722957,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":200,"ex":478.8241882483697,"ey":339.6739802305422,"eh":114.12146611840855,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":201,"ex":476.62840180940714,"ey":343.0174098939968,"eh":123.2947759723426,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":202,"ex":473.7142397296161,"ey":345.75742072841115,"eh":136.764179834338,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":203,"ex":471.02920177690555,"ey":348.722310472146,"eh":132.16434727824756,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":204,"ex":467.7252547125119,"ey":350.977068506988,"eh":145.68866213937457,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":205,"ex":464.4220032054017,"ey":353.23284541988835,"eh":145.67099128795917,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":206,"ex":461.31462163345026,"ey":355.75161094416734,"eh":140.97264313997925,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":207,"ex":458.3621248254189,"ey":358.4502703518297,"eh":137.57187056244027,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":208,"ex":455.41217146517005,"ey":361.1517098148487,"eh":137.51789791636074,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":209,"ex":452.9598881877877,"ey":364.3118216368371,"eh":127.81187594496626,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":210,"ex":451.0856431690722,"ey":367.8455456795179,"eh":117.94094492781268,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":211,"ex":448.39312432471786,"ey":370.803643425164,"eh":132.30907940575403,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":212,"ex":446.2188404124941,"ey":374.161096249709,"eh":122.92706327045792,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":213,"ex":443.7825751801706,"ey":377.33357347071023,"eh":127.52202153807073,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":214,"ex":441.30183733215216,"ey":380.47139751444,"eh":128.32960611780325,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":215,"ex":439.2471281954013,"ey":383.90333142454847,"eh":120.90908373791905,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":216,"ex":437.3157448836141,"ey":387.4061529305562,"eh":118.87143306755465,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":217,"ex":434.90526234155516,"ey":390.5982641307541,"eh":127.057818306586,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":218,"ex":432.50190325643223,"ey":393.795742059991,"eh":126.93006553857012,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":219,"ex":430.46051410334405,"ey":397.2356156515135,"eh":120.68696520765828,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":220,"ex":428.7724600288797,"ey":400.8619738028389,"eh":114.96177474921541,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":221,"ex":427.4049820381649,"ey":404.6209635534116,"eh":109.99081496670675,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":222,"ex":426.8042471019513,"ey":408.5755959682401,"eh":98.63757436224535,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":223,"ex":426.2169254406306,"ey":412.5322426881462,"eh":98.44328888923312,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":224,"ex":426.38609748399773,"ey":416.52866368946013,"eh":87.57606599468065,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":225,"ex":426.519011467557,"ey":420.5264548136904,"eh":88.09579690069961,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":226,"ex":427.5932208205995,"ey":424.3795151903048,"eh":74.42185930791712,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":227,"ex":429.40446766952226,"ey":427.9459398498578,"eh":63.075775898791704,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":228,"ex":431.7799943939787,"ey":431.16414941130546,"eh":53.56704932205859,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":229,"ex":433.35814908015595,"ey":434.83966676080837,"eh":66.76279470394346,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":230,"ex":434.8327369844381,"ey":438.55794465689746,"eh":68.36780302860632,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":231,"ex":436.40281179085775,"ey":442.23692075117236,"eh":66.88868857450456,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":232,"ex":437.46527650345797,"ey":446.09323618620607,"eh":74.59643058972001,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":233,"ex":439.437330921526,"ey":449.57332258918206,"eh":60.461149742197065,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":234,"ex":441.21330343132917,"ey":453.15744335227356,"eh":63.64106266865022,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":235,"ex":443.6107155937758,"ey":456.3593825964431,"eh":53.17642336913078,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":236,"ex":446.35805929886953,"ey":459.26663259705913,"eh":46.61983605189219,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":237,"ex":448.7841566818858,"ey":462.44689225440186,"eh":52.66138739754747,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":238,"ex":451.36247152660513,"ey":465.5050440756004,"eh":49.86590397288273,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":239,"ex":453.5338186385032,"ey":468.86439694775476,"eh":57.1230397876953,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":240,"ex":455.82265114593196,"ey":472.1448307228731,"eh":55.0956508638232,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":241,"ex":457.83078511298385,"ey":475.6042234398644,"eh":59.86537382830184,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":242,"ex":460.6410516096057,"ey":478.4506953294085,"eh":45.36671094593741,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":243,"ex":463.250845466424,"ey":481.4820277138418,"eh":49.27353903358224,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":244,"ex":465.7213764837219,"ey":484.6278942864365,"eh":51.85652901960814,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":245,"ex":468.53035620135853,"ey":487.4756360138244,"eh":45.39260635791992,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":246,"ex":471.08299823089044,"ey":490.5552494098641,"eh":50.34521047229523,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":247,"ex":473.3675522437146,"ey":493.83866424239574,"eh":55.17034474037239,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":248,"ex":475.0831938204861,"ey":497.45205240035125,"eh":64.6015691218232,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":249,"ex":477.6745277658266,"ey":500.4991802912882,"eh":49.62154550835271,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":250,"ex":479.734179529503,"ey":503.92815019672406,"eh":59.008363985831906,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":251,"ex":482.24231071391915,"ey":507.0441216281976,"eh":51.16845469001471,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":252,"ex":484.02332268305975,"ey":510.62574086616496,"eh":63.560473726428704,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":253,"ex":486.0576138956065,"ey":514.069816832597,"eh":59.431188444897174,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":254,"ex":488.89093638387175,"ey":516.8933401063616,"eh":44.90074803248136,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":255,"ex":491.13710464108397,"ey":520.2031328733325,"eh":55.83749101410153,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":256,"ex":493.20509268629587,"ey":523.6270816820709,"eh":58.86896834051794,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":257,"ex":494.8531817731226,"ey":527.2717767806878,"eh":65.66806579309632,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":258,"ex":497.073404594785,"ey":530.59902949459,"eh":56.28544828260735,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":259,"ex":499.6928769554301,"ey":533.6220022949666,"eh":49.0903513904206,"es":4.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":260}} diff --git a/tools/fixtures/stationary.jsonl b/tools/fixtures/stationary.jsonl new file mode 100644 index 0000000..aac4868 --- /dev/null +++ b/tools/fixtures/stationary.jsonl @@ -0,0 +1,202 @@ +{"meta":{"adversary":"stationary","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"enemy fixed; any good gun scores ~100%"}} +{"tick":0,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":600.0,"ey":300.0,"eh":0.0,"es":0.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":200}} diff --git a/tools/fixtures/wall-bounce.jsonl b/tools/fixtures/wall-bounce.jsonl new file mode 100644 index 0000000..f964dcb --- /dev/null +++ b/tools/fixtures/wall-bounce.jsonl @@ -0,0 +1,242 @@ +{"meta":{"adversary":"wall-bounce","source":"synthetic","perfect_info":false,"arena":{"w":800.0,"h":600.0},"note":"specular reflection off all four walls"}} +{"tick":0,"ex":100.0,"ey":100.0,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":1,"ex":104.24264068711929,"ey":104.24264068711929,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":2,"ex":108.48528137423858,"ey":108.48528137423858,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":3,"ex":112.72792206135787,"ey":112.72792206135787,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":4,"ex":116.97056274847716,"ey":116.97056274847716,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":5,"ex":121.21320343559645,"ey":121.21320343559645,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":6,"ex":125.45584412271575,"ey":125.45584412271575,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":7,"ex":129.69848480983504,"ey":129.69848480983504,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":8,"ex":133.94112549695433,"ey":133.94112549695433,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":9,"ex":138.18376618407362,"ey":138.18376618407362,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":10,"ex":142.4264068711929,"ey":142.4264068711929,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":11,"ex":146.6690475583122,"ey":146.6690475583122,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":12,"ex":150.9116882454315,"ey":150.9116882454315,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":13,"ex":155.15432893255078,"ey":155.15432893255078,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":14,"ex":159.39696961967007,"ey":159.39696961967007,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":15,"ex":163.63961030678936,"ey":163.63961030678936,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":16,"ex":167.88225099390866,"ey":167.88225099390866,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":17,"ex":172.12489168102795,"ey":172.12489168102795,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":18,"ex":176.36753236814724,"ey":176.36753236814724,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":19,"ex":180.61017305526653,"ey":180.61017305526653,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":20,"ex":184.85281374238582,"ey":184.85281374238582,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":21,"ex":189.0954544295051,"ey":189.0954544295051,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":22,"ex":193.3380951166244,"ey":193.3380951166244,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":23,"ex":197.5807358037437,"ey":197.5807358037437,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":24,"ex":201.82337649086298,"ey":201.82337649086298,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":25,"ex":206.06601717798227,"ey":206.06601717798227,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":26,"ex":210.30865786510157,"ey":210.30865786510157,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":27,"ex":214.55129855222086,"ey":214.55129855222086,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":28,"ex":218.79393923934015,"ey":218.79393923934015,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":29,"ex":223.03657992645944,"ey":223.03657992645944,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":30,"ex":227.27922061357873,"ey":227.27922061357873,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":31,"ex":231.52186130069802,"ey":231.52186130069802,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":32,"ex":235.7645019878173,"ey":235.7645019878173,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":33,"ex":240.0071426749366,"ey":240.0071426749366,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":34,"ex":244.2497833620559,"ey":244.2497833620559,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":35,"ex":248.49242404917518,"ey":248.49242404917518,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":36,"ex":252.73506473629448,"ey":252.73506473629448,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":37,"ex":256.97770542341374,"ey":256.97770542341374,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":38,"ex":261.220346110533,"ey":261.220346110533,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":39,"ex":265.46298679765226,"ey":265.46298679765226,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":40,"ex":269.7056274847715,"ey":269.7056274847715,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":41,"ex":273.9482681718908,"ey":273.9482681718908,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":42,"ex":278.19090885901005,"ey":278.19090885901005,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":43,"ex":282.4335495461293,"ey":282.4335495461293,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":44,"ex":286.6761902332486,"ey":286.6761902332486,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":45,"ex":290.91883092036784,"ey":290.91883092036784,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":46,"ex":295.1614716074871,"ey":295.1614716074871,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":47,"ex":299.40411229460636,"ey":299.40411229460636,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":48,"ex":303.6467529817256,"ey":303.6467529817256,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":49,"ex":307.8893936688449,"ey":307.8893936688449,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":50,"ex":312.13203435596415,"ey":312.13203435596415,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":51,"ex":316.3746750430834,"ey":316.3746750430834,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":52,"ex":320.6173157302027,"ey":320.6173157302027,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":53,"ex":324.85995641732194,"ey":324.85995641732194,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":54,"ex":329.1025971044412,"ey":329.1025971044412,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":55,"ex":333.34523779156046,"ey":333.34523779156046,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":56,"ex":337.5878784786797,"ey":337.5878784786797,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":57,"ex":341.830519165799,"ey":341.830519165799,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":58,"ex":346.07315985291825,"ey":346.07315985291825,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":59,"ex":350.3158005400375,"ey":350.3158005400375,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":60,"ex":354.5584412271568,"ey":354.5584412271568,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":61,"ex":358.80108191427604,"ey":358.80108191427604,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":62,"ex":363.0437226013953,"ey":363.0437226013953,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":63,"ex":367.28636328851456,"ey":367.28636328851456,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":64,"ex":371.5290039756338,"ey":371.5290039756338,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":65,"ex":375.7716446627531,"ey":375.7716446627531,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":66,"ex":380.01428534987235,"ey":380.01428534987235,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":67,"ex":384.2569260369916,"ey":384.2569260369916,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":68,"ex":388.4995667241109,"ey":388.4995667241109,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":69,"ex":392.74220741123014,"ey":392.74220741123014,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":70,"ex":396.9848480983494,"ey":396.9848480983494,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":71,"ex":401.22748878546867,"ey":401.22748878546867,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":72,"ex":405.4701294725879,"ey":405.4701294725879,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":73,"ex":409.7127701597072,"ey":409.7127701597072,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":74,"ex":413.95541084682645,"ey":413.95541084682645,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":75,"ex":418.1980515339457,"ey":418.1980515339457,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":76,"ex":422.440692221065,"ey":422.440692221065,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":77,"ex":426.68333290818424,"ey":426.68333290818424,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":78,"ex":430.9259735953035,"ey":430.9259735953035,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":79,"ex":435.16861428242277,"ey":435.16861428242277,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":80,"ex":439.41125496954203,"ey":439.41125496954203,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":81,"ex":443.6538956566613,"ey":443.6538956566613,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":82,"ex":447.89653634378055,"ey":447.89653634378055,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":83,"ex":452.1391770308998,"ey":452.1391770308998,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":84,"ex":456.3818177180191,"ey":456.3818177180191,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":85,"ex":460.62445840513834,"ey":460.62445840513834,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":86,"ex":464.8670990922576,"ey":464.8670990922576,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":87,"ex":469.10973977937687,"ey":469.10973977937687,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":88,"ex":473.35238046649613,"ey":473.35238046649613,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":89,"ex":477.5950211536154,"ey":477.5950211536154,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":90,"ex":481.83766184073465,"ey":481.83766184073465,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":91,"ex":486.0803025278539,"ey":486.0803025278539,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":92,"ex":490.3229432149732,"ey":490.3229432149732,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":93,"ex":494.56558390209244,"ey":494.56558390209244,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":94,"ex":498.8082245892117,"ey":498.8082245892117,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":95,"ex":503.05086527633097,"ey":503.05086527633097,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":96,"ex":507.29350596345023,"ey":507.29350596345023,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":97,"ex":511.5361466505695,"ey":511.5361466505695,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":98,"ex":515.7787873376888,"ey":515.7787873376888,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":99,"ex":520.0214280248081,"ey":520.0214280248081,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":100,"ex":524.2640687119274,"ey":524.2640687119274,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":101,"ex":528.5067093990467,"ey":528.5067093990467,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":102,"ex":532.749350086166,"ey":532.749350086166,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":103,"ex":536.9919907732854,"ey":536.9919907732854,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":104,"ex":541.2346314604047,"ey":541.2346314604047,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":105,"ex":545.477272147524,"ey":545.477272147524,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":106,"ex":549.7199128346433,"ey":549.7199128346433,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":107,"ex":553.9625535217626,"ey":553.9625535217626,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":108,"ex":558.205194208882,"ey":558.205194208882,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":109,"ex":562.4478348960013,"ey":562.4478348960013,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":110,"ex":566.6904755831206,"ey":566.6904755831206,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":111,"ex":570.9331162702399,"ey":570.9331162702399,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":112,"ex":575.1757569573592,"ey":575.1757569573592,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":113,"ex":579.4183976444785,"ey":579.4183976444785,"eh":45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":114,"ex":583.6610383315979,"ey":582.0,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":115,"ex":587.9036790187172,"ey":577.7573593128807,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":116,"ex":592.1463197058365,"ey":573.5147186257614,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":117,"ex":596.3889603929558,"ey":569.272077938642,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":118,"ex":600.6316010800751,"ey":565.0294372515227,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":119,"ex":604.8742417671945,"ey":560.7867965644034,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":120,"ex":609.1168824543138,"ey":556.5441558772841,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":121,"ex":613.3595231414331,"ey":552.3015151901648,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":122,"ex":617.6021638285524,"ey":548.0588745030454,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":123,"ex":621.8448045156717,"ey":543.8162338159261,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":124,"ex":626.0874452027911,"ey":539.5735931288068,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":125,"ex":630.3300858899104,"ey":535.3309524416875,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":126,"ex":634.5727265770297,"ey":531.0883117545682,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":127,"ex":638.815367264149,"ey":526.8456710674488,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":128,"ex":643.0580079512683,"ey":522.6030303803295,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":129,"ex":647.3006486383877,"ey":518.3603896932102,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":130,"ex":651.543289325507,"ey":514.1177490060909,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":131,"ex":655.7859300126263,"ey":509.8751083189716,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":132,"ex":660.0285706997456,"ey":505.63246763185236,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":133,"ex":664.2712113868649,"ey":501.3898269447331,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":134,"ex":668.5138520739843,"ey":497.14718625761384,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":135,"ex":672.7564927611036,"ey":492.9045455704946,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":136,"ex":676.9991334482229,"ey":488.6619048833753,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":137,"ex":681.2417741353422,"ey":484.41926419625605,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":138,"ex":685.4844148224615,"ey":480.1766235091368,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":139,"ex":689.7270555095809,"ey":475.9339828220175,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":140,"ex":693.9696961967002,"ey":471.69134213489826,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":141,"ex":698.2123368838195,"ey":467.448701447779,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":142,"ex":702.4549775709388,"ey":463.20606076065974,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":143,"ex":706.6976182580581,"ey":458.9634200735405,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":144,"ex":710.9402589451774,"ey":454.7207793864212,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":145,"ex":715.1828996322968,"ey":450.47813869930195,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":146,"ex":719.4255403194161,"ey":446.2354980121827,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":147,"ex":723.6681810065354,"ey":441.9928573250634,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":148,"ex":727.9108216936547,"ey":437.75021663794416,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":149,"ex":732.153462380774,"ey":433.5075759508249,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":150,"ex":736.3961030678934,"ey":429.26493526370564,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":151,"ex":740.6387437550127,"ey":425.0222945765864,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":152,"ex":744.881384442132,"ey":420.7796538894671,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":153,"ex":749.1240251292513,"ey":416.53701320234785,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":154,"ex":753.3666658163706,"ey":412.2943725152286,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":155,"ex":757.60930650349,"ey":408.0517318281093,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":156,"ex":761.8519471906093,"ey":403.80909114099006,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":157,"ex":766.0945878777286,"ey":399.5664504538708,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":158,"ex":770.3372285648479,"ey":395.32380976675154,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":159,"ex":774.5798692519672,"ey":391.0811690796323,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":160,"ex":778.8225099390866,"ey":386.838528392513,"eh":-45.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":161,"ex":782.0,"ey":382.59588770539375,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":162,"ex":777.7573593128807,"ey":378.3532470182745,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":163,"ex":773.5147186257614,"ey":374.1106063311552,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":164,"ex":769.272077938642,"ey":369.86796564403596,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":165,"ex":765.0294372515227,"ey":365.6253249569167,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":166,"ex":760.7867965644034,"ey":361.38268426979744,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":167,"ex":756.5441558772841,"ey":357.1400435826782,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":168,"ex":752.3015151901648,"ey":352.8974028955589,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":169,"ex":748.0588745030454,"ey":348.65476220843965,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":170,"ex":743.8162338159261,"ey":344.4121215213204,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":171,"ex":739.5735931288068,"ey":340.1694808342011,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":172,"ex":735.3309524416875,"ey":335.92684014708186,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":173,"ex":731.0883117545682,"ey":331.6841994599626,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":174,"ex":726.8456710674488,"ey":327.44155877284334,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":175,"ex":722.6030303803295,"ey":323.1989180857241,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":176,"ex":718.3603896932102,"ey":318.9562773986048,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":177,"ex":714.1177490060909,"ey":314.71363671148555,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":178,"ex":709.8751083189716,"ey":310.4709960243663,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":179,"ex":705.6324676318523,"ey":306.228355337247,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":180,"ex":701.3898269447329,"ey":301.98571465012776,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":181,"ex":697.1471862576136,"ey":297.7430739630085,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":182,"ex":692.9045455704943,"ey":293.50043327588924,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":183,"ex":688.661904883375,"ey":289.25779258877,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":184,"ex":684.4192641962557,"ey":285.0151519016507,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":185,"ex":680.1766235091363,"ey":280.77251121453145,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":186,"ex":675.933982822017,"ey":276.5298705274122,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":187,"ex":671.6913421348977,"ey":272.2872298402929,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":188,"ex":667.4487014477784,"ey":268.04458915317366,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":189,"ex":663.206060760659,"ey":263.8019484660544,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":190,"ex":658.9634200735397,"ey":259.55930777893514,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":191,"ex":654.7207793864204,"ey":255.31666709181584,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":192,"ex":650.4781386993011,"ey":251.07402640469655,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":193,"ex":646.2354980121818,"ey":246.83138571757726,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":194,"ex":641.9928573250625,"ey":242.58874503045797,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":195,"ex":637.7502166379431,"ey":238.34610434333868,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":196,"ex":633.5075759508238,"ey":234.1034636562194,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":197,"ex":629.2649352637045,"ey":229.8608229691001,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":198,"ex":625.0222945765852,"ey":225.6181822819808,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":199,"ex":620.7796538894659,"ey":221.37554159486152,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":200,"ex":616.5370132023465,"ey":217.13290090774223,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":201,"ex":612.2943725152272,"ey":212.89026022062293,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":202,"ex":608.0517318281079,"ey":208.64761953350364,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":203,"ex":603.8090911409886,"ey":204.40497884638435,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":204,"ex":599.5664504538693,"ey":200.16233815926506,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":205,"ex":595.32380976675,"ey":195.91969747214577,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":206,"ex":591.0811690796306,"ey":191.67705678502648,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":207,"ex":586.8385283925113,"ey":187.4344160979072,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":208,"ex":582.595887705392,"ey":183.1917754107879,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":209,"ex":578.3532470182727,"ey":178.9491347236686,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":210,"ex":574.1106063311533,"ey":174.70649403654932,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":211,"ex":569.867965644034,"ey":170.46385334943002,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":212,"ex":565.6253249569147,"ey":166.22121266231073,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":213,"ex":561.3826842697954,"ey":161.97857197519144,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":214,"ex":557.1400435826761,"ey":157.73593128807215,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":215,"ex":552.8974028955568,"ey":153.49329060095286,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":216,"ex":548.6547622084374,"ey":149.25064991383357,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":217,"ex":544.4121215213181,"ey":145.00800922671428,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":218,"ex":540.1694808341988,"ey":140.765368539595,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":219,"ex":535.9268401470795,"ey":136.5227278524757,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":220,"ex":531.6841994599602,"ey":132.2800871653564,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":221,"ex":527.4415587728408,"ey":128.03744647823711,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":222,"ex":523.1989180857215,"ey":123.79480579111782,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":223,"ex":518.9562773986022,"ey":119.55216510399853,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":224,"ex":514.7136367114829,"ey":115.30952441687924,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":225,"ex":510.4709960243636,"ey":111.06688372975995,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":226,"ex":506.22835533724435,"ey":106.82424304264066,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":227,"ex":501.9857146501251,"ey":102.58160235552137,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":228,"ex":497.7430739630058,"ey":98.33896166840208,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":229,"ex":493.50043327588656,"ey":94.09632098128279,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":230,"ex":489.2577925887673,"ey":89.8536802941635,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":231,"ex":485.01515190164804,"ey":85.6110396070442,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":232,"ex":480.7725112145288,"ey":81.36839891992491,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":233,"ex":476.5298705274095,"ey":77.12575823280562,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":234,"ex":472.28722984029025,"ey":72.88311754568633,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":235,"ex":468.044589153171,"ey":68.64047685856704,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":236,"ex":463.8019484660517,"ey":64.39783617144775,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":237,"ex":459.55930777893246,"ey":60.155195484328466,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":238,"ex":455.3166670918132,"ey":55.91255479720918,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"tick":239,"ex":451.07402640469394,"ey":51.6699141100899,"eh":225.0,"es":6.0,"ee":100.0,"sx":200.0,"sy":300.0,"sh":0.0,"ss":0.0,"se":100.0,"eid":1} +{"end":{"enemy_died":false,"ticks":240}}